diff --git a/js/dist/forum.js b/js/dist/forum.js index 6e7aba4d..a488d2a3 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var e={291:()=>{"use strict";"function"!=typeof Object.assign&&(Object.assign=function(e){for(var t=[],n=1;n{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};(()=>{"use strict";n.r(o),n.d(o,{components:()=>Ie,models:()=>Oe});const e=flarum.core.compat["forum/app"];var t=n.n(e);const a=flarum.core.compat["common/Model"];var i=n.n(a);function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}var s=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),a=0;a",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},A={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1};const Y=A;var j=function(e,t){return void 0===t&&(t=2),("000"+e).slice(-1*t)},H=function(e){return!0===e?1:0};function L(e,t){var n;return function(){var o=this,a=arguments;clearTimeout(n),n=setTimeout((function(){return e.apply(o,a)}),t)}}var V=function(e){return e instanceof Array?e:[e]};function B(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function U(e,t,n){var o=window.document.createElement(e);return t=t||"",n=n||"",o.className=t,void 0!==n&&(o.textContent=n),o}function q(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function R(e,t){return t(e)?e:e.parentNode?R(e.parentNode,t):void 0}function W(e,t){var n=U("div","numInputWrapper"),o=U("input","numInput "+e),a=U("span","arrowUp"),i=U("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?o.type="number":(o.type="text",o.pattern="\\d*"),void 0!==t)for(var r in t)o.setAttribute(r,t[r]);return n.appendChild(o),n.appendChild(a),n.appendChild(i),n}function J(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(t){return e.target}}var K=function(){},$=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},z={D:K,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*H(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var o=parseInt(t),a=new Date(e.getFullYear(),0,2+7*(o-1),0,0,0,0);return a.setDate(a.getDate()-a.getDay()+n.firstDayOfWeek),a},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:K,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:K,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},G={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},Z={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[Z.w(e,t,n)]},F:function(e,t,n){return $(Z.n(e,t,n)-1,!1,t)},G:function(e,t,n){return j(Z.h(e,t,n))},H:function(e){return j(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[H(e.getHours()>11)]},M:function(e,t){return $(e.getMonth(),!0,t)},S:function(e){return j(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return j(e.getFullYear(),4)},d:function(e){return j(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return j(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return j(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},Q=function(e){var t=e.config,n=void 0===t?F:t,o=e.l10n,a=void 0===o?A:o,i=e.isMobile,r=void 0!==i&&i;return function(e,t,o){var i=o||a;return void 0===n.formatDate||r?t.split("").map((function(t,o,a){return Z[t]&&"\\"!==a[o-1]?Z[t](e,i,n):"\\"!==t?t:""})).join(""):n.formatDate(e,t,i)}},X=function(e){var t=e.config,n=void 0===t?F:t,o=e.l10n,a=void 0===o?A:o;return function(e,t,o,i){if(0===e||e){var r,l=i||a,s=e;if(e instanceof Date)r=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)r=new Date(e);else if("string"==typeof e){var c=t||(n||F).dateFormat,u=String(e).trim();if("today"===u)r=new Date,o=!0;else if(n&&n.parseDate)r=n.parseDate(e,c);else if(/Z$/.test(u)||/GMT$/.test(u))r=new Date(e);else{for(var d=void 0,f=[],m=0,p=0,h="";m=0?new Date:new Date(n.config.minDate.getTime()),o=ne(n.config);t.setHours(o.hours,o.minutes,o.seconds,t.getMilliseconds()),n.selectedDates=[t],n.latestSelectedDateObj=t}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var t="keydown"===e.type,o=J(e),a=o;void 0!==n.amPM&&o===n.amPM&&(n.amPM.textContent=n.l10n.amPM[H(n.amPM.textContent===n.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),r=parseFloat(a.getAttribute("max")),l=parseFloat(a.getAttribute("step")),s=parseInt(a.value,10),c=s+l*(e.delta||(t?38===e.which?1:-1:0));if(void 0!==a.value&&2===a.value.length){var u=a===n.hourElement,d=a===n.minuteElement;cr&&(c=a===n.hourElement?c-r-H(!n.amPM):i,d&&h(void 0,1,n.hourElement)),n.amPM&&u&&(1===l?c+s===23:Math.abs(c-s)>l)&&(n.amPM.textContent=n.l10n.amPM[H(n.amPM.textContent===n.l10n.amPM[0])]),a.value=j(c)}}(e);var a=n._input.value;l(),Me(),n._input.value!==a&&n._debouncedChange()}function l(){if(void 0!==n.hourElement&&void 0!==n.minuteElement){var e,t,o=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(n.minuteElement.value,10)||0)%60,i=void 0!==n.secondElement?(parseInt(n.secondElement.value,10)||0)%60:0;void 0!==n.amPM&&(e=o,t=n.amPM.textContent,o=e%12+12*H(t===n.l10n.amPM[1]));var r=void 0!==n.config.minTime||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&0===ee(n.latestSelectedDateObj,n.config.minDate,!0),l=void 0!==n.config.maxTime||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&0===ee(n.latestSelectedDateObj,n.config.maxDate,!0);if(void 0!==n.config.maxTime&&void 0!==n.config.minTime&&n.config.minTime>n.config.maxTime){var s=te(n.config.minTime.getHours(),n.config.minTime.getMinutes(),n.config.minTime.getSeconds()),u=te(n.config.maxTime.getHours(),n.config.maxTime.getMinutes(),n.config.maxTime.getSeconds()),d=te(o,a,i);if(d>u&&d=12)]),void 0!==n.secondElement&&(n.secondElement.value=j(o)))}function u(e){var t=J(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||"Enter"===e.key&&!/[^\d]/.test(n.toString()))&&T(n)}function d(e,t,o,a){return t instanceof Array?t.forEach((function(t){return d(e,t,o,a)})):e instanceof Array?e.forEach((function(e){return d(e,t,o,a)})):(e.addEventListener(t,o,a),void n._handlers.push({remove:function(){return e.removeEventListener(t,o,a)}}))}function f(){ve("onChange")}function m(e,t){var o=void 0!==e?n.parseDate(e):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate=0&&ee(e,n.selectedDates[1])<=0}(t)&&!De(t)&&r.classList.add("inRange"),n.weekNumbers&&1===n.config.showMonths&&"prevMonthDay"!==e&&a%7==6&&n.weekNumbers.insertAdjacentHTML("beforeend",""+n.config.getWeek(t)+""),ve("onDayCreate",r),r}function v(e){e.focus(),"range"===n.config.mode&&z(e)}function b(e){for(var t=e>0?0:n.config.showMonths-1,o=e>0?n.config.showMonths:-1,a=t;a!=o;a+=e)for(var i=n.daysContainer.children[a],r=e>0?0:i.children.length-1,l=e>0?i.children.length:-1,s=r;s!=l;s+=e){var c=i.children[s];if(-1===c.className.indexOf("hidden")&&I(c.dateObj))return c}}function D(e,t){var a=o(),i=O(a||document.body),r=void 0!==e?e:i?a:void 0!==n.selectedDateElem&&O(n.selectedDateElem)?n.selectedDateElem:void 0!==n.todayDateElem&&O(n.todayDateElem)?n.todayDateElem:b(t>0?1:-1);void 0===r?n._input.focus():i?function(e,t){for(var o=-1===e.className.indexOf("Month")?e.dateObj.getMonth():n.currentMonth,a=t>0?n.config.showMonths:-1,i=t>0?1:-1,r=o-n.currentMonth;r!=a;r+=i)for(var l=n.daysContainer.children[r],s=o-n.currentMonth===r?e.$i+t:t<0?l.children.length-1:0,c=l.children.length,u=s;u>=0&&u0?c:-1);u+=i){var d=l.children[u];if(-1===d.className.indexOf("hidden")&&I(d.dateObj)&&Math.abs(e.$i-u)>=Math.abs(t))return v(d)}n.changeMonth(i),D(b(i),0)}(r,t):v(r)}function y(e,t){for(var o=(new Date(e,t,1).getDay()-n.l10n.firstDayOfWeek+7)%7,a=n.utils.getDaysInMonth((t-1+12)%12,e),i=n.utils.getDaysInMonth(t,e),r=window.document.createDocumentFragment(),l=n.config.showMonths>1,s=l?"prevMonthDay hidden":"prevMonthDay",c=l?"nextMonthDay hidden":"nextMonthDay",u=a+1-o,d=0;u<=a;u++,d++)r.appendChild(g("flatpickr-day "+s,new Date(e,t-1,u),0,d));for(u=1;u<=i;u++,d++)r.appendChild(g("flatpickr-day",new Date(e,t,u),0,d));for(var f=i+1;f<=42-o&&(1===n.config.showMonths||d%7!=0);f++,d++)r.appendChild(g("flatpickr-day "+c,new Date(e,t+1,f%i),0,d));var m=U("div","dayContainer");return m.appendChild(r),m}function w(){if(void 0!==n.daysContainer){q(n.daysContainer),n.weekNumbers&&q(n.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t1||"dropdown"!==n.config.monthSelectorType)){var e=function(e){return!(void 0!==n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&en.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var o=U("option","flatpickr-monthDropdown-month");o.value=new Date(n.currentYear,t).getMonth().toString(),o.textContent=$(t,n.config.shorthandCurrentMonth,n.l10n),o.tabIndex=-1,n.currentMonth===t&&(o.selected=!0),n.monthsDropdownContainer.appendChild(o)}}}function C(){var e,t=U("div","flatpickr-month"),o=window.document.createDocumentFragment();n.config.showMonths>1||"static"===n.config.monthSelectorType?e=U("span","cur-month"):(n.monthsDropdownContainer=U("select","flatpickr-monthDropdown-months"),n.monthsDropdownContainer.setAttribute("aria-label",n.l10n.monthAriaLabel),d(n.monthsDropdownContainer,"change",(function(e){var t=J(e),o=parseInt(t.value,10);n.changeMonth(o-n.currentMonth),ve("onMonthChange")})),M(),e=n.monthsDropdownContainer);var a=W("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",n.l10n.yearAriaLabel),n.config.minDate&&i.setAttribute("min",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(i.setAttribute("max",n.config.maxDate.getFullYear().toString()),i.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());var r=U("div","flatpickr-current-month");return r.appendChild(e),r.appendChild(a),o.appendChild(r),t.appendChild(o),{container:t,yearElement:i,monthElement:e}}function x(){q(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(var e=n.config.showMonths;e--;){var t=C();n.yearElements.push(t.yearElement),n.monthElements.push(t.monthElement),n.monthNav.appendChild(t.container)}n.monthNav.appendChild(n.nextMonthNav)}function E(){n.weekdayContainer?q(n.weekdayContainer):n.weekdayContainer=U("div","flatpickr-weekdays");for(var e=n.config.showMonths;e--;){var t=U("div","flatpickr-weekdaycontainer");n.weekdayContainer.appendChild(t)}return k(),n.weekdayContainer}function k(){if(n.weekdayContainer){var e=n.l10n.firstDayOfWeek,t=ae(n.l10n.weekdays.shorthand);e>0&&e\n "+t.join("")+"\n \n "}}function P(e,t){void 0===t&&(t=!0);var o=t?e:e-n.currentMonth;o<0&&!0===n._hidePrevMonthArrow||o>0&&!0===n._hideNextMonthArrow||(n.currentMonth+=o,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,ve("onYearChange"),M()),w(),ve("onMonthChange"),ye())}function N(e){return n.calendarContainer.contains(e)}function _(e){if(n.isOpen&&!n.config.inline){var t=J(e),o=N(t),a=!(t===n.input||t===n.altInput||n.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(n.input)||~e.path.indexOf(n.altInput))||o||N(e.relatedTarget)),i=!n.config.ignoredFocusElements.some((function(e){return e.contains(t)}));a&&i&&(n.config.allowInput&&n.setDate(n._input.value,!1,n.config.altInput?n.config.altFormat:n.config.dateFormat),void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement&&""!==n.input.value&&void 0!==n.input.value&&r(),n.close(),n.config&&"range"===n.config.mode&&1===n.selectedDates.length&&n.clear(!1))}}function T(e){if(!(!e||n.config.minDate&&en.config.maxDate.getFullYear())){var t=e,o=n.currentYear!==t;n.currentYear=t||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),o&&(n.redraw(),ve("onYearChange"),M())}}function I(e,t){var o;void 0===t&&(t=!0);var a=n.parseDate(e,void 0,t);if(n.config.minDate&&a&&ee(a,n.config.minDate,void 0!==t?t:!n.minDateHasTime)<0||n.config.maxDate&&a&&ee(a,n.config.maxDate,void 0!==t?t:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&0===n.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!n.config.enable,r=null!==(o=n.config.enable)&&void 0!==o?o:n.config.disable,l=0,s=void 0;l=s.from.getTime()&&a.getTime()<=s.to.getTime())return i}return!i}function O(e){return void 0!==n.daysContainer&&-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&n.daysContainer.contains(e)}function A(e){var t=e.target===n._input,o=n._input.value.trimEnd()!==we();!t||!o||e.relatedTarget&&N(e.relatedTarget)||n.setDate(n._input.value,!0,e.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function K(t){var a=J(t),i=n.config.wrap?e.contains(a):a===n._input,s=n.config.allowInput,c=n.isOpen&&(!s||!i),u=n.config.inline&&i&&!s;if(13===t.keyCode&&i){if(s)return n.setDate(n._input.value,!0,a===n.altInput?n.config.altFormat:n.config.dateFormat),n.close(),a.blur();n.open()}else if(N(a)||c||u){var d=!!n.timeContainer&&n.timeContainer.contains(a);switch(t.keyCode){case 13:d?(t.preventDefault(),r(),de()):fe(t);break;case 27:t.preventDefault(),de();break;case 8:case 46:i&&!n.config.allowInput&&(t.preventDefault(),n.clear());break;case 37:case 39:if(d||i)n.hourElement&&n.hourElement.focus();else{t.preventDefault();var f=o();if(void 0!==n.daysContainer&&(!1===s||f&&O(f))){var m=39===t.keyCode?1:-1;t.ctrlKey?(t.stopPropagation(),P(m),D(b(1),0)):D(void 0,m)}}break;case 38:case 40:t.preventDefault();var p=40===t.keyCode?1:-1;n.daysContainer&&void 0!==a.$i||a===n.input||a===n.altInput?t.ctrlKey?(t.stopPropagation(),T(n.currentYear-p),D(b(1),0)):d||D(void 0,7*p):a===n.currentYearElement?T(n.currentYear-p):n.config.enableTime&&(!d&&n.hourElement&&n.hourElement.focus(),r(t),n._debouncedChange());break;case 9:if(d){var h=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter((function(e){return e})),g=h.indexOf(a);if(-1!==g){var v=h[g+(t.shiftKey?-1:1)];t.preventDefault(),(v||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(a)&&t.shiftKey&&(t.preventDefault(),n._input.focus())}}if(void 0!==n.amPM&&a===n.amPM)switch(t.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],l(),Me();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],l(),Me()}(i||N(a))&&ve("onKeyDown",t)}function z(e,t){if(void 0===t&&(t="flatpickr-day"),1===n.selectedDates.length&&(!e||e.classList.contains(t)&&!e.classList.contains("flatpickr-disabled"))){for(var o=e?e.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),a=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),i=Math.min(o,n.selectedDates[0].getTime()),r=Math.max(o,n.selectedDates[0].getTime()),l=!1,s=0,c=0,u=i;ui&&us)?s=u:u>a&&(!c||u ."+t)).forEach((function(t){var i,r,u,d=t.dateObj.getTime(),f=s>0&&d0&&d>c;if(f)return t.classList.add("notAllowed"),void["inRange","startRange","endRange"].forEach((function(e){t.classList.remove(e)}));l&&!f||(["startRange","inRange","endRange","notAllowed"].forEach((function(e){t.classList.remove(e)})),void 0!==e&&(e.classList.add(o<=n.selectedDates[0].getTime()?"startRange":"endRange"),ao&&d===a&&t.classList.add("endRange"),d>=s&&(0===c||d<=c)&&(r=a,u=o,(i=d)>Math.min(r,u)&&i0||o.getMinutes()>0||o.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter((function(e){return I(e)})),n.selectedDates.length||"min"!==e||s(o),Me()),n.daysContainer&&(ue(),void 0!==o?n.currentYearElement[e]=o.getFullYear().toString():n.currentYearElement.removeAttribute(e),n.currentYearElement.disabled=!!a&&void 0!==o&&a.getFullYear()===o.getFullYear())}}function re(){return n.config.wrap?e.querySelector("[data-input]"):e}function se(){"object"!=typeof n.config.locale&&void 0===le.l10ns[n.config.locale]&&n.config.errorHandler(new Error("flatpickr: invalid locale "+n.config.locale)),n.l10n=oe(oe({},le.l10ns.default),"object"==typeof n.config.locale?n.config.locale:"default"!==n.config.locale?le.l10ns[n.config.locale]:void 0),G.D="("+n.l10n.weekdays.shorthand.join("|")+")",G.l="("+n.l10n.weekdays.longhand.join("|")+")",G.M="("+n.l10n.months.shorthand.join("|")+")",G.F="("+n.l10n.months.longhand.join("|")+")",G.K="("+n.l10n.amPM[0]+"|"+n.l10n.amPM[1]+"|"+n.l10n.amPM[0].toLowerCase()+"|"+n.l10n.amPM[1].toLowerCase()+")",void 0===oe(oe({},t),JSON.parse(JSON.stringify(e.dataset||{}))).time_24hr&&void 0===le.defaultConfig.time_24hr&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=Q(n),n.parseDate=X({config:n.config,l10n:n.l10n})}function ce(e){if("function"!=typeof n.config.position){if(void 0!==n.calendarContainer){ve("onPreCalendarPosition");var t=e||n._positionElement,o=Array.prototype.reduce.call(n.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),a=n.calendarContainer.offsetWidth,i=n.config.position.split(" "),r=i[0],l=i.length>1?i[1]:null,s=t.getBoundingClientRect(),c=window.innerHeight-s.bottom,u="above"===r||"below"!==r&&co,d=window.pageYOffset+s.top+(u?-o-2:t.offsetHeight+2);if(B(n.calendarContainer,"arrowTop",!u),B(n.calendarContainer,"arrowBottom",u),!n.config.inline){var f=window.pageXOffset+s.left,m=!1,p=!1;"center"===l?(f-=(a-s.width)/2,m=!0):"right"===l&&(f-=a-s.width,p=!0),B(n.calendarContainer,"arrowLeft",!m&&!p),B(n.calendarContainer,"arrowCenter",m),B(n.calendarContainer,"arrowRight",p);var h=window.document.body.offsetWidth-(window.pageXOffset+s.right),g=f+a>window.document.body.offsetWidth,v=h+a>window.document.body.offsetWidth;if(B(n.calendarContainer,"rightMost",g),!n.config.static)if(n.calendarContainer.style.top=d+"px",g)if(v){var b=function(){for(var e=null,t=0;tn.currentMonth+n.config.showMonths-1)&&"range"!==n.config.mode;if(n.selectedDateElem=o,"single"===n.config.mode)n.selectedDates=[a];else if("multiple"===n.config.mode){var r=De(a);r?n.selectedDates.splice(parseInt(r),1):n.selectedDates.push(a)}else"range"===n.config.mode&&(2===n.selectedDates.length&&n.clear(!1,!1),n.latestSelectedDateObj=a,n.selectedDates.push(a),0!==ee(a,n.selectedDates[0],!0)&&n.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(l(),i){var s=n.currentYear!==a.getFullYear();n.currentYear=a.getFullYear(),n.currentMonth=a.getMonth(),s&&(ve("onYearChange"),M()),ve("onMonthChange")}if(ye(),w(),Me(),i||"range"===n.config.mode||1!==n.config.showMonths?void 0!==n.selectedDateElem&&void 0===n.hourElement&&n.selectedDateElem&&n.selectedDateElem.focus():v(o),void 0!==n.hourElement&&void 0!==n.hourElement&&n.hourElement.focus(),n.config.closeOnSelect){var c="single"===n.config.mode&&!n.config.enableTime,u="range"===n.config.mode&&2===n.selectedDates.length&&!n.config.enableTime;(c||u)&&de()}f()}}n.parseDate=X({config:n.config,l10n:n.l10n}),n._handlers=[],n.pluginElements=[],n.loadedPlugins=[],n._bind=d,n._setHoursFromDate=s,n._positionCalendar=ce,n.changeMonth=P,n.changeYear=T,n.clear=function(e,t){if(void 0===e&&(e=!0),void 0===t&&(t=!0),n.input.value="",void 0!==n.altInput&&(n.altInput.value=""),void 0!==n.mobileInput&&(n.mobileInput.value=""),n.selectedDates=[],n.latestSelectedDateObj=void 0,!0===t&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth()),!0===n.config.enableTime){var o=ne(n.config);c(o.hours,o.minutes,o.seconds)}n.redraw(),e&&ve("onChange")},n.close=function(){n.isOpen=!1,n.isMobile||(void 0!==n.calendarContainer&&n.calendarContainer.classList.remove("open"),void 0!==n._input&&n._input.classList.remove("active")),ve("onClose")},n.onMouseOver=z,n._createElement=U,n.createDay=g,n.destroy=function(){void 0!==n.config&&ve("onDestroy");for(var e=n._handlers.length;e--;)n._handlers[e].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){var t=n.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type="text",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput),n.input&&(n.input.type=n.input._type,n.input.classList.remove("flatpickr-input"),n.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((function(e){try{delete n[e]}catch(e){}}))},n.isEnabled=I,n.jumpToDate=m,n.updateValue=Me,n.open=function(e,t){if(void 0===t&&(t=n._positionElement),!0===n.isMobile){if(e){e.preventDefault();var o=J(e);o&&o.blur()}return void 0!==n.mobileInput&&(n.mobileInput.focus(),n.mobileInput.click()),void ve("onOpen")}if(!n._input.disabled&&!n.config.inline){var a=n.isOpen;n.isOpen=!0,a||(n.calendarContainer.classList.add("open"),n._input.classList.add("active"),ve("onOpen"),ce(t)),!0===n.config.enableTime&&!0===n.config.noCalendar&&(!1!==n.config.allowInput||void 0!==e&&n.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return n.hourElement.select()}),50))}},n.redraw=ue,n.set=function(e,t){if(null!==e&&"object"==typeof e)for(var o in Object.assign(n.config,e),e)void 0!==me[o]&&me[o].forEach((function(e){return e()}));else n.config[e]=t,void 0!==me[e]?me[e].forEach((function(e){return e()})):S.indexOf(e)>-1&&(n.config[e]=V(t));n.redraw(),Me(!0)},n.setDate=function(e,t,o){if(void 0===t&&(t=!1),void 0===o&&(o=n.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return n.clear(t);pe(e,o),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),m(void 0,t),s(),0===n.selectedDates.length&&n.clear(!1),Me(t),t&&ve("onChange")},n.toggle=function(e){if(!0===n.isOpen)return n.close();n.open(e)};var me={locale:[se,k],showMonths:[x,i,E],minDate:[m],maxDate:[m],positionElement:[ge],clickOpens:[function(){!0===n.config.clickOpens?(d(n._input,"focus",n.open),d(n._input,"click",n.open)):(n._input.removeEventListener("focus",n.open),n._input.removeEventListener("click",n.open))}]};function pe(e,t){var o=[];if(e instanceof Array)o=e.map((function(e){return n.parseDate(e,t)}));else if(e instanceof Date||"number"==typeof e)o=[n.parseDate(e,t)];else if("string"==typeof e)switch(n.config.mode){case"single":case"time":o=[n.parseDate(e,t)];break;case"multiple":o=e.split(n.config.conjunction).map((function(e){return n.parseDate(e,t)}));break;case"range":o=e.split(n.l10n.rangeSeparator).map((function(e){return n.parseDate(e,t)}))}else n.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));n.selectedDates=n.config.allowInvalidPreload?o:o.filter((function(e){return e instanceof Date&&I(e,!1)})),"range"===n.config.mode&&n.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function he(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?n.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:n.parseDate(e.from,void 0),to:n.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function ge(){n._positionElement=n.config.positionElement||n._input}function ve(e,t){if(void 0!==n.config){var o=n.config[e];if(void 0!==o&&o.length>0)for(var a=0;o[a]&&a1||"static"===n.config.monthSelectorType?n.monthElements[t].textContent=$(o.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+" ":n.monthsDropdownContainer.value=o.getMonth().toString(),e.value=o.getFullYear().toString()})),n._hidePrevMonthArrow=void 0!==n.config.minDate&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYearn.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function we(e){var t=e||(n.config.altInput?n.config.altFormat:n.config.dateFormat);return n.selectedDates.map((function(e){return n.formatDate(e,t)})).filter((function(e,t,o){return"range"!==n.config.mode||n.config.enableTime||o.indexOf(e)===t})).join("range"!==n.config.mode?n.config.conjunction:n.l10n.rangeSeparator)}function Me(e){void 0===e&&(e=!0),void 0!==n.mobileInput&&n.mobileFormatStr&&(n.mobileInput.value=void 0!==n.latestSelectedDateObj?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):""),n.input.value=we(n.config.dateFormat),void 0!==n.altInput&&(n.altInput.value=we(n.config.altFormat)),!1!==e&&ve("onValueUpdate")}function Ce(e){var t=J(e),o=n.prevMonthNav.contains(t),a=n.nextMonthNav.contains(t);o||a?P(o?-1:1):n.yearElements.indexOf(t)>=0?t.select():t.classList.contains("arrowUp")?n.changeYear(n.currentYear+1):t.classList.contains("arrowDown")&&n.changeYear(n.currentYear-1)}return function(){n.element=n.input=e,n.isOpen=!1,function(){var o=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=oe(oe({},JSON.parse(JSON.stringify(e.dataset||{}))),t),r={};n.config.parseDate=i.parseDate,n.config.formatDate=i.formatDate,Object.defineProperty(n.config,"enable",{get:function(){return n.config._enable},set:function(e){n.config._enable=he(e)}}),Object.defineProperty(n.config,"disable",{get:function(){return n.config._disable},set:function(e){n.config._disable=he(e)}});var l="time"===i.mode;if(!i.dateFormat&&(i.enableTime||l)){var s=le.defaultConfig.dateFormat||F.dateFormat;r.dateFormat=i.noCalendar||l?"H:i"+(i.enableSeconds?":S":""):s+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||l)&&!i.altFormat){var c=le.defaultConfig.altFormat||F.altFormat;r.altFormat=i.noCalendar||l?"h:i"+(i.enableSeconds?":S K":" K"):c+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(n.config,"minDate",{get:function(){return n.config._minDate},set:ie("min")}),Object.defineProperty(n.config,"maxDate",{get:function(){return n.config._maxDate},set:ie("max")});var u=function(e){return function(t){n.config["min"===e?"_minTime":"_maxTime"]=n.parseDate(t,"H:i:S")}};Object.defineProperty(n.config,"minTime",{get:function(){return n.config._minTime},set:u("min")}),Object.defineProperty(n.config,"maxTime",{get:function(){return n.config._maxTime},set:u("max")}),"time"===i.mode&&(n.config.noCalendar=!0,n.config.enableTime=!0),Object.assign(n.config,r,i);for(var d=0;d-1?n.config[m]=V(f[m]).map(a).concat(n.config[m]):void 0===i[m]&&(n.config[m]=f[m])}i.altInputClass||(n.config.altInputClass=re().className+" "+n.config.altInputClass),ve("onParseConfig")}(),se(),n.input=re(),n.input?(n.input._type=n.input.type,n.input.type="text",n.input.classList.add("flatpickr-input"),n._input=n.input,n.config.altInput&&(n.altInput=U(n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type="text",n.input.setAttribute("type","hidden"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling)),n.config.allowInput||n._input.setAttribute("readonly","readonly"),ge()):n.config.errorHandler(new Error("Invalid input element specified")),function(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;var e=n.config.defaultDate||("INPUT"!==n.input.nodeName&&"TEXTAREA"!==n.input.nodeName||!n.input.placeholder||n.input.value!==n.input.placeholder?n.input.value:null);e&&pe(e,n.config.dateFormat),n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()0&&(n.latestSelectedDateObj=n.selectedDates[0]),void 0!==n.config.minTime&&(n.config.minTime=n.parseDate(n.config.minTime,"H:i")),void 0!==n.config.maxTime&&(n.config.maxTime=n.parseDate(n.config.maxTime,"H:i")),n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}(),n.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=n.currentMonth),void 0===t&&(t=n.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:n.l10n.daysInMonth[e]}},n.isMobile||function(){var e=window.document.createDocumentFragment();if(n.calendarContainer=U("div","flatpickr-calendar"),n.calendarContainer.tabIndex=-1,!n.config.noCalendar){if(e.appendChild((n.monthNav=U("div","flatpickr-months"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=U("span","flatpickr-prev-month"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=U("span","flatpickr-next-month"),n.nextMonthNav.innerHTML=n.config.nextArrow,x(),Object.defineProperty(n,"_hidePrevMonthArrow",{get:function(){return n.__hidePrevMonthArrow},set:function(e){n.__hidePrevMonthArrow!==e&&(B(n.prevMonthNav,"flatpickr-disabled",e),n.__hidePrevMonthArrow=e)}}),Object.defineProperty(n,"_hideNextMonthArrow",{get:function(){return n.__hideNextMonthArrow},set:function(e){n.__hideNextMonthArrow!==e&&(B(n.nextMonthNav,"flatpickr-disabled",e),n.__hideNextMonthArrow=e)}}),n.currentYearElement=n.yearElements[0],ye(),n.monthNav)),n.innerContainer=U("div","flatpickr-innerContainer"),n.config.weekNumbers){var t=function(){n.calendarContainer.classList.add("hasWeeks");var e=U("div","flatpickr-weekwrapper");e.appendChild(U("span","flatpickr-weekday",n.l10n.weekAbbreviation));var t=U("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),o=t.weekWrapper,a=t.weekNumbers;n.innerContainer.appendChild(o),n.weekNumbers=a,n.weekWrapper=o}n.rContainer=U("div","flatpickr-rContainer"),n.rContainer.appendChild(E()),n.daysContainer||(n.daysContainer=U("div","flatpickr-days"),n.daysContainer.tabIndex=-1),w(),n.rContainer.appendChild(n.daysContainer),n.innerContainer.appendChild(n.rContainer),e.appendChild(n.innerContainer)}n.config.enableTime&&e.appendChild(function(){n.calendarContainer.classList.add("hasTime"),n.config.noCalendar&&n.calendarContainer.classList.add("noCalendar");var e=ne(n.config);n.timeContainer=U("div","flatpickr-time"),n.timeContainer.tabIndex=-1;var t=U("span","flatpickr-time-separator",":"),o=W("flatpickr-hour",{"aria-label":n.l10n.hourAriaLabel});n.hourElement=o.getElementsByTagName("input")[0];var a=W("flatpickr-minute",{"aria-label":n.l10n.minuteAriaLabel});if(n.minuteElement=a.getElementsByTagName("input")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=j(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),n.minuteElement.value=j(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():e.minutes),n.hourElement.setAttribute("step",n.config.hourIncrement.toString()),n.minuteElement.setAttribute("step",n.config.minuteIncrement.toString()),n.hourElement.setAttribute("min",n.config.time_24hr?"0":"1"),n.hourElement.setAttribute("max",n.config.time_24hr?"23":"12"),n.hourElement.setAttribute("maxlength","2"),n.minuteElement.setAttribute("min","0"),n.minuteElement.setAttribute("max","59"),n.minuteElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(o),n.timeContainer.appendChild(t),n.timeContainer.appendChild(a),n.config.time_24hr&&n.timeContainer.classList.add("time24hr"),n.config.enableSeconds){n.timeContainer.classList.add("hasSeconds");var i=W("flatpickr-second");n.secondElement=i.getElementsByTagName("input")[0],n.secondElement.value=j(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():e.seconds),n.secondElement.setAttribute("step",n.minuteElement.getAttribute("step")),n.secondElement.setAttribute("min","0"),n.secondElement.setAttribute("max","59"),n.secondElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(U("span","flatpickr-time-separator",":")),n.timeContainer.appendChild(i)}return n.config.time_24hr||(n.amPM=U("span","flatpickr-am-pm",n.l10n.amPM[H((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM)),n.timeContainer}()),B(n.calendarContainer,"rangeMode","range"===n.config.mode),B(n.calendarContainer,"animate",!0===n.config.animate),B(n.calendarContainer,"multiMonth",n.config.showMonths>1),n.calendarContainer.appendChild(e);var i=void 0!==n.config.appendTo&&void 0!==n.config.appendTo.nodeType;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?"inline":"static"),n.config.inline&&(!i&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):void 0!==n.config.appendTo&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){var r=U("div","flatpickr-wrapper");n.element.parentNode&&n.element.parentNode.insertBefore(r,n.element),r.appendChild(n.element),n.altInput&&r.appendChild(n.altInput),r.appendChild(n.calendarContainer)}n.config.static||n.config.inline||(void 0!==n.config.appendTo?n.config.appendTo:window.document.body).appendChild(n.calendarContainer)}(),function(){if(n.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(n.element.querySelectorAll("[data-"+e+"]"),(function(t){return d(t,"click",n[e])}))})),n.isMobile)!function(){var e=n.config.enableTime?n.config.noCalendar?"time":"datetime-local":"date";n.mobileInput=U("input",n.input.className+" flatpickr-mobile"),n.mobileInput.tabIndex=1,n.mobileInput.type=e,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr)),n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,"Y-m-d")),n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,"Y-m-d")),n.input.getAttribute("step")&&(n.mobileInput.step=String(n.input.getAttribute("step"))),n.input.type="hidden",void 0!==n.altInput&&(n.altInput.type="hidden");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(e){}d(n.mobileInput,"change",(function(e){n.setDate(J(e).value,!1,n.mobileFormatStr),ve("onChange"),ve("onClose")}))}();else{var e=L(Z,50);if(n._debouncedChange=L(f,300),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&d(n.daysContainer,"mouseover",(function(e){"range"===n.config.mode&&z(J(e))})),d(n._input,"keydown",K),void 0!==n.calendarContainer&&d(n.calendarContainer,"keydown",K),n.config.inline||n.config.static||d(window,"resize",e),void 0!==window.ontouchstart?d(window.document,"touchstart",_):d(window.document,"mousedown",_),d(window.document,"focus",_,{capture:!0}),!0===n.config.clickOpens&&(d(n._input,"focus",n.open),d(n._input,"click",n.open)),void 0!==n.daysContainer&&(d(n.monthNav,"click",Ce),d(n.monthNav,["keyup","increment"],u),d(n.daysContainer,"click",fe)),void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement){d(n.timeContainer,["increment"],r),d(n.timeContainer,"blur",r,{capture:!0}),d(n.timeContainer,"click",p),d([n.hourElement,n.minuteElement],["focus","click"],(function(e){return J(e).select()})),void 0!==n.secondElement&&d(n.secondElement,"focus",(function(){return n.secondElement&&n.secondElement.select()})),void 0!==n.amPM&&d(n.amPM,"click",(function(e){r(e)}))}n.config.allowInput&&d(n._input,"blur",A)}}(),(n.selectedDates.length||n.config.noCalendar)&&(n.config.enableTime&&s(n.config.noCalendar?n.latestSelectedDateObj:void 0),Me(!1)),i();var o=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!n.isMobile&&o&&ce(),ve("onReady")}(),n}function re(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),o=[],a=0;a=2?x().component({type:"button",className:"Button Button--warning PollModal--button",icon:"fas fa-minus",onclick:o>=2?e.removeOption.bind(e,o):""}):"")}))},o.addOption=function(){var e=t().data["fof-polls.options.max"],n=e&&parseInt(e)||11;this.options.length0,o=this.poll.voteCount(),a=this.myVotes.some((function(t){return t.option()===e})),i=e.voteCount(),r=o>0?Math.round(i/o*100):0,l=m("div",{className:"PollBar","data-selected":a},(!this.poll.hasEnded()&&t().session.user&&t().session.user.canVotePolls()||!t().session.user)&&m("label",{className:"checkbox"},m("input",{onchange:this.changeVote.bind(this,e),type:"checkbox",checked:a,disabled:n&&!this.poll.canChangeVote()}),m("span",{className:"checkmark"})),m("div",{style:!isNaN(i)&&"--width: "+r+"%",className:"PollOption-active"}),m("label",{className:"PollAnswer"},m("span",null,e.answer()),e.imageUrl()?m("img",{className:"PollAnswerImage",src:e.imageUrl(),alt:e.answer()}):null),!isNaN(i)&&m("label",null,m("span",{className:y()("PollPercent",100!==r&&"PollPercent--option")},r,"%")));return m("div",{className:y()("PollOption",n&&"PollVoted",this.poll.hasEnded()&&"PollEnded")},isNaN(i)?l:m(xe(),{text:t().translator.trans("fof-polls.forum.tooltip.votes",{count:i})},l))},o.updateData=function(){this.options=this.poll.options()||[],this.myVotes=this.poll.myVotes()||[]},o.onError=function(e,t){throw e.target.checked=!1,t},o.changeVote=function(e,n){var o=this;if(!t().session.user)return t().modal.show(he()),void(n.target.checked=!1);var a=new Set(this.poll.myVotes().map((function(e){return e.option().id()}))),i=a.delete(e.id());return this.poll.allowMultipleVotes()||a.clear(),i||a.add(e.id()),t().request({method:"PATCH",url:t().forum.attribute("apiUrl")+"/fof/polls/"+this.poll.id()+"/votes",body:{data:{optionIds:Array.from(a)}}}).then((function(e){t().store.pushPayload(e),o.updateData(),m.redraw()})).catch((function(){n.target.checked=i}))},o.showVoters=function(){var e=this;t().store.find("discussions",this.attrs.discussion.id(),{include:"poll.votes,poll.votes.user,poll.votes.option"}).then((function(){t().modal.show(Me,{poll:e.poll})}))},n}(me());const ke=flarum.core.compat["forum/components/DiscussionPage"];var Pe=n.n(ke);const Ne=flarum.core.compat["forum/utils/PostControls"];var _e=n.n(Ne),Te=function(e){function n(){return e.apply(this,arguments)||this}l(n,e);var o=n.prototype;return o.oninit=function(t){e.prototype.oninit.call(this,t),this.poll=this.attrs.poll,this.options=this.poll.options(),this.optionAnswers=this.options.map((function(e){return O()(e.answer())})),this.optionImageUrls=this.options.map((function(e){return O()(e.imageUrl())})),this.question=O()(this.poll.question()),this.endDate=O()(this.poll.endDate()),this.publicPoll=O()(this.poll.publicPoll()),this.allowMultipleVotes=O()(this.poll.allowMultipleVotes()),this.maxVotes=O()(this.poll.maxVotes()||0)},o.title=function(){return t().translator.trans("fof-polls.forum.modal.edit_title")},o.displayOptions=function(){var e=this;return this.options.map((function(n,o){return m("div",{className:"Form-group"},m("fieldset",{className:"Poll-answer-input"},m("input",{className:"FormControl",type:"text",name:"answer"+(o+1),bidi:e.optionAnswers[o],placeholder:t().translator.trans("fof-polls.forum.modal.option_placeholder")+" #"+(o+1)}),t().forum.attribute("allowPollOptionImage")?m("input",{className:"FormControl",type:"text",name:"answerImage"+(o+1),bidi:e.optionImageUrls[o],placeholder:t().translator.trans("fof-polls.forum.modal.image_option_placeholder")+" #"+(o+1)}):null),o>=2?x().component({type:"button",className:"Button PollModal--button",icon:"fas fa-minus",onclick:o>=2?e.removeOption.bind(e,o):""}):"")}))},o.addOption=function(){var e=t().data["fof-polls.options.max"],n=e&&parseInt(e)||11;this.options.length{var e={291:()=>{"use strict";"function"!=typeof Object.assign&&(Object.assign=function(e){for(var t=[],n=1;n{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};(()=>{"use strict";n.r(o),n.d(o,{components:()=>Ie,models:()=>Oe});const e=flarum.core.compat["forum/app"];var t=n.n(e);const a=flarum.core.compat["common/Model"];var i=n.n(a);function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}var s=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),a=0;a",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},A={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1};const Y=A;var j=function(e,t){return void 0===t&&(t=2),("000"+e).slice(-1*t)},H=function(e){return!0===e?1:0};function L(e,t){var n;return function(){var o=this,a=arguments;clearTimeout(n),n=setTimeout((function(){return e.apply(o,a)}),t)}}var V=function(e){return e instanceof Array?e:[e]};function B(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function U(e,t,n){var o=window.document.createElement(e);return t=t||"",n=n||"",o.className=t,void 0!==n&&(o.textContent=n),o}function q(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function R(e,t){return t(e)?e:e.parentNode?R(e.parentNode,t):void 0}function W(e,t){var n=U("div","numInputWrapper"),o=U("input","numInput "+e),a=U("span","arrowUp"),i=U("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?o.type="number":(o.type="text",o.pattern="\\d*"),void 0!==t)for(var r in t)o.setAttribute(r,t[r]);return n.appendChild(o),n.appendChild(a),n.appendChild(i),n}function J(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(t){return e.target}}var K=function(){},$=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},z={D:K,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*H(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var o=parseInt(t),a=new Date(e.getFullYear(),0,2+7*(o-1),0,0,0,0);return a.setDate(a.getDate()-a.getDay()+n.firstDayOfWeek),a},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:K,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:K,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},G={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},Z={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[Z.w(e,t,n)]},F:function(e,t,n){return $(Z.n(e,t,n)-1,!1,t)},G:function(e,t,n){return j(Z.h(e,t,n))},H:function(e){return j(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[H(e.getHours()>11)]},M:function(e,t){return $(e.getMonth(),!0,t)},S:function(e){return j(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return j(e.getFullYear(),4)},d:function(e){return j(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return j(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return j(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},Q=function(e){var t=e.config,n=void 0===t?F:t,o=e.l10n,a=void 0===o?A:o,i=e.isMobile,r=void 0!==i&&i;return function(e,t,o){var i=o||a;return void 0===n.formatDate||r?t.split("").map((function(t,o,a){return Z[t]&&"\\"!==a[o-1]?Z[t](e,i,n):"\\"!==t?t:""})).join(""):n.formatDate(e,t,i)}},X=function(e){var t=e.config,n=void 0===t?F:t,o=e.l10n,a=void 0===o?A:o;return function(e,t,o,i){if(0===e||e){var r,l=i||a,s=e;if(e instanceof Date)r=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)r=new Date(e);else if("string"==typeof e){var c=t||(n||F).dateFormat,u=String(e).trim();if("today"===u)r=new Date,o=!0;else if(n&&n.parseDate)r=n.parseDate(e,c);else if(/Z$/.test(u)||/GMT$/.test(u))r=new Date(e);else{for(var d=void 0,f=[],m=0,p=0,h="";m=0?new Date:new Date(n.config.minDate.getTime()),o=ne(n.config);t.setHours(o.hours,o.minutes,o.seconds,t.getMilliseconds()),n.selectedDates=[t],n.latestSelectedDateObj=t}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var t="keydown"===e.type,o=J(e),a=o;void 0!==n.amPM&&o===n.amPM&&(n.amPM.textContent=n.l10n.amPM[H(n.amPM.textContent===n.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),r=parseFloat(a.getAttribute("max")),l=parseFloat(a.getAttribute("step")),s=parseInt(a.value,10),c=s+l*(e.delta||(t?38===e.which?1:-1:0));if(void 0!==a.value&&2===a.value.length){var u=a===n.hourElement,d=a===n.minuteElement;cr&&(c=a===n.hourElement?c-r-H(!n.amPM):i,d&&h(void 0,1,n.hourElement)),n.amPM&&u&&(1===l?c+s===23:Math.abs(c-s)>l)&&(n.amPM.textContent=n.l10n.amPM[H(n.amPM.textContent===n.l10n.amPM[0])]),a.value=j(c)}}(e);var a=n._input.value;l(),Me(),n._input.value!==a&&n._debouncedChange()}function l(){if(void 0!==n.hourElement&&void 0!==n.minuteElement){var e,t,o=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(n.minuteElement.value,10)||0)%60,i=void 0!==n.secondElement?(parseInt(n.secondElement.value,10)||0)%60:0;void 0!==n.amPM&&(e=o,t=n.amPM.textContent,o=e%12+12*H(t===n.l10n.amPM[1]));var r=void 0!==n.config.minTime||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&0===ee(n.latestSelectedDateObj,n.config.minDate,!0),l=void 0!==n.config.maxTime||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&0===ee(n.latestSelectedDateObj,n.config.maxDate,!0);if(void 0!==n.config.maxTime&&void 0!==n.config.minTime&&n.config.minTime>n.config.maxTime){var s=te(n.config.minTime.getHours(),n.config.minTime.getMinutes(),n.config.minTime.getSeconds()),u=te(n.config.maxTime.getHours(),n.config.maxTime.getMinutes(),n.config.maxTime.getSeconds()),d=te(o,a,i);if(d>u&&d=12)]),void 0!==n.secondElement&&(n.secondElement.value=j(o)))}function u(e){var t=J(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||"Enter"===e.key&&!/[^\d]/.test(n.toString()))&&T(n)}function d(e,t,o,a){return t instanceof Array?t.forEach((function(t){return d(e,t,o,a)})):e instanceof Array?e.forEach((function(e){return d(e,t,o,a)})):(e.addEventListener(t,o,a),void n._handlers.push({remove:function(){return e.removeEventListener(t,o,a)}}))}function f(){ve("onChange")}function m(e,t){var o=void 0!==e?n.parseDate(e):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate=0&&ee(e,n.selectedDates[1])<=0}(t)&&!De(t)&&r.classList.add("inRange"),n.weekNumbers&&1===n.config.showMonths&&"prevMonthDay"!==e&&a%7==6&&n.weekNumbers.insertAdjacentHTML("beforeend",""+n.config.getWeek(t)+""),ve("onDayCreate",r),r}function v(e){e.focus(),"range"===n.config.mode&&z(e)}function b(e){for(var t=e>0?0:n.config.showMonths-1,o=e>0?n.config.showMonths:-1,a=t;a!=o;a+=e)for(var i=n.daysContainer.children[a],r=e>0?0:i.children.length-1,l=e>0?i.children.length:-1,s=r;s!=l;s+=e){var c=i.children[s];if(-1===c.className.indexOf("hidden")&&I(c.dateObj))return c}}function D(e,t){var a=o(),i=O(a||document.body),r=void 0!==e?e:i?a:void 0!==n.selectedDateElem&&O(n.selectedDateElem)?n.selectedDateElem:void 0!==n.todayDateElem&&O(n.todayDateElem)?n.todayDateElem:b(t>0?1:-1);void 0===r?n._input.focus():i?function(e,t){for(var o=-1===e.className.indexOf("Month")?e.dateObj.getMonth():n.currentMonth,a=t>0?n.config.showMonths:-1,i=t>0?1:-1,r=o-n.currentMonth;r!=a;r+=i)for(var l=n.daysContainer.children[r],s=o-n.currentMonth===r?e.$i+t:t<0?l.children.length-1:0,c=l.children.length,u=s;u>=0&&u0?c:-1);u+=i){var d=l.children[u];if(-1===d.className.indexOf("hidden")&&I(d.dateObj)&&Math.abs(e.$i-u)>=Math.abs(t))return v(d)}n.changeMonth(i),D(b(i),0)}(r,t):v(r)}function y(e,t){for(var o=(new Date(e,t,1).getDay()-n.l10n.firstDayOfWeek+7)%7,a=n.utils.getDaysInMonth((t-1+12)%12,e),i=n.utils.getDaysInMonth(t,e),r=window.document.createDocumentFragment(),l=n.config.showMonths>1,s=l?"prevMonthDay hidden":"prevMonthDay",c=l?"nextMonthDay hidden":"nextMonthDay",u=a+1-o,d=0;u<=a;u++,d++)r.appendChild(g("flatpickr-day "+s,new Date(e,t-1,u),0,d));for(u=1;u<=i;u++,d++)r.appendChild(g("flatpickr-day",new Date(e,t,u),0,d));for(var f=i+1;f<=42-o&&(1===n.config.showMonths||d%7!=0);f++,d++)r.appendChild(g("flatpickr-day "+c,new Date(e,t+1,f%i),0,d));var m=U("div","dayContainer");return m.appendChild(r),m}function w(){if(void 0!==n.daysContainer){q(n.daysContainer),n.weekNumbers&&q(n.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t1||"dropdown"!==n.config.monthSelectorType)){var e=function(e){return!(void 0!==n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&en.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var o=U("option","flatpickr-monthDropdown-month");o.value=new Date(n.currentYear,t).getMonth().toString(),o.textContent=$(t,n.config.shorthandCurrentMonth,n.l10n),o.tabIndex=-1,n.currentMonth===t&&(o.selected=!0),n.monthsDropdownContainer.appendChild(o)}}}function C(){var e,t=U("div","flatpickr-month"),o=window.document.createDocumentFragment();n.config.showMonths>1||"static"===n.config.monthSelectorType?e=U("span","cur-month"):(n.monthsDropdownContainer=U("select","flatpickr-monthDropdown-months"),n.monthsDropdownContainer.setAttribute("aria-label",n.l10n.monthAriaLabel),d(n.monthsDropdownContainer,"change",(function(e){var t=J(e),o=parseInt(t.value,10);n.changeMonth(o-n.currentMonth),ve("onMonthChange")})),M(),e=n.monthsDropdownContainer);var a=W("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",n.l10n.yearAriaLabel),n.config.minDate&&i.setAttribute("min",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(i.setAttribute("max",n.config.maxDate.getFullYear().toString()),i.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());var r=U("div","flatpickr-current-month");return r.appendChild(e),r.appendChild(a),o.appendChild(r),t.appendChild(o),{container:t,yearElement:i,monthElement:e}}function x(){q(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(var e=n.config.showMonths;e--;){var t=C();n.yearElements.push(t.yearElement),n.monthElements.push(t.monthElement),n.monthNav.appendChild(t.container)}n.monthNav.appendChild(n.nextMonthNav)}function E(){n.weekdayContainer?q(n.weekdayContainer):n.weekdayContainer=U("div","flatpickr-weekdays");for(var e=n.config.showMonths;e--;){var t=U("div","flatpickr-weekdaycontainer");n.weekdayContainer.appendChild(t)}return k(),n.weekdayContainer}function k(){if(n.weekdayContainer){var e=n.l10n.firstDayOfWeek,t=ae(n.l10n.weekdays.shorthand);e>0&&e\n "+t.join("")+"\n \n "}}function P(e,t){void 0===t&&(t=!0);var o=t?e:e-n.currentMonth;o<0&&!0===n._hidePrevMonthArrow||o>0&&!0===n._hideNextMonthArrow||(n.currentMonth+=o,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,ve("onYearChange"),M()),w(),ve("onMonthChange"),ye())}function N(e){return n.calendarContainer.contains(e)}function _(e){if(n.isOpen&&!n.config.inline){var t=J(e),o=N(t),a=!(t===n.input||t===n.altInput||n.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(n.input)||~e.path.indexOf(n.altInput))||o||N(e.relatedTarget)),i=!n.config.ignoredFocusElements.some((function(e){return e.contains(t)}));a&&i&&(n.config.allowInput&&n.setDate(n._input.value,!1,n.config.altInput?n.config.altFormat:n.config.dateFormat),void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement&&""!==n.input.value&&void 0!==n.input.value&&r(),n.close(),n.config&&"range"===n.config.mode&&1===n.selectedDates.length&&n.clear(!1))}}function T(e){if(!(!e||n.config.minDate&&en.config.maxDate.getFullYear())){var t=e,o=n.currentYear!==t;n.currentYear=t||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),o&&(n.redraw(),ve("onYearChange"),M())}}function I(e,t){var o;void 0===t&&(t=!0);var a=n.parseDate(e,void 0,t);if(n.config.minDate&&a&&ee(a,n.config.minDate,void 0!==t?t:!n.minDateHasTime)<0||n.config.maxDate&&a&&ee(a,n.config.maxDate,void 0!==t?t:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&0===n.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!n.config.enable,r=null!==(o=n.config.enable)&&void 0!==o?o:n.config.disable,l=0,s=void 0;l=s.from.getTime()&&a.getTime()<=s.to.getTime())return i}return!i}function O(e){return void 0!==n.daysContainer&&-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&n.daysContainer.contains(e)}function A(e){var t=e.target===n._input,o=n._input.value.trimEnd()!==we();!t||!o||e.relatedTarget&&N(e.relatedTarget)||n.setDate(n._input.value,!0,e.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function K(t){var a=J(t),i=n.config.wrap?e.contains(a):a===n._input,s=n.config.allowInput,c=n.isOpen&&(!s||!i),u=n.config.inline&&i&&!s;if(13===t.keyCode&&i){if(s)return n.setDate(n._input.value,!0,a===n.altInput?n.config.altFormat:n.config.dateFormat),n.close(),a.blur();n.open()}else if(N(a)||c||u){var d=!!n.timeContainer&&n.timeContainer.contains(a);switch(t.keyCode){case 13:d?(t.preventDefault(),r(),de()):fe(t);break;case 27:t.preventDefault(),de();break;case 8:case 46:i&&!n.config.allowInput&&(t.preventDefault(),n.clear());break;case 37:case 39:if(d||i)n.hourElement&&n.hourElement.focus();else{t.preventDefault();var f=o();if(void 0!==n.daysContainer&&(!1===s||f&&O(f))){var m=39===t.keyCode?1:-1;t.ctrlKey?(t.stopPropagation(),P(m),D(b(1),0)):D(void 0,m)}}break;case 38:case 40:t.preventDefault();var p=40===t.keyCode?1:-1;n.daysContainer&&void 0!==a.$i||a===n.input||a===n.altInput?t.ctrlKey?(t.stopPropagation(),T(n.currentYear-p),D(b(1),0)):d||D(void 0,7*p):a===n.currentYearElement?T(n.currentYear-p):n.config.enableTime&&(!d&&n.hourElement&&n.hourElement.focus(),r(t),n._debouncedChange());break;case 9:if(d){var h=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter((function(e){return e})),g=h.indexOf(a);if(-1!==g){var v=h[g+(t.shiftKey?-1:1)];t.preventDefault(),(v||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(a)&&t.shiftKey&&(t.preventDefault(),n._input.focus())}}if(void 0!==n.amPM&&a===n.amPM)switch(t.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],l(),Me();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],l(),Me()}(i||N(a))&&ve("onKeyDown",t)}function z(e,t){if(void 0===t&&(t="flatpickr-day"),1===n.selectedDates.length&&(!e||e.classList.contains(t)&&!e.classList.contains("flatpickr-disabled"))){for(var o=e?e.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),a=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),i=Math.min(o,n.selectedDates[0].getTime()),r=Math.max(o,n.selectedDates[0].getTime()),l=!1,s=0,c=0,u=i;ui&&us)?s=u:u>a&&(!c||u ."+t)).forEach((function(t){var i,r,u,d=t.dateObj.getTime(),f=s>0&&d0&&d>c;if(f)return t.classList.add("notAllowed"),void["inRange","startRange","endRange"].forEach((function(e){t.classList.remove(e)}));l&&!f||(["startRange","inRange","endRange","notAllowed"].forEach((function(e){t.classList.remove(e)})),void 0!==e&&(e.classList.add(o<=n.selectedDates[0].getTime()?"startRange":"endRange"),ao&&d===a&&t.classList.add("endRange"),d>=s&&(0===c||d<=c)&&(r=a,u=o,(i=d)>Math.min(r,u)&&i0||o.getMinutes()>0||o.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter((function(e){return I(e)})),n.selectedDates.length||"min"!==e||s(o),Me()),n.daysContainer&&(ue(),void 0!==o?n.currentYearElement[e]=o.getFullYear().toString():n.currentYearElement.removeAttribute(e),n.currentYearElement.disabled=!!a&&void 0!==o&&a.getFullYear()===o.getFullYear())}}function re(){return n.config.wrap?e.querySelector("[data-input]"):e}function se(){"object"!=typeof n.config.locale&&void 0===le.l10ns[n.config.locale]&&n.config.errorHandler(new Error("flatpickr: invalid locale "+n.config.locale)),n.l10n=oe(oe({},le.l10ns.default),"object"==typeof n.config.locale?n.config.locale:"default"!==n.config.locale?le.l10ns[n.config.locale]:void 0),G.D="("+n.l10n.weekdays.shorthand.join("|")+")",G.l="("+n.l10n.weekdays.longhand.join("|")+")",G.M="("+n.l10n.months.shorthand.join("|")+")",G.F="("+n.l10n.months.longhand.join("|")+")",G.K="("+n.l10n.amPM[0]+"|"+n.l10n.amPM[1]+"|"+n.l10n.amPM[0].toLowerCase()+"|"+n.l10n.amPM[1].toLowerCase()+")",void 0===oe(oe({},t),JSON.parse(JSON.stringify(e.dataset||{}))).time_24hr&&void 0===le.defaultConfig.time_24hr&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=Q(n),n.parseDate=X({config:n.config,l10n:n.l10n})}function ce(e){if("function"!=typeof n.config.position){if(void 0!==n.calendarContainer){ve("onPreCalendarPosition");var t=e||n._positionElement,o=Array.prototype.reduce.call(n.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),a=n.calendarContainer.offsetWidth,i=n.config.position.split(" "),r=i[0],l=i.length>1?i[1]:null,s=t.getBoundingClientRect(),c=window.innerHeight-s.bottom,u="above"===r||"below"!==r&&co,d=window.pageYOffset+s.top+(u?-o-2:t.offsetHeight+2);if(B(n.calendarContainer,"arrowTop",!u),B(n.calendarContainer,"arrowBottom",u),!n.config.inline){var f=window.pageXOffset+s.left,m=!1,p=!1;"center"===l?(f-=(a-s.width)/2,m=!0):"right"===l&&(f-=a-s.width,p=!0),B(n.calendarContainer,"arrowLeft",!m&&!p),B(n.calendarContainer,"arrowCenter",m),B(n.calendarContainer,"arrowRight",p);var h=window.document.body.offsetWidth-(window.pageXOffset+s.right),g=f+a>window.document.body.offsetWidth,v=h+a>window.document.body.offsetWidth;if(B(n.calendarContainer,"rightMost",g),!n.config.static)if(n.calendarContainer.style.top=d+"px",g)if(v){var b=function(){for(var e=null,t=0;tn.currentMonth+n.config.showMonths-1)&&"range"!==n.config.mode;if(n.selectedDateElem=o,"single"===n.config.mode)n.selectedDates=[a];else if("multiple"===n.config.mode){var r=De(a);r?n.selectedDates.splice(parseInt(r),1):n.selectedDates.push(a)}else"range"===n.config.mode&&(2===n.selectedDates.length&&n.clear(!1,!1),n.latestSelectedDateObj=a,n.selectedDates.push(a),0!==ee(a,n.selectedDates[0],!0)&&n.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(l(),i){var s=n.currentYear!==a.getFullYear();n.currentYear=a.getFullYear(),n.currentMonth=a.getMonth(),s&&(ve("onYearChange"),M()),ve("onMonthChange")}if(ye(),w(),Me(),i||"range"===n.config.mode||1!==n.config.showMonths?void 0!==n.selectedDateElem&&void 0===n.hourElement&&n.selectedDateElem&&n.selectedDateElem.focus():v(o),void 0!==n.hourElement&&void 0!==n.hourElement&&n.hourElement.focus(),n.config.closeOnSelect){var c="single"===n.config.mode&&!n.config.enableTime,u="range"===n.config.mode&&2===n.selectedDates.length&&!n.config.enableTime;(c||u)&&de()}f()}}n.parseDate=X({config:n.config,l10n:n.l10n}),n._handlers=[],n.pluginElements=[],n.loadedPlugins=[],n._bind=d,n._setHoursFromDate=s,n._positionCalendar=ce,n.changeMonth=P,n.changeYear=T,n.clear=function(e,t){if(void 0===e&&(e=!0),void 0===t&&(t=!0),n.input.value="",void 0!==n.altInput&&(n.altInput.value=""),void 0!==n.mobileInput&&(n.mobileInput.value=""),n.selectedDates=[],n.latestSelectedDateObj=void 0,!0===t&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth()),!0===n.config.enableTime){var o=ne(n.config);c(o.hours,o.minutes,o.seconds)}n.redraw(),e&&ve("onChange")},n.close=function(){n.isOpen=!1,n.isMobile||(void 0!==n.calendarContainer&&n.calendarContainer.classList.remove("open"),void 0!==n._input&&n._input.classList.remove("active")),ve("onClose")},n.onMouseOver=z,n._createElement=U,n.createDay=g,n.destroy=function(){void 0!==n.config&&ve("onDestroy");for(var e=n._handlers.length;e--;)n._handlers[e].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){var t=n.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type="text",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput),n.input&&(n.input.type=n.input._type,n.input.classList.remove("flatpickr-input"),n.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((function(e){try{delete n[e]}catch(e){}}))},n.isEnabled=I,n.jumpToDate=m,n.updateValue=Me,n.open=function(e,t){if(void 0===t&&(t=n._positionElement),!0===n.isMobile){if(e){e.preventDefault();var o=J(e);o&&o.blur()}return void 0!==n.mobileInput&&(n.mobileInput.focus(),n.mobileInput.click()),void ve("onOpen")}if(!n._input.disabled&&!n.config.inline){var a=n.isOpen;n.isOpen=!0,a||(n.calendarContainer.classList.add("open"),n._input.classList.add("active"),ve("onOpen"),ce(t)),!0===n.config.enableTime&&!0===n.config.noCalendar&&(!1!==n.config.allowInput||void 0!==e&&n.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return n.hourElement.select()}),50))}},n.redraw=ue,n.set=function(e,t){if(null!==e&&"object"==typeof e)for(var o in Object.assign(n.config,e),e)void 0!==me[o]&&me[o].forEach((function(e){return e()}));else n.config[e]=t,void 0!==me[e]?me[e].forEach((function(e){return e()})):S.indexOf(e)>-1&&(n.config[e]=V(t));n.redraw(),Me(!0)},n.setDate=function(e,t,o){if(void 0===t&&(t=!1),void 0===o&&(o=n.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return n.clear(t);pe(e,o),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),m(void 0,t),s(),0===n.selectedDates.length&&n.clear(!1),Me(t),t&&ve("onChange")},n.toggle=function(e){if(!0===n.isOpen)return n.close();n.open(e)};var me={locale:[se,k],showMonths:[x,i,E],minDate:[m],maxDate:[m],positionElement:[ge],clickOpens:[function(){!0===n.config.clickOpens?(d(n._input,"focus",n.open),d(n._input,"click",n.open)):(n._input.removeEventListener("focus",n.open),n._input.removeEventListener("click",n.open))}]};function pe(e,t){var o=[];if(e instanceof Array)o=e.map((function(e){return n.parseDate(e,t)}));else if(e instanceof Date||"number"==typeof e)o=[n.parseDate(e,t)];else if("string"==typeof e)switch(n.config.mode){case"single":case"time":o=[n.parseDate(e,t)];break;case"multiple":o=e.split(n.config.conjunction).map((function(e){return n.parseDate(e,t)}));break;case"range":o=e.split(n.l10n.rangeSeparator).map((function(e){return n.parseDate(e,t)}))}else n.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));n.selectedDates=n.config.allowInvalidPreload?o:o.filter((function(e){return e instanceof Date&&I(e,!1)})),"range"===n.config.mode&&n.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function he(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?n.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:n.parseDate(e.from,void 0),to:n.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function ge(){n._positionElement=n.config.positionElement||n._input}function ve(e,t){if(void 0!==n.config){var o=n.config[e];if(void 0!==o&&o.length>0)for(var a=0;o[a]&&a1||"static"===n.config.monthSelectorType?n.monthElements[t].textContent=$(o.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+" ":n.monthsDropdownContainer.value=o.getMonth().toString(),e.value=o.getFullYear().toString()})),n._hidePrevMonthArrow=void 0!==n.config.minDate&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYearn.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function we(e){var t=e||(n.config.altInput?n.config.altFormat:n.config.dateFormat);return n.selectedDates.map((function(e){return n.formatDate(e,t)})).filter((function(e,t,o){return"range"!==n.config.mode||n.config.enableTime||o.indexOf(e)===t})).join("range"!==n.config.mode?n.config.conjunction:n.l10n.rangeSeparator)}function Me(e){void 0===e&&(e=!0),void 0!==n.mobileInput&&n.mobileFormatStr&&(n.mobileInput.value=void 0!==n.latestSelectedDateObj?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):""),n.input.value=we(n.config.dateFormat),void 0!==n.altInput&&(n.altInput.value=we(n.config.altFormat)),!1!==e&&ve("onValueUpdate")}function Ce(e){var t=J(e),o=n.prevMonthNav.contains(t),a=n.nextMonthNav.contains(t);o||a?P(o?-1:1):n.yearElements.indexOf(t)>=0?t.select():t.classList.contains("arrowUp")?n.changeYear(n.currentYear+1):t.classList.contains("arrowDown")&&n.changeYear(n.currentYear-1)}return function(){n.element=n.input=e,n.isOpen=!1,function(){var o=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=oe(oe({},JSON.parse(JSON.stringify(e.dataset||{}))),t),r={};n.config.parseDate=i.parseDate,n.config.formatDate=i.formatDate,Object.defineProperty(n.config,"enable",{get:function(){return n.config._enable},set:function(e){n.config._enable=he(e)}}),Object.defineProperty(n.config,"disable",{get:function(){return n.config._disable},set:function(e){n.config._disable=he(e)}});var l="time"===i.mode;if(!i.dateFormat&&(i.enableTime||l)){var s=le.defaultConfig.dateFormat||F.dateFormat;r.dateFormat=i.noCalendar||l?"H:i"+(i.enableSeconds?":S":""):s+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||l)&&!i.altFormat){var c=le.defaultConfig.altFormat||F.altFormat;r.altFormat=i.noCalendar||l?"h:i"+(i.enableSeconds?":S K":" K"):c+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(n.config,"minDate",{get:function(){return n.config._minDate},set:ie("min")}),Object.defineProperty(n.config,"maxDate",{get:function(){return n.config._maxDate},set:ie("max")});var u=function(e){return function(t){n.config["min"===e?"_minTime":"_maxTime"]=n.parseDate(t,"H:i:S")}};Object.defineProperty(n.config,"minTime",{get:function(){return n.config._minTime},set:u("min")}),Object.defineProperty(n.config,"maxTime",{get:function(){return n.config._maxTime},set:u("max")}),"time"===i.mode&&(n.config.noCalendar=!0,n.config.enableTime=!0),Object.assign(n.config,r,i);for(var d=0;d-1?n.config[m]=V(f[m]).map(a).concat(n.config[m]):void 0===i[m]&&(n.config[m]=f[m])}i.altInputClass||(n.config.altInputClass=re().className+" "+n.config.altInputClass),ve("onParseConfig")}(),se(),n.input=re(),n.input?(n.input._type=n.input.type,n.input.type="text",n.input.classList.add("flatpickr-input"),n._input=n.input,n.config.altInput&&(n.altInput=U(n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type="text",n.input.setAttribute("type","hidden"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling)),n.config.allowInput||n._input.setAttribute("readonly","readonly"),ge()):n.config.errorHandler(new Error("Invalid input element specified")),function(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;var e=n.config.defaultDate||("INPUT"!==n.input.nodeName&&"TEXTAREA"!==n.input.nodeName||!n.input.placeholder||n.input.value!==n.input.placeholder?n.input.value:null);e&&pe(e,n.config.dateFormat),n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()0&&(n.latestSelectedDateObj=n.selectedDates[0]),void 0!==n.config.minTime&&(n.config.minTime=n.parseDate(n.config.minTime,"H:i")),void 0!==n.config.maxTime&&(n.config.maxTime=n.parseDate(n.config.maxTime,"H:i")),n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}(),n.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=n.currentMonth),void 0===t&&(t=n.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:n.l10n.daysInMonth[e]}},n.isMobile||function(){var e=window.document.createDocumentFragment();if(n.calendarContainer=U("div","flatpickr-calendar"),n.calendarContainer.tabIndex=-1,!n.config.noCalendar){if(e.appendChild((n.monthNav=U("div","flatpickr-months"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=U("span","flatpickr-prev-month"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=U("span","flatpickr-next-month"),n.nextMonthNav.innerHTML=n.config.nextArrow,x(),Object.defineProperty(n,"_hidePrevMonthArrow",{get:function(){return n.__hidePrevMonthArrow},set:function(e){n.__hidePrevMonthArrow!==e&&(B(n.prevMonthNav,"flatpickr-disabled",e),n.__hidePrevMonthArrow=e)}}),Object.defineProperty(n,"_hideNextMonthArrow",{get:function(){return n.__hideNextMonthArrow},set:function(e){n.__hideNextMonthArrow!==e&&(B(n.nextMonthNav,"flatpickr-disabled",e),n.__hideNextMonthArrow=e)}}),n.currentYearElement=n.yearElements[0],ye(),n.monthNav)),n.innerContainer=U("div","flatpickr-innerContainer"),n.config.weekNumbers){var t=function(){n.calendarContainer.classList.add("hasWeeks");var e=U("div","flatpickr-weekwrapper");e.appendChild(U("span","flatpickr-weekday",n.l10n.weekAbbreviation));var t=U("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),o=t.weekWrapper,a=t.weekNumbers;n.innerContainer.appendChild(o),n.weekNumbers=a,n.weekWrapper=o}n.rContainer=U("div","flatpickr-rContainer"),n.rContainer.appendChild(E()),n.daysContainer||(n.daysContainer=U("div","flatpickr-days"),n.daysContainer.tabIndex=-1),w(),n.rContainer.appendChild(n.daysContainer),n.innerContainer.appendChild(n.rContainer),e.appendChild(n.innerContainer)}n.config.enableTime&&e.appendChild(function(){n.calendarContainer.classList.add("hasTime"),n.config.noCalendar&&n.calendarContainer.classList.add("noCalendar");var e=ne(n.config);n.timeContainer=U("div","flatpickr-time"),n.timeContainer.tabIndex=-1;var t=U("span","flatpickr-time-separator",":"),o=W("flatpickr-hour",{"aria-label":n.l10n.hourAriaLabel});n.hourElement=o.getElementsByTagName("input")[0];var a=W("flatpickr-minute",{"aria-label":n.l10n.minuteAriaLabel});if(n.minuteElement=a.getElementsByTagName("input")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=j(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),n.minuteElement.value=j(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():e.minutes),n.hourElement.setAttribute("step",n.config.hourIncrement.toString()),n.minuteElement.setAttribute("step",n.config.minuteIncrement.toString()),n.hourElement.setAttribute("min",n.config.time_24hr?"0":"1"),n.hourElement.setAttribute("max",n.config.time_24hr?"23":"12"),n.hourElement.setAttribute("maxlength","2"),n.minuteElement.setAttribute("min","0"),n.minuteElement.setAttribute("max","59"),n.minuteElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(o),n.timeContainer.appendChild(t),n.timeContainer.appendChild(a),n.config.time_24hr&&n.timeContainer.classList.add("time24hr"),n.config.enableSeconds){n.timeContainer.classList.add("hasSeconds");var i=W("flatpickr-second");n.secondElement=i.getElementsByTagName("input")[0],n.secondElement.value=j(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():e.seconds),n.secondElement.setAttribute("step",n.minuteElement.getAttribute("step")),n.secondElement.setAttribute("min","0"),n.secondElement.setAttribute("max","59"),n.secondElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(U("span","flatpickr-time-separator",":")),n.timeContainer.appendChild(i)}return n.config.time_24hr||(n.amPM=U("span","flatpickr-am-pm",n.l10n.amPM[H((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM)),n.timeContainer}()),B(n.calendarContainer,"rangeMode","range"===n.config.mode),B(n.calendarContainer,"animate",!0===n.config.animate),B(n.calendarContainer,"multiMonth",n.config.showMonths>1),n.calendarContainer.appendChild(e);var i=void 0!==n.config.appendTo&&void 0!==n.config.appendTo.nodeType;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?"inline":"static"),n.config.inline&&(!i&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):void 0!==n.config.appendTo&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){var r=U("div","flatpickr-wrapper");n.element.parentNode&&n.element.parentNode.insertBefore(r,n.element),r.appendChild(n.element),n.altInput&&r.appendChild(n.altInput),r.appendChild(n.calendarContainer)}n.config.static||n.config.inline||(void 0!==n.config.appendTo?n.config.appendTo:window.document.body).appendChild(n.calendarContainer)}(),function(){if(n.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(n.element.querySelectorAll("[data-"+e+"]"),(function(t){return d(t,"click",n[e])}))})),n.isMobile)!function(){var e=n.config.enableTime?n.config.noCalendar?"time":"datetime-local":"date";n.mobileInput=U("input",n.input.className+" flatpickr-mobile"),n.mobileInput.tabIndex=1,n.mobileInput.type=e,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr)),n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,"Y-m-d")),n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,"Y-m-d")),n.input.getAttribute("step")&&(n.mobileInput.step=String(n.input.getAttribute("step"))),n.input.type="hidden",void 0!==n.altInput&&(n.altInput.type="hidden");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(e){}d(n.mobileInput,"change",(function(e){n.setDate(J(e).value,!1,n.mobileFormatStr),ve("onChange"),ve("onClose")}))}();else{var e=L(Z,50);if(n._debouncedChange=L(f,300),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&d(n.daysContainer,"mouseover",(function(e){"range"===n.config.mode&&z(J(e))})),d(n._input,"keydown",K),void 0!==n.calendarContainer&&d(n.calendarContainer,"keydown",K),n.config.inline||n.config.static||d(window,"resize",e),void 0!==window.ontouchstart?d(window.document,"touchstart",_):d(window.document,"mousedown",_),d(window.document,"focus",_,{capture:!0}),!0===n.config.clickOpens&&(d(n._input,"focus",n.open),d(n._input,"click",n.open)),void 0!==n.daysContainer&&(d(n.monthNav,"click",Ce),d(n.monthNav,["keyup","increment"],u),d(n.daysContainer,"click",fe)),void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement){d(n.timeContainer,["increment"],r),d(n.timeContainer,"blur",r,{capture:!0}),d(n.timeContainer,"click",p),d([n.hourElement,n.minuteElement],["focus","click"],(function(e){return J(e).select()})),void 0!==n.secondElement&&d(n.secondElement,"focus",(function(){return n.secondElement&&n.secondElement.select()})),void 0!==n.amPM&&d(n.amPM,"click",(function(e){r(e)}))}n.config.allowInput&&d(n._input,"blur",A)}}(),(n.selectedDates.length||n.config.noCalendar)&&(n.config.enableTime&&s(n.config.noCalendar?n.latestSelectedDateObj:void 0),Me(!1)),i();var o=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!n.isMobile&&o&&ce(),ve("onReady")}(),n}function re(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),o=[],a=0;a=2?x().component({type:"button",className:"Button Button--warning PollModal--button",icon:"fas fa-minus",onclick:o>=2?e.removeOption.bind(e,o):""}):"")}))},o.addOption=function(){var e=t().data["fof-polls.options.max"],n=e&&parseInt(e)||11;this.options.length0,o=this.poll.voteCount(),a=this.myVotes.some((function(t){return t.option()===e})),i=e.voteCount(),r=o>0?Math.round(i/o*100):0,l=m("div",{className:"PollBar","data-selected":a},(!this.poll.hasEnded()&&t().session.user&&t().session.user.canVotePolls()||!t().session.user)&&m("label",{className:"checkbox"},m("input",{onchange:this.changeVote.bind(this,e),type:"checkbox",checked:a,disabled:n&&!this.poll.canChangeVote()}),m("span",{className:"checkmark"})),m("div",{style:!isNaN(i)&&"--width: "+r+"%",className:"PollOption-active"}),m("label",{className:"PollAnswer"},m("span",null,e.answer()),e.imageUrl()?m("img",{className:"PollAnswerImage",src:e.imageUrl(),alt:e.answer()}):null),!isNaN(i)&&m("label",null,m("span",{className:y()("PollPercent",100!==r&&"PollPercent--option")},r,"%")));return m("div",{className:y()("PollOption",n&&"PollVoted",this.poll.hasEnded()&&"PollEnded")},isNaN(i)?l:m(xe(),{text:t().translator.trans("fof-polls.forum.tooltip.votes",{count:i})},l))},o.updateData=function(){this.options=this.poll.options()||[],this.myVotes=this.poll.myVotes()||[]},o.onError=function(e,t){throw e.target.checked=!1,t},o.changeVote=function(e,n){var o=this;if(!t().session.user)return t().modal.show(he()),void(n.target.checked=!1);var a=new Set(this.poll.myVotes().map((function(e){return e.option().id()}))),i=a.delete(e.id());return this.poll.allowMultipleVotes()||a.clear(),i||a.add(e.id()),t().request({method:"PATCH",url:t().forum.attribute("apiUrl")+"/fof/polls/"+this.poll.id()+"/votes",body:{data:{optionIds:Array.from(a)}}}).then((function(e){t().store.pushPayload(e),o.updateData(),m.redraw()})).catch((function(){n.target.checked=i}))},o.showVoters=function(){var e=this;t().store.find("discussions",this.attrs.discussion.id(),{include:"poll.votes,poll.votes.user,poll.votes.option"}).then((function(){t().modal.show(Me,{poll:e.poll})}))},n}(me());const ke=flarum.core.compat["forum/components/DiscussionPage"];var Pe=n.n(ke);const Ne=flarum.core.compat["forum/utils/PostControls"];var _e=n.n(Ne),Te=function(e){function n(){return e.apply(this,arguments)||this}l(n,e);var o=n.prototype;return o.oninit=function(t){e.prototype.oninit.call(this,t),this.poll=this.attrs.poll,this.options=this.poll.options(),this.optionAnswers=this.options.map((function(e){return O()(e.answer())})),this.optionImageUrls=this.options.map((function(e){return O()(e.imageUrl())})),this.question=O()(this.poll.question()),this.endDate=O()(this.poll.endDate()),this.publicPoll=O()(this.poll.publicPoll()),this.allowMultipleVotes=O()(this.poll.allowMultipleVotes()),this.maxVotes=O()(this.poll.maxVotes()||0)},o.title=function(){return t().translator.trans("fof-polls.forum.modal.edit_title")},o.displayOptions=function(){var e=this;return this.options.map((function(n,o){return m("div",{className:"Form-group"},m("fieldset",{className:"Poll-answer-input"},m("input",{className:"FormControl",type:"text",name:"answer"+(o+1),bidi:e.optionAnswers[o],placeholder:t().translator.trans("fof-polls.forum.modal.option_placeholder")+" #"+(o+1)}),t().forum.attribute("allowPollOptionImage")?m("input",{className:"FormControl",type:"text",name:"answerImage"+(o+1),bidi:e.optionImageUrls[o],placeholder:t().translator.trans("fof-polls.forum.modal.image_option_placeholder")+" #"+(o+1)}):null),o>=2?x().component({type:"button",className:"Button PollModal--button",icon:"fas fa-minus",onclick:o>=2?e.removeOption.bind(e,o):""}):"")}))},o.addOption=function(){var e=t().data["fof-polls.options.max"],n=e&&parseInt(e)||11;this.options.length {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Model from 'flarum/common/Model';\n\nexport default class Poll extends Model {\n question = Model.attribute('question');\n hasEnded = Model.attribute('hasEnded');\n endDate = Model.attribute('endDate');\n publicPoll = Model.attribute('publicPoll');\n allowMultipleVotes = Model.attribute('allowMultipleVotes');\n maxVotes = Model.attribute('maxVotes');\n\n voteCount = Model.attribute('voteCount');\n\n canEdit = Model.attribute('canEdit');\n canDelete = Model.attribute('canDelete');\n canSeeVotes = Model.attribute('canSeeVotes');\n canChangeVote = Model.attribute('canChangeVote');\n\n options = Model.hasMany('options');\n votes = Model.hasMany('votes');\n myVotes = Model.hasMany('myVotes');\n\n apiEndpoint() {\n return `/fof/polls${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","import Model from 'flarum/common/Model';\n\nexport default class PollOption extends Model {\n answer = Model.attribute('answer');\n imageUrl = Model.attribute('imageUrl');\n voteCount = Model.attribute('voteCount');\n\n poll = Model.hasOne('polls');\n votes = Model.hasMany('votes');\n\n apiEndpoint() {\n return `/fof/polls/answers${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","import Model from 'flarum/common/Model';\n\nexport default class PollVote extends Model {\n poll = Model.hasOne('poll');\n option = Model.hasOne('option');\n user = Model.hasOne('user');\n\n pollId = Model.attribute('pollId');\n optionId = Model.attribute('optionId');\n\n apiEndpoint() {\n return `/fof/polls/${this.pollId()}/vote`;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport Badge from 'flarum/common/components/Badge';\nimport DiscussionList from 'flarum/forum/components/DiscussionList';\nimport Discussion from 'flarum/common/models/Discussion';\n\nexport default () => {\n extend(DiscussionList.prototype, 'requestParams', (params) => {\n params.include.push('poll');\n });\n\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.poll()) {\n badges.add(\n 'poll',\n Badge.component({\n type: 'poll',\n label: app.translator.trans('fof-polls.forum.tooltip.badge'),\n icon: 'fas fa-signal',\n }),\n 5\n );\n }\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","export 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];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: 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 autoFillDefaultTime: true,\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 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 date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\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","export 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 monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport 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}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport 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;\n}\nexport 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}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport 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((dateObj.getHours() >= 12 ? 12 : 0) + 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((dateObj.getHours() >= 12 ? 12 : 0) + 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};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\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: \"\",\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};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\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};\nexport 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)\n parsedDate = new Date(date);\n else if (typeof 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 (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\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 ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\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};\nexport 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}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = 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 = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), 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.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\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 ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\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 }\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 function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\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 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 (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\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() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n 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 function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\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 remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\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(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\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\", 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, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", 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, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\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 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 function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\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\", 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 i % 7 === 6) {\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 activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? 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 self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), 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 for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\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 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 self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\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 var defaults = getDefaultHours(self.config);\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 ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\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.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\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 : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\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 = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), 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 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 if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\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 self._handlers[i].remove();\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 }\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 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 (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !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.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\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 var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, 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 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : 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))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (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 elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === 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, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\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:\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 var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(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 &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === 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 (eventTarget === 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(eventTarget);\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(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === 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(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\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 var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var 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;\n }\n else if (containsDisabled && !outOfRange)\n return;\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 }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\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 var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\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.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 \"allowInvalidPreload\",\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(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\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 || defaultOptions.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 || defaultOptions.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 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 &&\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 if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\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(__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.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\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(__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 (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\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 + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (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 = getDocumentStyleSheet();\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 getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\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 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(getEventTarget(e), 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 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 (!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 positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\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(true);\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 = (self.config.allowInvalidPreload\n ? dates\n : 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.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\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; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\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 }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\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 updatePositionElement();\n }\n function updatePositionElement() {\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.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 if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\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(getEventTarget(e).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 (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 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 var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, 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(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\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 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 eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === 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}\nfunction _flatpickr(nodeList, config) {\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}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\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}\nvar 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};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","import app from 'flarum/forum/app';\n\nimport Button from 'flarum/common/components/Button';\nimport Modal from 'flarum/common/components/Modal';\nimport Switch from 'flarum/common/components/Switch';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Stream from 'flarum/common/utils/Stream';\nimport flatpickr from 'flatpickr';\n\nexport default class CreatePollModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.options = [Stream(''), Stream('')];\n this.optionImageUrls = [Stream(''), Stream('')];\n\n this.question = Stream('');\n\n this.endDate = Stream();\n\n this.publicPoll = Stream(false);\n this.allowMultipleVotes = Stream(false);\n this.maxVotes = Stream(0);\n\n const { poll } = this.attrs;\n\n // When re-opening the modal for the same discussion composer where we already set poll attributes\n if (poll && Array.isArray(poll.options)) {\n this.options = [];\n this.optionImageUrls = [];\n poll.options.forEach((option) => {\n this.options.push(Stream(option.answer));\n this.optionImageUrls.push(Stream(option.imageUrl));\n });\n\n this.question(poll.question);\n this.endDate(!poll.endDate || isNaN(poll.endDate.getTime()) ? null : poll.endDate);\n this.publicPoll(poll.publicPoll);\n }\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.modal.add_title');\n }\n\n className() {\n return 'PollDiscussionModal Modal--medium';\n }\n\n configDatePicker(vnode) {\n flatpickr(vnode.dom, {\n enableTime: true,\n minDate: this.endDate() || 'today',\n dateFormat: 'Y-m-d H:i',\n defaultDate: this.endDate(),\n wrap: true,\n\n onChange: (dates) => this.endDate(dates[0]),\n });\n }\n\n content() {\n return [\n
\n
{this.fields().toArray()}
\n
,\n ];\n }\n\n fields() {\n const items = new ItemList();\n\n items.add(\n 'question',\n
\n \n\n \n
,\n 100\n );\n\n items.add(\n 'answers',\n
\n \n\n {this.displayOptions()}\n
,\n 80\n );\n\n items.add(\n 'date',\n
\n \n\n
\n \n {Button.component({\n className: 'Button PollModal--button',\n icon: 'fas fa-times',\n 'data-clear': true,\n })}\n
\n
,\n 40\n );\n\n items.add(\n 'public',\n
\n {Switch.component(\n {\n state: this.publicPoll() || false,\n onchange: this.publicPoll,\n },\n app.translator.trans('fof-polls.forum.modal.public_poll_label')\n )}\n
,\n 20\n );\n\n items.add(\n 'allow-multiple-votes',\n
\n {Switch.component(\n {\n state: this.allowMultipleVotes() || false,\n onchange: this.allowMultipleVotes,\n },\n app.translator.trans('fof-polls.forum.modal.allow_multiple_votes_label')\n )}\n
,\n 15\n );\n\n if (this.allowMultipleVotes()) {\n items.add(\n 'max-votes',\n
\n \n\n \n\n

{app.translator.trans('fof-polls.forum.modal.max_votes_help')}

\n
,\n 15\n );\n }\n\n items.add(\n 'submit',\n
\n {Button.component(\n {\n type: 'submit',\n className: 'Button Button--primary PollModal-SubmitButton',\n loading: this.loading,\n },\n app.translator.trans('fof-polls.forum.modal.submit')\n )}\n
,\n -10\n );\n\n return items;\n }\n\n displayOptions() {\n return Object.keys(this.options).map((el, i) => (\n
\n
\n \n {app.forum.attribute('allowPollOptionImage') ? (\n \n ) : null}\n
\n {i >= 2\n ? Button.component({\n type: 'button',\n className: 'Button Button--warning PollModal--button',\n icon: 'fas fa-minus',\n onclick: i >= 2 ? this.removeOption.bind(this, i) : '',\n })\n : ''}\n
\n ));\n }\n\n addOption() {\n const setting = app.data['fof-polls.options.max'];\n const max = (setting && parseInt(setting)) || 11;\n\n if (this.options.length < max) {\n this.options.push(Stream(''));\n this.optionImageUrls.push(Stream(''));\n } else {\n alert(app.translator.trans('fof-polls.forum.modal.max'));\n }\n }\n\n removeOption(option) {\n this.options.splice(option, 1);\n this.optionImageUrls.splice(option, 1);\n }\n\n data() {\n const poll = {\n question: this.question(),\n endDate: this.endDate(),\n publicPoll: this.publicPoll(),\n allowMultipleVotes: this.allowMultipleVotes(),\n options: [],\n };\n\n this.options.forEach((answer, index) => {\n if (answer()) {\n poll.options.push({\n answer: answer(),\n imageUrl: this.optionImageUrls[index](),\n });\n }\n });\n\n if (this.question() === '') {\n alert(app.translator.trans('fof-polls.forum.modal.include_question'));\n\n return null;\n }\n\n if (poll.options.length < 2) {\n alert(app.translator.trans('fof-polls.forum.modal.min'));\n\n return null;\n }\n\n return poll;\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n const data = this.data();\n\n if (data === null) {\n return;\n }\n\n this.attrs.onsubmit(data);\n\n app.modal.close();\n }\n}\n","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport classList from 'flarum/common/utils/classList';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\n\nimport CreatePollModal from './components/CreatePollModal';\n\nexport default () => {\n DiscussionComposer.prototype.addPoll = function () {\n app.modal.show(CreatePollModal, {\n poll: this.composer.fields.poll,\n onsubmit: (poll) => (this.composer.fields.poll = poll),\n });\n };\n\n // Add button to DiscussionComposer header\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n if (app.session.user && app.session.user.canStartPolls()) {\n items.add(\n 'polls',\n \n \n {app.translator.trans(`fof-polls.forum.composer_discussion.${this.composer.fields.poll ? 'edit' : 'add'}_poll`)}\n \n ,\n 1\n );\n }\n });\n\n extend(DiscussionComposer.prototype, 'data', function (data) {\n if (this.composer.fields.poll) {\n data.poll = this.composer.fields.poll;\n }\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/LogInModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import app from 'flarum/forum/app';\n\nimport Modal from 'flarum/common/components/Modal';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport Link from 'flarum/common/components/Link';\n\nexport default class ListVotersModal extends Modal {\n className() {\n return 'Modal--small VotesModal';\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.votes_modal.title');\n }\n\n content() {\n return (\n
\n
    {this.attrs.poll.options().map(this.optionContent.bind(this))}
\n
\n );\n }\n\n optionContent(opt) {\n const votes = (this.attrs.poll.votes() || []).filter((v) => opt.id() === v.option().id());\n\n return (\n
\n

{opt.answer() + ':'}

\n\n {votes.length ? votes.map(this.voteContent.bind(this)) :

{app.translator.trans('fof-polls.forum.modal.no_voters')}

}\n
\n );\n }\n\n voteContent(vote) {\n const user = vote.user();\n const attrs = user && { href: app.route.user(user) };\n\n return (\n
  • \n \n {avatar(user)} {username(user)}\n \n
  • \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","import app from 'flarum/forum/app';\n\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport LogInModal from 'flarum/forum/components/LogInModal';\nimport ListVotersModal from './ListVotersModal';\nimport classList from 'flarum/common/utils/classList';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nexport default class DiscussionPoll extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.poll = this.attrs.poll;\n\n this.updateData();\n }\n\n view() {\n let maxVotes = this.poll.allowMultipleVotes() ? this.poll.maxVotes() : 1;\n\n if (maxVotes === 0) maxVotes = this.options.length;\n\n return (\n
    \n

    {this.poll.question()}

    \n\n {this.options.map(this.viewOption.bind(this))}\n\n
    \n\n {this.poll.canSeeVotes()\n ? Button.component(\n {\n className: 'Button Button--primary PublicPollButton',\n onclick: () => this.showVoters(),\n },\n app.translator.trans('fof-polls.forum.public_poll')\n )\n : ''}\n\n
    \n {app.session.user && !app.session.user.canVotePolls() && (\n \n \n {app.translator.trans('fof-polls.forum.no_permission')}\n \n )}\n {this.poll.hasEnded() && (\n \n \n {app.translator.trans('fof-polls.forum.poll_ended')}\n \n )}\n {this.poll.endDate() !== null && (\n \n \n {app.translator.trans('fof-polls.forum.days_remaining', { time: dayjs(this.poll.endDate()).fromNow() })}\n \n )}\n\n {app.session.user?.canVotePolls() && (\n \n \n {app.translator.trans('fof-polls.forum.max_votes_allowed', { max: maxVotes })}\n \n )}\n
    \n
    \n );\n }\n\n viewOption(opt) {\n const hasVoted = this.myVotes.length > 0;\n const totalVotes = this.poll.voteCount();\n\n const voted = this.myVotes.some((vote) => vote.option() === opt);\n const votes = opt.voteCount();\n const percent = totalVotes > 0 ? Math.round((votes / totalVotes) * 100) : 0;\n\n const poll = (\n
    \n {((!this.poll.hasEnded() && app.session.user && app.session.user.canVotePolls()) || !app.session.user) && (\n \n )}\n\n
    \n \n {!isNaN(votes) && (\n \n )}\n
    \n );\n\n return (\n
    \n {!isNaN(votes) ? {poll} : poll}\n
    \n );\n }\n\n updateData() {\n this.options = this.poll.options() || [];\n this.myVotes = this.poll.myVotes() || [];\n }\n\n onError(evt, error) {\n evt.target.checked = false;\n\n throw error;\n }\n\n changeVote(option, evt) {\n if (!app.session.user) {\n app.modal.show(LogInModal);\n evt.target.checked = false;\n return;\n }\n\n // // if we click on our current vote, we want to \"un-vote\"\n // if (this.myVotes.some((vote) => vote.option() === option)) option = null;\n\n const optionIds = new Set(this.poll.myVotes().map((v) => v.option().id()));\n const isUnvoting = optionIds.delete(option.id());\n const allowsMultiple = this.poll.allowMultipleVotes();\n\n if (!allowsMultiple) {\n optionIds.clear();\n }\n\n if (!isUnvoting) {\n optionIds.add(option.id());\n }\n\n return app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/fof/polls/${this.poll.id()}/votes`,\n body: {\n data: {\n optionIds: Array.from(optionIds),\n },\n },\n })\n .then((res) => {\n app.store.pushPayload(res);\n\n this.updateData();\n\n m.redraw();\n })\n .catch(() => {\n evt.target.checked = isUnvoting;\n });\n }\n\n showVoters() {\n // Load all the votes only when opening the votes list\n app.store\n .find('discussions', this.attrs.discussion.id(), {\n include: 'poll.votes,poll.votes.user,poll.votes.option',\n })\n .then(() => {\n app.modal.show(ListVotersModal, {\n poll: this.poll,\n });\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport DiscussionPoll from './components/DiscussionPoll';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\n\nexport default () => {\n extend(CommentPost.prototype, 'content', function (content) {\n const discussion = this.attrs.post.discussion();\n\n // If the options aren't loaded, it means we jumped from homepage to a profile page and are missing relationships\n // We will simply not show the poll in that situation\n if (discussion.poll() && Array.isArray(discussion.poll().options()) && this.attrs.post.number() === 1) {\n content.push(\n DiscussionPoll.component({\n discussion,\n poll: discussion.poll(),\n })\n );\n }\n });\n\n extend(CommentPost.prototype, 'oninit', function () {\n this.subtree.check(() => {\n const discussion = this.attrs.post.discussion();\n\n if (!discussion.poll() || this.attrs.post.number() !== 1) {\n return '';\n }\n\n const checks = [\n // Make the post redraw everytime the poll or option vote count changed, or when the user vote changed\n discussion.poll().voteCount(),\n (discussion.poll().myVotes() || []).map((vote) => vote.option().id()),\n ];\n\n const options = discussion.poll().options();\n\n // The options might not be loaded in all contexts where CommentPost is rendered (for example, user profile),\n // if they are missing we are just going to omit this check\n if (options) {\n checks.push(options.map((option) => option.voteCount()));\n }\n\n return JSON.stringify(checks);\n });\n });\n\n extend(DiscussionPage.prototype, 'oncreate', function () {\n if (app.pusher) {\n app.pusher.then((binding) => {\n // We will listen for updates to all polls and options\n // Even if that model is not in the current discussion, it doesn't really matter\n binding.channels.main.bind('updatedPollOptions', (data) => {\n const poll = app.store.getById('polls', data['pollId']);\n\n if (poll) {\n poll.pushAttributes({\n voteCount: data['pollVoteCount'],\n });\n\n // Not redrawing here, as the option below should trigger the redraw already\n }\n\n const changedOptions = data['options'];\n\n for (const optionId in changedOptions) {\n const option = app.store.getById('poll_options', optionId);\n\n if (option) {\n option.pushAttributes({\n voteCount: changedOptions[optionId],\n });\n }\n }\n\n m.redraw();\n });\n });\n }\n });\n\n extend(DiscussionPage.prototype, 'onremove', function () {\n if (app.pusher) {\n app.pusher.then((binding) => {\n binding.channels.main.unbind('updatedPollOptions');\n });\n }\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","import app from 'flarum/forum/app';\n\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport CreatePollModal from './CreatePollModal';\n\nexport default class EditPollModal extends CreatePollModal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.poll = this.attrs.poll;\n\n this.options = this.poll.options();\n this.optionAnswers = this.options.map((o) => Stream(o.answer()));\n this.optionImageUrls = this.options.map((o) => Stream(o.imageUrl()));\n this.question = Stream(this.poll.question());\n this.endDate = Stream(this.poll.endDate());\n this.publicPoll = Stream(this.poll.publicPoll());\n this.allowMultipleVotes = Stream(this.poll.allowMultipleVotes());\n this.maxVotes = Stream(this.poll.maxVotes() || 0);\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.modal.edit_title');\n }\n\n displayOptions() {\n return this.options.map((opt, i) => (\n
    \n
    \n \n {app.forum.attribute('allowPollOptionImage') ? (\n \n ) : null}\n
    \n\n {i >= 2\n ? Button.component({\n type: 'button',\n className: 'Button PollModal--button',\n icon: 'fas fa-minus',\n onclick: i >= 2 ? this.removeOption.bind(this, i) : '',\n })\n : ''}\n
    \n ));\n }\n\n addOption() {\n const setting = app.data['fof-polls.options.max'];\n const max = (setting && parseInt(setting)) || 11;\n\n if (this.options.length < max) {\n this.options.push(app.store.createRecord('poll_options'));\n this.optionAnswers.push(Stream(''));\n this.optionImageUrls.push(Stream(''));\n } else {\n alert(app.translator.trans('fof-polls.forum.modal.max'));\n }\n }\n\n removeOption(i) {\n this.options.splice(i, 1);\n this.optionAnswers.splice(i, 1);\n this.optionImageUrls.splice(i, 1);\n }\n\n data() {\n const options = this.options.map((o, i) => {\n if (!o.data.attributes) o.data.attributes = {};\n\n o.data.attributes.answer = this.optionAnswers[i]();\n o.data.attributes.imageUrl = this.optionImageUrls[i]();\n\n return o.data;\n });\n\n return {\n question: this.question(),\n endDate: this.endDate() || false,\n publicPoll: this.publicPoll(),\n allowMultipleVotes: this.allowMultipleVotes(),\n maxVotes: this.maxVotes(),\n options,\n };\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (this.loading) return;\n\n this.loading = true;\n\n return this.poll\n .save(this.data())\n .then(() => {\n document.location.reload();\n })\n .catch((e) => {\n this.loaded();\n this.onerror(e);\n });\n }\n}\n","import CreatePollModal from './CreatePollModal';\nimport DiscussionPoll from './DiscussionPoll';\nimport EditPollModal from './EditPollModal';\nimport ListVotersModal from './ListVotersModal';\n\nexport const components = {\n CreatePollModal,\n DiscussionPoll,\n EditPollModal,\n ListVotersModal,\n};\n","import Poll from './Poll';\nimport PollOption from './PollOption';\nimport PollVote from './PollVote';\n\nexport const models = {\n Poll,\n PollOption,\n PollVote,\n};\n","import app from 'flarum/forum/app';\n\nimport Model from 'flarum/common/Model';\n\nimport Poll from './models/Poll';\nimport PollOption from './models/PollOption';\nimport PollVote from './models/PollVote';\n\nimport addDiscussionBadge from './addDiscussionBadge';\nimport addDiscussionComposerItem from './addDiscussionComposerItem';\nimport addPollToDiscussion from './addPollToDiscussion';\nimport addDiscussionControls from './addDiscussionControls';\n\nexport * from './components';\nexport * from './models';\n\napp.initializers.add('fof/polls', () => {\n app.store.models.polls = Poll;\n app.store.models.poll_options = PollOption;\n app.store.models.poll_votes = PollVote;\n\n app.store.models.discussions.prototype.poll = Model.hasOne('poll');\n\n app.store.models.users.prototype.canStartPolls = Model.attribute('canStartPolls');\n app.store.models.users.prototype.canVotePolls = Model.attribute('canVotePolls');\n\n addDiscussionBadge();\n addDiscussionControls();\n addDiscussionComposerItem();\n addPollToDiscussion();\n});\n","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport Button from 'flarum/common/components/Button';\n\nimport EditPollModal from './components/EditPollModal';\n\nexport default () => {\n extend(PostControls, 'moderationControls', function (items, post) {\n const discussion = post.discussion();\n const poll = discussion.poll();\n\n if (!poll) {\n return;\n }\n\n if (poll.canEdit()) {\n items.add(\n 'fof-polls-edit',\n Button.component(\n {\n icon: 'fas fa-check-square',\n onclick: () => app.modal.show(EditPollModal, { poll: poll }),\n },\n app.translator.trans('fof-polls.forum.moderation.edit')\n )\n );\n }\n\n if (poll.canDelete()) {\n items.add(\n 'fof-polls-remove',\n Button.component(\n {\n icon: 'fas fa-trash',\n onclick: () => {\n if (confirm(app.translator.trans('fof-polls.forum.moderation.delete_confirm'))) {\n poll.delete().then(() => {\n m.redraw.sync();\n });\n }\n },\n },\n app.translator.trans('fof-polls.forum.moderation.delete')\n )\n );\n }\n });\n};\n"],"names":["Object","assign","target","args","_i","arguments","length","TypeError","_loop_1","source","keys","forEach","key","_a","args_1","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","Poll","question","Model","hasEnded","endDate","publicPoll","allowMultipleVotes","maxVotes","voteCount","canEdit","canDelete","canSeeVotes","canChangeVote","options","votes","myVotes","apiEndpoint","this","exists","data","id","PollOption","answer","imageUrl","poll","PollVote","option","user","pollId","optionId","HOOKS","defaults","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","window","navigator","userAgent","indexOf","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","err","console","warn","getWeek","givenDate","date","Date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","mode","monthSelectorType","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","s","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","slice","int","bool","debounce","fn","wait","t","_this","clearTimeout","setTimeout","apply","arrayify","Array","toggleClass","elem","className","classList","add","remove","createElement","tag","content","e","document","textContent","clearNode","node","firstChild","removeChild","findParent","condition","parentNode","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","type","pattern","setAttribute","appendChild","getEventTarget","event","composedPath","error","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","getHours","parseFloat","H","J","day","K","RegExp","test","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","h","i","minutes","setMinutes","j","l","m","month","u","unixMillSeconds","w","y","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","String","substring","createDateFormatter","_b","config","_c","l10n","_d","isMobile","frmt","overrideLocale","formatDate","split","map","c","arr","join","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","exec","val","isNaN","Error","compareDates","date1","date2","calculateSecondsSinceMidnight","hours","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","min","__assign","__spreadArrays","il","k","jl","FlatpickrInstance","element","instanceConfig","self","defaultOptions","flatpickr","defaultConfig","English","getClosestActiveElement","calendarContainer","getRootNode","activeElement","bindToInstance","setCalendarWidth","requestAnimationFrame","style","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","getMilliseconds","latestSelectedDateObj","preventDefault","isKeyDown","eventTarget","input","getAttribute","max","step","curValue","newValue","delta","which","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","result","secondsSinceMidnight","floor","parseSeconds","setHoursFromDate","onYearInput","toString","changeYear","handler","ev","el","addEventListener","_handlers","push","removeEventListener","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","contains","inputElem","createEvent","dispatchEvent","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","current","offset","dayFocused","isInView","body","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","innerHTML","selected","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","disabled","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","splice","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","documentClick","isOpen","eventTarget_1","isCalendarElement","lostFocus","path","relatedTarget","isIgnored","some","timeContainer","close","clear","newYear","newYearNum","isNewYear","dateToCheck","enable","array","parsed","from","to","onBlur","isInput","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","keyCode","blur","open","isTimeObj","focusAndClose","selectDate","delta_1","ctrlKey","stopPropagation","currentYearElement","elems","concat","pluginElements","filter","x","shiftKey","charAt","toLowerCase","cellClass","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","rContainer","querySelectorAll","dayElem","ts","ts1","ts2","timestamp","outOfRange","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","getInputElem","querySelector","setupLocale","l10ns","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","left","pageXOffset","isCenter","isRight","right","rightMost","centerMost","doc","editableSheet","styleSheets","sheet","cssRules","head","getDocumentStyleSheet","bodyWidth","centerLeft","centerIndex","centerStyle","insertRule","centerBefore","msMaxTouchPoints","selectedDate","shouldChangeMonth","selectedIndex","sort","b","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","destroy","lastChild","insertBefore","_type","click","wasOpen","select","set","CALLBACKS","setSelectedDate","toggle","updatePositionElement","inputDate","dates","parseDateRules","rule","hooks","name","initEvent","specificFormat","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","nodeName","placeholder","required","nextSibling","preloadedDate","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","separator","hourInput","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","appendTo","nodeType","build","evt","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","bindEvents","isSafari","init","_flatpickr","nodeList","nodes","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","default","localize","setDefaults","jQuery","fp_incr","CreatePollModal","oninit","vnode","Stream","optionImageUrls","attrs","isArray","app","configDatePicker","dom","fields","toArray","items","ItemList","bidi","Button","icon","onclick","addOption","displayOptions","oncreate","Switch","state","onchange","loading","removeOption","setting","alert","index","onsubmit","Modal","ListVotersModal","optionContent","opt","v","voteContent","vote","href","avatar","username","DiscussionPoll","updateData","view","viewOption","showVoters","class","time","dayjs","fromNow","canVotePolls","hasVoted","totalVotes","voted","percent","changeVote","checked","src","alt","text","count","onError","LogInModal","optionIds","Set","isUnvoting","method","url","then","res","discussion","include","Component","EditPollModal","optionAnswers","attributes","save","location","reload","loaded","onerror","components","models","extend","DiscussionList","params","Discussion","badges","Badge","label","PostControls","post","confirm","sync","DiscussionComposer","composer","addPoll","CommentPost","component","subtree","check","checks","DiscussionPage","binding","channels","main","pushAttributes","changedOptions","unbind"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@fof/polls/./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack://@fof/polls/webpack/bootstrap","webpack://@fof/polls/webpack/runtime/compat get default export","webpack://@fof/polls/webpack/runtime/define property getters","webpack://@fof/polls/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/polls/webpack/runtime/make namespace object","webpack://@fof/polls/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/polls/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/polls/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/polls/./src/forum/models/Poll.js","webpack://@fof/polls/./src/forum/models/PollOption.js","webpack://@fof/polls/./src/forum/models/PollVote.js","webpack://@fof/polls/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@fof/polls/external root \"flarum.core.compat['forum/components/DiscussionList']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/polls/./src/forum/addDiscussionBadge.js","webpack://@fof/polls/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/polls/external root \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@fof/polls/./node_modules/flatpickr/dist/esm/types/options.js","webpack://@fof/polls/./node_modules/flatpickr/dist/esm/l10n/default.js","webpack://@fof/polls/./node_modules/flatpickr/dist/esm/utils/index.js","webpack://@fof/polls/./node_modules/flatpickr/dist/esm/utils/dom.js","webpack://@fof/polls/./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack://@fof/polls/./node_modules/flatpickr/dist/esm/utils/dates.js","webpack://@fof/polls/./node_modules/flatpickr/dist/esm/index.js","webpack://@fof/polls/./src/forum/components/CreatePollModal.js","webpack://@fof/polls/./src/forum/addDiscussionComposerItem.js","webpack://@fof/polls/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/polls/external root \"flarum.core.compat['forum/components/LogInModal']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@fof/polls/external root \"flarum.core.compat['common/components/Link']\"","webpack://@fof/polls/./src/forum/components/ListVotersModal.js","webpack://@fof/polls/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@fof/polls/./src/forum/components/DiscussionPoll.js","webpack://@fof/polls/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@fof/polls/./src/forum/addPollToDiscussion.js","webpack://@fof/polls/external root \"flarum.core.compat['forum/utils/PostControls']\"","webpack://@fof/polls/./src/forum/components/EditPollModal.js","webpack://@fof/polls/./src/forum/components/index.js","webpack://@fof/polls/./src/forum/models/index.js","webpack://@fof/polls/./src/forum/index.js","webpack://@fof/polls/./src/forum/addDiscussionControls.js"],"sourcesContent":["\"use strict\";\nif (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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Model from 'flarum/common/Model';\n\nexport default class Poll extends Model {\n question = Model.attribute('question');\n hasEnded = Model.attribute('hasEnded');\n endDate = Model.attribute('endDate');\n publicPoll = Model.attribute('publicPoll');\n allowMultipleVotes = Model.attribute('allowMultipleVotes');\n maxVotes = Model.attribute('maxVotes');\n\n voteCount = Model.attribute('voteCount');\n\n canEdit = Model.attribute('canEdit');\n canDelete = Model.attribute('canDelete');\n canSeeVotes = Model.attribute('canSeeVotes');\n canChangeVote = Model.attribute('canChangeVote');\n\n options = Model.hasMany('options');\n votes = Model.hasMany('votes');\n myVotes = Model.hasMany('myVotes');\n\n apiEndpoint() {\n return `/fof/polls${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","import Model from 'flarum/common/Model';\n\nexport default class PollOption extends Model {\n answer = Model.attribute('answer');\n imageUrl = Model.attribute('imageUrl');\n voteCount = Model.attribute('voteCount');\n\n poll = Model.hasOne('polls');\n votes = Model.hasMany('votes');\n\n apiEndpoint() {\n return `/fof/polls/answers${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","import Model from 'flarum/common/Model';\n\nexport default class PollVote extends Model {\n poll = Model.hasOne('poll');\n option = Model.hasOne('option');\n user = Model.hasOne('user');\n\n pollId = Model.attribute('pollId');\n optionId = Model.attribute('optionId');\n\n apiEndpoint() {\n return `/fof/polls/${this.pollId()}/vote`;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport Badge from 'flarum/common/components/Badge';\nimport DiscussionList from 'flarum/forum/components/DiscussionList';\nimport Discussion from 'flarum/common/models/Discussion';\n\nexport default () => {\n extend(DiscussionList.prototype, 'requestParams', (params) => {\n params.include.push('poll');\n });\n\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.poll()) {\n badges.add(\n 'poll',\n Badge.component({\n type: 'poll',\n label: app.translator.trans('fof-polls.forum.tooltip.badge'),\n icon: 'fas fa-signal',\n }),\n 5\n );\n }\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","export 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];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: 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 autoFillDefaultTime: true,\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 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 date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\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","export 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 monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport 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}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport 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;\n}\nexport 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}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport 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((dateObj.getHours() >= 12 ? 12 : 0) + 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((dateObj.getHours() >= 12 ? 12 : 0) + 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};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\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: \"\",\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};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\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};\nexport 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)\n parsedDate = new Date(date);\n else if (typeof 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 (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\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 ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\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};\nexport 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}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = 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 = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), 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.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\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 ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\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 }\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 function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\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 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 (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\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() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n 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 function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\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 remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\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(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\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\", 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, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", 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, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\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 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 function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\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\", 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 i % 7 === 6) {\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 activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? 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 self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), 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 for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\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 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 self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\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 var defaults = getDefaultHours(self.config);\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 ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\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.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\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 : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\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 = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), 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 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 if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\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 self._handlers[i].remove();\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 }\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 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 (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !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.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\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 var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, 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 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : 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))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (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 elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === 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, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\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:\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 var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(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 &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === 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 (eventTarget === 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(eventTarget);\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(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === 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(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\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 var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var 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;\n }\n else if (containsDisabled && !outOfRange)\n return;\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 }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\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 var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\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.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 \"allowInvalidPreload\",\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(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\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 || defaultOptions.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 || defaultOptions.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 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 &&\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 if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\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(__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.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\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(__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 (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\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 + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (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 = getDocumentStyleSheet();\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 getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\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 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(getEventTarget(e), 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 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 (!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 positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\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(true);\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 = (self.config.allowInvalidPreload\n ? dates\n : 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.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\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; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\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 }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\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 updatePositionElement();\n }\n function updatePositionElement() {\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.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 if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\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(getEventTarget(e).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 (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 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 var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, 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(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\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 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 eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === 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}\nfunction _flatpickr(nodeList, config) {\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}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\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}\nvar 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};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","import app from 'flarum/forum/app';\n\nimport Button from 'flarum/common/components/Button';\nimport Modal from 'flarum/common/components/Modal';\nimport Switch from 'flarum/common/components/Switch';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Stream from 'flarum/common/utils/Stream';\nimport flatpickr from 'flatpickr';\n\nexport default class CreatePollModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.options = [Stream(''), Stream('')];\n this.optionImageUrls = [Stream(''), Stream('')];\n\n this.question = Stream('');\n\n this.endDate = Stream();\n\n this.publicPoll = Stream(false);\n this.allowMultipleVotes = Stream(false);\n this.maxVotes = Stream(0);\n\n const { poll } = this.attrs;\n\n // When re-opening the modal for the same discussion composer where we already set poll attributes\n if (poll && Array.isArray(poll.options)) {\n this.options = [];\n this.optionImageUrls = [];\n poll.options.forEach((option) => {\n this.options.push(Stream(option.answer));\n this.optionImageUrls.push(Stream(option.imageUrl));\n });\n\n this.question(poll.question);\n this.endDate(!poll.endDate || isNaN(poll.endDate.getTime()) ? null : poll.endDate);\n this.publicPoll(poll.publicPoll);\n }\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.modal.add_title');\n }\n\n className() {\n return 'PollDiscussionModal Modal--medium';\n }\n\n configDatePicker(vnode) {\n flatpickr(vnode.dom, {\n enableTime: true,\n minDate: this.endDate() || 'today',\n dateFormat: 'Y-m-d H:i',\n defaultDate: this.endDate(),\n wrap: true,\n\n onChange: (dates) => this.endDate(dates[0]),\n });\n }\n\n content() {\n return [\n
    \n
    {this.fields().toArray()}
    \n
    ,\n ];\n }\n\n fields() {\n const items = new ItemList();\n\n items.add(\n 'question',\n
    \n \n\n \n
    ,\n 100\n );\n\n items.add(\n 'answers',\n
    \n \n\n {this.displayOptions()}\n
    ,\n 80\n );\n\n items.add(\n 'date',\n
    \n \n\n
    \n \n {Button.component({\n className: 'Button PollModal--button',\n icon: 'fas fa-times',\n 'data-clear': true,\n })}\n
    \n
    ,\n 40\n );\n\n items.add(\n 'public',\n
    \n {Switch.component(\n {\n state: this.publicPoll() || false,\n onchange: this.publicPoll,\n },\n app.translator.trans('fof-polls.forum.modal.public_poll_label')\n )}\n
    ,\n 20\n );\n\n items.add(\n 'allow-multiple-votes',\n
    \n {Switch.component(\n {\n state: this.allowMultipleVotes() || false,\n onchange: this.allowMultipleVotes,\n },\n app.translator.trans('fof-polls.forum.modal.allow_multiple_votes_label')\n )}\n
    ,\n 15\n );\n\n if (this.allowMultipleVotes()) {\n items.add(\n 'max-votes',\n
    \n \n\n \n\n

    {app.translator.trans('fof-polls.forum.modal.max_votes_help')}

    \n
    ,\n 15\n );\n }\n\n items.add(\n 'submit',\n
    \n {Button.component(\n {\n type: 'submit',\n className: 'Button Button--primary PollModal-SubmitButton',\n loading: this.loading,\n },\n app.translator.trans('fof-polls.forum.modal.submit')\n )}\n
    ,\n -10\n );\n\n return items;\n }\n\n displayOptions() {\n return Object.keys(this.options).map((el, i) => (\n
    \n
    \n \n {app.forum.attribute('allowPollOptionImage') ? (\n \n ) : null}\n
    \n {i >= 2\n ? Button.component({\n type: 'button',\n className: 'Button Button--warning PollModal--button',\n icon: 'fas fa-minus',\n onclick: i >= 2 ? this.removeOption.bind(this, i) : '',\n })\n : ''}\n
    \n ));\n }\n\n addOption() {\n const setting = app.data['fof-polls.options.max'];\n const max = (setting && parseInt(setting)) || 11;\n\n if (this.options.length < max) {\n this.options.push(Stream(''));\n this.optionImageUrls.push(Stream(''));\n } else {\n alert(app.translator.trans('fof-polls.forum.modal.max'));\n }\n }\n\n removeOption(option) {\n this.options.splice(option, 1);\n this.optionImageUrls.splice(option, 1);\n }\n\n data() {\n const poll = {\n question: this.question(),\n endDate: this.endDate(),\n publicPoll: this.publicPoll(),\n allowMultipleVotes: this.allowMultipleVotes(),\n maxVotes: this.maxVotes(),\n options: [],\n };\n\n this.options.forEach((answer, index) => {\n if (answer()) {\n poll.options.push({\n answer: answer(),\n imageUrl: this.optionImageUrls[index](),\n });\n }\n });\n\n if (this.question() === '') {\n alert(app.translator.trans('fof-polls.forum.modal.include_question'));\n\n return null;\n }\n\n if (poll.options.length < 2) {\n alert(app.translator.trans('fof-polls.forum.modal.min'));\n\n return null;\n }\n\n return poll;\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n const data = this.data();\n\n if (data === null) {\n return;\n }\n\n this.attrs.onsubmit(data);\n\n app.modal.close();\n }\n}\n","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport classList from 'flarum/common/utils/classList';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\n\nimport CreatePollModal from './components/CreatePollModal';\n\nexport default () => {\n DiscussionComposer.prototype.addPoll = function () {\n app.modal.show(CreatePollModal, {\n poll: this.composer.fields.poll,\n onsubmit: (poll) => (this.composer.fields.poll = poll),\n });\n };\n\n // Add button to DiscussionComposer header\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n if (app.session.user && app.session.user.canStartPolls()) {\n items.add(\n 'polls',\n \n \n {app.translator.trans(`fof-polls.forum.composer_discussion.${this.composer.fields.poll ? 'edit' : 'add'}_poll`)}\n \n ,\n 1\n );\n }\n });\n\n extend(DiscussionComposer.prototype, 'data', function (data) {\n if (this.composer.fields.poll) {\n data.poll = this.composer.fields.poll;\n }\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/LogInModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import app from 'flarum/forum/app';\n\nimport Modal from 'flarum/common/components/Modal';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport Link from 'flarum/common/components/Link';\n\nexport default class ListVotersModal extends Modal {\n className() {\n return 'Modal--small VotesModal';\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.votes_modal.title');\n }\n\n content() {\n return (\n
    \n
      {this.attrs.poll.options().map(this.optionContent.bind(this))}
    \n
    \n );\n }\n\n optionContent(opt) {\n const votes = (this.attrs.poll.votes() || []).filter((v) => opt.id() === v.option().id());\n\n return (\n
    \n

    {opt.answer() + ':'}

    \n\n {votes.length ? votes.map(this.voteContent.bind(this)) :

    {app.translator.trans('fof-polls.forum.modal.no_voters')}

    }\n
    \n );\n }\n\n voteContent(vote) {\n const user = vote.user();\n const attrs = user && { href: app.route.user(user) };\n\n return (\n
  • \n \n {avatar(user)} {username(user)}\n \n
  • \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","import app from 'flarum/forum/app';\n\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport LogInModal from 'flarum/forum/components/LogInModal';\nimport ListVotersModal from './ListVotersModal';\nimport classList from 'flarum/common/utils/classList';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nexport default class DiscussionPoll extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.poll = this.attrs.poll;\n\n this.updateData();\n }\n\n view() {\n let maxVotes = this.poll.allowMultipleVotes() ? this.poll.maxVotes() : 1;\n\n if (maxVotes === 0) maxVotes = this.options.length;\n\n return (\n
    \n

    {this.poll.question()}

    \n\n {this.options.map(this.viewOption.bind(this))}\n\n
    \n\n {this.poll.canSeeVotes()\n ? Button.component(\n {\n className: 'Button Button--primary PublicPollButton',\n onclick: () => this.showVoters(),\n },\n app.translator.trans('fof-polls.forum.public_poll')\n )\n : ''}\n\n
    \n {app.session.user && !app.session.user.canVotePolls() && (\n \n \n {app.translator.trans('fof-polls.forum.no_permission')}\n \n )}\n {this.poll.hasEnded() && (\n \n \n {app.translator.trans('fof-polls.forum.poll_ended')}\n \n )}\n {this.poll.endDate() !== null && (\n \n \n {app.translator.trans('fof-polls.forum.days_remaining', { time: dayjs(this.poll.endDate()).fromNow() })}\n \n )}\n\n {app.session.user?.canVotePolls() && (\n \n \n {app.translator.trans('fof-polls.forum.max_votes_allowed', { max: maxVotes })}\n \n )}\n
    \n
    \n );\n }\n\n viewOption(opt) {\n const hasVoted = this.myVotes.length > 0;\n const totalVotes = this.poll.voteCount();\n\n const voted = this.myVotes.some((vote) => vote.option() === opt);\n const votes = opt.voteCount();\n const percent = totalVotes > 0 ? Math.round((votes / totalVotes) * 100) : 0;\n\n const poll = (\n
    \n {((!this.poll.hasEnded() && app.session.user && app.session.user.canVotePolls()) || !app.session.user) && (\n \n )}\n\n
    \n \n {!isNaN(votes) && (\n \n )}\n
    \n );\n\n return (\n
    \n {!isNaN(votes) ? {poll} : poll}\n
    \n );\n }\n\n updateData() {\n this.options = this.poll.options() || [];\n this.myVotes = this.poll.myVotes() || [];\n }\n\n onError(evt, error) {\n evt.target.checked = false;\n\n throw error;\n }\n\n changeVote(option, evt) {\n if (!app.session.user) {\n app.modal.show(LogInModal);\n evt.target.checked = false;\n return;\n }\n\n // // if we click on our current vote, we want to \"un-vote\"\n // if (this.myVotes.some((vote) => vote.option() === option)) option = null;\n\n const optionIds = new Set(this.poll.myVotes().map((v) => v.option().id()));\n const isUnvoting = optionIds.delete(option.id());\n const allowsMultiple = this.poll.allowMultipleVotes();\n\n if (!allowsMultiple) {\n optionIds.clear();\n }\n\n if (!isUnvoting) {\n optionIds.add(option.id());\n }\n\n return app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/fof/polls/${this.poll.id()}/votes`,\n body: {\n data: {\n optionIds: Array.from(optionIds),\n },\n },\n })\n .then((res) => {\n app.store.pushPayload(res);\n\n this.updateData();\n\n m.redraw();\n })\n .catch(() => {\n evt.target.checked = isUnvoting;\n });\n }\n\n showVoters() {\n // Load all the votes only when opening the votes list\n app.store\n .find('discussions', this.attrs.discussion.id(), {\n include: 'poll.votes,poll.votes.user,poll.votes.option',\n })\n .then(() => {\n app.modal.show(ListVotersModal, {\n poll: this.poll,\n });\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport DiscussionPoll from './components/DiscussionPoll';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\n\nexport default () => {\n extend(CommentPost.prototype, 'content', function (content) {\n const discussion = this.attrs.post.discussion();\n\n // If the options aren't loaded, it means we jumped from homepage to a profile page and are missing relationships\n // We will simply not show the poll in that situation\n if (discussion.poll() && Array.isArray(discussion.poll().options()) && this.attrs.post.number() === 1) {\n content.push(\n DiscussionPoll.component({\n discussion,\n poll: discussion.poll(),\n })\n );\n }\n });\n\n extend(CommentPost.prototype, 'oninit', function () {\n this.subtree.check(() => {\n const discussion = this.attrs.post.discussion();\n\n if (!discussion.poll() || this.attrs.post.number() !== 1) {\n return '';\n }\n\n const checks = [\n // Make the post redraw everytime the poll or option vote count changed, or when the user vote changed\n discussion.poll().voteCount(),\n (discussion.poll().myVotes() || []).map((vote) => vote.option().id()),\n ];\n\n const options = discussion.poll().options();\n\n // The options might not be loaded in all contexts where CommentPost is rendered (for example, user profile),\n // if they are missing we are just going to omit this check\n if (options) {\n checks.push(options.map((option) => option.voteCount()));\n }\n\n return JSON.stringify(checks);\n });\n });\n\n extend(DiscussionPage.prototype, 'oncreate', function () {\n if (app.pusher) {\n app.pusher.then((binding) => {\n // We will listen for updates to all polls and options\n // Even if that model is not in the current discussion, it doesn't really matter\n binding.channels.main.bind('updatedPollOptions', (data) => {\n const poll = app.store.getById('polls', data['pollId']);\n\n if (poll) {\n poll.pushAttributes({\n voteCount: data['pollVoteCount'],\n });\n\n // Not redrawing here, as the option below should trigger the redraw already\n }\n\n const changedOptions = data['options'];\n\n for (const optionId in changedOptions) {\n const option = app.store.getById('poll_options', optionId);\n\n if (option) {\n option.pushAttributes({\n voteCount: changedOptions[optionId],\n });\n }\n }\n\n m.redraw();\n });\n });\n }\n });\n\n extend(DiscussionPage.prototype, 'onremove', function () {\n if (app.pusher) {\n app.pusher.then((binding) => {\n binding.channels.main.unbind('updatedPollOptions');\n });\n }\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","import app from 'flarum/forum/app';\n\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport CreatePollModal from './CreatePollModal';\n\nexport default class EditPollModal extends CreatePollModal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.poll = this.attrs.poll;\n\n this.options = this.poll.options();\n this.optionAnswers = this.options.map((o) => Stream(o.answer()));\n this.optionImageUrls = this.options.map((o) => Stream(o.imageUrl()));\n this.question = Stream(this.poll.question());\n this.endDate = Stream(this.poll.endDate());\n this.publicPoll = Stream(this.poll.publicPoll());\n this.allowMultipleVotes = Stream(this.poll.allowMultipleVotes());\n this.maxVotes = Stream(this.poll.maxVotes() || 0);\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.modal.edit_title');\n }\n\n displayOptions() {\n return this.options.map((opt, i) => (\n
    \n
    \n \n {app.forum.attribute('allowPollOptionImage') ? (\n \n ) : null}\n
    \n\n {i >= 2\n ? Button.component({\n type: 'button',\n className: 'Button PollModal--button',\n icon: 'fas fa-minus',\n onclick: i >= 2 ? this.removeOption.bind(this, i) : '',\n })\n : ''}\n
    \n ));\n }\n\n addOption() {\n const setting = app.data['fof-polls.options.max'];\n const max = (setting && parseInt(setting)) || 11;\n\n if (this.options.length < max) {\n this.options.push(app.store.createRecord('poll_options'));\n this.optionAnswers.push(Stream(''));\n this.optionImageUrls.push(Stream(''));\n } else {\n alert(app.translator.trans('fof-polls.forum.modal.max'));\n }\n }\n\n removeOption(i) {\n this.options.splice(i, 1);\n this.optionAnswers.splice(i, 1);\n this.optionImageUrls.splice(i, 1);\n }\n\n data() {\n const options = this.options.map((o, i) => {\n if (!o.data.attributes) o.data.attributes = {};\n\n o.data.attributes.answer = this.optionAnswers[i]();\n o.data.attributes.imageUrl = this.optionImageUrls[i]();\n\n return o.data;\n });\n\n return {\n question: this.question(),\n endDate: this.endDate() || false,\n publicPoll: this.publicPoll(),\n allowMultipleVotes: this.allowMultipleVotes(),\n maxVotes: this.maxVotes(),\n options,\n };\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (this.loading) return;\n\n this.loading = true;\n\n return this.poll\n .save(this.data())\n .then(() => {\n document.location.reload();\n })\n .catch((e) => {\n this.loaded();\n this.onerror(e);\n });\n }\n}\n","import CreatePollModal from './CreatePollModal';\nimport DiscussionPoll from './DiscussionPoll';\nimport EditPollModal from './EditPollModal';\nimport ListVotersModal from './ListVotersModal';\n\nexport const components = {\n CreatePollModal,\n DiscussionPoll,\n EditPollModal,\n ListVotersModal,\n};\n","import Poll from './Poll';\nimport PollOption from './PollOption';\nimport PollVote from './PollVote';\n\nexport const models = {\n Poll,\n PollOption,\n PollVote,\n};\n","import app from 'flarum/forum/app';\n\nimport Model from 'flarum/common/Model';\n\nimport Poll from './models/Poll';\nimport PollOption from './models/PollOption';\nimport PollVote from './models/PollVote';\n\nimport addDiscussionBadge from './addDiscussionBadge';\nimport addDiscussionComposerItem from './addDiscussionComposerItem';\nimport addPollToDiscussion from './addPollToDiscussion';\nimport addDiscussionControls from './addDiscussionControls';\n\nexport * from './components';\nexport * from './models';\n\napp.initializers.add('fof/polls', () => {\n app.store.models.polls = Poll;\n app.store.models.poll_options = PollOption;\n app.store.models.poll_votes = PollVote;\n\n app.store.models.discussions.prototype.poll = Model.hasOne('poll');\n\n app.store.models.users.prototype.canStartPolls = Model.attribute('canStartPolls');\n app.store.models.users.prototype.canVotePolls = Model.attribute('canVotePolls');\n\n addDiscussionBadge();\n addDiscussionControls();\n addDiscussionComposerItem();\n addPollToDiscussion();\n});\n","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport Button from 'flarum/common/components/Button';\n\nimport EditPollModal from './components/EditPollModal';\n\nexport default () => {\n extend(PostControls, 'moderationControls', function (items, post) {\n const discussion = post.discussion();\n const poll = discussion.poll();\n\n if (!poll) {\n return;\n }\n\n if (poll.canEdit()) {\n items.add(\n 'fof-polls-edit',\n Button.component(\n {\n icon: 'fas fa-check-square',\n onclick: () => app.modal.show(EditPollModal, { poll: poll }),\n },\n app.translator.trans('fof-polls.forum.moderation.edit')\n )\n );\n }\n\n if (poll.canDelete()) {\n items.add(\n 'fof-polls-remove',\n Button.component(\n {\n icon: 'fas fa-trash',\n onclick: () => {\n if (confirm(app.translator.trans('fof-polls.forum.moderation.delete_confirm'))) {\n poll.delete().then(() => {\n m.redraw.sync();\n });\n }\n },\n },\n app.translator.trans('fof-polls.forum.moderation.delete')\n )\n );\n }\n });\n};\n"],"names":["Object","assign","target","args","_i","arguments","length","TypeError","_loop_1","source","keys","forEach","key","_a","args_1","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","Poll","question","Model","hasEnded","endDate","publicPoll","allowMultipleVotes","maxVotes","voteCount","canEdit","canDelete","canSeeVotes","canChangeVote","options","votes","myVotes","apiEndpoint","this","exists","data","id","PollOption","answer","imageUrl","poll","PollVote","option","user","pollId","optionId","HOOKS","defaults","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","window","navigator","userAgent","indexOf","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","err","console","warn","getWeek","givenDate","date","Date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","mode","monthSelectorType","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","s","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","slice","int","bool","debounce","fn","wait","t","_this","clearTimeout","setTimeout","apply","arrayify","Array","toggleClass","elem","className","classList","add","remove","createElement","tag","content","e","document","textContent","clearNode","node","firstChild","removeChild","findParent","condition","parentNode","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","type","pattern","setAttribute","appendChild","getEventTarget","event","composedPath","error","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","getHours","parseFloat","H","J","day","K","RegExp","test","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","h","i","minutes","setMinutes","j","l","m","month","u","unixMillSeconds","w","y","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","String","substring","createDateFormatter","_b","config","_c","l10n","_d","isMobile","frmt","overrideLocale","formatDate","split","map","c","arr","join","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","exec","val","isNaN","Error","compareDates","date1","date2","calculateSecondsSinceMidnight","hours","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","min","__assign","__spreadArrays","il","k","jl","FlatpickrInstance","element","instanceConfig","self","defaultOptions","flatpickr","defaultConfig","English","getClosestActiveElement","calendarContainer","getRootNode","activeElement","bindToInstance","setCalendarWidth","requestAnimationFrame","style","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","getMilliseconds","latestSelectedDateObj","preventDefault","isKeyDown","eventTarget","input","getAttribute","max","step","curValue","newValue","delta","which","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","result","secondsSinceMidnight","floor","parseSeconds","setHoursFromDate","onYearInput","toString","changeYear","handler","ev","el","addEventListener","_handlers","push","removeEventListener","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","contains","inputElem","createEvent","dispatchEvent","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","current","offset","dayFocused","isInView","body","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","innerHTML","selected","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","disabled","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","splice","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","documentClick","isOpen","eventTarget_1","isCalendarElement","lostFocus","path","relatedTarget","isIgnored","some","timeContainer","close","clear","newYear","newYearNum","isNewYear","dateToCheck","enable","array","parsed","from","to","onBlur","isInput","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","keyCode","blur","open","isTimeObj","focusAndClose","selectDate","delta_1","ctrlKey","stopPropagation","currentYearElement","elems","concat","pluginElements","filter","x","shiftKey","charAt","toLowerCase","cellClass","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","rContainer","querySelectorAll","dayElem","ts","ts1","ts2","timestamp","outOfRange","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","getInputElem","querySelector","setupLocale","l10ns","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","left","pageXOffset","isCenter","isRight","right","rightMost","centerMost","doc","editableSheet","styleSheets","sheet","cssRules","head","getDocumentStyleSheet","bodyWidth","centerLeft","centerIndex","centerStyle","insertRule","centerBefore","msMaxTouchPoints","selectedDate","shouldChangeMonth","selectedIndex","sort","b","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","destroy","lastChild","insertBefore","_type","click","wasOpen","select","set","CALLBACKS","setSelectedDate","toggle","updatePositionElement","inputDate","dates","parseDateRules","rule","hooks","name","initEvent","specificFormat","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","nodeName","placeholder","required","nextSibling","preloadedDate","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","separator","hourInput","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","appendTo","nodeType","build","evt","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","bindEvents","isSafari","init","_flatpickr","nodeList","nodes","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","default","localize","setDefaults","jQuery","fp_incr","CreatePollModal","oninit","vnode","Stream","optionImageUrls","attrs","isArray","app","configDatePicker","dom","fields","toArray","items","ItemList","bidi","Button","icon","onclick","addOption","displayOptions","oncreate","Switch","state","onchange","loading","removeOption","setting","alert","index","onsubmit","Modal","ListVotersModal","optionContent","opt","v","voteContent","vote","href","avatar","username","DiscussionPoll","updateData","view","viewOption","showVoters","class","time","dayjs","fromNow","canVotePolls","hasVoted","totalVotes","voted","percent","changeVote","checked","src","alt","text","count","onError","LogInModal","optionIds","Set","isUnvoting","method","url","then","res","discussion","include","Component","EditPollModal","optionAnswers","attributes","save","location","reload","loaded","onerror","components","models","extend","DiscussionList","params","Discussion","badges","Badge","label","PostControls","post","confirm","sync","DiscussionComposer","composer","addPoll","CommentPost","component","subtree","check","checks","DiscussionPage","binding","channels","main","pushAttributes","changedOptions","unbind"],"sourceRoot":""} \ No newline at end of file