{"version":3,"sources":["modernizr-build.js","html5sortable.js","flatpickr.js","lightgallery.min.js","functions.js","main.js","form.js","tabs.js","checklist.js","community.js","student.js","notes.js","resources.js"],"names":["e","n","s","createElement","u","createElementNS","call","apply","arguments","i","t","o","r","l","f","d","p","h","body","fake","a","parseInt","id","appendChild","type","styleSheet","cssText","createTextNode","style","background","overflow","c","parentNode","removeChild","offsetHeight","_version","_config","classPrefix","enableClasses","enableJSClass","usePrefixes","_q","on","this","setTimeout","addTest","push","name","fn","options","addAsyncTest","Modernizr","prototype","documentElement","nodeName","toLowerCase","matchMedia","msMatchMedia","matches","getComputedStyle","currentStyle","position","mq","split","_prefixes","TouchEvent","DocumentTouch","join","hasOwnProperty","aliases","length","_typeof","Boolean","className","baseVal","RegExp","replace","window","document","sortable","addData","element","key","value","undefined","h5s","data","_filter","nodes","selector","NodeList","HTMLCollection","Array","Error","from","filter","item","nodeType","stores","Map","Store","Object","defineProperty","get","config","forEach","set","mergedConfig","assign","entries","enumerable","configurable","setConfig","has","getConfig","_placeholder","placeholder","HTMLElement","setData","_data","getData","deleteData","delete","store","sortableElement","addEventListener","eventName","callback","removeEventListener","addAttribute","attribute","setAttribute","removeAttribute","insertNode","referenceNode","newElement","parentElement","insertBefore","nextElementSibling","_getHandles","items","querySelector","shadowRoot","map","defaultDragImage","draggedElement","elementOffset","event","posX","pageX","left","posY","pageY","top","_offset","getClientRects","rect","pageXOffset","right","pageYOffset","bottom","_debounce","func","wait","timeout","args","_i","clearTimeout","_index","elementList","indexOf","isInDom","target","insertAfter","_serialize","sortableContainer","customItemSerializer","customContainerSerializer","serializedItem","serializedContainer","isSortable","children","serializedItems","parent","node","html","outerHTML","index","container","itemCount","_makePlaceholder","placeholderClass","_a","includes","tagName","innerHTML","classList","add","_getElementHeight","int","getPropertyValue","isNaN","reduce","sum","_getElementWidth","getEventTarget","composedPath","setDragImage","customDragImage","Event","dataTransfer","dragImage","effectAllowed","_listsConnected","destination","origin","acceptFrom","sel","defaultConfiguration","connectWith","disableIEFix","copy","draggingClass","hoverClass","debounce","throttleTime","maxItems","itemSerializer","containerSerializer","orientation","_removeItemEvents","_removeSortableData","removeData","_removeItemData","dragging","draggingHeight","draggingWidth","originContainer","originIndex","originElementIndex","originItemsBeforeUpdate","previousContainer","destinationItemsBeforeUpdate","enableHoverClass","enable","hoverClasses_1","threshold","_this","lastEventTimestamp","now","Date","_throttle","buttons","_b","remove","_getDragging","draggedItem","ditem","cloneNode","display","oldDisplay","findSortable","find","el","findDragElement","itemlist","ele","contains","_enableSortable","opts","handles","handle","dragDrop","_reloadSortable","sortableElements","method","String","querySelectorAll","slice","test","configKey","console","warn","customPlaceholder","listItems","tempContainer","stopImmediatePropagation","getAttribute","dragItem","dispatchEvent","CustomEvent","detail","elementIndex","originalTarget","itemsBeforeUpdate","visiblePlaceholder","values","preventDefault","stopPropagation","originItems","destinationContainer","destinationItems","destinationElementIndex","destinationIndex","onDragOverEnter","dropEffect","debouncedDragOverEnter","forcePlaceholderSize","height","width","thisHeight","thisWidth","placeholderIndex","thisIndex","deadZoneVertical","deadZoneHorizontal","offsetTop","offsetLeft","placeAfter","elementMiddleVertical","elementMiddleHorizontal","offsetWidth","placeholders","concat","destroy","_destroySortable","disable","_disableSortable","__testing","global","factory","exports","module","define","amd","self","flatpickr","__assign","HOOKS","defaults","_disable","_enable","allowInput","altFormat","altInput","altInputClass","animate","navigator","userAgent","ariaDateFormat","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","errorHandler","err","getWeek","givenDate","date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","mode","monthSelectorType","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","bool","immediate","context","arrayify","obj","toggleClass","elem","tag","content","textContent","clearNode","firstChild","createNumberInput","inputClassName","wrapper","numInput","arrowUp","arrowDown","pattern","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","parseFloat","H","J","day","K","getHours","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","Y","year","setFullYear","Z","ISODate","minutes","setMinutes","j","m","month","unixMillSeconds","w","y","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","substring","createDateFormatter","_c","l10n","frmt","overrideLocale","formatDate","arr","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","match","exec","val","compareDates","date1","date2","isBetween","ts","ts1","ts2","min","max","duration","DAY","TypeError","_loop_1","source","keys","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","defaultConfig","bindToInstance","bind","setCalendarWidth","requestAnimationFrame","calendarContainer","visibility","daysContainer","daysWidth","days","weekWrapper","removeProperty","updateTime","selectedDates","setDefaultTime","isKeyDown","input","step","curValue","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","toString","changeYear","handler","ev","_handlers","onClick","evt","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","inputElem","createEvent","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","focusOnDay","current","offset","dayFocused","isInView","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","buildDays","frag","monthsDropdownContainer","selected","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","disabled","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","splice","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","appendTo","documentClick","isOpen","eventTarget_1","isCalendarElement","isInput","path","lostFocus","relatedTarget","isIgnored","some","timeContainer","close","clear","newYear","newYearNum","isNewYear","dateToCheck","array","parsed","to","allowKeydown","allowInlineKeydown","keyCode","blur","open","isTimeObj","focusAndClose","selectDate","delta_1","ctrlKey","currentYearElement","elems","pluginElements","x","shiftKey","charAt","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","setupLocale","l10ns","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","acc","child","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","showOnTop","rightMost","centerMost","doc","styleSheets","bodyWidth","centerLeft","centerIndex","cssRules","centerStyle","insertRule","centerBefore","msMaxTouchPoints","findParent","condition","selectedDate","shouldChangeMonth","selectedIndex","sort","b","showTimeInput","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","lastChild","_type","k","click","wasOpen","select","option","CALLBACKS","setSelectedDate","toggle","inputDate","dates","parseDateRules","rule","hooks","initEvent","getDateStr","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","required","nextSibling","setupInputs","preloadedDate","defaultDate","_showTimeInput","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","rContainer","separator","hourInput","aria-label","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","build","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","bindEvents","isSafari","init","_flatpickr","nodeList","instances","error","Node","en","default","localize","setDefaults","jQuery","fp_incr","Lightgallery","require","code","1","lgUtils","addClass","removeClass","hasClass","setVendor","trigger","Listener","uid","off","param","encodeURIComponent","2","lightgallery","dynamic","dynamicEl","constructor","modules","lGalleryOn","lgBusy","hideBartimeout","isTouch","slideEndAnimatoin","hideControlOnEnd","selectWithin","___slide","outer","__esModule","bubbles","cancelable","initCustomEvent","lgData","cssEasing","easing","speed","startClass","backdropDuration","hideBarsDelay","useLeft","lgModules","closable","loop","escKey","keyPress","controls","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","nextHtml","prevHtml","iframeMaxWidth","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","galleryId","location","hash","structure","slide","arrow","closeGallery","setTop","doCss","prevScrollTop","scrollTop","isVideo","html5","youtube","vimeo","dailymotion","vk","addHtml","subHtml","loadContent","g","innerWidth","poster","src","responsive","srcset","sizes","iframe","picturefill","elements","delay","downloadUrl","getElementById","prevIndex","fromTouch","fromThumb","arrowDisable","goToNextSlide","goToPrevSlide","setTranslate","touchMove","clientWidth","touchEnd","opacity","manageSwipeClass","targetTouches","scrollLeft","deltaY","lightGallery","./lg-utils","do_serialize","form","field","len","checked","make_ajax_call","success","httpRequest","XMLHttpRequest","onreadystatechange","resp","readyState","DONE","status","responseText","setRequestHeader","cookies","cookie","send","getOrientation","file","reader","FileReader","onload","view","DataView","result","getUint16","byteLength","marker","getUint32","little","tags","readAsArrayBuffer","editor_buttons","editor_button","accordion_triggers","accordion_trigger","mobile_trigger","student_nav","student_nav_trigger","student_tracker","childElementCount","currentTarget","callouts","callout","help_blocks","help_block","modal_container","modal_close","galleries","gallery","links","linksLength","hostname","rel","accepted_files","on_change_forms","on_change_form","submit","address_blocks","address_block","address_block_listener","form_toggles","form_toggle","form_repeatings","form_repeating","action","rows_container","template_container","template","childNodes","COMMENT_NODE","renumber_rows","new_row","other_checkboxes","other_checkbox","checkbox","multiple_upload_containers","multiple_upload_container","upload_image_container","previousElementSibling","image","innerText","files","file_limit_tmp","files_checked","dt","DataTransfer","extension","pop","size","log","_loop","readAsDataURL","image_url","URL","createObjectURL","backgroundImage","revokeObjectURL","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","next","done","return","current_image","upload_avatar_containers","re","row","row_index","hasAttribute","htmlFor","upload_avatar_container","avatar_container","label","original_photo","delete_toggle_container","delete_toggle_checkbox","delete_toggle_button","country_dropdown","city_label","zip_label","state_selector","city_required","zip_required","tab_containers","tab_container","move_indicator","this_tab","tab_width","tab_x","tab_indicator","container_x","tabs_contents","tabs","tab","tab_content","add_checklist_trigger","backs","language_select","checklist_template_language_containers","add_checklist_step1","add_checklist_step2a","add_checklist_step2b","back","current_language","checklist_template_language_container","checklist_picker","edit_checklist","edit_checklist_form","checklist_items","checklist_item","checklist_item_edit","add_task_trigger","add_task_form","bookmark_triggers","bookmark_trigger","bookmark_form","bookmark_form_post_id","bookmarked","like_triggers","like_trigger","like_form","like_form_post_id","liked","like_trigger_text","reply_container","reply_triggers","cancel_trigger","reply_trigger","rt","scrollIntoView","create_thread_category_dropdown","create_thread_topic_dropdown","topic_options","topic_option","category_topics","community_category_topics","add_school_info_triggers","student_school_form_add","student_school_form_edit","add_school_info_trigger","edit_trigger","student_school_info","student_tracker_actions","student_tracker_checkboxes","student_tracker_action","student_tracker_checkbox","copy_resources","student_grade_resources","school_types_dropdown","href","add_note_triggers","add_note_form","add_note_trigger","note_form_topics","note_form_topic","note_form_topic_new","add_school_note_triggers","add_school_note_trigger","note_form_urls","note_form_url","last_child","lastElementChild","note_contents","note_content","student_notes","student_note","print_note","edit_note","previous_element","print","favorite_triggers","favorite_trigger","favorite_form","favorite_form_post_id","favorited"],"mappings":"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","file":"app.min.js","sourcesContent":["/*! modernizr 3.8.0 (Custom Build) | MIT *\n * https://modernizr.com/download/?-touchevents-mq-setclasses !*/\n!function(e,n,t){function o(e,n){return typeof e===n}function s(){return\"function\"!=typeof n.createElement?n.createElement(arguments[0]):u?n.createElementNS.call(n,\"http://www.w3.org/2000/svg\",arguments[0]):n.createElement.apply(n,arguments)}function a(){var e=n.body;return e||(e=s(u?\"svg\":\"body\"),e.fake=!0),e}function i(e,t,o,i){var r,l,f,u,d=\"modernizr\",p=s(\"div\"),h=a();if(parseInt(o,10))for(;o--;)f=s(\"div\"),f.id=i?i[o]:d+(o+1),p.appendChild(f);return r=s(\"style\"),r.type=\"text/css\",r.id=\"s\"+d,(h.fake?h:p).appendChild(r),h.appendChild(p),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(n.createTextNode(e)),p.id=d,h.fake&&(h.style.background=\"\",h.style.overflow=\"hidden\",u=c.style.overflow,c.style.overflow=\"hidden\",c.appendChild(h)),l=t(p,e),h.fake?(h.parentNode.removeChild(h),c.style.overflow=u,c.offsetHeight):p.parentNode.removeChild(p),!!l}var r=[],l={_version:\"3.8.0\",_config:{classPrefix:\"\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){r.push({name:e,fn:n,options:t})},addAsyncTest:function(e){r.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=l,Modernizr=new Modernizr;var f=[],c=n.documentElement,u=\"svg\"===c.nodeName.toLowerCase(),d=function(){var n=e.matchMedia||e.msMatchMedia;return n?function(e){var t=n(e);return t&&t.matches||!1}:function(n){var t=!1;return i(\"@media \"+n+\" { #modernizr { position: absolute; } }\",function(n){t=\"absolute\"===(e.getComputedStyle?e.getComputedStyle(n,null):n.currentStyle).position}),t}}();l.mq=d;var p=l._config.usePrefixes?\" -webkit- -moz- -o- -ms- \".split(\" \"):[\"\",\"\"];l._prefixes=p,Modernizr.addTest(\"touchevents\",function(){if(\"ontouchstart\"in e||e.TouchEvent||e.DocumentTouch&&n instanceof DocumentTouch)return!0;var t=[\"(\",p.join(\"touch-enabled),(\"),\"heartz\",\")\"].join(\"\");return d(t)}),function(){var e,n,t,s,a,i,l;for(var c in r)if(r.hasOwnProperty(c)){if(e=[],n=r[c],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t0&&(n+=\" \"+t+e.join(\" \"+t)),u?c.className.baseVal=n:c.className=n)}(f),delete l.addTest,delete l.addAsyncTest;for(var h=0;h\n *\n * Released under the MIT license.\n */\nvar sortable = (function () {\n 'use strict';\n\n /**\n * Get or set data on element\n * @param {HTMLElement} element\n * @param {string} key\n * @param {any} value\n * @return {*}\n */\n function addData(element, key, value) {\n if (value === undefined) {\n return element && element.h5s && element.h5s.data && element.h5s.data[key];\n }\n else {\n element.h5s = element.h5s || {};\n element.h5s.data = element.h5s.data || {};\n element.h5s.data[key] = value;\n }\n }\n /**\n * Remove data from element\n * @param {HTMLElement} element\n */\n function removeData(element) {\n if (element.h5s) {\n delete element.h5s.data;\n }\n }\n\n /* eslint-env browser */\n /**\n * Filter only wanted nodes\n * @param {NodeList|HTMLCollection|Array} nodes\n * @param {String} selector\n * @returns {Array}\n */\n var _filter = (function (nodes, selector) {\n if (!(nodes instanceof NodeList || nodes instanceof HTMLCollection || nodes instanceof Array)) {\n throw new Error('You must provide a nodeList/HTMLCollection/Array of elements to be filtered.');\n }\n if (typeof selector !== 'string') {\n return Array.from(nodes);\n }\n return Array.from(nodes).filter(function (item) { return item.nodeType === 1 && item.matches(selector); });\n });\n\n /* eslint-env browser */\n var stores = new Map();\n /**\n * Stores data & configurations per Sortable\n * @param {Object} config\n */\n var Store = /** @class */ (function () {\n function Store() {\n this._config = new Map(); // eslint-disable-line no-undef\n this._placeholder = undefined; // eslint-disable-line no-undef\n this._data = new Map(); // eslint-disable-line no-undef\n }\n Object.defineProperty(Store.prototype, \"config\", {\n /**\n * get the configuration map of a class instance\n * @method config\n * @return {object}\n */\n get: function () {\n // transform Map to object\n var config = {};\n this._config.forEach(function (value, key) {\n config[key] = value;\n });\n // return object\n return config;\n },\n /**\n * set the configuration of a class instance\n * @method config\n * @param {object} config object of configurations\n */\n set: function (config) {\n if (typeof config !== 'object') {\n throw new Error('You must provide a valid configuration object to the config setter.');\n }\n // combine config with default\n var mergedConfig = Object.assign({}, config);\n // add config to map\n this._config = new Map(Object.entries(mergedConfig));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * set individual configuration of a class instance\n * @method setConfig\n * @param key valid configuration key\n * @param value any value\n * @return void\n */\n Store.prototype.setConfig = function (key, value) {\n if (!this._config.has(key)) {\n throw new Error(\"Trying to set invalid configuration item: \" + key);\n }\n // set config\n this._config.set(key, value);\n };\n /**\n * get an individual configuration of a class instance\n * @method getConfig\n * @param key valid configuration key\n * @return any configuration value\n */\n Store.prototype.getConfig = function (key) {\n if (!this._config.has(key)) {\n throw new Error(\"Invalid configuration item requested: \" + key);\n }\n return this._config.get(key);\n };\n Object.defineProperty(Store.prototype, \"placeholder\", {\n /**\n * get the placeholder for a class instance\n * @method placeholder\n * @return {HTMLElement|null}\n */\n get: function () {\n return this._placeholder;\n },\n /**\n * set the placeholder for a class instance\n * @method placeholder\n * @param {HTMLElement} placeholder\n * @return {void}\n */\n set: function (placeholder) {\n if (!(placeholder instanceof HTMLElement) && placeholder !== null) {\n throw new Error('A placeholder must be an html element or null.');\n }\n this._placeholder = placeholder;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * set an data entry\n * @method setData\n * @param {string} key\n * @param {any} value\n * @return {void}\n */\n Store.prototype.setData = function (key, value) {\n if (typeof key !== 'string') {\n throw new Error('The key must be a string.');\n }\n this._data.set(key, value);\n };\n /**\n * get an data entry\n * @method getData\n * @param {string} key an existing key\n * @return {any}\n */\n Store.prototype.getData = function (key) {\n if (typeof key !== 'string') {\n throw new Error('The key must be a string.');\n }\n return this._data.get(key);\n };\n /**\n * delete an data entry\n * @method deleteData\n * @param {string} key an existing key\n * @return {boolean}\n */\n Store.prototype.deleteData = function (key) {\n if (typeof key !== 'string') {\n throw new Error('The key must be a string.');\n }\n return this._data.delete(key);\n };\n return Store;\n }());\n /**\n * @param {HTMLElement} sortableElement\n * @returns {Class: Store}\n */\n var store = (function (sortableElement) {\n // if sortableElement is wrong type\n if (!(sortableElement instanceof HTMLElement)) {\n throw new Error('Please provide a sortable to the store function.');\n }\n // create new instance if not avilable\n if (!stores.has(sortableElement)) {\n stores.set(sortableElement, new Store());\n }\n // return instance\n return stores.get(sortableElement);\n });\n\n /**\n * @param {Array|HTMLElement} element\n * @param {Function} callback\n * @param {string} event\n */\n function addEventListener(element, eventName, callback) {\n if (element instanceof Array) {\n for (var i = 0; i < element.length; ++i) {\n addEventListener(element[i], eventName, callback);\n }\n return;\n }\n element.addEventListener(eventName, callback);\n store(element).setData(\"event\" + eventName, callback);\n }\n /**\n * @param {Array|HTMLElement} element\n * @param {string} eventName\n */\n function removeEventListener(element, eventName) {\n if (element instanceof Array) {\n for (var i = 0; i < element.length; ++i) {\n removeEventListener(element[i], eventName);\n }\n return;\n }\n element.removeEventListener(eventName, store(element).getData(\"event\" + eventName));\n store(element).deleteData(\"event\" + eventName);\n }\n\n /**\n * @param {Array|HTMLElement} element\n * @param {string} attribute\n * @param {string} value\n */\n function addAttribute(element, attribute, value) {\n if (element instanceof Array) {\n for (var i = 0; i < element.length; ++i) {\n addAttribute(element[i], attribute, value);\n }\n return;\n }\n element.setAttribute(attribute, value);\n }\n /**\n * @param {Array|HTMLElement} element\n * @param {string} attribute\n */\n function removeAttribute(element, attribute) {\n if (element instanceof Array) {\n for (var i = 0; i < element.length; ++i) {\n removeAttribute(element[i], attribute);\n }\n return;\n }\n element.removeAttribute(attribute);\n }\n\n /**\n * @param {HTMLElement} element\n * @returns {Object}\n */\n var _offset = (function (element) {\n if (!element.parentElement || element.getClientRects().length === 0) {\n throw new Error('target element must be part of the dom');\n }\n var rect = element.getClientRects()[0];\n return {\n left: rect.left + window.pageXOffset,\n right: rect.right + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n bottom: rect.bottom + window.pageYOffset\n };\n });\n\n /**\n * Creates and returns a new debounced version of the passed function which will postpone its execution until after wait milliseconds have elapsed\n * @param {Function} func to debounce\n * @param {number} time to wait before calling function with latest arguments, 0 - no debounce\n * @returns {function} - debounced function\n */\n var _debounce = (function (func, wait) {\n if (wait === void 0) { wait = 0; }\n var timeout;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n func.apply(void 0, args);\n }, wait);\n };\n });\n\n /* eslint-env browser */\n /**\n * Get position of the element relatively to its sibling elements\n * @param {HTMLElement} element\n * @returns {number}\n */\n var _index = (function (element, elementList) {\n if (!(element instanceof HTMLElement) || !(elementList instanceof NodeList || elementList instanceof HTMLCollection || elementList instanceof Array)) {\n throw new Error('You must provide an element and a list of elements.');\n }\n return Array.from(elementList).indexOf(element);\n });\n\n /* eslint-env browser */\n /**\n * Test whether element is in DOM\n * @param {HTMLElement} element\n * @returns {boolean}\n */\n var isInDom = (function (element) {\n if (!(element instanceof HTMLElement)) {\n throw new Error('Element is not a node element.');\n }\n return element.parentNode !== null;\n });\n\n /* eslint-env browser */\n /**\n * Insert node before or after target\n * @param {HTMLElement} referenceNode - reference element\n * @param {HTMLElement} newElement - element to be inserted\n * @param {String} position - insert before or after reference element\n */\n var insertNode = function (referenceNode, newElement, position) {\n if (!(referenceNode instanceof HTMLElement) || !(referenceNode.parentElement instanceof HTMLElement)) {\n throw new Error('target and element must be a node');\n }\n referenceNode.parentElement.insertBefore(newElement, (position === 'before' ? referenceNode : referenceNode.nextElementSibling));\n };\n /**\n * Insert before target\n * @param {HTMLElement} target\n * @param {HTMLElement} element\n */\n var insertBefore = function (target, element) { return insertNode(target, element, 'before'); };\n /**\n * Insert after target\n * @param {HTMLElement} target\n * @param {HTMLElement} element\n */\n var insertAfter = function (target, element) { return insertNode(target, element, 'after'); };\n\n /* eslint-env browser */\n /**\n * Filter only wanted nodes\n * @param {HTMLElement} sortableContainer\n * @param {Function} customSerializer\n * @returns {Array}\n */\n var _serialize = (function (sortableContainer, customItemSerializer, customContainerSerializer) {\n if (customItemSerializer === void 0) { customItemSerializer = function (serializedItem, sortableContainer) { return serializedItem; }; }\n if (customContainerSerializer === void 0) { customContainerSerializer = function (serializedContainer) { return serializedContainer; }; }\n // check for valid sortableContainer\n if (!(sortableContainer instanceof HTMLElement) || !sortableContainer.isSortable === true) {\n throw new Error('You need to provide a sortableContainer to be serialized.');\n }\n // check for valid serializers\n if (typeof customItemSerializer !== 'function' || typeof customContainerSerializer !== 'function') {\n throw new Error('You need to provide a valid serializer for items and the container.');\n }\n // get options\n var options = addData(sortableContainer, 'opts');\n var item = options.items;\n // serialize container\n var items = _filter(sortableContainer.children, item);\n var serializedItems = items.map(function (item) {\n return {\n parent: sortableContainer,\n node: item,\n html: item.outerHTML,\n index: _index(item, items)\n };\n });\n // serialize container\n var container = {\n node: sortableContainer,\n itemCount: serializedItems.length\n };\n return {\n container: customContainerSerializer(container),\n items: serializedItems.map(function (item) { return customItemSerializer(item, sortableContainer); })\n };\n });\n\n /* eslint-env browser */\n /**\n * create a placeholder element\n * @param {HTMLElement} sortableElement a single sortable\n * @param {string|undefined} placeholder a string representing an html element\n * @param {string} placeholderClasses a string representing the classes that should be added to the placeholder\n */\n var _makePlaceholder = (function (sortableElement, placeholder, placeholderClass) {\n var _a;\n if (placeholderClass === void 0) { placeholderClass = 'sortable-placeholder'; }\n if (!(sortableElement instanceof HTMLElement)) {\n throw new Error('You must provide a valid element as a sortable.');\n }\n // if placeholder is not an element\n if (!(placeholder instanceof HTMLElement) && placeholder !== undefined) {\n throw new Error('You must provide a valid element as a placeholder or set ot to undefined.');\n }\n // if no placeholder element is given\n if (placeholder === undefined) {\n if (['UL', 'OL'].includes(sortableElement.tagName)) {\n placeholder = document.createElement('li');\n }\n else if (['TABLE', 'TBODY'].includes(sortableElement.tagName)) {\n placeholder = document.createElement('tr');\n // set colspan to always all rows, otherwise the item can only be dropped in first column\n placeholder.innerHTML = '
';\n }\n else {\n placeholder = document.createElement('div');\n }\n }\n // add classes to placeholder\n if (typeof placeholderClass === 'string') {\n (_a = placeholder.classList).add.apply(_a, placeholderClass.split(' '));\n }\n return placeholder;\n });\n\n /* eslint-env browser */\n /**\n * Get height of an element including padding\n * @param {HTMLElement} element an dom element\n */\n var _getElementHeight = (function (element) {\n if (!(element instanceof HTMLElement)) {\n throw new Error('You must provide a valid dom element');\n }\n // get calculated style of element\n var style = window.getComputedStyle(element);\n // pick applicable properties, convert to int and reduce by adding\n return ['height', 'padding-top', 'padding-bottom']\n .map(function (key) {\n var int = parseInt(style.getPropertyValue(key), 10);\n return isNaN(int) ? 0 : int;\n })\n .reduce(function (sum, value) { return sum + value; });\n });\n\n /* eslint-env browser */\n /**\n * Get width of an element including padding\n * @param {HTMLElement} element an dom element\n */\n var _getElementWidth = (function (element) {\n if (!(element instanceof HTMLElement)) {\n throw new Error('You must provide a valid dom element');\n }\n // get calculated style of element\n var style = window.getComputedStyle(element);\n // pick applicable properties, convert to int and reduce by adding\n return ['width', 'padding-left', 'padding-right']\n .map(function (key) {\n var int = parseInt(style.getPropertyValue(key), 10);\n return isNaN(int) ? 0 : int;\n })\n .reduce(function (sum, value) { return sum + value; });\n });\n\n /* eslint-env browser */\n /**\n * get handle or return item\n * @param {Array} items\n * @param {string} selector\n */\n var _getHandles = (function (items, selector) {\n if (!(items instanceof Array)) {\n throw new Error('You must provide a Array of HTMLElements to be filtered.');\n }\n if (typeof selector !== 'string') {\n return items;\n }\n return items\n // remove items without handle from array\n .filter(function (item) {\n return item.querySelector(selector) instanceof HTMLElement ||\n (item.shadowRoot && item.shadowRoot.querySelector(selector) instanceof HTMLElement);\n })\n // replace item with handle in array\n .map(function (item) {\n return item.querySelector(selector) || (item.shadowRoot && item.shadowRoot.querySelector(selector));\n });\n });\n\n /**\n * @param {Event} event\n * @returns {HTMLElement}\n */\n var getEventTarget = (function (event) {\n return (event.composedPath && event.composedPath()[0]) || event.target;\n });\n\n /* eslint-env browser */\n /**\n * defaultDragImage returns the current item as dragged image\n * @param {HTMLElement} draggedElement - the item that the user drags\n * @param {object} elementOffset - an object with the offsets top, left, right & bottom\n * @param {Event} event - the original drag event object\n * @return {object} with element, posX and posY properties\n */\n var defaultDragImage = function (draggedElement, elementOffset, event) {\n return {\n element: draggedElement,\n posX: event.pageX - elementOffset.left,\n posY: event.pageY - elementOffset.top\n };\n };\n /**\n * attaches an element as the drag image to an event\n * @param {Event} event - the original drag event object\n * @param {HTMLElement} draggedElement - the item that the user drags\n * @param {Function} customDragImage - function to create a custom dragImage\n * @return void\n */\n var setDragImage = (function (event, draggedElement, customDragImage) {\n // check if event is provided\n if (!(event instanceof Event)) {\n throw new Error('setDragImage requires a DragEvent as the first argument.');\n }\n // check if draggedElement is provided\n if (!(draggedElement instanceof HTMLElement)) {\n throw new Error('setDragImage requires the dragged element as the second argument.');\n }\n // set default function of none provided\n if (!customDragImage) {\n customDragImage = defaultDragImage;\n }\n // check if setDragImage method is available\n if (event.dataTransfer && event.dataTransfer.setDragImage) {\n // get the elements offset\n var elementOffset = _offset(draggedElement);\n // get the dragImage\n var dragImage = customDragImage(draggedElement, elementOffset, event);\n // check if custom function returns correct values\n if (!(dragImage.element instanceof HTMLElement) || typeof dragImage.posX !== 'number' || typeof dragImage.posY !== 'number') {\n throw new Error('The customDragImage function you provided must return and object with the properties element[string], posX[integer], posY[integer].');\n }\n // needs to be set for HTML5 drag & drop to work\n event.dataTransfer.effectAllowed = 'copyMove';\n // Firefox requires it to use the event target's id for the data\n event.dataTransfer.setData('text/plain', getEventTarget(event).id);\n // set the drag image on the event\n event.dataTransfer.setDragImage(dragImage.element, dragImage.posX, dragImage.posY);\n }\n });\n\n /**\n * Check if curList accepts items from destList\n * @param {sortable} destination the container an item is move to\n * @param {sortable} origin the container an item comes from\n */\n var _listsConnected = (function (destination, origin) {\n // check if valid sortable\n if (destination.isSortable === true) {\n var acceptFrom = store(destination).getConfig('acceptFrom');\n // check if acceptFrom is valid\n if (acceptFrom !== null && acceptFrom !== false && typeof acceptFrom !== 'string') {\n throw new Error('HTML5Sortable: Wrong argument, \"acceptFrom\" must be \"null\", \"false\", or a valid selector string.');\n }\n if (acceptFrom !== null) {\n return acceptFrom !== false && acceptFrom.split(',').filter(function (sel) {\n return sel.length > 0 && origin.matches(sel);\n }).length > 0;\n }\n // drop in same list\n if (destination === origin) {\n return true;\n }\n // check if lists are connected with connectWith\n if (store(destination).getConfig('connectWith') !== undefined && store(destination).getConfig('connectWith') !== null) {\n return store(destination).getConfig('connectWith') === store(origin).getConfig('connectWith');\n }\n }\n return false;\n });\n\n /**\n * default configurations\n */\n var defaultConfiguration = {\n items: null,\n // deprecated\n connectWith: null,\n // deprecated\n disableIEFix: null,\n acceptFrom: null,\n copy: false,\n placeholder: null,\n placeholderClass: 'sortable-placeholder',\n draggingClass: 'sortable-dragging',\n hoverClass: false,\n debounce: 0,\n throttleTime: 100,\n maxItems: 0,\n itemSerializer: undefined,\n containerSerializer: undefined,\n customDragImage: null,\n orientation: 'vertical'\n };\n\n /**\n * make sure a function is only called once within the given amount of time\n * @param {Function} fn the function to throttle\n * @param {number} threshold time limit for throttling\n */\n // must use function to keep this context\n function _throttle (fn, threshold) {\n var _this = this;\n if (threshold === void 0) { threshold = 250; }\n // check function\n if (typeof fn !== 'function') {\n throw new Error('You must provide a function as the first argument for throttle.');\n }\n // check threshold\n if (typeof threshold !== 'number') {\n throw new Error('You must provide a number as the second argument for throttle.');\n }\n var lastEventTimestamp = null;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var now = Date.now();\n if (lastEventTimestamp === null || now - lastEventTimestamp >= threshold) {\n lastEventTimestamp = now;\n fn.apply(_this, args);\n }\n };\n }\n\n /* eslint-env browser */\n /**\n * enable or disable hoverClass on mouseenter/leave if container Items\n * @param {sortable} sortableContainer a valid sortableContainer\n * @param {boolean} enable enable or disable event\n */\n // export default (sortableContainer: sortable, enable: boolean) => {\n var enableHoverClass = (function (sortableContainer, enable) {\n if (typeof store(sortableContainer).getConfig('hoverClass') === 'string') {\n var hoverClasses_1 = store(sortableContainer).getConfig('hoverClass').split(' ');\n // add class on hover\n if (enable === true) {\n addEventListener(sortableContainer, 'mousemove', _throttle(function (event) {\n // check of no mouse button was pressed when mousemove started == no drag\n if (event.buttons === 0) {\n _filter(sortableContainer.children, store(sortableContainer).getConfig('items')).forEach(function (item) {\n var _a, _b;\n if (item !== event.target) {\n (_a = item.classList).remove.apply(_a, hoverClasses_1);\n }\n else {\n (_b = item.classList).add.apply(_b, hoverClasses_1);\n }\n });\n }\n }, store(sortableContainer).getConfig('throttleTime')));\n // remove class on leave\n addEventListener(sortableContainer, 'mouseleave', function () {\n _filter(sortableContainer.children, store(sortableContainer).getConfig('items')).forEach(function (item) {\n var _a;\n (_a = item.classList).remove.apply(_a, hoverClasses_1);\n });\n });\n // remove events\n }\n else {\n removeEventListener(sortableContainer, 'mousemove');\n removeEventListener(sortableContainer, 'mouseleave');\n }\n }\n });\n\n /* eslint-env browser */\n /*\n * variables global to the plugin\n */\n var dragging;\n var draggingHeight;\n var draggingWidth;\n /*\n * Keeps track of the initialy selected list, where 'dragstart' event was triggered\n * It allows us to move the data in between individual Sortable List instances\n */\n // Origin List - data from before any item was changed\n var originContainer;\n var originIndex;\n var originElementIndex;\n var originItemsBeforeUpdate;\n // Previous Sortable Container - we dispatch as sortenter event when a\n // dragged item enters a sortableContainer for the first time\n var previousContainer;\n // Destination List - data from before any item was changed\n var destinationItemsBeforeUpdate;\n /**\n * remove event handlers from items\n * @param {Array|NodeList} items\n */\n var _removeItemEvents = function (items) {\n removeEventListener(items, 'dragstart');\n removeEventListener(items, 'dragend');\n removeEventListener(items, 'dragover');\n removeEventListener(items, 'dragenter');\n removeEventListener(items, 'drop');\n removeEventListener(items, 'mouseenter');\n removeEventListener(items, 'mouseleave');\n };\n /**\n * _getDragging returns the current element to drag or\n * a copy of the element.\n * Is Copy Active for sortable\n * @param {HTMLElement} draggedItem - the item that the user drags\n * @param {HTMLElement} sortable a single sortable\n */\n var _getDragging = function (draggedItem, sortable) {\n var ditem = draggedItem;\n if (store(sortable).getConfig('copy') === true) {\n ditem = draggedItem.cloneNode(true);\n addAttribute(ditem, 'aria-copied', 'true');\n draggedItem.parentElement.appendChild(ditem);\n ditem.style.display = 'none';\n ditem.oldDisplay = draggedItem.style.display;\n }\n return ditem;\n };\n /**\n * Remove data from sortable\n * @param {HTMLElement} sortable a single sortable\n */\n var _removeSortableData = function (sortable) {\n removeData(sortable);\n removeAttribute(sortable, 'aria-dropeffect');\n };\n /**\n * Remove data from items\n * @param {Array|HTMLElement} items\n */\n var _removeItemData = function (items) {\n removeAttribute(items, 'aria-grabbed');\n removeAttribute(items, 'aria-copied');\n removeAttribute(items, 'draggable');\n removeAttribute(items, 'role');\n };\n /**\n * find sortable from element. travels up parent element until found or null.\n * @param {HTMLElement} element a single sortable\n * @param {Event} event - the current event. We need to pass it to be able to\n * find Sortable whith shadowRoot (document fragment has no parent)\n */\n function findSortable(element, event) {\n if (event.composedPath) {\n return event.composedPath().find(function (el) { return el.isSortable; });\n }\n while (element.isSortable !== true) {\n element = element.parentElement;\n }\n return element;\n }\n /**\n * Dragging event is on the sortable element. finds the top child that\n * contains the element.\n * @param {HTMLElement} sortableElement a single sortable\n * @param {HTMLElement} element is that being dragged\n */\n function findDragElement(sortableElement, element) {\n var options = addData(sortableElement, 'opts');\n var items = _filter(sortableElement.children, options.items);\n var itemlist = items.filter(function (ele) {\n return ele.contains(element) || (ele.shadowRoot && ele.shadowRoot.contains(element));\n });\n return itemlist.length > 0 ? itemlist[0] : element;\n }\n /**\n * Destroy the sortable\n * @param {HTMLElement} sortableElement a single sortable\n */\n var _destroySortable = function (sortableElement) {\n var opts = addData(sortableElement, 'opts') || {};\n var items = _filter(sortableElement.children, opts.items);\n var handles = _getHandles(items, opts.handle);\n // remove event handlers & data from sortable\n removeEventListener(sortableElement, 'dragover');\n removeEventListener(sortableElement, 'dragenter');\n removeEventListener(sortableElement, 'dragstart');\n removeEventListener(sortableElement, 'dragend');\n removeEventListener(sortableElement, 'drop');\n // remove event data from sortable\n _removeSortableData(sortableElement);\n // remove event handlers & data from items\n removeEventListener(handles, 'mousedown');\n _removeItemEvents(items);\n _removeItemData(items);\n // clear sortable flag\n sortableElement.isSortable = false;\n };\n /**\n * Enable the sortable\n * @param {HTMLElement} sortableElement a single sortable\n */\n var _enableSortable = function (sortableElement) {\n var opts = addData(sortableElement, 'opts');\n var items = _filter(sortableElement.children, opts.items);\n var handles = _getHandles(items, opts.handle);\n addAttribute(sortableElement, 'aria-dropeffect', 'move');\n addData(sortableElement, '_disabled', 'false');\n addAttribute(handles, 'draggable', 'true');\n // @todo: remove this fix\n // IE FIX for ghost\n // can be disabled as it has the side effect that other events\n // (e.g. click) will be ignored\n if (opts.disableIEFix === false) {\n var spanEl = (document || window.document).createElement('span');\n if (typeof spanEl.dragDrop === 'function') {\n addEventListener(handles, 'mousedown', function () {\n if (items.indexOf(this) !== -1) {\n this.dragDrop();\n }\n else {\n var parent = this.parentElement;\n while (items.indexOf(parent) === -1) {\n parent = parent.parentElement;\n }\n parent.dragDrop();\n }\n });\n }\n }\n };\n /**\n * Disable the sortable\n * @param {HTMLElement} sortableElement a single sortable\n */\n var _disableSortable = function (sortableElement) {\n var opts = addData(sortableElement, 'opts');\n var items = _filter(sortableElement.children, opts.items);\n var handles = _getHandles(items, opts.handle);\n addAttribute(sortableElement, 'aria-dropeffect', 'none');\n addData(sortableElement, '_disabled', 'true');\n addAttribute(handles, 'draggable', 'false');\n removeEventListener(handles, 'mousedown');\n };\n /**\n * Reload the sortable\n * @param {HTMLElement} sortableElement a single sortable\n * @description events need to be removed to not be double bound\n */\n var _reloadSortable = function (sortableElement) {\n var opts = addData(sortableElement, 'opts');\n var items = _filter(sortableElement.children, opts.items);\n var handles = _getHandles(items, opts.handle);\n addData(sortableElement, '_disabled', 'false');\n // remove event handlers from items\n _removeItemEvents(items);\n removeEventListener(handles, 'mousedown');\n // remove event handlers from sortable\n removeEventListener(sortableElement, 'dragover');\n removeEventListener(sortableElement, 'dragenter');\n removeEventListener(sortableElement, 'drop');\n };\n /**\n * Public sortable object\n * @param {Array|NodeList} sortableElements\n * @param {object|string} options|method\n */\n function sortable(sortableElements, options) {\n // get method string to see if a method is called\n var method = String(options);\n options = options || {};\n // check if the user provided a selector instead of an element\n if (typeof sortableElements === 'string') {\n sortableElements = document.querySelectorAll(sortableElements);\n }\n // if the user provided an element, return it in an array to keep the return value consistant\n if (sortableElements instanceof HTMLElement) {\n sortableElements = [sortableElements];\n }\n sortableElements = Array.prototype.slice.call(sortableElements);\n if (/serialize/.test(method)) {\n return sortableElements.map(function (sortableContainer) {\n var opts = addData(sortableContainer, 'opts');\n return _serialize(sortableContainer, opts.itemSerializer, opts.containerSerializer);\n });\n }\n sortableElements.forEach(function (sortableElement) {\n if (/enable|disable|destroy/.test(method)) {\n return sortable[method](sortableElement);\n }\n // log deprecation\n ['connectWith', 'disableIEFix'].forEach(function (configKey) {\n if (Object.prototype.hasOwnProperty.call(options, configKey) && options[configKey] !== null) {\n console.warn(\"HTML5Sortable: You are using the deprecated configuration \\\"\" + configKey + \"\\\". This will be removed in an upcoming version, make sure to migrate to the new options when updating.\");\n }\n });\n // merge options with default options\n options = Object.assign({}, defaultConfiguration, store(sortableElement).config, options);\n // init data store for sortable\n store(sortableElement).config = options;\n // set options on sortable\n addData(sortableElement, 'opts', options);\n // property to define as sortable\n sortableElement.isSortable = true;\n // reset sortable\n _reloadSortable(sortableElement);\n // initialize\n var listItems = _filter(sortableElement.children, options.items);\n // create element if user defined a placeholder element as a string\n var customPlaceholder;\n if (options.placeholder !== null && options.placeholder !== undefined) {\n var tempContainer = document.createElement(sortableElement.tagName);\n if (options.placeholder instanceof HTMLElement) {\n tempContainer.appendChild(options.placeholder);\n }\n else {\n tempContainer.innerHTML = options.placeholder;\n }\n customPlaceholder = tempContainer.children[0];\n }\n // add placeholder\n store(sortableElement).placeholder = _makePlaceholder(sortableElement, customPlaceholder, options.placeholderClass);\n addData(sortableElement, 'items', options.items);\n if (options.acceptFrom) {\n addData(sortableElement, 'acceptFrom', options.acceptFrom);\n }\n else if (options.connectWith) {\n addData(sortableElement, 'connectWith', options.connectWith);\n }\n _enableSortable(sortableElement);\n addAttribute(listItems, 'role', 'option');\n addAttribute(listItems, 'aria-grabbed', 'false');\n // enable hover class\n enableHoverClass(sortableElement, true);\n /*\n Handle drag events on draggable items\n Handle is set at the sortableElement level as it will bubble up\n from the item\n */\n addEventListener(sortableElement, 'dragstart', function (e) {\n // ignore dragstart events\n var target = getEventTarget(e);\n if (target.isSortable === true) {\n return;\n }\n e.stopImmediatePropagation();\n if ((options.handle && !target.matches(options.handle)) || target.getAttribute('draggable') === 'false') {\n return;\n }\n var sortableContainer = findSortable(target, e);\n var dragItem = findDragElement(sortableContainer, target);\n // grab values\n originItemsBeforeUpdate = _filter(sortableContainer.children, options.items);\n originIndex = originItemsBeforeUpdate.indexOf(dragItem);\n originElementIndex = _index(dragItem, sortableContainer.children);\n originContainer = sortableContainer;\n // add transparent clone or other ghost to cursor\n setDragImage(e, dragItem, options.customDragImage);\n // cache selsection & add attr for dragging\n draggingHeight = _getElementHeight(dragItem);\n draggingWidth = _getElementWidth(dragItem);\n dragItem.classList.add(options.draggingClass);\n dragging = _getDragging(dragItem, sortableContainer);\n addAttribute(dragging, 'aria-grabbed', 'true');\n // dispatch sortstart event on each element in group\n sortableContainer.dispatchEvent(new CustomEvent('sortstart', {\n detail: {\n origin: {\n elementIndex: originElementIndex,\n index: originIndex,\n container: originContainer\n },\n item: dragging,\n originalTarget: target\n }\n }));\n });\n /*\n We are capturing targetSortable before modifications with 'dragenter' event\n */\n addEventListener(sortableElement, 'dragenter', function (e) {\n var target = getEventTarget(e);\n var sortableContainer = findSortable(target, e);\n if (sortableContainer && sortableContainer !== previousContainer) {\n destinationItemsBeforeUpdate = _filter(sortableContainer.children, addData(sortableContainer, 'items'))\n .filter(function (item) { return item !== store(sortableElement).placeholder; });\n sortableContainer.dispatchEvent(new CustomEvent('sortenter', {\n detail: {\n origin: {\n elementIndex: originElementIndex,\n index: originIndex,\n container: originContainer\n },\n destination: {\n container: sortableContainer,\n itemsBeforeUpdate: destinationItemsBeforeUpdate\n },\n item: dragging,\n originalTarget: target\n }\n }));\n }\n previousContainer = sortableContainer;\n });\n /*\n * Dragend Event - https://developer.mozilla.org/en-US/docs/Web/Events/dragend\n * Fires each time dragEvent end, or ESC pressed\n * We are using it to clean up any draggable elements and placeholders\n */\n addEventListener(sortableElement, 'dragend', function (e) {\n if (!dragging) {\n return;\n }\n dragging.classList.remove(options.draggingClass);\n addAttribute(dragging, 'aria-grabbed', 'false');\n if (dragging.getAttribute('aria-copied') === 'true' && addData(dragging, 'dropped') !== 'true') {\n dragging.remove();\n }\n dragging.style.display = dragging.oldDisplay;\n delete dragging.oldDisplay;\n var visiblePlaceholder = Array.from(stores.values()).map(function (data) { return data.placeholder; })\n .filter(function (placeholder) { return placeholder instanceof HTMLElement; })\n .filter(isInDom)[0];\n if (visiblePlaceholder) {\n visiblePlaceholder.remove();\n }\n // dispatch sortstart event on each element in group\n sortableElement.dispatchEvent(new CustomEvent('sortstop', {\n detail: {\n origin: {\n elementIndex: originElementIndex,\n index: originIndex,\n container: originContainer\n },\n item: dragging\n }\n }));\n previousContainer = null;\n dragging = null;\n draggingHeight = null;\n draggingWidth = null;\n });\n /*\n * Drop Event - https://developer.mozilla.org/en-US/docs/Web/Events/drop\n * Fires when valid drop target area is hit\n */\n addEventListener(sortableElement, 'drop', function (e) {\n if (!_listsConnected(sortableElement, dragging.parentElement)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n addData(dragging, 'dropped', 'true');\n // get the one placeholder that is currently visible\n var visiblePlaceholder = Array.from(stores.values()).map(function (data) {\n return data.placeholder;\n })\n // filter only HTMLElements\n .filter(function (placeholder) { return placeholder instanceof HTMLElement; })\n // filter only elements in DOM\n .filter(isInDom)[0];\n // attach element after placeholder\n insertAfter(visiblePlaceholder, dragging);\n // remove placeholder from dom\n visiblePlaceholder.remove();\n /*\n * Fires Custom Event - 'sortstop'\n */\n sortableElement.dispatchEvent(new CustomEvent('sortstop', {\n detail: {\n origin: {\n elementIndex: originElementIndex,\n index: originIndex,\n container: originContainer\n },\n item: dragging\n }\n }));\n var placeholder = store(sortableElement).placeholder;\n var originItems = _filter(originContainer.children, options.items)\n .filter(function (item) { return item !== placeholder; });\n var destinationContainer = this.isSortable === true ? this : this.parentElement;\n var destinationItems = _filter(destinationContainer.children, addData(destinationContainer, 'items'))\n .filter(function (item) { return item !== placeholder; });\n var destinationElementIndex = _index(dragging, Array.from(dragging.parentElement.children)\n .filter(function (item) { return item !== placeholder; }));\n var destinationIndex = _index(dragging, destinationItems);\n /*\n * When a list item changed container lists or index within a list\n * Fires Custom Event - 'sortupdate'\n */\n if (originElementIndex !== destinationElementIndex || originContainer !== destinationContainer) {\n sortableElement.dispatchEvent(new CustomEvent('sortupdate', {\n detail: {\n origin: {\n elementIndex: originElementIndex,\n index: originIndex,\n container: originContainer,\n itemsBeforeUpdate: originItemsBeforeUpdate,\n items: originItems\n },\n destination: {\n index: destinationIndex,\n elementIndex: destinationElementIndex,\n container: destinationContainer,\n itemsBeforeUpdate: destinationItemsBeforeUpdate,\n items: destinationItems\n },\n item: dragging\n }\n }));\n }\n });\n var debouncedDragOverEnter = _debounce(function (sortableElement, element, pageX, pageY) {\n if (!dragging) {\n return;\n }\n // set placeholder height if forcePlaceholderSize option is set\n if (options.forcePlaceholderSize) {\n store(sortableElement).placeholder.style.height = draggingHeight + 'px';\n store(sortableElement).placeholder.style.width = draggingWidth + 'px';\n }\n // if element the draggedItem is dragged onto is within the array of all elements in list\n // (not only items, but also disabled, etc.)\n if (Array.from(sortableElement.children).indexOf(element) > -1) {\n var thisHeight = _getElementHeight(element);\n var thisWidth = _getElementWidth(element);\n var placeholderIndex = _index(store(sortableElement).placeholder, element.parentElement.children);\n var thisIndex = _index(element, element.parentElement.children);\n // Check if `element` is bigger than the draggable. If it is, we have to define a dead zone to prevent flickering\n if (thisHeight > draggingHeight || thisWidth > draggingWidth) {\n // Dead zone?\n var deadZoneVertical = thisHeight - draggingHeight;\n var deadZoneHorizontal = thisWidth - draggingWidth;\n var offsetTop = _offset(element).top;\n var offsetLeft = _offset(element).left;\n if (placeholderIndex < thisIndex &&\n ((options.orientation === 'vertical' && pageY < offsetTop) ||\n (options.orientation === 'horizontal' && pageX < offsetLeft))) {\n return;\n }\n if (placeholderIndex > thisIndex &&\n ((options.orientation === 'vertical' && pageY > offsetTop + thisHeight - deadZoneVertical) ||\n (options.orientation === 'horizontal' && pageX > offsetLeft + thisWidth - deadZoneHorizontal))) {\n return;\n }\n }\n if (dragging.oldDisplay === undefined) {\n dragging.oldDisplay = dragging.style.display;\n }\n if (dragging.style.display !== 'none') {\n dragging.style.display = 'none';\n }\n // To avoid flicker, determine where to position the placeholder\n // based on where the mouse pointer is relative to the elements\n // vertical center.\n var placeAfter = false;\n try {\n var elementMiddleVertical = _offset(element).top + element.offsetHeight / 2;\n var elementMiddleHorizontal = _offset(element).left + element.offsetWidth / 2;\n placeAfter = (options.orientation === 'vertical' && (pageY >= elementMiddleVertical)) ||\n (options.orientation === 'horizontal' && (pageX >= elementMiddleHorizontal));\n }\n catch (e) {\n placeAfter = placeholderIndex < thisIndex;\n }\n if (placeAfter) {\n insertAfter(element, store(sortableElement).placeholder);\n }\n else {\n insertBefore(element, store(sortableElement).placeholder);\n }\n // get placeholders from all stores & remove all but current one\n Array.from(stores.values())\n // remove empty values\n .filter(function (data) { return data.placeholder !== undefined; })\n // foreach placeholder in array if outside of current sorableContainer -> remove from DOM\n .forEach(function (data) {\n if (data.placeholder !== store(sortableElement).placeholder) {\n data.placeholder.remove();\n }\n });\n }\n else {\n // get all placeholders from store\n var placeholders = Array.from(stores.values())\n .filter(function (data) { return data.placeholder !== undefined; })\n .map(function (data) {\n return data.placeholder;\n });\n // check if element is not in placeholders\n if (placeholders.indexOf(element) === -1 && sortableElement === element && !_filter(element.children, options.items).length) {\n placeholders.forEach(function (element) { return element.remove(); });\n element.appendChild(store(sortableElement).placeholder);\n }\n }\n }, options.debounce);\n // Handle dragover and dragenter events on draggable items\n var onDragOverEnter = function (e) {\n var element = e.target;\n var sortableElement = element.isSortable === true ? element : findSortable(element, e);\n element = findDragElement(sortableElement, element);\n if (!dragging || !_listsConnected(sortableElement, dragging.parentElement) || addData(sortableElement, '_disabled') === 'true') {\n return;\n }\n var options = addData(sortableElement, 'opts');\n if (parseInt(options.maxItems) && _filter(sortableElement.children, addData(sortableElement, 'items')).length >= parseInt(options.maxItems) && dragging.parentElement !== sortableElement) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n e.dataTransfer.dropEffect = store(sortableElement).getConfig('copy') === true ? 'copy' : 'move';\n debouncedDragOverEnter(sortableElement, element, e.pageX, e.pageY);\n };\n addEventListener(listItems.concat(sortableElement), 'dragover', onDragOverEnter);\n addEventListener(listItems.concat(sortableElement), 'dragenter', onDragOverEnter);\n });\n return sortableElements;\n }\n sortable.destroy = function (sortableElement) {\n _destroySortable(sortableElement);\n };\n sortable.enable = function (sortableElement) {\n _enableSortable(sortableElement);\n };\n sortable.disable = function (sortableElement) {\n _disableSortable(sortableElement);\n };\n /* START.TESTS_ONLY */\n sortable.__testing = {\n // add internal methods here for testing purposes\n _data: addData,\n _removeItemEvents: _removeItemEvents,\n _removeItemData: _removeItemData,\n _removeSortableData: _removeSortableData\n };\n\n return sortable;\n\n}());\n","/* flatpickr v4.6.3, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\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\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\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\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 ];\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 === \"object\" &&\n 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 (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\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\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\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 hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\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)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (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 (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (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 (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\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 if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\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 function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\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)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \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 if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n 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 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 =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"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 function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\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)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\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)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\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 function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n 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 function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (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 function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\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 function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\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 if (self.isMobile) {\n setupMobile();\n return;\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))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\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 if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\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 function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n 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 function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\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 &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), 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 if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\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 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 for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\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\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\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 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\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), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\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 self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\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 var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\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 function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\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 self.monthNav.appendChild(self.nextMonthNav);\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 () { return self.__hidePrevMonthArrow; },\n set: function (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 () { return self.__hideNextMonthArrow; },\n set: function (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 function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n 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 \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : 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)\n self.timeContainer.classList.add(\"time24hr\");\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\n ? self.latestSelectedDateObj.getSeconds()\n : 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 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\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\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 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 function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\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 buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\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 self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\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 if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\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\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\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 ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n 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()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\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 if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input ||\n e.target === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\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 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 if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\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 }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\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 if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - (window.pageXOffset + 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)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n 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 function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n 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 case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\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 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)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"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 =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\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 function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\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 if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n 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 if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\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 if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","/**!\n * lightgallery.js | 1.1.3 | February 11th 2019\n * http://sachinchoolur.github.io/lightgallery.js/\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var t;t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,t.Lightgallery=e()}}(function(){var e,t,s;return function(){function e(t,s,l){function i(r,d){if(!s[r]){if(!t[r]){var a=\"function\"==typeof require&&require;if(!d&&a)return a(r,!0);if(o)return o(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var u=s[r]={exports:{}};t[r][0].call(u.exports,function(e){return i(t[r][1][e]||e)},u,u.exports,e,t,s,l)}return s[r].exports}for(var o=\"function\"==typeof require&&require,r=0;r2&&void 0!==arguments[2]?arguments[2]:null;if(t){var i=new CustomEvent(s,{detail:l});t.dispatchEvent(i)}},Listener:{uid:0},on:function e(s,l,i){var o=this;s&&l.split(\" \").forEach(function(e){var l=o.getAttribute(s,\"lg-event-uid\")||\"\";t.Listener.uid++,l+=\"&\"+t.Listener.uid,o.setAttribute(s,\"lg-event-uid\",l),t.Listener[e+t.Listener.uid]=i,s.addEventListener(e.split(\".\")[0],i,!1)})},off:function e(s,l){if(s){var i=this.getAttribute(s,\"lg-event-uid\");if(i){i=i.split(\"&\");for(var o=0;o-1&&(s.removeEventListener(d.split(\".\")[0],t.Listener[d]),this.setAttribute(s,\"lg-event-uid\",this.getAttribute(s,\"lg-event-uid\").replace(\"&\"+i[o],\"\")),delete t.Listener[d]);else s.removeEventListener(r.split(\".\")[0],t.Listener[r]),this.setAttribute(s,\"lg-event-uid\",this.getAttribute(s,\"lg-event-uid\").replace(\"&\"+i[o],\"\")),delete t.Listener[r]}}}},param:function e(t){return Object.keys(t).map(function(e){return encodeURIComponent(e)+\"=\"+encodeURIComponent(t[e])}).join(\"&\")}};e.default=t})},{}],2:[function(t,s,l){!function(s,i){if(\"function\"==typeof e&&e.amd)e([\"./lg-utils\"],i);else if(void 0!==l)i(t(\"./lg-utils\"));else{var o={exports:{}};i(s.lgUtils),s.lightgallery=o.exports}}(this,function(e){\"use strict\";function t(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(this.el=e,this.s=i({},o,t),this.s.dynamic&&\"undefined\"!==this.s.dynamicEl&&this.s.dynamicEl.constructor===Array&&!this.s.dynamicEl.length)throw\"When using dynamic mode, you must also define dynamicEl as an Array.\";return this.modules={},this.lGalleryOn=!1,this.lgBusy=!1,this.hideBartimeout=!1,this.isTouch=\"ontouchstart\"in document.documentElement,this.s.slideEndAnimatoin&&(this.s.hideControlOnEnd=!1),this.items=[],this.s.dynamic?this.items=this.s.dynamicEl:\"this\"===this.s.selector?this.items.push(this.el):\"\"!==this.s.selector?this.s.selectWithin?this.items=document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector):this.items=this.el.querySelectorAll(this.s.selector):this.items=this.el.children,this.___slide=\"\",this.outer=\"\",this.init(),this}var l=t(e),i=Object.assign||function(e){for(var t=1;te.items.length&&(e.s.preload=e.items.length);var t=window.location.hash;if(t.indexOf(\"lg=\"+this.s.galleryId)>0&&(e.index=parseInt(t.split(\"&slide=\")[1],10),l.default.addClass(document.body,\"lg-from-hash\"),l.default.hasClass(document.body,\"lg-on\")||(l.default.addClass(document.body,\"lg-on\"),setTimeout(function(){e.build(e.index)}))),e.s.dynamic)l.default.trigger(this.el,\"onBeforeOpen\"),e.index=e.s.index||0,l.default.hasClass(document.body,\"lg-on\")||(l.default.addClass(document.body,\"lg-on\"),setTimeout(function(){e.build(e.index)}));else for(var s=0;s1&&(t.arrow(),setTimeout(function(){t.enableDrag(),t.enableSwipe()},50),t.s.mousewheel&&t.mousewheel()),t.counter(),t.closeGallery(),l.default.trigger(t.el,\"onAfterOpen\"),l.default.on(t.outer,\"mousemove.lg click.lg touchstart.lg\",function(){l.default.removeClass(t.outer,\"lg-hide-items\"),clearTimeout(t.hideBartimeout),t.hideBartimeout=setTimeout(function(){l.default.addClass(t.outer,\"lg-hide-items\")},t.s.hideBarsDelay)})},s.prototype.structure=function(){var e=\"\",t=\"\",s=0,i=\"\",o,r=this;for(document.body.insertAdjacentHTML(\"beforeend\",''),l.default.setVendor(document.querySelector(\".lg-backdrop\"),\"TransitionDuration\",this.s.backdropDuration+\"ms\"),s=0;s';if(this.s.controls&&this.items.length>1&&(t='