{"version":3,"sources":["vendor/flatpickr.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","global","factory","exports","module","define","amd","self","flatpickr","_assign","Object","assign","t","s","i","n","arguments","length","p","hasOwnProperty","call","apply","this","HOOKS","defaults","_disable","_enable","allowInput","altFormat","altInput","altInputClass","animate","window","navigator","userAgent","indexOf","ariaDateFormat","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enable","enableSeconds","enableTime","errorHandler","err","console","warn","getWeek","givenDate","date","Date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","mode","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","undefined","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","pad","number","slice","_int","bool","debounce","func","wait","immediate","timeout","context","args","clearTimeout","setTimeout","arrayify","Array","toggleClass","elem","className","classList","add","remove","createElement","tag","content","e","document","textContent","clearNode","node","firstChild","removeChild","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","type","pattern","key","setAttribute","appendChild","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","parseFloat","H","J","day","K","getHours","RegExp","test","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","d","h","minutes","setMinutes","j","l","m","month","u","unixMillSeconds","w","y","tokenRegex","formats","toISOString","options","getMonth","getSeconds","getMinutes","String","substring","createDateFormatter","_a","_b","config","_c","l10n","frmt","overrideLocale","formatDate","split","map","c","arr","join","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","match","exec","fn","val","forEach","isNaN","Error","compareDates","date1","date2","isBetween","ts","ts1","ts2","min","max","duration","DAY","target","_i","TypeError","_loop_1","source","keys","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","element","instanceConfig","defaultConfig","bindToInstance","bind","setCalendarWidth","requestAnimationFrame","calendarContainer","style","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","setDefaultTime","preventDefault","isKeyDown","input","getAttribute","step","curValue","value","delta","which","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","hours","secondElement","ampm2military","limitMinHours","minTime","minDate","minDateHasTime","latestSelectedDateObj","maxTime","maxDate","maxDateHasTime","setHoursFromDate","setDefaultHours","minHr","minMinutes","maxHr","maxMinutes","isMobile","onYearInput","event","toString","changeYear","handler","ev","el","addEventListener","_handlers","push","onClick","evt","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","contains","inputElem","parentNode","createEvent","dispatchEvent","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","current","offset","dayFocused","isInView","activeElement","body","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","buildDays","frag","monthsDropdownContainer","innerHTML","selected","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","disabled","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","splice","concat","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","appendTo","documentClick","isOpen","eventTarget_1","composedPath","getEventTarget","isCalendarElement","isInput","path","lostFocus","relatedTarget","isIgnored","some","close","clear","newYear","newYearNum","isNewYear","dateToCheck","array","parsed","from","to","allowKeydown","allowInlineKeydown","keyCode","blur","open","isTimeObj","timeContainer","focusAndClose","selectDate","delta_1","ctrlKey","stopPropagation","currentYearElement","elems","pluginElements","filter","x","shiftKey","charAt","toLowerCase","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","setupLocale","l10ns","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","left","pageXOffset","right","rightMost","centerMost","doc","styleSheets","bodyWidth","centerLeft","centerIndex","cssRules","centerStyle","insertRule","centerBefore","msMaxTouchPoints","findParent","condition","selectedDate","shouldChangeMonth","selectedIndex","sort","a","b","showTimeInput","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","destroy","removeEventListener","lastChild","insertBefore","_type","k","click","wasOpen","select","set","option","CALLBACKS","setSelectedDate","toggle","inputDate","dates","parseDateRules","rule","data","hooks","name","initEvent","getDateStr","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","defineProperty","get","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","querySelector","nodeName","placeholder","required","nextSibling","setupInputs","preloadedDate","defaultDate","_showTimeInput","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","rContainer","separator","hourInput","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","nodeType","build","querySelectorAll","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","bindEvents","isSafari","init","_flatpickr","nodeList","nodes","HTMLElement","instances","error","HTMLCollection","NodeList","selector","Node","en","default","localize","setDefaults","jQuery","fp_incr"],"mappings":"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","file":"flatpickr.js","sourcesContent":["\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* flatpickr v4.6.1, @license MIT */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.flatpickr = factory());\n})(void 0, function () {\n 'use strict';\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\n\n var _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n };\n\n var HOOKS = [\"onChange\", \"onClose\", \"onDayCreate\", \"onDestroy\", \"onKeyDown\", \"onMonthChange\", \"onOpen\", \"onParseConfig\", \"onReady\", \"onValueUpdate\", \"onYearChange\", \"onPreCalendarPosition\"];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function errorHandler(err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function getWeek(givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0); // Thursday in current week decides the year.\n\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7); // January 4 is always in week 1.\n\n var week1 = new Date(date.getFullYear(), 0, 4); // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n \"static\": false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n months: {\n shorthand: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n longhand: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function ordinal(nth) {\n var s = nth % 100;\n if (s > 3 && s < 21) return \"th\";\n\n switch (s % 10) {\n case 1:\n return \"st\";\n\n case 2:\n return \"nd\";\n\n case 3:\n return \"rd\";\n\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n time_24hr: false\n };\n\n var pad = function pad(number) {\n return (\"0\" + number).slice(-2);\n };\n\n var _int = function _int(bool) {\n return bool === true ? 1 : 0;\n };\n /* istanbul ignore next */\n\n\n function debounce(func, wait, immediate) {\n if (immediate === void 0) {\n immediate = false;\n }\n\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n }, wait);\n if (immediate && !timeout) func.apply(context, args);\n };\n }\n\n var arrayify = function arrayify(obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true) return elem.classList.add(className);\n elem.classList.remove(className);\n }\n\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined) e.textContent = content;\n return e;\n }\n\n function clearNode(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n }\n\n function findParent(node, condition) {\n if (condition(node)) return node;else if (node.parentNode) return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"),\n numInput = createElement(\"input\", \"numInput \" + inputClassName),\n arrowUp = createElement(\"span\", \"arrowUp\"),\n arrowDown = createElement(\"span\", \"arrowDown\");\n\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n } else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n\n if (opts !== undefined) for (var key in opts) {\n numInput.setAttribute(key, opts[key]);\n }\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n\n return event.target;\n }\n\n var doNothing = function doNothing() {\n return undefined;\n };\n\n var monthToStr = function monthToStr(monthNumber, shorthand, locale) {\n return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\n };\n\n var revFormat = {\n D: doNothing,\n F: function F(dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function G(dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function H(dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function J(dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function K(dateObj, amPM, locale) {\n dateObj.setHours(dateObj.getHours() % 12 + 12 * _int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function M(dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function S(dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function U(_, unixSeconds) {\n return new Date(parseFloat(unixSeconds) * 1000);\n },\n W: function W(dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function Y(dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function Z(_, ISODate) {\n return new Date(ISODate);\n },\n d: function d(dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function h(dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function i(dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function j(dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function m(dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function n(dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function s(dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function u(_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function y(dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function Z(date) {\n return date.toISOString();\n },\n // weekday name, short, e.g. Thu\n D: function D(date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function F(date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function G(date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function H(date) {\n return pad(date.getHours());\n },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function J(date, locale) {\n return locale.ordinal !== undefined ? date.getDate() + locale.ordinal(date.getDate()) : date.getDate();\n },\n // AM/PM\n K: function K(date, locale) {\n return locale.amPM[_int(date.getHours() > 11)];\n },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function M(date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function S(date) {\n return pad(date.getSeconds());\n },\n // unix timestamp\n U: function U(date) {\n return date.getTime() / 1000;\n },\n W: function W(date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function Y(date) {\n return date.getFullYear();\n },\n // day in month, padded (01-30)\n d: function d(date) {\n return pad(date.getDate());\n },\n // hour from 1-12 (am/pm)\n h: function h(date) {\n return date.getHours() % 12 ? date.getHours() % 12 : 12;\n },\n // minutes, padded with leading zero e.g. 09\n i: function i(date) {\n return pad(date.getMinutes());\n },\n // day in month (1-30)\n j: function j(date) {\n return date.getDate();\n },\n // weekday name, full, e.g. Thursday\n l: function l(date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function m(date) {\n return pad(date.getMonth() + 1);\n },\n // the month number (1-12)\n n: function n(date) {\n return date.getMonth() + 1;\n },\n // seconds 0-59\n s: function s(date) {\n return date.getSeconds();\n },\n // Unix Milliseconds\n u: function u(date) {\n return date.getTime();\n },\n // number of the day of the week\n w: function w(date) {\n return date.getDay();\n },\n // last two digits of year e.g. 16 for 2016\n y: function y(date) {\n return String(date.getFullYear()).substring(2);\n }\n };\n\n var createDateFormatter = function createDateFormatter(_a) {\n var _b = _a.config,\n config = _b === void 0 ? defaults : _b,\n _c = _a.l10n,\n l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n\n return frmt.split(\"\").map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\" ? formats[c](dateObj, locale, config) : c !== \"\\\\\" ? c : \"\";\n }).join(\"\");\n };\n };\n\n var createDateParser = function createDateParser(_a) {\n var _b = _a.config,\n config = _b === void 0 ? defaults : _b,\n _c = _a.l10n,\n l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date) return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date) parsedDate = new Date(date.getTime());else if (typeof date !== \"string\" && date.toFixed !== undefined // timestamp\n ) // create a copy\n parsedDate = new Date(date);else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n } else if (/Z$/.test(datestr) || /GMT$/.test(datestr) // datestrings w/ timezone\n ) parsedDate = new Date(date);else if (config && config.parseDate) parsedDate = config.parseDate(date, format);else {\n parsedDate = !config || !config.noCalendar ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0) : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0,\n ops = [];\n\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n } else if (!isBackSlash) regexStr += \".\"; // don't really care\n\n\n ops.forEach(function (_a) {\n var fn = _a.fn,\n val = _a.val;\n return parsedDate = fn(parsedDate, val, locale) || parsedDate;\n });\n }\n\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n\n if (timeless === true) parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n\n\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) {\n timeless = true;\n }\n\n if (timeless !== false) {\n return new Date(date1.getTime()).setHours(0, 0, 0, 0) - new Date(date2.getTime()).setHours(0, 0, 0, 0);\n }\n\n return date1.getTime() - date2.getTime();\n }\n\n var isBetween = function isBetween(ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n\n var _loop_1 = function _loop_1(source) {\n if (source) {\n Object.keys(source).forEach(function (key) {\n return target[key] = source[key];\n });\n }\n };\n\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n\n _loop_1(source);\n }\n\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: _assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({\n config: self.config,\n l10n: self.l10n\n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function getDaysInMonth(month, yr) {\n if (month === void 0) {\n month = self.currentMonth;\n }\n\n if (yr === void 0) {\n yr = self.currentYear;\n }\n\n if (month === 1 && (yr % 4 === 0 && yr % 100 !== 0 || yr % 400 === 0)) return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile) build();\n bindEvents();\n\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj || self.config.minDate : undefined);\n }\n\n updateValue(false);\n }\n\n setCalendarWidth();\n self.showTimeInput = self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n\n triggerEvent(\"onReady\");\n }\n\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) return;else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width = daysWidth + (self.weekWrapper !== undefined ? self.weekWrapper.offsetWidth : 0) + \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n\n\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n\n function ampm2military(hour, amPM) {\n return hour % 12 + 12 * _int(amPM === self.l10n.amPM[1]);\n }\n\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n\n\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined) return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24,\n minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60,\n seconds = self.secondElement !== undefined ? (parseInt(self.secondElement.value, 10) || 0) % 60 : 0;\n\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n\n var limitMinHours = self.config.minTime !== undefined || self.config.minDate && self.minDateHasTime && self.latestSelectedDateObj && compareDates(self.latestSelectedDateObj, self.config.minDate, true) === 0;\n var limitMaxHours = self.config.maxTime !== undefined || self.config.maxDate && self.maxDateHasTime && self.latestSelectedDateObj && compareDates(self.latestSelectedDateObj, self.config.maxDate, true) === 0;\n\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined ? self.config.maxTime : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours()) minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes()) seconds = Math.min(seconds, maxTime.getSeconds());\n }\n\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined ? self.config.minTime : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours()) minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes()) seconds = Math.max(seconds, minTime.getSeconds());\n }\n\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n\n\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date) setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr) minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes) seconds = self.config.minDate.getSeconds();\n }\n\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr) minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes) seconds = self.config.maxDate.getSeconds();\n }\n\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n\n\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n\n if (!self.hourElement || !self.minuteElement || self.isMobile) return;\n self.hourElement.value = pad(!self.config.time_24hr ? (12 + hours) % 12 + 12 * _int(hours % 12 === 0) : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined) self.amPM.textContent = self.l10n.amPM[_int(hours >= 12)];\n if (self.secondElement !== undefined) self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n\n\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n\n if (year / 1000 > 1 || event.key === \"Enter\" && !/[^\\d]/.test(year.toString())) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n\n\n function bind(element, event, handler, options) {\n if (event instanceof Array) return event.forEach(function (ev) {\n return bind(element, ev, handler, options);\n });\n if (element instanceof Array) return element.forEach(function (el) {\n return bind(el, event, handler, options);\n });\n element.addEventListener(event, handler, options);\n\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n\n\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n\n\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n\n if (self.isMobile) {\n setupMobile();\n return;\n }\n\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent)) bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\") onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config[\"static\"]) bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined) bind(window.document, \"touchstart\", documentClick);else bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, {\n capture: true\n });\n\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n\n if (self.timeContainer !== undefined && self.minuteElement !== undefined && self.hourElement !== undefined) {\n var selText = function selText(e) {\n return e.target.select();\n };\n\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, {\n capture: true\n });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined) bind(self.secondElement, \"focus\", function () {\n return self.secondElement && self.secondElement.select();\n });\n\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n\n\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined ? self.parseDate(jumpDate) : self.latestSelectedDateObj || (self.config.minDate && self.config.minDate > self.now ? self.config.minDate : self.config.maxDate && self.config.maxDate < self.now ? self.config.maxDate : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n } catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n\n if (triggerChange && (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n\n\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\")) incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n\n\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem || target && target.parentNode && target.parentNode.firstChild;\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n\n if (self.config.weekNumbers) {\n var _a = buildWeeks(),\n weekWrapper = _a.weekWrapper,\n weekNumbers = _a.weekNumbers;\n\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined && self.config.appendTo.nodeType !== undefined;\n\n if (self.config.inline || self.config[\"static\"]) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode) self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);else if (self.config.appendTo !== undefined) self.config.appendTo.appendChild(self.calendarContainer);\n }\n\n if (self.config[\"static\"]) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode) self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput) wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n\n if (!self.config[\"static\"] && !self.config.inline) (self.config.appendTo !== undefined ? self.config.appendTo : window.document.body).appendChild(self.calendarContainer);\n }\n\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true),\n dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n\n if (className.indexOf(\"hidden\") === -1 && compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] && compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] && compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\") dayElement.classList.add(\"inRange\");\n }\n }\n } else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date)) dayElement.classList.add(\"inRange\");\n }\n\n if (self.weekNumbers && self.config.showMonths === 1 && className !== \"prevMonthDay\" && dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\") onMouseOver(targetNode);\n }\n\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj)) return c;\n }\n }\n\n return undefined;\n }\n\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1 ? current.dateObj.getMonth() : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m ? current.$i + delta : delta < 0 ? month.children.length - 1 : 0;\n var numMonthDays = month.children.length;\n\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj) && Math.abs(current.$i - i) >= Math.abs(delta)) return focusOnDayElem(c);\n }\n }\n\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined ? current : dayFocused ? document.activeElement : self.selectedDateElem !== undefined && isInView(self.selectedDateElem) ? self.selectedDateElem : self.todayDateElem !== undefined && isInView(self.todayDateElem) ? self.todayDateElem : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) return self._input.focus();\n if (!dayFocused) return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month),\n days = window.document.createDocumentFragment(),\n isMultiMonth = self.config.showMonths > 1,\n prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\",\n nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth,\n dayIndex = 0; // prepend days from the ending of previous month\n\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n } // Start at 1 since there is no 0th day\n\n\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n } // append days from the next month\n\n\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth && (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n } //updateNavigationCurrentMonth();\n\n\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n\n clearNode(self.daysContainer); // TODO: week numbers for each month\n\n if (self.weekNumbers) clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n\n function buildMonthSwitch() {\n if (self.config.showMonths > 1) return;\n\n var shouldBuildMonth = function shouldBuildMonth(month) {\n if (self.config.minDate !== undefined && self.currentYear === self.config.minDate.getFullYear() && month < self.config.minDate.getMonth()) {\n return false;\n }\n\n return !(self.config.maxDate !== undefined && self.currentYear === self.config.maxDate.getFullYear() && month > self.config.maxDate.getMonth());\n };\n\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i)) continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, false, self.l10n);\n month.tabIndex = -1;\n\n if (self.currentMonth === i) {\n month.selected = true;\n }\n\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n\n if (self.config.showMonths > 1) {\n monthElement = createElement(\"span\", \"cur-month\");\n } else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n\n var yearInput = createNumberInput(\"cur-year\", {\n tabindex: \"-1\"\n });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled = !!self.config.minDate && self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n\n self.monthNav.appendChild(self.nextMonthNav);\n }\n\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function get() {\n return self.__hidePrevMonthArrow;\n },\n set: function set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function get() {\n return self.__hideNextMonthArrow;\n },\n set: function set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar) self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\");\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\");\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getHours() : self.config.time_24hr ? self.config.defaultHour : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getMinutes() : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr) self.timeContainer.classList.add(\"time24hr\");\n\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getSeconds() : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[_int((self.latestSelectedDateObj ? self.hourElement.value : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n\n return self.timeContainer;\n }\n\n function buildWeekdays() {\n if (!self.weekdayContainer) self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");else clearNode(self.weekdayContainer);\n\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n\n updateWeekdays();\n return self.weekdayContainer;\n }\n\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n /* istanbul ignore next */\n\n\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) {\n isOffset = true;\n }\n\n var delta = isOffset ? value : value - self.currentMonth;\n if (delta < 0 && self._hidePrevMonthArrow === true || delta > 0 && self._hideNextMonthArrow === true) return;\n self.currentMonth += delta;\n\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) {\n triggerChangeEvent = true;\n }\n\n if (toInitial === void 0) {\n toInitial = true;\n }\n\n self.input.value = \"\";\n if (self.altInput !== undefined) self.altInput.value = \"\";\n if (self.mobileInput !== undefined) self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n\n self.showTimeInput = false;\n\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n\n self.redraw();\n if (triggerChangeEvent) // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n\n function close() {\n self.isOpen = false;\n\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n\n triggerEvent(\"onClose\");\n }\n\n function destroy() {\n if (self.config !== undefined) triggerEvent(\"onDestroy\");\n\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n\n self._handlers = [];\n\n if (self.mobileInput) {\n if (self.mobileInput.parentNode) self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n } else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config[\"static\"] && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n\n if (wrapper.parentNode) {\n while (wrapper.firstChild) {\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n }\n\n wrapper.parentNode.removeChild(wrapper);\n }\n } else self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode) self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n\n [\"_showTimeInput\", \"latestSelectedDateObj\", \"_hideNextMonthArrow\", \"_hidePrevMonthArrow\", \"__hideNextMonthArrow\", \"__hidePrevMonthArrow\", \"isMobile\", \"isOpen\", \"selectedDateElem\", \"minDateHasTime\", \"maxDateHasTime\", \"days\", \"daysContainer\", \"_input\", \"_positionElement\", \"innerContainer\", \"rContainer\", \"monthNav\", \"todayDateElem\", \"calendarContainer\", \"weekdayContainer\", \"prevMonthNav\", \"nextMonthNav\", \"monthsDropdownContainer\", \"currentMonthElement\", \"currentYearElement\", \"navigationCurrentMonth\", \"selectedDateElem\", \"config\"].forEach(function (k) {\n try {\n delete self[k];\n } catch (_) {}\n });\n }\n\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem)) return true;\n return self.calendarContainer.contains(elem);\n }\n\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input || eventTarget_1 === self.altInput || self.element.contains(eventTarget_1) || // web components\n // e.path is not present in all browsers. circumventing typechecks\n e.path && e.path.indexOf && (~e.path.indexOf(self.input) || ~e.path.indexOf(self.altInput));\n var lostFocus = e.type === \"blur\" ? isInput && e.relatedTarget && !isCalendarElem(e.relatedTarget) : !isInput && !isCalendarElement && !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n\n if (lostFocus && isIgnored) {\n self.close();\n\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n\n function changeYear(newYear) {\n if (!newYear || self.config.minDate && newYear < self.config.minDate.getFullYear() || self.config.maxDate && newYear > self.config.maxDate.getFullYear()) return;\n var newYearNum = newYear,\n isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n\n if (self.config.maxDate && self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n } else if (self.config.minDate && self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n\n function isEnabled(date, timeless) {\n if (timeless === void 0) {\n timeless = true;\n }\n\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n\n if (self.config.minDate && dateToCheck && compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0 || self.config.maxDate && dateToCheck && compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0) return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0) return true;\n if (dateToCheck === undefined) return false;\n var bool = self.config.enable.length > 0,\n array = bool ? self.config.enable : self.config.disable;\n\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" && d(dateToCheck) // disabled by function\n ) return bool;else if (d instanceof Date && dateToCheck !== undefined && d.getTime() === dateToCheck.getTime()) // disabled by date\n return bool;else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime() ? bool : !bool;\n } else if ( // disabled by range\n _typeof(d) === \"object\" && dateToCheck !== undefined && d.from && d.to && dateToCheck.getTime() >= d.from.getTime() && dateToCheck.getTime() <= d.to.getTime()) return bool;\n }\n\n return !bool;\n }\n\n function isInView(elem) {\n if (self.daysContainer !== undefined) return elem.className.indexOf(\"hidden\") === -1 && self.daysContainer.contains(elem);\n return false;\n }\n\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput ? self.config.altFormat : self.config.dateFormat);\n return e.target.blur();\n } else {\n self.open();\n }\n } else if (isCalendarElem(e.target) || allowKeydown || allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer && self.timeContainer.contains(e.target);\n\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n } else selectDate(e);\n\n break;\n\n case 27:\n // escape\n e.preventDefault();\n focusAndClose();\n break;\n\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n\n break;\n\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n\n if (self.daysContainer !== undefined && (allowInput === false || document.activeElement && isInView(document.activeElement))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey) focusOnDay(undefined, delta_1);else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n } else if (self.hourElement) self.hourElement.focus();\n\n break;\n\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n\n if (self.daysContainer && e.target.$i !== undefined || e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n } else if (!isTimeObj) focusOnDay(undefined, delta * 7);\n } else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n } else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement) self.hourElement.focus();\n updateTime(e);\n\n self._debouncedChange();\n }\n\n break;\n\n case 9:\n if (isTimeObj) {\n var elems = [self.hourElement, self.minuteElement, self.secondElement, self.amPM].concat(self.pluginElements).filter(function (x) {\n return x;\n });\n var i = elems.indexOf(e.target);\n\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n\n (target || self._input).focus();\n }\n } else if (!self.config.noCalendar && self.daysContainer && self.daysContainer.contains(e.target) && e.shiftKey) {\n e.preventDefault();\n\n self._input.focus();\n }\n\n break;\n\n default:\n break;\n }\n }\n\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 || elem && (!elem.classList.contains(\"flatpickr-day\") || elem.classList.contains(\"flatpickr-disabled\"))) return;\n var hoverDate = elem ? elem.dateObj.getTime() : self.days.firstElementChild.dateObj.getTime(),\n initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(),\n rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()),\n rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0,\n maxRange = 0;\n\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled = containsDisabled || t > rangeStartDate && t < rangeEndDate;\n if (t < initialDate && (!minRange || t > minRange)) minRange = t;else if (t > initialDate && (!maxRange || t < maxRange)) maxRange = t;\n }\n }\n\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n\n var _loop_1 = function _loop_1(i, l) {\n var dayElem = month.children[i],\n date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = minRange > 0 && timestamp < minRange || maxRange > 0 && timestamp > maxRange;\n\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n } else if (containsDisabled && !outOfRange) return \"continue\";\n\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime() ? \"startRange\" : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate) dayElem.classList.add(\"startRange\");else if (initialDate > hoverDate && timestamp === initialDate) dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange && (maxRange === 0 || timestamp <= maxRange) && isBetween(timestamp, initialDate, hoverDate)) dayElem.classList.add(\"inRange\");\n }\n };\n\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n\n function onResize() {\n if (self.isOpen && !self.config[\"static\"] && !self.config.inline) positionCalendar();\n }\n\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined ? new Date(self.config.minDate.getTime()) : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n\n function open(e, positionElement) {\n if (positionElement === void 0) {\n positionElement = self._positionElement;\n }\n\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n\n triggerEvent(\"onOpen\");\n return;\n }\n\n if (self._input.disabled || self.config.inline) return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n\n self._input.classList.add(\"active\");\n\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n\n if (self.config.allowInput === false && (e === undefined || !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () {\n return self.hourElement.select();\n }, 50);\n }\n }\n }\n\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat);\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] = dateObj.getHours() > 0 || dateObj.getMinutes() > 0 || dateObj.getSeconds() > 0;\n }\n\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) {\n return isEnabled(d);\n });\n if (!self.selectedDates.length && type === \"min\") setHoursFromDate(dateObj);\n updateValue();\n }\n\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined) self.currentYearElement[type] = dateObj.getFullYear().toString();else self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled = !!inverseDateObj && dateObj !== undefined && inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n\n function parseConfig() {\n var boolOpts = [\"wrap\", \"weekNumbers\", \"allowInput\", \"clickOpens\", \"time_24hr\", \"enableTime\", \"noCalendar\", \"altInput\", \"shorthandCurrentMonth\", \"inline\", \"static\", \"enableSeconds\", \"disableMobile\"];\n\n var userConfig = _assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function get() {\n return self.config._enable;\n },\n set: function set(dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function get() {\n return self.config._disable;\n },\n set: function set(dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat = userConfig.noCalendar || timeMode ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\") : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n\n if (userConfig.altInput && (userConfig.enableTime || timeMode) && !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat = userConfig.noCalendar || timeMode ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\") : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n\n if (!userConfig.altInputClass) {\n self.config.altInputClass = self.input.className + \" \" + self.config.altInputClass;\n }\n\n Object.defineProperty(self.config, \"minDate\", {\n get: function get() {\n return self.config._minDate;\n },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function get() {\n return self.config._maxDate;\n },\n set: minMaxDateSetter(\"max\")\n });\n\n var minMaxTimeSetter = function minMaxTimeSetter(type) {\n return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n };\n };\n\n Object.defineProperty(self.config, \"minTime\", {\n get: function get() {\n return self.config._minTime;\n },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function get() {\n return self.config._maxTime;\n },\n set: minMaxTimeSetter(\"max\")\n });\n\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n\n Object.assign(self.config, formats, userConfig);\n\n for (var i = 0; i < boolOpts.length; i++) {\n self.config[boolOpts[i]] = self.config[boolOpts[i]] === true || self.config[boolOpts[i]] === \"true\";\n }\n\n HOOKS.filter(function (hook) {\n return self.config[hook] !== undefined;\n }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile = !self.config.disableMobile && !self.config.inline && self.config.mode === \"single\" && !self.config.disable.length && !self.config.enable.length && !self.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key]).map(bindToInstance).concat(self.config[key]);\n } else if (typeof userConfig[key] === \"undefined\") self.config[key] = pluginConf[key];\n }\n }\n\n triggerEvent(\"onParseConfig\");\n }\n\n function setupLocale() {\n if (_typeof(self.config.locale) !== \"object\" && typeof flatpickr.l10ns[self.config.locale] === \"undefined\") self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = _assign({}, flatpickr.l10ns[\"default\"], _typeof(self.config.locale) === \"object\" ? self.config.locale : self.config.locale !== \"default\" ? flatpickr.l10ns[self.config.locale] : undefined);\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n\n var userConfig = _assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n\n if (userConfig.time_24hr === undefined && flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({\n config: self.config,\n l10n: self.l10n\n });\n }\n\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined) return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, function (acc, child) {\n return acc + child.offsetHeight;\n }, 0),\n calendarWidth = self.calendarContainer.offsetWidth,\n configPos = self.config.position.split(\" \"),\n configPosVertical = configPos[0],\n configPosHorizontal = configPos.length > 1 ? configPos[1] : null,\n inputBounds = positionElement.getBoundingClientRect(),\n distanceFromBottom = window.innerHeight - inputBounds.bottom,\n showOnTop = configPosVertical === \"above\" || configPosVertical !== \"below\" && distanceFromBottom < calendarHeight && inputBounds.top > calendarHeight;\n var top = window.pageYOffset + inputBounds.top + (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline) return;\n var left = window.pageXOffset + inputBounds.left - (configPosHorizontal != null && configPosHorizontal === \"center\" ? (calendarWidth - inputBounds.width) / 2 : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config[\"static\"]) return;\n self.calendarContainer.style.top = top + \"px\";\n\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n } else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n } else {\n var doc = document.styleSheets[0]; // some testing environments don't have css support\n\n if (doc === undefined) return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n\n function redraw() {\n if (self.config.noCalendar || self.isMobile) return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n\n function focusAndClose() {\n self._input.focus();\n\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 || navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n } else {\n self.close();\n }\n }\n\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var isSelectable = function isSelectable(day) {\n return day.classList && day.classList.contains(\"flatpickr-day\") && !day.classList.contains(\"flatpickr-disabled\") && !day.classList.contains(\"notAllowed\");\n };\n\n var t = findParent(e.target, isSelectable);\n if (t === undefined) return;\n var target = t;\n var selectedDate = self.latestSelectedDateObj = new Date(target.dateObj.getTime());\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth || selectedDate.getMonth() > self.currentMonth + self.config.showMonths - 1) && self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\") self.selectedDates = [selectedDate];else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex) self.selectedDates.splice(parseInt(selectedIndex), 1);else self.selectedDates.push(selectedDate);\n } else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate); // unless selecting same date twice, sort ascendingly\n\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0) self.selectedDates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n }\n setHoursFromInputs();\n\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n\n triggerEvent(\"onMonthChange\");\n }\n\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime) setTimeout(function () {\n return self.showTimeInput = true;\n }, 50); // maintain focus\n\n if (!shouldChangeMonth && self.config.mode !== \"range\" && self.config.showMonths === 1) focusOnDayElem(target);else if (self.selectedDateElem !== undefined && self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined) self.hourElement !== undefined && self.hourElement.focus();\n\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" && self.selectedDates.length === 2 && !self.config.enableTime;\n\n if (single || range) {\n focusAndClose();\n }\n }\n\n triggerChange();\n }\n\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n\n function set(option, value) {\n if (option !== null && _typeof(option) === \"object\") {\n Object.assign(self.config, option);\n\n for (var key in option) {\n if (CALLBACKS[key] !== undefined) CALLBACKS[key].forEach(function (x) {\n return x();\n });\n }\n } else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined) CALLBACKS[option].forEach(function (x) {\n return x();\n });else if (HOOKS.indexOf(option) > -1) self.config[option] = arrayify(value);\n }\n\n self.redraw();\n updateValue(false);\n }\n\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array) dates = inputDate.map(function (d) {\n return self.parseDate(d, format);\n });else if (inputDate instanceof Date || typeof inputDate === \"number\") dates = [self.parseDate(inputDate, format)];else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n\n case \"multiple\":\n dates = inputDate.split(self.config.conjunction).map(function (date) {\n return self.parseDate(date, format);\n });\n break;\n\n case \"range\":\n dates = inputDate.split(self.l10n.rangeSeparator).map(function (date) {\n return self.parseDate(date, format);\n });\n break;\n\n default:\n break;\n }\n } else self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) {\n return d instanceof Date && isEnabled(d, false);\n });\n if (self.config.mode === \"range\") self.selectedDates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n }\n\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) {\n triggerChange = false;\n }\n\n if (format === void 0) {\n format = self.config.dateFormat;\n }\n\n if (date !== 0 && !date || date instanceof Array && date.length === 0) return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj = self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n\n updateValue(triggerChange);\n if (triggerChange) triggerEvent(\"onChange\");\n }\n\n function parseDateRules(arr) {\n return arr.slice().map(function (rule) {\n if (typeof rule === \"string\" || typeof rule === \"number\" || rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n } else if (rule && _typeof(rule) === \"object\" && rule.from && rule.to) return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n\n return rule;\n }).filter(function (x) {\n return x;\n }); // remove falsy values\n }\n\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date(); // Workaround IE11 setting placeholder as the input's value\n\n var preloadedDate = self.config.defaultDate || ((self.input.nodeName === \"INPUT\" || self.input.nodeName === \"TEXTAREA\") && self.input.placeholder && self.input.value === self.input.placeholder ? null : self.input.value);\n if (preloadedDate) setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate = self.selectedDates.length > 0 ? self.selectedDates[0] : self.config.minDate && self.config.minDate.getTime() > self.now.getTime() ? self.config.minDate : self.config.maxDate && self.config.maxDate.getTime() < self.now.getTime() ? self.config.maxDate : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0) self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined) self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined) self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime = !!self.config.minDate && (self.config.minDate.getHours() > 0 || self.config.minDate.getMinutes() > 0 || self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime = !!self.config.maxDate && (self.config.maxDate.getHours() > 0 || self.config.maxDate.getMinutes() > 0 || self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function get() {\n return self._showTimeInput;\n },\n set: function set(bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer) toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n\n function setupInputs() {\n self.input = self.config.wrap ? element.querySelector(\"[data-input]\") : element;\n /* istanbul ignore next */\n\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n } // hack: store previous type to restore it after destroy()\n\n\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config[\"static\"] && self.input.parentNode) self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n\n if (!self.config.allowInput) self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n\n function setupMobile() {\n var inputType = self.config.enableTime ? self.config.noCalendar ? \"time\" : \"datetime-local\" : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr = inputType === \"datetime-local\" ? \"Y-m-d\\\\TH:i:S\" : inputType === \"date\" ? \"Y-m-d\" : \"H:i:S\";\n\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n\n if (self.config.minDate) self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate) self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined) self.altInput.type = \"hidden\";\n\n try {\n if (self.input.parentNode) self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n } catch (_a) {}\n\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n\n function toggle(e) {\n if (self.isOpen === true) return self.close();\n self.open(e);\n }\n\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined) return;\n var hooks = self.config[event];\n\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++) {\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n }\n\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\")); // many front-end frameworks bind to the input event\n\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0) return \"\" + i;\n }\n\n return false;\n }\n\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2) return false;\n return compareDates(date, self.selectedDates[0]) >= 0 && compareDates(date, self.selectedDates[1]) <= 0;\n }\n\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav) return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n\n if (self.config.showMonths > 1) {\n self.monthElements[i].textContent = monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n } else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow = self.config.minDate !== undefined && (self.currentYear === self.config.minDate.getFullYear() ? self.currentMonth <= self.config.minDate.getMonth() : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow = self.config.maxDate !== undefined && (self.currentYear === self.config.maxDate.getFullYear() ? self.currentMonth + 1 > self.config.maxDate.getMonth() : self.currentYear > self.config.maxDate.getFullYear());\n }\n\n function getDateStr(format) {\n return self.selectedDates.map(function (dObj) {\n return self.formatDate(dObj, format);\n }).filter(function (d, i, arr) {\n return self.config.mode !== \"range\" || self.config.enableTime || arr.indexOf(d) === i;\n }).join(self.config.mode !== \"range\" ? self.config.conjunction : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n\n\n function updateValue(triggerChange) {\n if (triggerChange === void 0) {\n triggerChange = true;\n }\n\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value = self.latestSelectedDateObj !== undefined ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr) : \"\";\n }\n\n self.input.value = getDateStr(self.config.dateFormat);\n\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n\n if (triggerChange !== false) triggerEvent(\"onValueUpdate\");\n }\n\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n } else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n } else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n } else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\",\n input = e.target;\n\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent = self.l10n.amPM[_int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n\n var min = parseFloat(input.getAttribute(\"min\")),\n max = parseFloat(input.getAttribute(\"max\")),\n step = parseFloat(input.getAttribute(\"step\")),\n curValue = parseInt(input.value, 10),\n delta = e.delta || (isKeyDown ? e.which === 38 ? 1 : -1 : 0);\n var newValue = curValue + step * delta;\n\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement,\n isMinuteElem = input === self.minuteElement;\n\n if (newValue < min) {\n newValue = max + newValue + _int(!isHourElem) + (_int(isHourElem) && _int(!self.amPM));\n if (isMinuteElem) incrementNumInput(undefined, -1, self.hourElement);\n } else if (newValue > max) {\n newValue = input === self.hourElement ? newValue - max - _int(!self.amPM) : min;\n if (isMinuteElem) incrementNumInput(undefined, 1, self.hourElement);\n }\n\n if (self.amPM && isHourElem && (step === 1 ? newValue + curValue === 23 : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent = self.l10n.amPM[_int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n\n input.value = pad(newValue);\n }\n }\n\n init();\n return self;\n }\n /* istanbul ignore next */\n\n\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice.call(nodeList).filter(function (x) {\n return x instanceof HTMLElement;\n });\n var instances = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null) continue;\n\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n\n node._flatpickr = undefined;\n }\n\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n } catch (e) {\n console.error(e);\n }\n }\n\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n\n\n if (typeof HTMLElement !== \"undefined\" && typeof HTMLCollection !== \"undefined\" && typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n\n\n var flatpickr = function flatpickr(selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n } else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n } else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n\n\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: _assign({}, english),\n \"default\": _assign({}, english)\n };\n\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = _assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = _assign({}, flatpickr.defaultConfig, config);\n };\n\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n } // eslint-disable-next-line @typescript-eslint/camelcase\n\n\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n});"]}