@influence-society-web/yuna-frontend 2.0.5 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
4
4
  <span class='flatpickr-weekday'>
5
5
  `+b.join("</span><span class='flatpickr-weekday'>")+`
6
6
  </span>
7
- `}}function D(){e.calendarContainer.classList.add("hasWeeks");var f=Ce("div","flatpickr-weekwrapper");f.appendChild(Ce("span","flatpickr-weekday",e.l10n.weekAbbreviation));var b=Ce("div","flatpickr-weeks");return f.appendChild(b),{weekWrapper:f,weekNumbers:b}}function _(f,b){b===void 0&&(b=!0);var M=b?f:f-e.currentMonth;M<0&&e._hidePrevMonthArrow===!0||M>0&&e._hideNextMonthArrow===!0||(e.currentMonth+=M,(e.currentMonth<0||e.currentMonth>11)&&(e.currentYear+=e.currentMonth>11?1:-1,e.currentMonth=(e.currentMonth+12)%12,Fe("onYearChange"),se()),Y(),Fe("onMonthChange"),Eo())}function I(f,b){if(f===void 0&&(f=!0),b===void 0&&(b=!0),e.input.value="",e.altInput!==void 0&&(e.altInput.value=""),e.mobileInput!==void 0&&(e.mobileInput.value=""),e.selectedDates=[],e.latestSelectedDateObj=void 0,b===!0&&(e.currentYear=e._initialDate.getFullYear(),e.currentMonth=e._initialDate.getMonth()),e.config.enableTime===!0){var M=Ia(e.config),N=M.hours,W=M.minutes,Q=M.seconds;w(N,W,Q)}e.redraw(),f&&Fe("onChange")}function k(){e.isOpen=!1,e.isMobile||(e.calendarContainer!==void 0&&e.calendarContainer.classList.remove("open"),e._input!==void 0&&e._input.classList.remove("active")),Fe("onClose")}function j(){e.config!==void 0&&Fe("onDestroy");for(var f=e._handlers.length;f--;)e._handlers[f].remove();if(e._handlers=[],e.mobileInput)e.mobileInput.parentNode&&e.mobileInput.parentNode.removeChild(e.mobileInput),e.mobileInput=void 0;else if(e.calendarContainer&&e.calendarContainer.parentNode)if(e.config.static&&e.calendarContainer.parentNode){var b=e.calendarContainer.parentNode;if(b.lastChild&&b.removeChild(b.lastChild),b.parentNode){for(;b.firstChild;)b.parentNode.insertBefore(b.firstChild,b);b.parentNode.removeChild(b)}}else e.calendarContainer.parentNode.removeChild(e.calendarContainer);e.altInput&&(e.input.type="text",e.altInput.parentNode&&e.altInput.parentNode.removeChild(e.altInput),delete e.altInput),e.input&&(e.input.type=e.input._type,e.input.classList.remove("flatpickr-input"),e.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(M){try{delete e[M]}catch{}})}function O(f){return e.calendarContainer.contains(f)}function X(f){if(e.isOpen&&!e.config.inline){var b=jt(f),M=O(b),N=b===e.input||b===e.altInput||e.element.contains(b)||f.path&&f.path.indexOf&&(~f.path.indexOf(e.input)||~f.path.indexOf(e.altInput)),W=!N&&!M&&!O(f.relatedTarget),Q=!e.config.ignoredFocusElements.some(function(ye){return ye.contains(b)});W&&Q&&(e.config.allowInput&&e.setDate(e._input.value,!1,e.config.altInput?e.config.altFormat:e.config.dateFormat),e.timeContainer!==void 0&&e.minuteElement!==void 0&&e.hourElement!==void 0&&e.input.value!==""&&e.input.value!==void 0&&c(),e.close(),e.config&&e.config.mode==="range"&&e.selectedDates.length===1&&e.clear(!1))}}function re(f){if(!(!f||e.config.minDate&&f<e.config.minDate.getFullYear()||e.config.maxDate&&f>e.config.maxDate.getFullYear())){var b=f,M=e.currentYear!==b;e.currentYear=b||e.currentYear,e.config.maxDate&&e.currentYear===e.config.maxDate.getFullYear()?e.currentMonth=Math.min(e.config.maxDate.getMonth(),e.currentMonth):e.config.minDate&&e.currentYear===e.config.minDate.getFullYear()&&(e.currentMonth=Math.max(e.config.minDate.getMonth(),e.currentMonth)),M&&(e.redraw(),Fe("onYearChange"),se())}}function Z(f,b){var M;b===void 0&&(b=!0);var N=e.parseDate(f,void 0,b);if(e.config.minDate&&N&&zt(N,e.config.minDate,b!==void 0?b:!e.minDateHasTime)<0||e.config.maxDate&&N&&zt(N,e.config.maxDate,b!==void 0?b:!e.maxDateHasTime)>0)return!1;if(!e.config.enable&&e.config.disable.length===0)return!0;if(N===void 0)return!1;for(var W=!!e.config.enable,Q=(M=e.config.enable)!==null&&M!==void 0?M:e.config.disable,ye=0,ne=void 0;ye<Q.length;ye++){if(ne=Q[ye],typeof ne=="function"&&ne(N))return W;if(ne instanceof Date&&N!==void 0&&ne.getTime()===N.getTime())return W;if(typeof ne=="string"){var De=e.parseDate(ne,void 0,!0);return De&&De.getTime()===N.getTime()?W:!W}else if(typeof ne=="object"&&N!==void 0&&ne.from&&ne.to&&N.getTime()>=ne.from.getTime()&&N.getTime()<=ne.to.getTime())return W}return!W}function V(f){return e.daysContainer!==void 0?f.className.indexOf("hidden")===-1&&f.className.indexOf("flatpickr-disabled")===-1&&e.daysContainer.contains(f):!1}function ue(f){var b=f.target===e._input,M=e._input.value.trimEnd()!==$a();b&&M&&!(f.relatedTarget&&O(f.relatedTarget))&&e.setDate(e._input.value,!0,f.target===e.altInput?e.config.altFormat:e.config.dateFormat)}function pe(f){var b=jt(f),M=e.config.wrap?n.contains(b):b===e._input,N=e.config.allowInput,W=e.isOpen&&(!N||!M),Q=e.config.inline&&M&&!N;if(f.keyCode===13&&M){if(N)return e.setDate(e._input.value,!0,b===e.altInput?e.config.altFormat:e.config.dateFormat),e.close(),b.blur();e.open()}else if(O(b)||W||Q){var ye=!!e.timeContainer&&e.timeContainer.contains(b);switch(f.keyCode){case 13:ye?(f.preventDefault(),c(),Ba()):zc(f);break;case 27:f.preventDefault(),Ba();break;case 8:case 46:M&&!e.config.allowInput&&(f.preventDefault(),e.clear());break;case 37:case 39:if(!ye&&!M){f.preventDefault();var ne=o();if(e.daysContainer!==void 0&&(N===!1||ne&&V(ne))){var De=f.keyCode===39?1:-1;f.ctrlKey?(f.stopPropagation(),_(De),F(Te(1),0)):F(void 0,De)}}else e.hourElement&&e.hourElement.focus();break;case 38:case 40:f.preventDefault();var te=f.keyCode===40?1:-1;e.daysContainer&&b.$i!==void 0||b===e.input||b===e.altInput?f.ctrlKey?(f.stopPropagation(),re(e.currentYear-te),F(Te(1),0)):ye||F(void 0,te*7):b===e.currentYearElement?re(e.currentYear-te):e.config.enableTime&&(!ye&&e.hourElement&&e.hourElement.focus(),c(f),e._debouncedChange());break;case 9:if(ye){var de=[e.hourElement,e.minuteElement,e.secondElement,e.amPM].concat(e.pluginElements).filter(function(Ut){return Ut}),Ae=de.indexOf(b);if(Ae!==-1){var dn=de[Ae+(f.shiftKey?-1:1)];f.preventDefault(),(dn||e._input).focus()}}else!e.config.noCalendar&&e.daysContainer&&e.daysContainer.contains(b)&&f.shiftKey&&(f.preventDefault(),e._input.focus());break;default:break}}if(e.amPM!==void 0&&b===e.amPM)switch(f.key){case e.l10n.amPM[0].charAt(0):case e.l10n.amPM[0].charAt(0).toLowerCase():e.amPM.textContent=e.l10n.amPM[0],p(),_n();break;case e.l10n.amPM[1].charAt(0):case e.l10n.amPM[1].charAt(0).toLowerCase():e.amPM.textContent=e.l10n.amPM[1],p(),_n();break}(M||O(b))&&Fe("onKeyDown",f)}function we(f,b){if(b===void 0&&(b="flatpickr-day"),!(e.selectedDates.length!==1||f&&(!f.classList.contains(b)||f.classList.contains("flatpickr-disabled")))){for(var M=f?f.dateObj.getTime():e.days.firstElementChild.dateObj.getTime(),N=e.parseDate(e.selectedDates[0],void 0,!0).getTime(),W=Math.min(M,e.selectedDates[0].getTime()),Q=Math.max(M,e.selectedDates[0].getTime()),ye=!1,ne=0,De=0,te=W;te<Q;te+=jd.DAY)Z(new Date(te),!0)||(ye=ye||te>W&&te<Q,te<N&&(!ne||te>ne)?ne=te:te>N&&(!De||te<De)&&(De=te));var de=Array.from(e.rContainer.querySelectorAll("*:nth-child(-n+"+e.config.showMonths+") > ."+b));de.forEach(function(Ae){var dn=Ae.dateObj,Ut=dn.getTime(),si=ne>0&&Ut<ne||De>0&&Ut>De;if(si){Ae.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(Cr){Ae.classList.remove(Cr)});return}else if(ye&&!si)return;["startRange","inRange","endRange","notAllowed"].forEach(function(Cr){Ae.classList.remove(Cr)}),f!==void 0&&(f.classList.add(M<=e.selectedDates[0].getTime()?"startRange":"endRange"),N<M&&Ut===N?Ae.classList.add("startRange"):N>M&&Ut===N&&Ae.classList.add("endRange"),Ut>=ne&&(De===0||Ut<=De)&&Yd(Ut,N,M)&&Ae.classList.add("inRange"))})}}function _e(){e.isOpen&&!e.config.static&&!e.config.inline&&$n()}function He(f,b){if(b===void 0&&(b=e._positionElement),e.isMobile===!0){if(f){f.preventDefault();var M=jt(f);M&&M.blur()}e.mobileInput!==void 0&&(e.mobileInput.focus(),e.mobileInput.click()),Fe("onOpen");return}else if(e._input.disabled||e.config.inline)return;var N=e.isOpen;e.isOpen=!0,N||(e.calendarContainer.classList.add("open"),e._input.classList.add("active"),Fe("onOpen"),$n(b)),e.config.enableTime===!0&&e.config.noCalendar===!0&&e.config.allowInput===!1&&(f===void 0||!e.timeContainer.contains(f.relatedTarget))&&setTimeout(function(){return e.hourElement.select()},50)}function qe(f){return function(b){var M=e.config["_"+f+"Date"]=e.parseDate(b,e.config.dateFormat),N=e.config["_"+(f==="min"?"max":"min")+"Date"];M!==void 0&&(e[f==="min"?"minDateHasTime":"maxDateHasTime"]=M.getHours()>0||M.getMinutes()>0||M.getSeconds()>0),e.selectedDates&&(e.selectedDates=e.selectedDates.filter(function(W){return Z(W)}),!e.selectedDates.length&&f==="min"&&y(M),_n()),e.daysContainer&&(wo(),M!==void 0?e.currentYearElement[f]=M.getFullYear().toString():e.currentYearElement.removeAttribute(f),e.currentYearElement.disabled=!!N&&M!==void 0&&N.getFullYear()===M.getFullYear())}}function ot(){var f=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],b=ht(ht({},JSON.parse(JSON.stringify(n.dataset||{}))),t),M={};e.config.parseDate=b.parseDate,e.config.formatDate=b.formatDate,Object.defineProperty(e.config,"enable",{get:function(){return e.config._enable},set:function(de){e.config._enable=Vc(de)}}),Object.defineProperty(e.config,"disable",{get:function(){return e.config._disable},set:function(de){e.config._disable=Vc(de)}});var N=b.mode==="time";if(!b.dateFormat&&(b.enableTime||N)){var W=We.defaultConfig.dateFormat||sr.dateFormat;M.dateFormat=b.noCalendar||N?"H:i"+(b.enableSeconds?":S":""):W+" H:i"+(b.enableSeconds?":S":"")}if(b.altInput&&(b.enableTime||N)&&!b.altFormat){var Q=We.defaultConfig.altFormat||sr.altFormat;M.altFormat=b.noCalendar||N?"h:i"+(b.enableSeconds?":S K":" K"):Q+(" h:i"+(b.enableSeconds?":S":"")+" K")}Object.defineProperty(e.config,"minDate",{get:function(){return e.config._minDate},set:qe("min")}),Object.defineProperty(e.config,"maxDate",{get:function(){return e.config._maxDate},set:qe("max")});var ye=function(de){return function(Ae){e.config[de==="min"?"_minTime":"_maxTime"]=e.parseDate(Ae,"H:i:S")}};Object.defineProperty(e.config,"minTime",{get:function(){return e.config._minTime},set:ye("min")}),Object.defineProperty(e.config,"maxTime",{get:function(){return e.config._maxTime},set:ye("max")}),b.mode==="time"&&(e.config.noCalendar=!0,e.config.enableTime=!0),Object.assign(e.config,M,b);for(var ne=0;ne<f.length;ne++)e.config[f[ne]]=e.config[f[ne]]===!0||e.config[f[ne]]==="true";Ma.filter(function(de){return e.config[de]!==void 0}).forEach(function(de){e.config[de]=Ca(e.config[de]||[]).map(a)}),e.isMobile=!e.config.disableMobile&&!e.config.inline&&e.config.mode==="single"&&!e.config.disable.length&&!e.config.enable&&!e.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(var ne=0;ne<e.config.plugins.length;ne++){var De=e.config.plugins[ne](e)||{};for(var te in De)Ma.indexOf(te)>-1?e.config[te]=Ca(De[te]).map(a).concat(e.config[te]):typeof b[te]>"u"&&(e.config[te]=De[te])}b.altInputClass||(e.config.altInputClass=Qt().className+" "+e.config.altInputClass),Fe("onParseConfig")}function Qt(){return e.config.wrap?n.querySelector("[data-input]"):n}function cr(){typeof e.config.locale!="object"&&typeof We.l10ns[e.config.locale]>"u"&&e.config.errorHandler(new Error("flatpickr: invalid locale "+e.config.locale)),e.l10n=ht(ht({},We.l10ns.default),typeof e.config.locale=="object"?e.config.locale:e.config.locale!=="default"?We.l10ns[e.config.locale]:void 0),Yn.D="("+e.l10n.weekdays.shorthand.join("|")+")",Yn.l="("+e.l10n.weekdays.longhand.join("|")+")",Yn.M="("+e.l10n.months.shorthand.join("|")+")",Yn.F="("+e.l10n.months.longhand.join("|")+")",Yn.K="("+e.l10n.amPM[0]+"|"+e.l10n.amPM[1]+"|"+e.l10n.amPM[0].toLowerCase()+"|"+e.l10n.amPM[1].toLowerCase()+")";var f=ht(ht({},t),JSON.parse(JSON.stringify(n.dataset||{})));f.time_24hr===void 0&&We.defaultConfig.time_24hr===void 0&&(e.config.time_24hr=e.l10n.time_24hr),e.formatDate=Yc(e),e.parseDate=Pa({config:e.config,l10n:e.l10n})}function $n(f){if(typeof e.config.position=="function")return void e.config.position(e,f);if(e.calendarContainer!==void 0){Fe("onPreCalendarPosition");var b=f||e._positionElement,M=Array.prototype.reduce.call(e.calendarContainer.children,function(fh,gh){return fh+gh.offsetHeight},0),N=e.calendarContainer.offsetWidth,W=e.config.position.split(" "),Q=W[0],ye=W.length>1?W[1]:null,ne=b.getBoundingClientRect(),De=window.innerHeight-ne.bottom,te=Q==="above"||Q!=="below"&&De<M&&ne.top>M,de=window.pageYOffset+ne.top+(te?-M-2:b.offsetHeight+2);if(dt(e.calendarContainer,"arrowTop",!te),dt(e.calendarContainer,"arrowBottom",te),!e.config.inline){var Ae=window.pageXOffset+ne.left,dn=!1,Ut=!1;ye==="center"?(Ae-=(N-ne.width)/2,dn=!0):ye==="right"&&(Ae-=N-ne.width,Ut=!0),dt(e.calendarContainer,"arrowLeft",!dn&&!Ut),dt(e.calendarContainer,"arrowCenter",dn),dt(e.calendarContainer,"arrowRight",Ut);var si=window.document.body.offsetWidth-(window.pageXOffset+ne.right),Cr=Ae+N>window.document.body.offsetWidth,ch=si+N>window.document.body.offsetWidth;if(dt(e.calendarContainer,"rightMost",Cr),!e.config.static)if(e.calendarContainer.style.top=de+"px",!Cr)e.calendarContainer.style.left=Ae+"px",e.calendarContainer.style.right="auto";else if(!ch)e.calendarContainer.style.left="auto",e.calendarContainer.style.right=si+"px";else{var ja=ai();if(ja===void 0)return;var lh=window.document.body.offsetWidth,uh=Math.max(0,lh/2-N/2),dh=".flatpickr-calendar.centerMost:before",hh=".flatpickr-calendar.centerMost:after",mh=ja.cssRules.length,ph="{left:"+ne.left+"px;right:auto;}";dt(e.calendarContainer,"rightMost",!1),dt(e.calendarContainer,"centerMost",!0),ja.insertRule(dh+","+hh+ph,mh),e.calendarContainer.style.left=uh+"px",e.calendarContainer.style.right="auto"}}}}function ai(){for(var f=null,b=0;b<document.styleSheets.length;b++){var M=document.styleSheets[b];if(M.cssRules){try{M.cssRules}catch{continue}f=M;break}}return f??bo()}function bo(){var f=document.createElement("style");return document.head.appendChild(f),f.sheet}function wo(){e.config.noCalendar||e.isMobile||(se(),Eo(),Y())}function Ba(){e._input.focus(),window.navigator.userAgent.indexOf("MSIE")!==-1||navigator.msMaxTouchPoints!==void 0?setTimeout(e.close,0):e.close()}function zc(f){f.preventDefault(),f.stopPropagation();var b=function(de){return de.classList&&de.classList.contains("flatpickr-day")&&!de.classList.contains("flatpickr-disabled")&&!de.classList.contains("notAllowed")},M=Bc(jt(f),b);if(M!==void 0){var N=M,W=e.latestSelectedDateObj=new Date(N.dateObj.getTime()),Q=(W.getMonth()<e.currentMonth||W.getMonth()>e.currentMonth+e.config.showMonths-1)&&e.config.mode!=="range";if(e.selectedDateElem=N,e.config.mode==="single")e.selectedDates=[W];else if(e.config.mode==="multiple"){var ye=Ya(W);ye?e.selectedDates.splice(parseInt(ye),1):e.selectedDates.push(W)}else e.config.mode==="range"&&(e.selectedDates.length===2&&e.clear(!1,!1),e.latestSelectedDateObj=W,e.selectedDates.push(W),zt(W,e.selectedDates[0],!0)!==0&&e.selectedDates.sort(function(de,Ae){return de.getTime()-Ae.getTime()}));if(p(),Q){var ne=e.currentYear!==W.getFullYear();e.currentYear=W.getFullYear(),e.currentMonth=W.getMonth(),ne&&(Fe("onYearChange"),se()),Fe("onMonthChange")}if(Eo(),Y(),_n(),!Q&&e.config.mode!=="range"&&e.config.showMonths===1?Pe(N):e.selectedDateElem!==void 0&&e.hourElement===void 0&&e.selectedDateElem&&e.selectedDateElem.focus(),e.hourElement!==void 0&&e.hourElement!==void 0&&e.hourElement.focus(),e.config.closeOnSelect){var De=e.config.mode==="single"&&!e.config.enableTime,te=e.config.mode==="range"&&e.selectedDates.length===2&&!e.config.enableTime;(De||te)&&Ba()}x()}}var Do={locale:[cr,E],showMonths:[B,s,v],minDate:[K],maxDate:[K],positionElement:[qc],clickOpens:[function(){e.config.clickOpens===!0?(C(e._input,"focus",e.open),C(e._input,"click",e.open)):(e._input.removeEventListener("focus",e.open),e._input.removeEventListener("click",e.open))}]};function Qd(f,b){if(f!==null&&typeof f=="object"){Object.assign(e.config,f);for(var M in f)Do[M]!==void 0&&Do[M].forEach(function(N){return N()})}else e.config[f]=b,Do[f]!==void 0?Do[f].forEach(function(N){return N()}):Ma.indexOf(f)>-1&&(e.config[f]=Ca(b));e.redraw(),_n(!0)}function Uc(f,b){var M=[];if(f instanceof Array)M=f.map(function(N){return e.parseDate(N,b)});else if(f instanceof Date||typeof f=="number")M=[e.parseDate(f,b)];else if(typeof f=="string")switch(e.config.mode){case"single":case"time":M=[e.parseDate(f,b)];break;case"multiple":M=f.split(e.config.conjunction).map(function(N){return e.parseDate(N,b)});break;case"range":M=f.split(e.l10n.rangeSeparator).map(function(N){return e.parseDate(N,b)});break;default:break}else e.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(f)));e.selectedDates=e.config.allowInvalidPreload?M:M.filter(function(N){return N instanceof Date&&Z(N,!1)}),e.config.mode==="range"&&e.selectedDates.sort(function(N,W){return N.getTime()-W.getTime()})}function eh(f,b,M){if(b===void 0&&(b=!1),M===void 0&&(M=e.config.dateFormat),f!==0&&!f||f instanceof Array&&f.length===0)return e.clear(b);Uc(f,M),e.latestSelectedDateObj=e.selectedDates[e.selectedDates.length-1],e.redraw(),K(void 0,b),y(),e.selectedDates.length===0&&e.clear(!1),_n(b),b&&Fe("onChange")}function Vc(f){return f.slice().map(function(b){return typeof b=="string"||typeof b=="number"||b instanceof Date?e.parseDate(b,void 0,!0):b&&typeof b=="object"&&b.from&&b.to?{from:e.parseDate(b.from,void 0),to:e.parseDate(b.to,void 0)}:b}).filter(function(b){return b})}function th(){e.selectedDates=[],e.now=e.parseDate(e.config.now)||new Date;var f=e.config.defaultDate||((e.input.nodeName==="INPUT"||e.input.nodeName==="TEXTAREA")&&e.input.placeholder&&e.input.value===e.input.placeholder?null:e.input.value);f&&Uc(f,e.config.dateFormat),e._initialDate=e.selectedDates.length>0?e.selectedDates[0]:e.config.minDate&&e.config.minDate.getTime()>e.now.getTime()?e.config.minDate:e.config.maxDate&&e.config.maxDate.getTime()<e.now.getTime()?e.config.maxDate:e.now,e.currentYear=e._initialDate.getFullYear(),e.currentMonth=e._initialDate.getMonth(),e.selectedDates.length>0&&(e.latestSelectedDateObj=e.selectedDates[0]),e.config.minTime!==void 0&&(e.config.minTime=e.parseDate(e.config.minTime,"H:i")),e.config.maxTime!==void 0&&(e.config.maxTime=e.parseDate(e.config.maxTime,"H:i")),e.minDateHasTime=!!e.config.minDate&&(e.config.minDate.getHours()>0||e.config.minDate.getMinutes()>0||e.config.minDate.getSeconds()>0),e.maxDateHasTime=!!e.config.maxDate&&(e.config.maxDate.getHours()>0||e.config.maxDate.getMinutes()>0||e.config.maxDate.getSeconds()>0)}function nh(){if(e.input=Qt(),!e.input){e.config.errorHandler(new Error("Invalid input element specified"));return}e.input._type=e.input.type,e.input.type="text",e.input.classList.add("flatpickr-input"),e._input=e.input,e.config.altInput&&(e.altInput=Ce(e.input.nodeName,e.config.altInputClass),e._input=e.altInput,e.altInput.placeholder=e.input.placeholder,e.altInput.disabled=e.input.disabled,e.altInput.required=e.input.required,e.altInput.tabIndex=e.input.tabIndex,e.altInput.type="text",e.input.setAttribute("type","hidden"),!e.config.static&&e.input.parentNode&&e.input.parentNode.insertBefore(e.altInput,e.input.nextSibling)),e.config.allowInput||e._input.setAttribute("readonly","readonly"),qc()}function qc(){e._positionElement=e.config.positionElement||e._input}function rh(){var f=e.config.enableTime?e.config.noCalendar?"time":"datetime-local":"date";e.mobileInput=Ce("input",e.input.className+" flatpickr-mobile"),e.mobileInput.tabIndex=1,e.mobileInput.type=f,e.mobileInput.disabled=e.input.disabled,e.mobileInput.required=e.input.required,e.mobileInput.placeholder=e.input.placeholder,e.mobileFormatStr=f==="datetime-local"?"Y-m-d\\TH:i:S":f==="date"?"Y-m-d":"H:i:S",e.selectedDates.length>0&&(e.mobileInput.defaultValue=e.mobileInput.value=e.formatDate(e.selectedDates[0],e.mobileFormatStr)),e.config.minDate&&(e.mobileInput.min=e.formatDate(e.config.minDate,"Y-m-d")),e.config.maxDate&&(e.mobileInput.max=e.formatDate(e.config.maxDate,"Y-m-d")),e.input.getAttribute("step")&&(e.mobileInput.step=String(e.input.getAttribute("step"))),e.input.type="hidden",e.altInput!==void 0&&(e.altInput.type="hidden");try{e.input.parentNode&&e.input.parentNode.insertBefore(e.mobileInput,e.input.nextSibling)}catch{}C(e.mobileInput,"change",function(b){e.setDate(jt(b).value,!1,e.mobileFormatStr),Fe("onChange"),Fe("onClose")})}function ih(f){if(e.isOpen===!0)return e.close();e.open(f)}function Fe(f,b){if(e.config!==void 0){var M=e.config[f];if(M!==void 0&&M.length>0)for(var N=0;M[N]&&N<M.length;N++)M[N](e.selectedDates,e.input.value,e,b);f==="onChange"&&(e.input.dispatchEvent(Fa("change")),e.input.dispatchEvent(Fa("input")))}}function Fa(f){var b=document.createEvent("Event");return b.initEvent(f,!0,!0),b}function Ya(f){for(var b=0;b<e.selectedDates.length;b++){var M=e.selectedDates[b];if(M instanceof Date&&zt(M,f)===0)return""+b}return!1}function oh(f){return e.config.mode!=="range"||e.selectedDates.length<2?!1:zt(f,e.selectedDates[0])>=0&&zt(f,e.selectedDates[1])<=0}function Eo(){e.config.noCalendar||e.isMobile||!e.monthNav||(e.yearElements.forEach(function(f,b){var M=new Date(e.currentYear,e.currentMonth,1);M.setMonth(e.currentMonth+b),e.config.showMonths>1||e.config.monthSelectorType==="static"?e.monthElements[b].textContent=vo(M.getMonth(),e.config.shorthandCurrentMonth,e.l10n)+" ":e.monthsDropdownContainer.value=M.getMonth().toString(),f.value=M.getFullYear().toString()}),e._hidePrevMonthArrow=e.config.minDate!==void 0&&(e.currentYear===e.config.minDate.getFullYear()?e.currentMonth<=e.config.minDate.getMonth():e.currentYear<e.config.minDate.getFullYear()),e._hideNextMonthArrow=e.config.maxDate!==void 0&&(e.currentYear===e.config.maxDate.getFullYear()?e.currentMonth+1>e.config.maxDate.getMonth():e.currentYear>e.config.maxDate.getFullYear()))}function $a(f){var b=f||(e.config.altInput?e.config.altFormat:e.config.dateFormat);return e.selectedDates.map(function(M){return e.formatDate(M,b)}).filter(function(M,N,W){return e.config.mode!=="range"||e.config.enableTime||W.indexOf(M)===N}).join(e.config.mode!=="range"?e.config.conjunction:e.l10n.rangeSeparator)}function _n(f){f===void 0&&(f=!0),e.mobileInput!==void 0&&e.mobileFormatStr&&(e.mobileInput.value=e.latestSelectedDateObj!==void 0?e.formatDate(e.latestSelectedDateObj,e.mobileFormatStr):""),e.input.value=$a(e.config.dateFormat),e.altInput!==void 0&&(e.altInput.value=$a(e.config.altFormat)),f!==!1&&Fe("onValueUpdate")}function ah(f){var b=jt(f),M=e.prevMonthNav.contains(b),N=e.nextMonthNav.contains(b);M||N?_(M?-1:1):e.yearElements.indexOf(b)>=0?b.select():b.classList.contains("arrowUp")?e.changeYear(e.currentYear+1):b.classList.contains("arrowDown")&&e.changeYear(e.currentYear-1)}function sh(f){f.preventDefault();var b=f.type==="keydown",M=jt(f),N=M;e.amPM!==void 0&&M===e.amPM&&(e.amPM.textContent=e.l10n.amPM[$t(e.amPM.textContent===e.l10n.amPM[0])]);var W=parseFloat(N.getAttribute("min")),Q=parseFloat(N.getAttribute("max")),ye=parseFloat(N.getAttribute("step")),ne=parseInt(N.value,10),De=f.delta||(b?f.which===38?1:-1:0),te=ne+ye*De;if(typeof N.value<"u"&&N.value.length===2){var de=N===e.hourElement,Ae=N===e.minuteElement;te<W?(te=Q+te+$t(!de)+($t(de)&&$t(!e.amPM)),Ae&&ee(void 0,-1,e.hourElement)):te>Q&&(te=N===e.hourElement?te-Q-$t(!e.amPM):W,Ae&&ee(void 0,1,e.hourElement)),e.amPM&&de&&(ye===1?te+ne===23:Math.abs(te-ne)>ye)&&(e.amPM.textContent=e.l10n.amPM[$t(e.amPM.textContent===e.l10n.amPM[0])]),N.value=ut(te)}}return i(),e}function ii(n,t){for(var e=Array.prototype.slice.call(n).filter(function(a){return a instanceof HTMLElement}),r=[],i=0;i<e.length;i++){var o=e[i];try{if(o.getAttribute("data-fp-omit")!==null)continue;o._flatpickr!==void 0&&(o._flatpickr.destroy(),o._flatpickr=void 0),o._flatpickr=rp(o,t||{}),r.push(o._flatpickr)}catch(a){console.error(a)}}return r.length===1?r[0]:r}typeof HTMLElement<"u"&&typeof HTMLCollection<"u"&&typeof NodeList<"u"&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(n){return ii(this,n)},HTMLElement.prototype.flatpickr=function(n){return ii([this],n)});var We=function(n,t){return typeof n=="string"?ii(window.document.querySelectorAll(n),t):n instanceof Node?ii([n],t):ii(n,t)};We.defaultConfig={};We.l10ns={en:ht({},Sa),default:ht({},Sa)};We.localize=function(n){We.l10ns.default=ht(ht({},We.l10ns.default),n)};We.setDefaults=function(n){We.defaultConfig=ht(ht({},We.defaultConfig),n)};We.parseDate=Pa({});We.formatDate=Yc({});We.compareDates=zt;typeof jQuery<"u"&&typeof jQuery.fn<"u"&&(jQuery.fn.flatpickr=function(n){return ii(this,n)});Date.prototype.fp_incr=function(n){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(typeof n=="string"?parseInt(n,10):n))};typeof window<"u"&&(window.flatpickr=We);var Ud=We;var Ra=class{constructor(t,e){this.dateInputEl=t;A(this,"minDate");A(this,"maxDate");A(this,"defaultReservationDays");A(this,"hasPrices",!1);A(this,"prices",{});A(this,"availability",{});A(this,"disabledDates",[]);A(this,"selectedStartDate");A(this,"selectedEndDate");A(this,"config");A(this,"instance");A(this,"destroyInstance");A(this,"currentDate");A(this,"handleResize",()=>{let t=this.isMobileDevice();(t&&this.config.grid!==1||!t&&this.config.grid!==2)&&(this.config.grid=t?1:2,this.config.calendars=t?1:2,this.destroyInstance&&this.destroyInstance(),this.initialize())});this.isMobileDevice()&&(e.grid=1,e.calendars=1),this.dateInputEl=t,this.defaultReservationDays=e.defaultReservationDays??3;let r=e.startWithEmptyDates??!1;this.config={...e,type:e.type,showPrices:e.showPrices??!1,defaultReservationDays:this.defaultReservationDays,grid:e.grid??2,calendars:e.calendars??2,darkMode:e.darkMode??!0,tooltip:e.tooltip??!0,repick:e.repick??!1,minDays:e.minDays??1,defaultStartDate:e.defaultStartDate??J.getCurrentDate(),defaultEndDate:e.defaultEndDate??J.getCurrentDate(),startWithEmptyDates:r},this.currentDate=J.getCurrentDate(),this.selectedStartDate=r?null:this.config.defaultStartDate,this.selectedEndDate=r?null:this.config.defaultEndDate}isMobileDevice(){return window.innerWidth<=768}initialize(){switch(window.addEventListener("resize",this.handleResize),this.config.type){case"easepick":this.initEasepickCalendar();break;case"flatpickr":this.initFlatpickrCalendar();break;default:throw new Error(`Unsupported calendar type: ${this.config.type}`)}}setMinimumDate(t){this.minDate=t}setMaximumDate(t){this.maxDate=t}setStartDate(t){let e=J.toJSDate(t),r=this.selectedEndDate?J.toJSDate(this.selectedEndDate):e;this.selectedStartDate=t,this.instance instanceof _a.Core?this.instance.setStartDate(new ge(t.toString())):this.config.type==="flatpickr"&&this.instance.setDate([e,r],!0)}setEndDate(t){let e=this.selectedStartDate?J.toJSDate(this.selectedStartDate):J.toJSDate(t),r=J.toJSDate(t);this.selectedEndDate=t,this.instance instanceof _a.Core?this.instance.setEndDate(new ge(t.toString())):this.config.type==="flatpickr"&&this.instance.setDate([e,r],!0)}setDateRange(t,e){if(this.config.type==="flatpickr"){this.selectedStartDate=t,this.selectedEndDate=e;let r=J.toJSDate(t),i=J.toJSDate(e);this.instance.setDate([r,i],!0);return}this.setStartDate(t),this.setEndDate(e)}getSelectedDates(){return{startDate:this.selectedStartDate,endDate:this.selectedEndDate}}includePrices(t=!0){this.hasPrices=t}setPrices(t){this.prices=t}setAvailability(t){this.availability=t,this.disabledDates=Object.keys(t).filter(e=>!t[e])}initEasepickCalendar(){let t={tooltip:this.config.tooltip,repick:this.config.repick,tooltipNumber:i=>i-1,locale:{one:"nuit",other:"nuits"}};this.config.startWithEmptyDates||(t.startDate=new ge(this.config.defaultStartDate.toString()),t.endDate=new ge(this.config.defaultEndDate.toString()));let e={element:this.dateInputEl,css:["https://cdn.jsdelivr.net/npm/@easepick/bundle@1.2.1/dist/index.css"],zIndex:10,format:ed,grid:this.config.grid,calendars:this.config.calendars,header:"",lang:document.documentElement.lang,RangePlugin:t,LockPlugin:{minDate:new ge(this.minDate.toString()),minDays:this.config.minDays,selectForward:!0},AmpPlugin:{darkMode:this.config.darkMode},plugins:[Ea,Da,wa],setup:i=>{i.on("view",o=>{let{view:a,date:s,target:c}=o.detail,u=s?s.format("YYYY-MM-DD"):null;if(a==="CalendarDay"&&u&&this.prices[u]){let h=this.prices[u],p=c.querySelector(`.${ua}`)||document.createElement("span");p.className=ua,p.textContent=`${h.toLocaleString(Ve,{style:"currency",currency:"EUR",maximumFractionDigits:0})}`,p.style.color="#c64509",p.style.fontWeight="bold",p.style.fontSize="10px",c.append(p)}}),i.on("select",o=>{let{start:a,end:s}=o.detail;this.selectedStartDate=J.fromString(a.format("YYYY-MM-DD")),this.selectedEndDate=J.fromString(s.format("YYYY-MM-DD"));let c={startDate:a.format("YYYY-MM-DD").toString(),endDate:s.format("YYYY-MM-DD").toString()};Je("date:changed",c)})}},r=new _a.create(e);this.instance=r,this.destroyInstance=()=>r.destroy()}initFlatpickrCalendar(){let t=document.createElement("link");t.rel="stylesheet",t.href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.css",document.head.appendChild(t);let e=Xu(),r={mode:"range",showMonths:this.config.calendars,minDate:this.minDate.toString(),shorthandCurrentMonth:!0,monthSelectorType:"static",inline:!1,dateFormat:td,locale:{months:{shorthand:e,longhand:e}},zIndex:10,disable:this.disabledDates};this.config.startWithEmptyDates||(r.defaultDate=[this.config.defaultStartDate.toString(),this.config.defaultEndDate.toString()]),Object.assign(r,{onChange:o=>{let a=q("label",this.dateInputEl);if(o.length===1){if(this.selectedStartDate=J.fromJSDate(o[0]),this.selectedEndDate=null,Je("date:changed",{startDate:this.selectedStartDate.toString(),endDate:""}),a){let s=this.formatDate(o[0]);a.textContent=s}}else if(o.length===2){this.selectedStartDate=J.fromJSDate(o[0]),this.selectedEndDate=J.fromJSDate(o[1]);let s={startDate:this.selectedStartDate.toString(),endDate:this.selectedEndDate.toString()};if(Je("date:changed",s),a){let c=this.formatDate(o[0]),u=this.formatDate(o[1]);a.textContent=`${c} - ${u}`}}else this.selectedStartDate?a&&(a.textContent=this.formatDate(J.toJSDate(this.selectedStartDate))):(this.selectedEndDate=null,Je("date:changed",{startDate:"",endDate:""}),a&&(a.textContent="Choose your dates"))},onDayCreate:async(o,a,s,c)=>{let u=c.dateObj,h=J.fromJSDate(u),p=J.formatForAPI(h);if(this.prices[p]){let y=this.prices[p],w=document.createElement("span");w.style.marginTop="2px",w.style.color="#c64509",w.style.fontSize="10px",w.style.fontWeight="bold",w.className=ua,w.textContent=`${y.toLocaleString(Ve,{style:"currency",currency:"EUR",maximumFractionDigits:0})}`,c.style.display="flex",c.style.flexDirection="column",c.style.alignItems="center",c.style.justifyContent="center",c.style.lineHeight="1.1",c.appendChild(w)}}});let i=Ud(this.dateInputEl,r);this.instance=i,this.destroyInstance=()=>i.destroy()}clear(){this.selectedStartDate=null,this.selectedEndDate=null,this.config.type==="flatpickr"&&this.instance.clear?.()}destroy(){window.removeEventListener("resize",this.handleResize),this.destroyInstance&&this.destroyInstance()}formatDate(t){let e=J.fromJSDate(t),r=e.year,i=String(e.month).padStart(2,"0"),o=String(e.day).padStart(2,"0");return Ve==="en"?`${r}/${i}/${o}`:Ve==="fr-FR"||Ve==="de"?`${o}/${i}/${r}`:`${r}/${i}/${o}`}};var xa=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"nightsCountElement");A(this,"startDateElement");A(this,"endDateElement");A(this,"dateElement");A(this,"roomsWrapperElement");A(this,"roomElementTemplate");A(this,"addRoomElement");A(this,"rooms",[]);A(this,"includePrices",nd);A(this,"populateCalendarInput",async()=>{if(!this.dateElement){console.error("Date element not found");return}let t=new Ra(this.dateElement,{type:"flatpickr",showPrices:!0,defaultReservationDays:3,grid:2,calendars:2,darkMode:!1,tooltip:!0,repick:!1,minDays:1,defaultStartDate:H.startDate||Tr,defaultEndDate:H.endDate||ei});if(t.setMinimumDate(Tr),t.setMaximumDate(ei),t.includePrices(this.includePrices),this.includePrices){let e=await Bd([this.parentComponent.apartmentProperties.enterpriseId]);t.setPrices(e)}return t.initialize(),t});rr("date:changed",e=>{H.updateStartDate(J.fromString(e.startDate)),H.updateEndDate(J.fromString(e.endDate))}),this.element=q("details-box"),this.nightsCountElement=q("nights",this.element),this.startDateElement=q("start-date",this.element),this.endDateElement=q("end-date",this.element),this.dateElement=q("date-element",this.element),this.roomsWrapperElement=q("room-box-wrapper",this.element),this.roomElementTemplate=q("room-box",this.element),this.addRoomElement=q("add-room-button",this.element)}init(){console.log("Initialize DetailsSection"),this.updateDOM(),this.populateCalendarInput()}updateDOM(){Rt(()=>{this.startDateElement.textContent=H.startDate?J.formatForDisplay(H.startDate):"?"}),Rt(()=>{this.endDateElement.textContent=H.endDate?J.formatForDisplay(H.endDate):"?"}),Rt(()=>{this.nightsCountElement.textContent=`${H.nightsCount} ${Se("night").toLowerCase()}${H.nightsCount>1?"s":""}`}),Rt(()=>{let t=document.createDocumentFragment();H.rooms.forEach((r,i)=>{let o=Yt(this.roomElementTemplate,!0),a=q("room",o);a.textContent=`${Se("apartment")} ${i+1}`;let s=q("categories-wrapper",o),c=q("age-category",s),u=document.createDocumentFragment();r.forEach(p=>{let y=Yt(c,!0),w=q("category-name",y);w.textContent=p.name;let T=q("input",y);po(T,p.value.toString()),lt(y,"click",C=>{C.preventDefault();let x=i;switch(od(C.target)){case"decrement":if(p.isAdult){if(r.filter(K=>K.isAdult).reduce((K,G)=>K+G.value,0)>1&&p.value>0){let K=H.rooms.map((G,ee)=>ee===x?G.map(oe=>oe.ageCategoryId===p.ageCategoryId?{...oe,value:oe.value-1}:{...oe}):G);H.updateRooms(K)}}else if(p.value>0){let $=H.rooms.map((K,G)=>G===x?K.map(ee=>ee.ageCategoryId===p.ageCategoryId?{...ee,value:ee.value-1}:{...ee}):K);H.updateRooms($)}break;case"increment":if(this.computations(r).hasCapacity){let $=H.rooms.map((K,G)=>G===x?K.map(ee=>ee.ageCategoryId===p.ageCategoryId?{...ee,value:ee.value+1}:{...ee}):K);H.updateRooms($)}break}},{once:!1}),u.appendChild(y)}),s.innerHTML="",s.appendChild(u);let h=q("remove-room-button",o);h&&(h.classList.toggle("hide",H.rooms.length<=1),lt(h,"click",p=>{p.preventDefault();let y=H.rooms.filter((w,T)=>T!==i);H.updateRooms(y)})),t.appendChild(o)}),this.roomsWrapperElement.innerHTML="",this.roomsWrapperElement.appendChild(t);let{maxAllowedRooms:e}={maxAllowedRooms:H.maxAllowedRooms};console.log(`<<debug>> Current rooms: ${H.rooms.length}, Max allowed rooms: ${e}, Available rooms: ${this.parentComponent.apartmentProperties.availableRooms}`),e>0&&H.rooms.length>=e?(console.log(`<<debug>> Hiding add room button: current rooms ${H.rooms.length} >= max allowed ${e}`),this.addRoomElement.classList.add("hide")):e<=0?(console.log(`<<debug>> Max allowed rooms is non-positive (${e}), using available rooms ${this.parentComponent.apartmentProperties.availableRooms} as limit`),H.rooms.length>=this.parentComponent.apartmentProperties.availableRooms&&(console.log(`<<debug>> Hiding add room button: current rooms ${H.rooms.length} >= available rooms ${this.parentComponent.apartmentProperties.availableRooms}`),this.addRoomElement.classList.add("hide"))):(console.log(`<<debug>> Showing add room button: current rooms ${H.rooms.length} < max allowed or available rooms`),this.addRoomElement.classList.remove("hide"))}),lt(this.addRoomElement,"click",t=>{t.preventDefault();let{maxAllowedRooms:e}={maxAllowedRooms:H.maxAllowedRooms};if(H.rooms.length<e){let i=H.ageCategories.map(a=>{let s=a.classification.toLowerCase()==="adult",c=s?Se("adults"):Se("children"),u=s?1:0;return{isAdult:s,ageCategoryId:a.id,name:c,value:u}}),o=[...H.rooms,i];H.updateRooms(o)}})}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t)}computations(t){let e=t.some(a=>a.value>0),r=t.reduce((a,s)=>a+s.value,0),i=r<this.parentComponent.apartmentProperties.capacity,o=t.filter(a=>a.isAdult).reduce((a,s)=>a+s.value,0);return{hasOccupants:e,totalOccupants:r,hasCapacity:i,totalAdults:o}}};var Vd=(n,t)=>{let e={method:"POST",headers:le.headers,body:JSON.stringify(t)};return Qe("/images/getUrls",e,n)};function qd(n){return n.ImageUrls.map(t=>({url:t.Url,imageId:t.ImageId}))}var oi=Ze({}),Wd=new Set,$c=new Map,Kd={width:160,height:160};function op(n,t){return`${n}:${[...t].sort().join(",")}`}async function Gd(n,t){let e=t.filter(Boolean);if(e.length===0)return[];let r=e.filter(s=>!oi.value[s]&&!Wd.has(s));if(r.length===0)return e.map(s=>oi.value[s]).filter(Boolean);let i=op(n,r),o=$c.get(i);if(o)return o;let a=(async()=>{try{let s=await Vd(n,{Images:r.map(u=>({ImageId:u,Width:Kd.width,Height:Kd.height,ResizeMode:"Cover"}))});return qd(s).forEach(u=>{oi.value[u.imageId]=u}),e.map(u=>oi.value[u]).filter(Boolean)}catch(s){return r.forEach(c=>Wd.add(c)),console.error("[imageStore] Failed to load images:",s),e.map(c=>oi.value[c]).filter(Boolean)}finally{$c.delete(i)}})();return $c.set(i,a),a}function Zd(n){return oi.value[n]||null}var Aa=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"productsWrapperElement");A(this,"productTemplateElement");A(this,"productTemplateHTML");A(this,"showMoreButtonElement");A(this,"requestedImageKeys",new Set);A(this,"visibleProductCount",4);A(this,"lastProductIdsKey","");this.element=q("options-box"),this.productsWrapperElement=q("options-list",this.element),this.productTemplateElement=q("option-wrapper",this.element),this.productTemplateHTML=this.productTemplateElement.outerHTML,this.showMoreButtonElement=q("more-button",this.element)}init(){try{this.updateDOM(),lt(this.showMoreButtonElement,"click",t=>{t.preventDefault();let e=this.showMoreProducts(3);this.showMoreButtonElement.classList.toggle("hide",!e)})}catch(t){console.error("Error initializing OptionsSection:",t)}}refresh(){try{if(this.canPatchExistingDOM()){this.patchDOM();return}this.updateDOM()}catch(t){console.error("Error refreshing OptionsSection:",t)}}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t)}updateDOM(){let t=H.sortedProducts,e=t.map(i=>i.id).join(",");e!==this.lastProductIdsKey&&(this.visibleProductCount=4,this.lastProductIdsKey=e);let r=document.createDocumentFragment();t.forEach((i,o)=>{let a=document.createElement("div");a.innerHTML=this.productTemplateHTML;let s=a.firstElementChild;s.classList.remove("hide"),s.style.removeProperty("display"),s.style.order=String(o),s.removeAttribute("id"),s.dataset.productId=i.id;let c=q("name",s);c.textContent=i.name||"";let u=q("price",s);u.textContent=i.price.toLocaleString(Ve,{style:"currency",currency:"EUR"});let h=q("label",s);h.textContent=Se(`chargingMode:${i.chargingMode}`),this.applyProductImage(this.parentComponent.apartmentProperties.enterpriseId,i.imageIds,s);let p=q("checkbox",s);p.name=`addon-${i.id}`,p.id=`addon-${i.id}`,this.syncProductCheckboxState(p,i.selected),lt(p,"change",()=>{let y=p.checked;this.syncProductCheckboxState(p,y);let w=H.products.map(T=>T.id===i.id?{...T,selected:y}:T);H.updateProducts(w)}),r.appendChild(s)}),Ac(this.productsWrapperElement),this.productsWrapperElement.appendChild(r),this.syncProductVisibility(),this.showMoreButtonElement.classList.toggle("hide",t.length<=this.visibleProductCount)}canPatchExistingDOM(){let t=H.sortedProducts;return t.length!==this.productsWrapperElement.children.length?!1:t.every((e,r)=>this.productsWrapperElement.children[r]?.dataset.productId===e.id)}patchDOM(){let t=H.sortedProducts;t.forEach((e,r)=>{let i=this.productsWrapperElement.children[r];i.style.order=String(r);let o=q("name",i);o.textContent=e.name||"";let a=q("price",i);a.textContent=e.price.toLocaleString(Ve,{style:"currency",currency:"EUR"});let s=q("label",i);s.textContent=Se(`chargingMode:${e.chargingMode}`);let c=q("checkbox",i);this.syncProductCheckboxState(c,e.selected)}),this.syncProductVisibility(),this.showMoreButtonElement.classList.toggle("hide",t.length<=this.visibleProductCount)}syncProductVisibility(){Array.from(this.productsWrapperElement.children).forEach((t,e)=>{t.classList.toggle("hide",e>=this.visibleProductCount)})}syncProductCheckboxState(t,e){t.checked=e,t.previousElementSibling?.classList.toggle("w--redirected-checked",e)}applyProductImage(t,e,r){let i=e.filter(Boolean);if(i.length===0)return;let o=q("image",r);if(!o)return;o.loading="eager";let a=i.map(c=>Zd(c)).find(c=>c?.url);if(a){o.src=a.url;return}let s=`${t}:${i.join(",")}`;this.requestedImageKeys.has(s)||(this.requestedImageKeys.add(s),Gd(t,i).then(c=>{let u=c[0]?.url;o.isConnected&&u&&(o.src=u)}))}showMoreProducts(t=3){let e=Array.from(this.productsWrapperElement.children),r=e.length,i=this.visibleProductCount;return this.visibleProductCount=Math.min(this.visibleProductCount+t,r),e.slice(i,this.visibleProductCount).forEach(o=>{o.classList.remove("hide")}),this.visibleProductCount<r}};var Jd=(n,t)=>{let e=`${le.bookingEngine_url}/reservationGroups/create`,r={method:"POST",headers:le.headers,body:JSON.stringify(t)};return fetch(e,r).then(o=>o.json())};var La=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"modalContent");A(this,"modalBg");A(this,"openModalBtn");A(this,"closeModalBtn");A(this,"fNameInput");A(this,"lNameInput");A(this,"emailInput");A(this,"phoneInput");A(this,"countryInput");A(this,"notesInput");A(this,"submitPaymentBtn");A(this,"customer",null);this.element=q("payment-modal"),this.modalContent=q("modal-content",this.element),this.modalBg=q("modal-bg",this.element),this.openModalBtn=q("open-modal"),this.closeModalBtn=q("close-modal"),this.fNameInput=q("fname-input",this.element),this.lNameInput=q("lname-input",this.element),this.emailInput=q("email-input",this.element),this.phoneInput=q("phone-input",this.element),this.countryInput=q("country-input",this.element),this.notesInput=q("notes-input",this.element),this.submitPaymentBtn=q("submit-payment",this.element)}init(){console.log("Initialize PaymentModal"),this.updateDOM()}updateDOM(){lt(this.openModalBtn,"click",()=>{this.openModalBtn.hasAttribute("disabled")||(this.toggleVisibility(!0),this.element.scrollIntoView({behavior:"smooth"}))}),this.submitPaymentBtn?lt(this.submitPaymentBtn,"click",t=>{t.preventDefault(),this.handleSubmit()}):console.error("Submit Payment button not found in the DOM.")}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t),t?(this.element.style.display="flex",this.element.style.opacity="1",this.modalContent.style.opacity="1",this.element.querySelectorAll("div").forEach(e=>{e.style.opacity="1"})):(this.element.style.opacity="0",this.element.style.display="none")}validateInputs(){if(!this.fNameInput.value||!this.lNameInput.value||!this.emailInput.value||!this.phoneInput.value||!this.countryInput.value)throw new Error("First name, last name, email, phone, and nationality are required.");if(!this.emailInput.checkValidity())throw new Error("Invalid email format.");if(!this.phoneInput.checkValidity())throw new Error("Invalid phone number format. Only numbers and spaces are allowed.");if(!this.countryInput.value)throw new Error("Country is required.")}async handleSubmit(){if(!H.startDate||!H.endDate)throw new Error("Start date and end date are required to submit the payment form.");try{this.validateInputs()}catch(s){console.error("Validation error:",s),alert(s instanceof Error?s.message:"An unexpected error occurred.");return}let{startDate:t,endDate:e}={startDate:H.startDate,endDate:H.endDate};this.customer={Email:this.emailInput.value,FirstName:this.fNameInput.value,LastName:this.lNameInput.value,Telephone:this.phoneInput.value,NationalityCode:this.countryInput.value,SendMarketingEmails:!1};let r={Client:le.bookingEngineClient,HotelId:this.parentComponent.apartmentProperties.enterpriseId,Customer:this.customer,Reservations:H.rooms.map(s=>({RoomCategoryId:this.parentComponent.apartmentProperties.categoryId,StartUtc:J.formatForAPI(t.toString()),EndUtc:J.formatForAPI(e.toString()),VoucherCode:H.couponCode||void 0,RateId:H.selectedRateId||"",AdultCount:s.filter(c=>c.isAdult).reduce((c,u)=>c+u.value,0),ChildCount:s.filter(c=>!c.isAdult).reduce((c,u)=>c+u.value,0),ProductIds:H.selectedProducts.map(c=>c.id),Notes:this.notesInput.value||""}))};console.log("Payload for reservation group:",r);let i=JSON.stringify(r,null,2);console.log("JSON Payload:",i);let o=this.submitPaymentBtn.textContent?.trim()??Se("proceedToPayment");this.submitPaymentBtn.textContent=Se("completePayment"),this.submitPaymentBtn.classList.add("is-disabled");let a=await Jd(this.parentComponent.apartmentProperties.enterpriseId,r);if(console.log("Reservation Response:",a),"PaymentRequestId"in a&&a.PaymentRequestId){let c=Dn().iso639,u=Qu(c),h=new URL(window.location.href);h.pathname=c==="fr"?"/reservation-confirmee":`/${c}/confirmed-reservation`;let p=`https://app.mews.com/navigator/payment-requests/detail/${a.PaymentRequestId}?ccy=EUR&language=${encodeURIComponent(u)}&returnUrl=${btoa(h.toString())}`;console.log("Payment URL:",p),window.open(p,"_blank")}else if("Id"in a&&a.Id){console.log("Free reservation created successfully:",a);let c=Dn().iso639,u=new URL(window.location.href);u.pathname=c==="fr"?"/reservation-confirmee":`/${c}/confirmed-reservation`,u.searchParams.set("reservationId",a.Id),console.log("Confirmation URL:",u.toString()),window.location.href=u.toString()}else{this.submitPaymentBtn.classList.remove("is-disabled"),this.submitPaymentBtn.textContent=o;let s="Message"in a&&a.Message?a.Message:"Reservation could not be created. Please try again later or contact Support.";console.error("Reservation creation failed:",a),alert(s);return}}};var Xd=(n,t)=>{let e=`${le.bookingEngine_url}/vouchers/validate`,r={method:"POST",headers:le.headers,body:JSON.stringify(t)};return Fn(e,r,n)};var Na=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"summaryItemWrapperElement");A(this,"summaryItemElement");A(this,"itemNameTemplateElement");A(this,"itemRowTemplateElement");A(this,"totalPriceElement");A(this,"taxElement");A(this,"submitElement");A(this,"couponInputElement");A(this,"couponApplyElement");A(this,"statusTextElement");rr("loading:start",e=>ir(!0,e)),rr("loading:end",e=>ir(!1,e)),this.element=q("summary-box"),this.summaryItemWrapperElement=q("summary-items-wrapper",this.element),this.summaryItemElement=q("summary-item",this.summaryItemWrapperElement),this.itemNameTemplateElement=q("name",this.summaryItemElement),this.itemRowTemplateElement=q("row",this.summaryItemElement),this.totalPriceElement=q("total",this.element),this.taxElement=q("tax",this.element),this.submitElement=q("submit",this.element),this.couponInputElement=q("coupon-input",this.element),this.couponApplyElement=q("apply-coupon",this.element),this.statusTextElement=q("status-text",this.element)}init(){this.updateDOM(),Je("loading:end",this.element)}refresh(){Je("loading:end",this.element)}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t),Array.from(this.element.children).forEach(e=>{e instanceof HTMLDivElement&&e.classList.toggle("hide",!t)})}updateDOM(){lt(this.couponInputElement,"input",()=>{H.updateCouponCode(xc(this.couponInputElement))}),lt(this.couponApplyElement,"click",async t=>{t.preventDefault(),Je("loading:start",this.element),Xd(this.parentComponent.apartmentProperties.enterpriseId,{Client:le.bookingEngineClient,HotelId:this.parentComponent.apartmentProperties.enterpriseId,VoucherCode:H.couponCode}).then(async e=>{let{IsValid:r}=e;if(this.statusTextElement.textContent=r?Se("couponValid"):Se("couponInvalid"),this.statusTextElement.style.color=r?"#1bcb00":"#f44900",r)try{Je("loading:start",this.element),await this.parentComponent.fetchReservationPricing(),console.log("Reservation pricing updated with voucher code")}catch(i){console.error("Error updating reservation pricing with voucher code:",i),this.statusTextElement.textContent=Se("couponError"),this.statusTextElement.style.color="#f44900"}}).catch(e=>{console.error("Error validating coupon:",e),this.statusTextElement.textContent=Se("couponError"),this.statusTextElement.style.color="#f44900"}).finally(()=>{Je("loading:end",this.element),this.statusTextElement.classList.toggle("hide",!1)})}),Rt(()=>{this.couponInputElement.value!==H.couponCode&&po(this.couponInputElement,H.couponCode);let e=H.getReadonlyState().computed.summary;if(H.isFetching){ir(!0,this.element);return}ir(!1,this.element),this.summaryItemWrapperElement.innerHTML="",e.items.forEach(i=>{let o=this.summaryItemElement.cloneNode(!0),a=q("name",o),s=q("row",o),c=document.createDocumentFragment(),u=i.occupancy.adults||0,h=i.occupancy.children||0,p=Yt(a,!0);p.textContent=`[${u} ${Se("adults").toLowerCase()}${h>0?`, ${h} ${Se("children").toLowerCase()}`:""}] x ${i.quantity}`,c.appendChild(p);let y=Yt(a,!0);y.textContent=`${i.pricing.avgPerNight.toLocaleString(Ve,{style:"currency",currency:"EUR"})}/ ${Se("night")}`,c.appendChild(y);let w=Yt(s,!0),T=q("label",w),C=q("price",w);if(T.textContent=`${Se("pricingService")} (${H.nightsCount} ${Se("night").toLowerCase()}${H.nightsCount>1?"s":""}):`,C.textContent=i.pricing.service.toLocaleString?.(Ve,{style:"currency",currency:"EUR"})??null,c.appendChild(w),H.selectedProducts.length>0){let ce=Yt(s,!0),F=q("label",ce);q("price",ce).remove();let Y=H.selectedProducts.map(se=>se.name).join(", ");F.textContent=`${Se("pricingProducts")} ${Y}`,c.appendChild(ce)}let x=Yt(s,!0),$=q("label",x);$.textContent=Se("pricingProductsAndExtras");let K=q("price",x);K.textContent=i.pricing.products.toLocaleString(Ve,{style:"currency",currency:"EUR"}),c.appendChild(x);let G=Yt(s,!0),ee=q("label",G);ee.textContent=Se("pricingTaxes");let oe=q("price",G);oe.textContent=i.pricing.taxes.toLocaleString(Ve,{style:"currency",currency:"EUR"}),c.appendChild(G);let ae=Yt(s,!0),Pe=q("label",ae);Pe.textContent=Se("pricingSubtotal");let Te=q("price",ae);Te.textContent=i.pricing.subtotal.toLocaleString(Ve,{style:"currency",currency:"EUR"}),c.appendChild(ae),o.innerHTML="",o.appendChild(c),this.summaryItemWrapperElement.appendChild(o)});let r=e.totals.taxes||0;this.taxElement.textContent=r>0?r.toLocaleString(Ve,{style:"currency",currency:"EUR"}):"--",this.totalPriceElement.textContent=e.totals.grandTotal.toLocaleString(Ve,{style:"currency",currency:"EUR"})})}};var Oa=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"tariffsWrapperElement");A(this,"tariffTemplateElement");this.element=q("offer-box"),this.tariffsWrapperElement=q("offers-list",this.element),this.tariffTemplateElement=q("offer-wrapper",this.element)}init(){this.updateDOM()}refresh(){}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t)}updateDOM(){Rt(()=>{if(H.isFetching){console.log("[TariffsSection] Skipping render during fetch operation");return}if(H.computedRates.length===0){console.log("[TariffsSection] No computed rates available, skipping render");return}console.log("[TariffsSection] Rendering tariffs:",{ratesCount:H.computedRates.length,isFetching:H.isFetching});let t=document.createDocumentFragment(),e=H.computedRates.sort((a,s)=>{let c=a.price?.AverageAmountPerTimeUnit?.GrossValue||0,u=s.price?.AverageAmountPerTimeUnit?.GrossValue||0;return c-u}),r=H.selectedRateId,i=r!==null&&e.some(a=>a.id===r),o=i?r:e[0]?.id;!i&&o&&queueMicrotask(()=>H.updateSelectedRateId(o)),e.forEach(a=>{let s=Yt(this.tariffTemplateElement,!0);s.removeAttribute("id");let c=q("name",s);c.textContent=a.name;let u=q("description",s);u.textContent=a.description;let h=q("price",s),p=a.price?.AverageAmountPerTimeUnit?.GrossValue||0;h.textContent=p.toLocaleString(Ve,{style:"currency",currency:"EUR"});let y=H.rates.find($=>$.id===a.id),w=q("label",s),T=q("discount-badge",s),C=q("discount-label",T);if(y)if(w.textContent=y.shortName,y.pricing?.DependentRatePricing){let $=y.pricing?.DependentRatePricing.RelativeAdjustment*100;$===0?T.classList.add("hide"):C.textContent=`${$>0?"+":""}${$}%`}else T.classList.add("hide");else w.classList.add("hide"),T.classList.add("hide");let x=q("radio-input",s);x.value=a.id,a.id===o&&(x.checked=!0,x.previousElementSibling?.classList.add("w--redirected-checked")),lt(x,"change",()=>{x.checked&&H.updateSelectedRateId(a.id)}),t.appendChild(s)}),this.tariffsWrapperElement.innerHTML="",this.tariffsWrapperElement.appendChild(t)})}};var Ha=class{constructor(t){A(this,"apartmentProperties");A(this,"detailsSection");A(this,"optionsSection");A(this,"tariffsSection");A(this,"summarySection");A(this,"paymentModal");rr("loading:start",e=>ir(!0,e)),rr("loading:end",e=>ir(!1,e)),this.apartmentProperties=t,H.setCmsApartmentData(t)}init(){Je("loading:start",document.body);let t=Ft.startDate?J.safeParsePlainDate(Ft.startDate):Tr,e=Ft.endDate?J.safeParsePlainDate(Ft.endDate):ei,r=t&&e?t.until(e).days:0,i=r>=1?t:Tr,o=r>=1?e:ei;i&&H.updateStartDate(i),o&&H.updateEndDate(o),this.fetchAPIData().then(()=>this.parseAPIData()).then(()=>this.initUIComponents()).catch(a=>{console.error("[ReservationComponent] fetchAPIData failed:",a),this.initUIComponents()}),console.log("#=> State:",H.getReadonlyState())}initUIComponents(){let t=H.rates.find(e=>e.isDefault||e.isBaseRate);console.log("#=> Default Rate:",t),H.updateSelectedRateId(t?.id||H.computedRates.find(e=>e.ordering===0&&e.groupOrdering===0)?.id||H.computedRates[0]?.id||null),this.detailsSection=new xa(this),this.detailsSection.init(),this.optionsSection=new Aa(this),this.optionsSection.toggleVisibility(!0),this.optionsSection.init(),this.tariffsSection=new Oa(this),this.tariffsSection.toggleVisibility(!0),this.tariffsSection.init(),this.summarySection=new Na(this),this.summarySection.toggleVisibility(!0),this.summarySection.init(),this.paymentModal=new La(this),this.paymentModal.toggleVisibility(!1),this.paymentModal.init(),this.initPricingButler(),this.initAvailabilityPricingUpdater(),Je("loading:end",document.body)}initPricingButler(){let t=(0,jc.default)(async()=>{console.log("[PricingButler] Fetching reservation pricing..."),await H.fetchReservationPricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId)},500);Rt(()=>{let{rooms:e}=H,{startDate:r}=H,{endDate:i}=H,{selectedProducts:o}=H,{selectedRateId:a}=H,{couponCode:s}=H;if(console.log("[PricingButler] Dependencies changed:",{roomsCount:e.length,startDate:r?.toString(),endDate:i?.toString(),selectedProductsCount:o.length,selectedRateId:a,couponCode:s}),e.length===0){console.log("[PricingButler] No rooms set, skipping pricing update.");return}if(!r||!i){console.log("[PricingButler] Start date or end date is not set, skipping pricing update.");return}if(J.isBefore(r,i)){console.log("[PricingButler] Start date is after or equal to end date, skipping pricing update.");return}t()})}initAvailabilityPricingUpdater(){let t=(0,jc.default)(async()=>{try{await H.fetchAvailability(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),await H.fetchServicePricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),Je("loading:end",document.body)}catch(e){console.error("Error updating availability and pricing data:",e)}},500);Rt(()=>{Je("loading:start",document.body);let{startDate:e,endDate:r}={startDate:H.startDate,endDate:H.endDate};if(!e||!r){console.warn("Start date or end date is not set, skipping availability and pricing updates.");return}if(J.isBefore(e,r)){console.warn("Start date is after or equal to end date, skipping API requests.");return}t()}),Rt(()=>{Je("loading:start",document.body);let{availabilities:e,servicePricing:r,isAvailable:i,restrictionMessage:o}={availabilities:H.availabilities,servicePricing:H.servicePricing,isAvailable:H.isAvailable,restrictionMessage:H.restrictionMessage};if(this.updateAvailabilityBanners(i,o),this.optionsSection&&this.optionsSection.toggleVisibility(i),this.tariffsSection&&this.tariffsSection.toggleVisibility(i),this.summarySection&&this.summarySection.toggleVisibility(i),r&&!H.selectedRateId&&H.computedRates.length>0){let a=H.rates.find(s=>s.isDefault||s.isBaseRate);H.updateSelectedRateId(a?.id||H.computedRates.find(s=>s.ordering===0&&s.groupOrdering===0)?.id||H.computedRates[0]?.id||null)}e&&r&&this.refreshUIComponents()})}async fetchAPIData(){console.log("#=> Fetching API data for reservation component..."),await H.initializeResources(this.apartmentProperties.enterpriseId),await H.initializeRooms(),await H.fetchHotel(this.apartmentProperties.enterpriseId),await H.fetchAvailability(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),await H.fetchServicePricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),await H.fetchReservationPricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),await H.fetchRates(this.apartmentProperties.enterpriseId)}async parseAPIData(){}refreshUIComponents(){if(H.computedRates.length>0&&!H.selectedRateId){let t=H.rates.find(e=>e.isDefault||e.isBaseRate);H.updateSelectedRateId(t?.id||H.computedRates.find(e=>e.ordering===0&&e.groupOrdering===0)?.id||H.computedRates[0]?.id||null)}this.updateAvailabilityBanners(H.isAvailable,H.restrictionMessage),this.optionsSection&&(this.optionsSection.toggleVisibility(H.isAvailable),this.optionsSection.refresh()),this.tariffsSection&&(this.tariffsSection.toggleVisibility(H.isAvailable),this.tariffsSection.refresh()),this.summarySection&&(this.summarySection.toggleVisibility(H.isAvailable),this.summarySection.refresh()),Je("loading:end",document.body)}updateAvailabilityBanners(t,e){let r=q("banner-box"),i=q("banner-box-restriction"),o=q("banner-restriction-text"),a=q("open-modal");a&&(!!e||!t?a.setAttribute("disabled",""):a.removeAttribute("disabled")),e?(o&&(o.textContent=e),i&&i.classList.remove("hide"),r&&r.classList.add("hide")):t?(r&&r.classList.add("hide"),i&&i.classList.add("hide")):(r&&r.classList.remove("hide"),i&&i.classList.add("hide"))}async fetchReservationPricing(){try{await H.fetchServicePricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId);let t=await H.fetchReservationPricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId);return this.refreshUIComponents(),t}catch(t){throw console.error("Error fetching reservation pricing:",t),t}}handleDateChange(t,e){return t&&e&&xe.PlainDate.compare(t,e)>=0?(console.warn("Invalid date range: start date must be before end date"),!1):(t&&H.updateStartDate(t),e&&H.updateEndDate(e),!0)}scrollToTariffsSection(){let t=document.getElementById("tariff-section");t&&setTimeout(()=>{t.scrollIntoView({behavior:"smooth",block:"start"})},300)}};function ap(){try{let n=window.WebflowCMSData_apartment;console.log("#=> Properties",n),new Ha(n).init()}catch(n){console.error("Error initializing reservation component",n)}}window.Webflow||(window.Webflow=[]);window.Webflow.push(async()=>{ap()});export{ap as initApparthotelsBookingTemplate};
7
+ `}}function D(){e.calendarContainer.classList.add("hasWeeks");var f=Ce("div","flatpickr-weekwrapper");f.appendChild(Ce("span","flatpickr-weekday",e.l10n.weekAbbreviation));var b=Ce("div","flatpickr-weeks");return f.appendChild(b),{weekWrapper:f,weekNumbers:b}}function _(f,b){b===void 0&&(b=!0);var M=b?f:f-e.currentMonth;M<0&&e._hidePrevMonthArrow===!0||M>0&&e._hideNextMonthArrow===!0||(e.currentMonth+=M,(e.currentMonth<0||e.currentMonth>11)&&(e.currentYear+=e.currentMonth>11?1:-1,e.currentMonth=(e.currentMonth+12)%12,Fe("onYearChange"),se()),Y(),Fe("onMonthChange"),Eo())}function I(f,b){if(f===void 0&&(f=!0),b===void 0&&(b=!0),e.input.value="",e.altInput!==void 0&&(e.altInput.value=""),e.mobileInput!==void 0&&(e.mobileInput.value=""),e.selectedDates=[],e.latestSelectedDateObj=void 0,b===!0&&(e.currentYear=e._initialDate.getFullYear(),e.currentMonth=e._initialDate.getMonth()),e.config.enableTime===!0){var M=Ia(e.config),N=M.hours,W=M.minutes,Q=M.seconds;w(N,W,Q)}e.redraw(),f&&Fe("onChange")}function k(){e.isOpen=!1,e.isMobile||(e.calendarContainer!==void 0&&e.calendarContainer.classList.remove("open"),e._input!==void 0&&e._input.classList.remove("active")),Fe("onClose")}function j(){e.config!==void 0&&Fe("onDestroy");for(var f=e._handlers.length;f--;)e._handlers[f].remove();if(e._handlers=[],e.mobileInput)e.mobileInput.parentNode&&e.mobileInput.parentNode.removeChild(e.mobileInput),e.mobileInput=void 0;else if(e.calendarContainer&&e.calendarContainer.parentNode)if(e.config.static&&e.calendarContainer.parentNode){var b=e.calendarContainer.parentNode;if(b.lastChild&&b.removeChild(b.lastChild),b.parentNode){for(;b.firstChild;)b.parentNode.insertBefore(b.firstChild,b);b.parentNode.removeChild(b)}}else e.calendarContainer.parentNode.removeChild(e.calendarContainer);e.altInput&&(e.input.type="text",e.altInput.parentNode&&e.altInput.parentNode.removeChild(e.altInput),delete e.altInput),e.input&&(e.input.type=e.input._type,e.input.classList.remove("flatpickr-input"),e.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(M){try{delete e[M]}catch{}})}function O(f){return e.calendarContainer.contains(f)}function X(f){if(e.isOpen&&!e.config.inline){var b=jt(f),M=O(b),N=b===e.input||b===e.altInput||e.element.contains(b)||f.path&&f.path.indexOf&&(~f.path.indexOf(e.input)||~f.path.indexOf(e.altInput)),W=!N&&!M&&!O(f.relatedTarget),Q=!e.config.ignoredFocusElements.some(function(ye){return ye.contains(b)});W&&Q&&(e.config.allowInput&&e.setDate(e._input.value,!1,e.config.altInput?e.config.altFormat:e.config.dateFormat),e.timeContainer!==void 0&&e.minuteElement!==void 0&&e.hourElement!==void 0&&e.input.value!==""&&e.input.value!==void 0&&c(),e.close(),e.config&&e.config.mode==="range"&&e.selectedDates.length===1&&e.clear(!1))}}function re(f){if(!(!f||e.config.minDate&&f<e.config.minDate.getFullYear()||e.config.maxDate&&f>e.config.maxDate.getFullYear())){var b=f,M=e.currentYear!==b;e.currentYear=b||e.currentYear,e.config.maxDate&&e.currentYear===e.config.maxDate.getFullYear()?e.currentMonth=Math.min(e.config.maxDate.getMonth(),e.currentMonth):e.config.minDate&&e.currentYear===e.config.minDate.getFullYear()&&(e.currentMonth=Math.max(e.config.minDate.getMonth(),e.currentMonth)),M&&(e.redraw(),Fe("onYearChange"),se())}}function Z(f,b){var M;b===void 0&&(b=!0);var N=e.parseDate(f,void 0,b);if(e.config.minDate&&N&&zt(N,e.config.minDate,b!==void 0?b:!e.minDateHasTime)<0||e.config.maxDate&&N&&zt(N,e.config.maxDate,b!==void 0?b:!e.maxDateHasTime)>0)return!1;if(!e.config.enable&&e.config.disable.length===0)return!0;if(N===void 0)return!1;for(var W=!!e.config.enable,Q=(M=e.config.enable)!==null&&M!==void 0?M:e.config.disable,ye=0,ne=void 0;ye<Q.length;ye++){if(ne=Q[ye],typeof ne=="function"&&ne(N))return W;if(ne instanceof Date&&N!==void 0&&ne.getTime()===N.getTime())return W;if(typeof ne=="string"){var De=e.parseDate(ne,void 0,!0);return De&&De.getTime()===N.getTime()?W:!W}else if(typeof ne=="object"&&N!==void 0&&ne.from&&ne.to&&N.getTime()>=ne.from.getTime()&&N.getTime()<=ne.to.getTime())return W}return!W}function V(f){return e.daysContainer!==void 0?f.className.indexOf("hidden")===-1&&f.className.indexOf("flatpickr-disabled")===-1&&e.daysContainer.contains(f):!1}function ue(f){var b=f.target===e._input,M=e._input.value.trimEnd()!==$a();b&&M&&!(f.relatedTarget&&O(f.relatedTarget))&&e.setDate(e._input.value,!0,f.target===e.altInput?e.config.altFormat:e.config.dateFormat)}function pe(f){var b=jt(f),M=e.config.wrap?n.contains(b):b===e._input,N=e.config.allowInput,W=e.isOpen&&(!N||!M),Q=e.config.inline&&M&&!N;if(f.keyCode===13&&M){if(N)return e.setDate(e._input.value,!0,b===e.altInput?e.config.altFormat:e.config.dateFormat),e.close(),b.blur();e.open()}else if(O(b)||W||Q){var ye=!!e.timeContainer&&e.timeContainer.contains(b);switch(f.keyCode){case 13:ye?(f.preventDefault(),c(),Ba()):zc(f);break;case 27:f.preventDefault(),Ba();break;case 8:case 46:M&&!e.config.allowInput&&(f.preventDefault(),e.clear());break;case 37:case 39:if(!ye&&!M){f.preventDefault();var ne=o();if(e.daysContainer!==void 0&&(N===!1||ne&&V(ne))){var De=f.keyCode===39?1:-1;f.ctrlKey?(f.stopPropagation(),_(De),F(Te(1),0)):F(void 0,De)}}else e.hourElement&&e.hourElement.focus();break;case 38:case 40:f.preventDefault();var te=f.keyCode===40?1:-1;e.daysContainer&&b.$i!==void 0||b===e.input||b===e.altInput?f.ctrlKey?(f.stopPropagation(),re(e.currentYear-te),F(Te(1),0)):ye||F(void 0,te*7):b===e.currentYearElement?re(e.currentYear-te):e.config.enableTime&&(!ye&&e.hourElement&&e.hourElement.focus(),c(f),e._debouncedChange());break;case 9:if(ye){var de=[e.hourElement,e.minuteElement,e.secondElement,e.amPM].concat(e.pluginElements).filter(function(Ut){return Ut}),Ae=de.indexOf(b);if(Ae!==-1){var dn=de[Ae+(f.shiftKey?-1:1)];f.preventDefault(),(dn||e._input).focus()}}else!e.config.noCalendar&&e.daysContainer&&e.daysContainer.contains(b)&&f.shiftKey&&(f.preventDefault(),e._input.focus());break;default:break}}if(e.amPM!==void 0&&b===e.amPM)switch(f.key){case e.l10n.amPM[0].charAt(0):case e.l10n.amPM[0].charAt(0).toLowerCase():e.amPM.textContent=e.l10n.amPM[0],p(),_n();break;case e.l10n.amPM[1].charAt(0):case e.l10n.amPM[1].charAt(0).toLowerCase():e.amPM.textContent=e.l10n.amPM[1],p(),_n();break}(M||O(b))&&Fe("onKeyDown",f)}function we(f,b){if(b===void 0&&(b="flatpickr-day"),!(e.selectedDates.length!==1||f&&(!f.classList.contains(b)||f.classList.contains("flatpickr-disabled")))){for(var M=f?f.dateObj.getTime():e.days.firstElementChild.dateObj.getTime(),N=e.parseDate(e.selectedDates[0],void 0,!0).getTime(),W=Math.min(M,e.selectedDates[0].getTime()),Q=Math.max(M,e.selectedDates[0].getTime()),ye=!1,ne=0,De=0,te=W;te<Q;te+=jd.DAY)Z(new Date(te),!0)||(ye=ye||te>W&&te<Q,te<N&&(!ne||te>ne)?ne=te:te>N&&(!De||te<De)&&(De=te));var de=Array.from(e.rContainer.querySelectorAll("*:nth-child(-n+"+e.config.showMonths+") > ."+b));de.forEach(function(Ae){var dn=Ae.dateObj,Ut=dn.getTime(),si=ne>0&&Ut<ne||De>0&&Ut>De;if(si){Ae.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(Cr){Ae.classList.remove(Cr)});return}else if(ye&&!si)return;["startRange","inRange","endRange","notAllowed"].forEach(function(Cr){Ae.classList.remove(Cr)}),f!==void 0&&(f.classList.add(M<=e.selectedDates[0].getTime()?"startRange":"endRange"),N<M&&Ut===N?Ae.classList.add("startRange"):N>M&&Ut===N&&Ae.classList.add("endRange"),Ut>=ne&&(De===0||Ut<=De)&&Yd(Ut,N,M)&&Ae.classList.add("inRange"))})}}function _e(){e.isOpen&&!e.config.static&&!e.config.inline&&$n()}function He(f,b){if(b===void 0&&(b=e._positionElement),e.isMobile===!0){if(f){f.preventDefault();var M=jt(f);M&&M.blur()}e.mobileInput!==void 0&&(e.mobileInput.focus(),e.mobileInput.click()),Fe("onOpen");return}else if(e._input.disabled||e.config.inline)return;var N=e.isOpen;e.isOpen=!0,N||(e.calendarContainer.classList.add("open"),e._input.classList.add("active"),Fe("onOpen"),$n(b)),e.config.enableTime===!0&&e.config.noCalendar===!0&&e.config.allowInput===!1&&(f===void 0||!e.timeContainer.contains(f.relatedTarget))&&setTimeout(function(){return e.hourElement.select()},50)}function qe(f){return function(b){var M=e.config["_"+f+"Date"]=e.parseDate(b,e.config.dateFormat),N=e.config["_"+(f==="min"?"max":"min")+"Date"];M!==void 0&&(e[f==="min"?"minDateHasTime":"maxDateHasTime"]=M.getHours()>0||M.getMinutes()>0||M.getSeconds()>0),e.selectedDates&&(e.selectedDates=e.selectedDates.filter(function(W){return Z(W)}),!e.selectedDates.length&&f==="min"&&y(M),_n()),e.daysContainer&&(wo(),M!==void 0?e.currentYearElement[f]=M.getFullYear().toString():e.currentYearElement.removeAttribute(f),e.currentYearElement.disabled=!!N&&M!==void 0&&N.getFullYear()===M.getFullYear())}}function ot(){var f=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],b=ht(ht({},JSON.parse(JSON.stringify(n.dataset||{}))),t),M={};e.config.parseDate=b.parseDate,e.config.formatDate=b.formatDate,Object.defineProperty(e.config,"enable",{get:function(){return e.config._enable},set:function(de){e.config._enable=Vc(de)}}),Object.defineProperty(e.config,"disable",{get:function(){return e.config._disable},set:function(de){e.config._disable=Vc(de)}});var N=b.mode==="time";if(!b.dateFormat&&(b.enableTime||N)){var W=We.defaultConfig.dateFormat||sr.dateFormat;M.dateFormat=b.noCalendar||N?"H:i"+(b.enableSeconds?":S":""):W+" H:i"+(b.enableSeconds?":S":"")}if(b.altInput&&(b.enableTime||N)&&!b.altFormat){var Q=We.defaultConfig.altFormat||sr.altFormat;M.altFormat=b.noCalendar||N?"h:i"+(b.enableSeconds?":S K":" K"):Q+(" h:i"+(b.enableSeconds?":S":"")+" K")}Object.defineProperty(e.config,"minDate",{get:function(){return e.config._minDate},set:qe("min")}),Object.defineProperty(e.config,"maxDate",{get:function(){return e.config._maxDate},set:qe("max")});var ye=function(de){return function(Ae){e.config[de==="min"?"_minTime":"_maxTime"]=e.parseDate(Ae,"H:i:S")}};Object.defineProperty(e.config,"minTime",{get:function(){return e.config._minTime},set:ye("min")}),Object.defineProperty(e.config,"maxTime",{get:function(){return e.config._maxTime},set:ye("max")}),b.mode==="time"&&(e.config.noCalendar=!0,e.config.enableTime=!0),Object.assign(e.config,M,b);for(var ne=0;ne<f.length;ne++)e.config[f[ne]]=e.config[f[ne]]===!0||e.config[f[ne]]==="true";Ma.filter(function(de){return e.config[de]!==void 0}).forEach(function(de){e.config[de]=Ca(e.config[de]||[]).map(a)}),e.isMobile=!e.config.disableMobile&&!e.config.inline&&e.config.mode==="single"&&!e.config.disable.length&&!e.config.enable&&!e.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(var ne=0;ne<e.config.plugins.length;ne++){var De=e.config.plugins[ne](e)||{};for(var te in De)Ma.indexOf(te)>-1?e.config[te]=Ca(De[te]).map(a).concat(e.config[te]):typeof b[te]>"u"&&(e.config[te]=De[te])}b.altInputClass||(e.config.altInputClass=Qt().className+" "+e.config.altInputClass),Fe("onParseConfig")}function Qt(){return e.config.wrap?n.querySelector("[data-input]"):n}function cr(){typeof e.config.locale!="object"&&typeof We.l10ns[e.config.locale]>"u"&&e.config.errorHandler(new Error("flatpickr: invalid locale "+e.config.locale)),e.l10n=ht(ht({},We.l10ns.default),typeof e.config.locale=="object"?e.config.locale:e.config.locale!=="default"?We.l10ns[e.config.locale]:void 0),Yn.D="("+e.l10n.weekdays.shorthand.join("|")+")",Yn.l="("+e.l10n.weekdays.longhand.join("|")+")",Yn.M="("+e.l10n.months.shorthand.join("|")+")",Yn.F="("+e.l10n.months.longhand.join("|")+")",Yn.K="("+e.l10n.amPM[0]+"|"+e.l10n.amPM[1]+"|"+e.l10n.amPM[0].toLowerCase()+"|"+e.l10n.amPM[1].toLowerCase()+")";var f=ht(ht({},t),JSON.parse(JSON.stringify(n.dataset||{})));f.time_24hr===void 0&&We.defaultConfig.time_24hr===void 0&&(e.config.time_24hr=e.l10n.time_24hr),e.formatDate=Yc(e),e.parseDate=Pa({config:e.config,l10n:e.l10n})}function $n(f){if(typeof e.config.position=="function")return void e.config.position(e,f);if(e.calendarContainer!==void 0){Fe("onPreCalendarPosition");var b=f||e._positionElement,M=Array.prototype.reduce.call(e.calendarContainer.children,function(fh,gh){return fh+gh.offsetHeight},0),N=e.calendarContainer.offsetWidth,W=e.config.position.split(" "),Q=W[0],ye=W.length>1?W[1]:null,ne=b.getBoundingClientRect(),De=window.innerHeight-ne.bottom,te=Q==="above"||Q!=="below"&&De<M&&ne.top>M,de=window.pageYOffset+ne.top+(te?-M-2:b.offsetHeight+2);if(dt(e.calendarContainer,"arrowTop",!te),dt(e.calendarContainer,"arrowBottom",te),!e.config.inline){var Ae=window.pageXOffset+ne.left,dn=!1,Ut=!1;ye==="center"?(Ae-=(N-ne.width)/2,dn=!0):ye==="right"&&(Ae-=N-ne.width,Ut=!0),dt(e.calendarContainer,"arrowLeft",!dn&&!Ut),dt(e.calendarContainer,"arrowCenter",dn),dt(e.calendarContainer,"arrowRight",Ut);var si=window.document.body.offsetWidth-(window.pageXOffset+ne.right),Cr=Ae+N>window.document.body.offsetWidth,ch=si+N>window.document.body.offsetWidth;if(dt(e.calendarContainer,"rightMost",Cr),!e.config.static)if(e.calendarContainer.style.top=de+"px",!Cr)e.calendarContainer.style.left=Ae+"px",e.calendarContainer.style.right="auto";else if(!ch)e.calendarContainer.style.left="auto",e.calendarContainer.style.right=si+"px";else{var ja=ai();if(ja===void 0)return;var lh=window.document.body.offsetWidth,uh=Math.max(0,lh/2-N/2),dh=".flatpickr-calendar.centerMost:before",hh=".flatpickr-calendar.centerMost:after",mh=ja.cssRules.length,ph="{left:"+ne.left+"px;right:auto;}";dt(e.calendarContainer,"rightMost",!1),dt(e.calendarContainer,"centerMost",!0),ja.insertRule(dh+","+hh+ph,mh),e.calendarContainer.style.left=uh+"px",e.calendarContainer.style.right="auto"}}}}function ai(){for(var f=null,b=0;b<document.styleSheets.length;b++){var M=document.styleSheets[b];if(M.cssRules){try{M.cssRules}catch{continue}f=M;break}}return f??bo()}function bo(){var f=document.createElement("style");return document.head.appendChild(f),f.sheet}function wo(){e.config.noCalendar||e.isMobile||(se(),Eo(),Y())}function Ba(){e._input.focus(),window.navigator.userAgent.indexOf("MSIE")!==-1||navigator.msMaxTouchPoints!==void 0?setTimeout(e.close,0):e.close()}function zc(f){f.preventDefault(),f.stopPropagation();var b=function(de){return de.classList&&de.classList.contains("flatpickr-day")&&!de.classList.contains("flatpickr-disabled")&&!de.classList.contains("notAllowed")},M=Bc(jt(f),b);if(M!==void 0){var N=M,W=e.latestSelectedDateObj=new Date(N.dateObj.getTime()),Q=(W.getMonth()<e.currentMonth||W.getMonth()>e.currentMonth+e.config.showMonths-1)&&e.config.mode!=="range";if(e.selectedDateElem=N,e.config.mode==="single")e.selectedDates=[W];else if(e.config.mode==="multiple"){var ye=Ya(W);ye?e.selectedDates.splice(parseInt(ye),1):e.selectedDates.push(W)}else e.config.mode==="range"&&(e.selectedDates.length===2&&e.clear(!1,!1),e.latestSelectedDateObj=W,e.selectedDates.push(W),zt(W,e.selectedDates[0],!0)!==0&&e.selectedDates.sort(function(de,Ae){return de.getTime()-Ae.getTime()}));if(p(),Q){var ne=e.currentYear!==W.getFullYear();e.currentYear=W.getFullYear(),e.currentMonth=W.getMonth(),ne&&(Fe("onYearChange"),se()),Fe("onMonthChange")}if(Eo(),Y(),_n(),!Q&&e.config.mode!=="range"&&e.config.showMonths===1?Pe(N):e.selectedDateElem!==void 0&&e.hourElement===void 0&&e.selectedDateElem&&e.selectedDateElem.focus(),e.hourElement!==void 0&&e.hourElement!==void 0&&e.hourElement.focus(),e.config.closeOnSelect){var De=e.config.mode==="single"&&!e.config.enableTime,te=e.config.mode==="range"&&e.selectedDates.length===2&&!e.config.enableTime;(De||te)&&Ba()}x()}}var Do={locale:[cr,E],showMonths:[B,s,v],minDate:[K],maxDate:[K],positionElement:[qc],clickOpens:[function(){e.config.clickOpens===!0?(C(e._input,"focus",e.open),C(e._input,"click",e.open)):(e._input.removeEventListener("focus",e.open),e._input.removeEventListener("click",e.open))}]};function Qd(f,b){if(f!==null&&typeof f=="object"){Object.assign(e.config,f);for(var M in f)Do[M]!==void 0&&Do[M].forEach(function(N){return N()})}else e.config[f]=b,Do[f]!==void 0?Do[f].forEach(function(N){return N()}):Ma.indexOf(f)>-1&&(e.config[f]=Ca(b));e.redraw(),_n(!0)}function Uc(f,b){var M=[];if(f instanceof Array)M=f.map(function(N){return e.parseDate(N,b)});else if(f instanceof Date||typeof f=="number")M=[e.parseDate(f,b)];else if(typeof f=="string")switch(e.config.mode){case"single":case"time":M=[e.parseDate(f,b)];break;case"multiple":M=f.split(e.config.conjunction).map(function(N){return e.parseDate(N,b)});break;case"range":M=f.split(e.l10n.rangeSeparator).map(function(N){return e.parseDate(N,b)});break;default:break}else e.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(f)));e.selectedDates=e.config.allowInvalidPreload?M:M.filter(function(N){return N instanceof Date&&Z(N,!1)}),e.config.mode==="range"&&e.selectedDates.sort(function(N,W){return N.getTime()-W.getTime()})}function eh(f,b,M){if(b===void 0&&(b=!1),M===void 0&&(M=e.config.dateFormat),f!==0&&!f||f instanceof Array&&f.length===0)return e.clear(b);Uc(f,M),e.latestSelectedDateObj=e.selectedDates[e.selectedDates.length-1],e.redraw(),K(void 0,b),y(),e.selectedDates.length===0&&e.clear(!1),_n(b),b&&Fe("onChange")}function Vc(f){return f.slice().map(function(b){return typeof b=="string"||typeof b=="number"||b instanceof Date?e.parseDate(b,void 0,!0):b&&typeof b=="object"&&b.from&&b.to?{from:e.parseDate(b.from,void 0),to:e.parseDate(b.to,void 0)}:b}).filter(function(b){return b})}function th(){e.selectedDates=[],e.now=e.parseDate(e.config.now)||new Date;var f=e.config.defaultDate||((e.input.nodeName==="INPUT"||e.input.nodeName==="TEXTAREA")&&e.input.placeholder&&e.input.value===e.input.placeholder?null:e.input.value);f&&Uc(f,e.config.dateFormat),e._initialDate=e.selectedDates.length>0?e.selectedDates[0]:e.config.minDate&&e.config.minDate.getTime()>e.now.getTime()?e.config.minDate:e.config.maxDate&&e.config.maxDate.getTime()<e.now.getTime()?e.config.maxDate:e.now,e.currentYear=e._initialDate.getFullYear(),e.currentMonth=e._initialDate.getMonth(),e.selectedDates.length>0&&(e.latestSelectedDateObj=e.selectedDates[0]),e.config.minTime!==void 0&&(e.config.minTime=e.parseDate(e.config.minTime,"H:i")),e.config.maxTime!==void 0&&(e.config.maxTime=e.parseDate(e.config.maxTime,"H:i")),e.minDateHasTime=!!e.config.minDate&&(e.config.minDate.getHours()>0||e.config.minDate.getMinutes()>0||e.config.minDate.getSeconds()>0),e.maxDateHasTime=!!e.config.maxDate&&(e.config.maxDate.getHours()>0||e.config.maxDate.getMinutes()>0||e.config.maxDate.getSeconds()>0)}function nh(){if(e.input=Qt(),!e.input){e.config.errorHandler(new Error("Invalid input element specified"));return}e.input._type=e.input.type,e.input.type="text",e.input.classList.add("flatpickr-input"),e._input=e.input,e.config.altInput&&(e.altInput=Ce(e.input.nodeName,e.config.altInputClass),e._input=e.altInput,e.altInput.placeholder=e.input.placeholder,e.altInput.disabled=e.input.disabled,e.altInput.required=e.input.required,e.altInput.tabIndex=e.input.tabIndex,e.altInput.type="text",e.input.setAttribute("type","hidden"),!e.config.static&&e.input.parentNode&&e.input.parentNode.insertBefore(e.altInput,e.input.nextSibling)),e.config.allowInput||e._input.setAttribute("readonly","readonly"),qc()}function qc(){e._positionElement=e.config.positionElement||e._input}function rh(){var f=e.config.enableTime?e.config.noCalendar?"time":"datetime-local":"date";e.mobileInput=Ce("input",e.input.className+" flatpickr-mobile"),e.mobileInput.tabIndex=1,e.mobileInput.type=f,e.mobileInput.disabled=e.input.disabled,e.mobileInput.required=e.input.required,e.mobileInput.placeholder=e.input.placeholder,e.mobileFormatStr=f==="datetime-local"?"Y-m-d\\TH:i:S":f==="date"?"Y-m-d":"H:i:S",e.selectedDates.length>0&&(e.mobileInput.defaultValue=e.mobileInput.value=e.formatDate(e.selectedDates[0],e.mobileFormatStr)),e.config.minDate&&(e.mobileInput.min=e.formatDate(e.config.minDate,"Y-m-d")),e.config.maxDate&&(e.mobileInput.max=e.formatDate(e.config.maxDate,"Y-m-d")),e.input.getAttribute("step")&&(e.mobileInput.step=String(e.input.getAttribute("step"))),e.input.type="hidden",e.altInput!==void 0&&(e.altInput.type="hidden");try{e.input.parentNode&&e.input.parentNode.insertBefore(e.mobileInput,e.input.nextSibling)}catch{}C(e.mobileInput,"change",function(b){e.setDate(jt(b).value,!1,e.mobileFormatStr),Fe("onChange"),Fe("onClose")})}function ih(f){if(e.isOpen===!0)return e.close();e.open(f)}function Fe(f,b){if(e.config!==void 0){var M=e.config[f];if(M!==void 0&&M.length>0)for(var N=0;M[N]&&N<M.length;N++)M[N](e.selectedDates,e.input.value,e,b);f==="onChange"&&(e.input.dispatchEvent(Fa("change")),e.input.dispatchEvent(Fa("input")))}}function Fa(f){var b=document.createEvent("Event");return b.initEvent(f,!0,!0),b}function Ya(f){for(var b=0;b<e.selectedDates.length;b++){var M=e.selectedDates[b];if(M instanceof Date&&zt(M,f)===0)return""+b}return!1}function oh(f){return e.config.mode!=="range"||e.selectedDates.length<2?!1:zt(f,e.selectedDates[0])>=0&&zt(f,e.selectedDates[1])<=0}function Eo(){e.config.noCalendar||e.isMobile||!e.monthNav||(e.yearElements.forEach(function(f,b){var M=new Date(e.currentYear,e.currentMonth,1);M.setMonth(e.currentMonth+b),e.config.showMonths>1||e.config.monthSelectorType==="static"?e.monthElements[b].textContent=vo(M.getMonth(),e.config.shorthandCurrentMonth,e.l10n)+" ":e.monthsDropdownContainer.value=M.getMonth().toString(),f.value=M.getFullYear().toString()}),e._hidePrevMonthArrow=e.config.minDate!==void 0&&(e.currentYear===e.config.minDate.getFullYear()?e.currentMonth<=e.config.minDate.getMonth():e.currentYear<e.config.minDate.getFullYear()),e._hideNextMonthArrow=e.config.maxDate!==void 0&&(e.currentYear===e.config.maxDate.getFullYear()?e.currentMonth+1>e.config.maxDate.getMonth():e.currentYear>e.config.maxDate.getFullYear()))}function $a(f){var b=f||(e.config.altInput?e.config.altFormat:e.config.dateFormat);return e.selectedDates.map(function(M){return e.formatDate(M,b)}).filter(function(M,N,W){return e.config.mode!=="range"||e.config.enableTime||W.indexOf(M)===N}).join(e.config.mode!=="range"?e.config.conjunction:e.l10n.rangeSeparator)}function _n(f){f===void 0&&(f=!0),e.mobileInput!==void 0&&e.mobileFormatStr&&(e.mobileInput.value=e.latestSelectedDateObj!==void 0?e.formatDate(e.latestSelectedDateObj,e.mobileFormatStr):""),e.input.value=$a(e.config.dateFormat),e.altInput!==void 0&&(e.altInput.value=$a(e.config.altFormat)),f!==!1&&Fe("onValueUpdate")}function ah(f){var b=jt(f),M=e.prevMonthNav.contains(b),N=e.nextMonthNav.contains(b);M||N?_(M?-1:1):e.yearElements.indexOf(b)>=0?b.select():b.classList.contains("arrowUp")?e.changeYear(e.currentYear+1):b.classList.contains("arrowDown")&&e.changeYear(e.currentYear-1)}function sh(f){f.preventDefault();var b=f.type==="keydown",M=jt(f),N=M;e.amPM!==void 0&&M===e.amPM&&(e.amPM.textContent=e.l10n.amPM[$t(e.amPM.textContent===e.l10n.amPM[0])]);var W=parseFloat(N.getAttribute("min")),Q=parseFloat(N.getAttribute("max")),ye=parseFloat(N.getAttribute("step")),ne=parseInt(N.value,10),De=f.delta||(b?f.which===38?1:-1:0),te=ne+ye*De;if(typeof N.value<"u"&&N.value.length===2){var de=N===e.hourElement,Ae=N===e.minuteElement;te<W?(te=Q+te+$t(!de)+($t(de)&&$t(!e.amPM)),Ae&&ee(void 0,-1,e.hourElement)):te>Q&&(te=N===e.hourElement?te-Q-$t(!e.amPM):W,Ae&&ee(void 0,1,e.hourElement)),e.amPM&&de&&(ye===1?te+ne===23:Math.abs(te-ne)>ye)&&(e.amPM.textContent=e.l10n.amPM[$t(e.amPM.textContent===e.l10n.amPM[0])]),N.value=ut(te)}}return i(),e}function ii(n,t){for(var e=Array.prototype.slice.call(n).filter(function(a){return a instanceof HTMLElement}),r=[],i=0;i<e.length;i++){var o=e[i];try{if(o.getAttribute("data-fp-omit")!==null)continue;o._flatpickr!==void 0&&(o._flatpickr.destroy(),o._flatpickr=void 0),o._flatpickr=rp(o,t||{}),r.push(o._flatpickr)}catch(a){console.error(a)}}return r.length===1?r[0]:r}typeof HTMLElement<"u"&&typeof HTMLCollection<"u"&&typeof NodeList<"u"&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(n){return ii(this,n)},HTMLElement.prototype.flatpickr=function(n){return ii([this],n)});var We=function(n,t){return typeof n=="string"?ii(window.document.querySelectorAll(n),t):n instanceof Node?ii([n],t):ii(n,t)};We.defaultConfig={};We.l10ns={en:ht({},Sa),default:ht({},Sa)};We.localize=function(n){We.l10ns.default=ht(ht({},We.l10ns.default),n)};We.setDefaults=function(n){We.defaultConfig=ht(ht({},We.defaultConfig),n)};We.parseDate=Pa({});We.formatDate=Yc({});We.compareDates=zt;typeof jQuery<"u"&&typeof jQuery.fn<"u"&&(jQuery.fn.flatpickr=function(n){return ii(this,n)});Date.prototype.fp_incr=function(n){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(typeof n=="string"?parseInt(n,10):n))};typeof window<"u"&&(window.flatpickr=We);var Ud=We;var Ra=class{constructor(t,e){this.dateInputEl=t;A(this,"minDate");A(this,"maxDate");A(this,"defaultReservationDays");A(this,"hasPrices",!1);A(this,"prices",{});A(this,"availability",{});A(this,"disabledDates",[]);A(this,"selectedStartDate");A(this,"selectedEndDate");A(this,"config");A(this,"instance");A(this,"destroyInstance");A(this,"currentDate");A(this,"handleResize",()=>{let t=this.isMobileDevice();(t&&this.config.grid!==1||!t&&this.config.grid!==2)&&(this.config.grid=t?1:2,this.config.calendars=t?1:2,this.destroyInstance&&this.destroyInstance(),this.initialize())});this.isMobileDevice()&&(e.grid=1,e.calendars=1),this.dateInputEl=t,this.defaultReservationDays=e.defaultReservationDays??3;let r=e.startWithEmptyDates??!1;this.config={...e,type:e.type,showPrices:e.showPrices??!1,defaultReservationDays:this.defaultReservationDays,grid:e.grid??2,calendars:e.calendars??2,darkMode:e.darkMode??!0,tooltip:e.tooltip??!0,repick:e.repick??!1,minDays:e.minDays??1,defaultStartDate:e.defaultStartDate??J.getCurrentDate(),defaultEndDate:e.defaultEndDate??J.getCurrentDate(),startWithEmptyDates:r},this.currentDate=J.getCurrentDate(),this.selectedStartDate=r?null:this.config.defaultStartDate,this.selectedEndDate=r?null:this.config.defaultEndDate}isMobileDevice(){return window.innerWidth<=768}initialize(){switch(window.addEventListener("resize",this.handleResize),this.config.type){case"easepick":this.initEasepickCalendar();break;case"flatpickr":this.initFlatpickrCalendar();break;default:throw new Error(`Unsupported calendar type: ${this.config.type}`)}}setMinimumDate(t){this.minDate=t}setMaximumDate(t){this.maxDate=t}setStartDate(t){let e=J.toJSDate(t),r=this.selectedEndDate?J.toJSDate(this.selectedEndDate):e;this.selectedStartDate=t,this.instance instanceof _a.Core?this.instance.setStartDate(new ge(t.toString())):this.config.type==="flatpickr"&&this.instance.setDate([e,r],!0)}setEndDate(t){let e=this.selectedStartDate?J.toJSDate(this.selectedStartDate):J.toJSDate(t),r=J.toJSDate(t);this.selectedEndDate=t,this.instance instanceof _a.Core?this.instance.setEndDate(new ge(t.toString())):this.config.type==="flatpickr"&&this.instance.setDate([e,r],!0)}setDateRange(t,e){if(this.config.type==="flatpickr"){this.selectedStartDate=t,this.selectedEndDate=e;let r=J.toJSDate(t),i=J.toJSDate(e);this.instance.setDate([r,i],!0);return}this.setStartDate(t),this.setEndDate(e)}getSelectedDates(){return{startDate:this.selectedStartDate,endDate:this.selectedEndDate}}includePrices(t=!0){this.hasPrices=t}setPrices(t){this.prices=t}setAvailability(t){this.availability=t,this.disabledDates=Object.keys(t).filter(e=>!t[e])}initEasepickCalendar(){let t={tooltip:this.config.tooltip,repick:this.config.repick,tooltipNumber:i=>i-1,locale:{one:"nuit",other:"nuits"}};this.config.startWithEmptyDates||(t.startDate=new ge(this.config.defaultStartDate.toString()),t.endDate=new ge(this.config.defaultEndDate.toString()));let e={element:this.dateInputEl,css:["https://cdn.jsdelivr.net/npm/@easepick/bundle@1.2.1/dist/index.css"],zIndex:10,format:ed,grid:this.config.grid,calendars:this.config.calendars,header:"",lang:document.documentElement.lang,RangePlugin:t,LockPlugin:{minDate:new ge(this.minDate.toString()),minDays:this.config.minDays,selectForward:!0},AmpPlugin:{darkMode:this.config.darkMode},plugins:[Ea,Da,wa],setup:i=>{i.on("view",o=>{let{view:a,date:s,target:c}=o.detail,u=s?s.format("YYYY-MM-DD"):null;if(a==="CalendarDay"&&u&&this.prices[u]){let h=this.prices[u],p=c.querySelector(`.${ua}`)||document.createElement("span");p.className=ua,p.textContent=`${h.toLocaleString(Ve,{style:"currency",currency:"EUR",maximumFractionDigits:0})}`,p.style.color="#c64509",p.style.fontWeight="bold",p.style.fontSize="10px",c.append(p)}}),i.on("select",o=>{let{start:a,end:s}=o.detail;this.selectedStartDate=J.fromString(a.format("YYYY-MM-DD")),this.selectedEndDate=J.fromString(s.format("YYYY-MM-DD"));let c={startDate:a.format("YYYY-MM-DD").toString(),endDate:s.format("YYYY-MM-DD").toString()};Je("date:changed",c)})}},r=new _a.create(e);this.instance=r,this.destroyInstance=()=>r.destroy()}initFlatpickrCalendar(){let t=document.createElement("link");t.rel="stylesheet",t.href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.css",document.head.appendChild(t);let e=Xu(),r={mode:"range",showMonths:this.config.calendars,minDate:this.minDate.toString(),shorthandCurrentMonth:!0,monthSelectorType:"static",inline:!1,dateFormat:td,locale:{months:{shorthand:e,longhand:e}},zIndex:10,disable:this.disabledDates};this.config.startWithEmptyDates||(r.defaultDate=[this.config.defaultStartDate.toString(),this.config.defaultEndDate.toString()]),Object.assign(r,{onChange:o=>{let a=q("label",this.dateInputEl);if(o.length===1){if(this.selectedStartDate=J.fromJSDate(o[0]),this.selectedEndDate=null,Je("date:changed",{startDate:this.selectedStartDate.toString(),endDate:""}),a){let s=this.formatDate(o[0]);a.textContent=s}}else if(o.length===2){this.selectedStartDate=J.fromJSDate(o[0]),this.selectedEndDate=J.fromJSDate(o[1]);let s={startDate:this.selectedStartDate.toString(),endDate:this.selectedEndDate.toString()};if(Je("date:changed",s),a){let c=this.formatDate(o[0]),u=this.formatDate(o[1]);a.textContent=`${c} - ${u}`}}else this.selectedStartDate?a&&(a.textContent=this.formatDate(J.toJSDate(this.selectedStartDate))):(this.selectedEndDate=null,Je("date:changed",{startDate:"",endDate:""}),a&&(a.textContent="Choose your dates"))},onDayCreate:async(o,a,s,c)=>{let u=c.dateObj,h=J.fromJSDate(u),p=J.formatForAPI(h);if(this.prices[p]){let y=this.prices[p],w=document.createElement("span");w.style.marginTop="2px",w.style.color="#c64509",w.style.fontSize="10px",w.style.fontWeight="bold",w.className=ua,w.textContent=`${y.toLocaleString(Ve,{style:"currency",currency:"EUR",maximumFractionDigits:0})}`,c.style.display="flex",c.style.flexDirection="column",c.style.alignItems="center",c.style.justifyContent="center",c.style.lineHeight="1.1",c.appendChild(w)}}});let i=Ud(this.dateInputEl,r);this.instance=i,this.destroyInstance=()=>i.destroy()}clear(){this.selectedStartDate=null,this.selectedEndDate=null,this.config.type==="flatpickr"&&this.instance.clear?.()}destroy(){window.removeEventListener("resize",this.handleResize),this.destroyInstance&&this.destroyInstance()}formatDate(t){let e=J.fromJSDate(t),r=e.year,i=String(e.month).padStart(2,"0"),o=String(e.day).padStart(2,"0");return Ve==="en"?`${r}/${i}/${o}`:Ve==="fr-FR"||Ve==="de"?`${o}/${i}/${r}`:`${r}/${i}/${o}`}};var xa=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"nightsCountElement");A(this,"startDateElement");A(this,"endDateElement");A(this,"dateElement");A(this,"roomsWrapperElement");A(this,"roomElementTemplate");A(this,"addRoomElement");A(this,"rooms",[]);A(this,"includePrices",nd);A(this,"populateCalendarInput",async()=>{if(!this.dateElement){console.error("Date element not found");return}let t=new Ra(this.dateElement,{type:"flatpickr",showPrices:!0,defaultReservationDays:3,grid:2,calendars:2,darkMode:!1,tooltip:!0,repick:!1,minDays:1,defaultStartDate:H.startDate||Tr,defaultEndDate:H.endDate||ei});if(t.setMinimumDate(Tr),t.setMaximumDate(ei),t.includePrices(this.includePrices),this.includePrices){let e=await Bd([this.parentComponent.apartmentProperties.enterpriseId]);t.setPrices(e)}return t.initialize(),t});rr("date:changed",e=>{H.updateStartDate(J.fromString(e.startDate)),H.updateEndDate(J.fromString(e.endDate))}),this.element=q("details-box"),this.nightsCountElement=q("nights",this.element),this.startDateElement=q("start-date",this.element),this.endDateElement=q("end-date",this.element),this.dateElement=q("date-element",this.element),this.roomsWrapperElement=q("room-box-wrapper",this.element),this.roomElementTemplate=q("room-box",this.element),this.addRoomElement=q("add-room-button",this.element)}init(){console.log("Initialize DetailsSection"),this.updateDOM(),this.populateCalendarInput()}updateDOM(){Rt(()=>{this.startDateElement.textContent=H.startDate?J.formatForDisplay(H.startDate):"?"}),Rt(()=>{this.endDateElement.textContent=H.endDate?J.formatForDisplay(H.endDate):"?"}),Rt(()=>{this.nightsCountElement.textContent=`${H.nightsCount} ${Se("night").toLowerCase()}${H.nightsCount>1?"s":""}`}),Rt(()=>{let t=document.createDocumentFragment();H.rooms.forEach((r,i)=>{let o=Yt(this.roomElementTemplate,!0),a=q("room",o);a.textContent=`${Se("apartment")} ${i+1}`;let s=q("categories-wrapper",o),c=q("age-category",s),u=document.createDocumentFragment();r.forEach(p=>{let y=Yt(c,!0),w=q("category-name",y);w.textContent=p.name;let T=q("input",y);po(T,p.value.toString()),lt(y,"click",C=>{C.preventDefault();let x=i;switch(od(C.target)){case"decrement":if(p.isAdult){if(r.filter(K=>K.isAdult).reduce((K,G)=>K+G.value,0)>1&&p.value>0){let K=H.rooms.map((G,ee)=>ee===x?G.map(oe=>oe.ageCategoryId===p.ageCategoryId?{...oe,value:oe.value-1}:{...oe}):G);H.updateRooms(K)}}else if(p.value>0){let $=H.rooms.map((K,G)=>G===x?K.map(ee=>ee.ageCategoryId===p.ageCategoryId?{...ee,value:ee.value-1}:{...ee}):K);H.updateRooms($)}break;case"increment":if(this.computations(r).hasCapacity){let $=H.rooms.map((K,G)=>G===x?K.map(ee=>ee.ageCategoryId===p.ageCategoryId?{...ee,value:ee.value+1}:{...ee}):K);H.updateRooms($)}break}},{once:!1}),u.appendChild(y)}),s.innerHTML="",s.appendChild(u);let h=q("remove-room-button",o);h&&(h.classList.toggle("hide",H.rooms.length<=1),lt(h,"click",p=>{p.preventDefault();let y=H.rooms.filter((w,T)=>T!==i);H.updateRooms(y)})),t.appendChild(o)}),this.roomsWrapperElement.innerHTML="",this.roomsWrapperElement.appendChild(t);let{maxAllowedRooms:e}={maxAllowedRooms:H.maxAllowedRooms};console.log(`<<debug>> Current rooms: ${H.rooms.length}, Max allowed rooms: ${e}, Available rooms: ${this.parentComponent.apartmentProperties.availableRooms}`),e>0&&H.rooms.length>=e?(console.log(`<<debug>> Hiding add room button: current rooms ${H.rooms.length} >= max allowed ${e}`),this.addRoomElement.classList.add("hide")):e<=0?(console.log(`<<debug>> Max allowed rooms is non-positive (${e}), using available rooms ${this.parentComponent.apartmentProperties.availableRooms} as limit`),H.rooms.length>=this.parentComponent.apartmentProperties.availableRooms&&(console.log(`<<debug>> Hiding add room button: current rooms ${H.rooms.length} >= available rooms ${this.parentComponent.apartmentProperties.availableRooms}`),this.addRoomElement.classList.add("hide"))):(console.log(`<<debug>> Showing add room button: current rooms ${H.rooms.length} < max allowed or available rooms`),this.addRoomElement.classList.remove("hide"))}),lt(this.addRoomElement,"click",t=>{t.preventDefault();let{maxAllowedRooms:e}={maxAllowedRooms:H.maxAllowedRooms};if(H.rooms.length<e){let i=H.ageCategories.map(a=>{let s=a.classification.toLowerCase()==="adult",c=s?Se("adults"):Se("children"),u=s?1:0;return{isAdult:s,ageCategoryId:a.id,name:c,value:u}}),o=[...H.rooms,i];H.updateRooms(o)}})}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t)}computations(t){let e=t.some(a=>a.value>0),r=t.reduce((a,s)=>a+s.value,0),i=r<this.parentComponent.apartmentProperties.capacity,o=t.filter(a=>a.isAdult).reduce((a,s)=>a+s.value,0);return{hasOccupants:e,totalOccupants:r,hasCapacity:i,totalAdults:o}}};var Vd=(n,t)=>{let e={method:"POST",headers:le.headers,body:JSON.stringify(t)};return Qe("/images/getUrls",e,n)};function qd(n){return n.ImageUrls.map(t=>({url:t.Url,imageId:t.ImageId}))}var oi=Ze({}),Wd=new Set,$c=new Map,Kd={width:160,height:160};function op(n,t){return`${n}:${[...t].sort().join(",")}`}async function Gd(n,t){let e=t.filter(Boolean);if(e.length===0)return[];let r=e.filter(s=>!oi.value[s]&&!Wd.has(s));if(r.length===0)return e.map(s=>oi.value[s]).filter(Boolean);let i=op(n,r),o=$c.get(i);if(o)return o;let a=(async()=>{try{let s=await Vd(n,{Images:r.map(u=>({ImageId:u,Width:Kd.width,Height:Kd.height,ResizeMode:"Cover"}))});return qd(s).forEach(u=>{oi.value[u.imageId]=u}),e.map(u=>oi.value[u]).filter(Boolean)}catch(s){return r.forEach(c=>Wd.add(c)),console.error("[imageStore] Failed to load images:",s),e.map(c=>oi.value[c]).filter(Boolean)}finally{$c.delete(i)}})();return $c.set(i,a),a}function Zd(n){return oi.value[n]||null}var Aa=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"productsWrapperElement");A(this,"productTemplateElement");A(this,"productTemplateHTML");A(this,"showMoreButtonElement");A(this,"requestedImageKeys",new Set);A(this,"visibleProductCount",4);A(this,"lastProductIdsKey","");this.element=q("options-box"),this.productsWrapperElement=q("options-list",this.element),this.productTemplateElement=q("option-wrapper",this.element),this.productTemplateHTML=this.productTemplateElement.outerHTML,this.showMoreButtonElement=q("more-button",this.element)}init(){try{this.updateDOM(),lt(this.showMoreButtonElement,"click",t=>{t.preventDefault();let e=this.showMoreProducts(3);this.showMoreButtonElement.classList.toggle("hide",!e)})}catch(t){console.error("Error initializing OptionsSection:",t)}}refresh(){try{if(this.canPatchExistingDOM()){this.patchDOM();return}this.updateDOM()}catch(t){console.error("Error refreshing OptionsSection:",t)}}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t)}updateDOM(){let t=H.sortedProducts,e=t.map(i=>i.id).join(",");e!==this.lastProductIdsKey&&(this.visibleProductCount=4,this.lastProductIdsKey=e);let r=document.createDocumentFragment();t.forEach((i,o)=>{let a=document.createElement("div");a.innerHTML=this.productTemplateHTML;let s=a.firstElementChild;s.classList.remove("hide"),s.style.removeProperty("display"),s.style.order=String(o),s.removeAttribute("id"),s.dataset.productId=i.id;let c=q("name",s);c.textContent=i.name||"";let u=q("price",s);u.textContent=i.price.toLocaleString(Ve,{style:"currency",currency:"EUR"});let h=q("label",s);h.textContent=Se(`chargingMode:${i.chargingMode}`),this.applyProductImage(this.parentComponent.apartmentProperties.enterpriseId,i.imageIds,s),this.bindProductCheckbox(s,i.id,i.selected),r.appendChild(s)}),Ac(this.productsWrapperElement),this.productsWrapperElement.appendChild(r),this.syncProductVisibility(),this.showMoreButtonElement.classList.toggle("hide",t.length<=this.visibleProductCount)}canPatchExistingDOM(){let t=H.sortedProducts;return t.length!==this.productsWrapperElement.children.length?!1:t.every((e,r)=>this.productsWrapperElement.children[r]?.dataset.productId===e.id)}patchDOM(){let t=H.sortedProducts;t.forEach((e,r)=>{let i=this.productsWrapperElement.children[r];i.style.order=String(r);let o=q("name",i);o.textContent=e.name||"";let a=q("price",i);a.textContent=e.price.toLocaleString(Ve,{style:"currency",currency:"EUR"});let s=q("label",i);s.textContent=Se(`chargingMode:${e.chargingMode}`);let c=q("checkbox",i);this.syncProductCheckboxState(c,e.selected)}),this.syncProductVisibility(),this.showMoreButtonElement.classList.toggle("hide",t.length<=this.visibleProductCount)}syncProductVisibility(){Array.from(this.productsWrapperElement.children).forEach((t,e)=>{t.classList.toggle("hide",e>=this.visibleProductCount)})}bindProductCheckbox(t,e,r){let i=q("checkbox",t),o=i.closest("label.w-checkbox");o&&(i.name=`addon-${e}`,i.id=`addon-${e}`,this.syncProductCheckboxState(i,r),lt(o,"click",a=>{a.preventDefault(),a.stopPropagation();let c=!(H.products.find(u=>u.id===e)?.selected??i.checked);this.syncProductCheckboxState(i,c),H.updateProducts(H.products.map(u=>u.id===e?{...u,selected:c}:u))}))}syncProductCheckboxState(t,e){t.checked=e;let r=t.previousElementSibling;e?r?.classList.add("w--redirected-checked"):r?.classList.remove("w--redirected-checked")}applyProductImage(t,e,r){let i=e.filter(Boolean);if(i.length===0)return;let o=q("image",r);if(!o)return;o.loading="eager";let a=i.map(c=>Zd(c)).find(c=>c?.url);if(a){o.src=a.url;return}let s=`${t}:${i.join(",")}`;this.requestedImageKeys.has(s)||(this.requestedImageKeys.add(s),Gd(t,i).then(c=>{let u=c[0]?.url;o.isConnected&&u&&(o.src=u)}))}showMoreProducts(t=3){let e=Array.from(this.productsWrapperElement.children),r=e.length,i=this.visibleProductCount;return this.visibleProductCount=Math.min(this.visibleProductCount+t,r),e.slice(i,this.visibleProductCount).forEach(o=>{o.classList.remove("hide")}),this.visibleProductCount<r}};var Jd=(n,t)=>{let e=`${le.bookingEngine_url}/reservationGroups/create`,r={method:"POST",headers:le.headers,body:JSON.stringify(t)};return fetch(e,r).then(o=>o.json())};var La=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"modalContent");A(this,"modalBg");A(this,"openModalBtn");A(this,"closeModalBtn");A(this,"fNameInput");A(this,"lNameInput");A(this,"emailInput");A(this,"phoneInput");A(this,"countryInput");A(this,"notesInput");A(this,"submitPaymentBtn");A(this,"customer",null);this.element=q("payment-modal"),this.modalContent=q("modal-content",this.element),this.modalBg=q("modal-bg",this.element),this.openModalBtn=q("open-modal"),this.closeModalBtn=q("close-modal"),this.fNameInput=q("fname-input",this.element),this.lNameInput=q("lname-input",this.element),this.emailInput=q("email-input",this.element),this.phoneInput=q("phone-input",this.element),this.countryInput=q("country-input",this.element),this.notesInput=q("notes-input",this.element),this.submitPaymentBtn=q("submit-payment",this.element)}init(){console.log("Initialize PaymentModal"),this.updateDOM()}updateDOM(){lt(this.openModalBtn,"click",()=>{this.openModalBtn.hasAttribute("disabled")||(this.toggleVisibility(!0),this.element.scrollIntoView({behavior:"smooth"}))}),this.submitPaymentBtn?lt(this.submitPaymentBtn,"click",t=>{t.preventDefault(),this.handleSubmit()}):console.error("Submit Payment button not found in the DOM.")}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t),t?(this.element.style.display="flex",this.element.style.opacity="1",this.modalContent.style.opacity="1",this.element.querySelectorAll("div").forEach(e=>{e.style.opacity="1"})):(this.element.style.opacity="0",this.element.style.display="none")}validateInputs(){if(!this.fNameInput.value||!this.lNameInput.value||!this.emailInput.value||!this.phoneInput.value||!this.countryInput.value)throw new Error("First name, last name, email, phone, and nationality are required.");if(!this.emailInput.checkValidity())throw new Error("Invalid email format.");if(!this.phoneInput.checkValidity())throw new Error("Invalid phone number format. Only numbers and spaces are allowed.");if(!this.countryInput.value)throw new Error("Country is required.")}async handleSubmit(){if(!H.startDate||!H.endDate)throw new Error("Start date and end date are required to submit the payment form.");try{this.validateInputs()}catch(s){console.error("Validation error:",s),alert(s instanceof Error?s.message:"An unexpected error occurred.");return}let{startDate:t,endDate:e}={startDate:H.startDate,endDate:H.endDate};this.customer={Email:this.emailInput.value,FirstName:this.fNameInput.value,LastName:this.lNameInput.value,Telephone:this.phoneInput.value,NationalityCode:this.countryInput.value,SendMarketingEmails:!1};let r={Client:le.bookingEngineClient,HotelId:this.parentComponent.apartmentProperties.enterpriseId,Customer:this.customer,Reservations:H.rooms.map(s=>({RoomCategoryId:this.parentComponent.apartmentProperties.categoryId,StartUtc:J.formatForAPI(t.toString()),EndUtc:J.formatForAPI(e.toString()),VoucherCode:H.couponCode||void 0,RateId:H.selectedRateId||"",AdultCount:s.filter(c=>c.isAdult).reduce((c,u)=>c+u.value,0),ChildCount:s.filter(c=>!c.isAdult).reduce((c,u)=>c+u.value,0),ProductIds:H.selectedProducts.map(c=>c.id),Notes:this.notesInput.value||""}))};console.log("Payload for reservation group:",r);let i=JSON.stringify(r,null,2);console.log("JSON Payload:",i);let o=this.submitPaymentBtn.textContent?.trim()??Se("proceedToPayment");this.submitPaymentBtn.textContent=Se("completePayment"),this.submitPaymentBtn.classList.add("is-disabled");let a=await Jd(this.parentComponent.apartmentProperties.enterpriseId,r);if(console.log("Reservation Response:",a),"PaymentRequestId"in a&&a.PaymentRequestId){let c=Dn().iso639,u=Qu(c),h=new URL(window.location.href);h.pathname=c==="fr"?"/reservation-confirmee":`/${c}/confirmed-reservation`;let p=`https://app.mews.com/navigator/payment-requests/detail/${a.PaymentRequestId}?ccy=EUR&language=${encodeURIComponent(u)}&returnUrl=${btoa(h.toString())}`;console.log("Payment URL:",p),window.open(p,"_blank")}else if("Id"in a&&a.Id){console.log("Free reservation created successfully:",a);let c=Dn().iso639,u=new URL(window.location.href);u.pathname=c==="fr"?"/reservation-confirmee":`/${c}/confirmed-reservation`,u.searchParams.set("reservationId",a.Id),console.log("Confirmation URL:",u.toString()),window.location.href=u.toString()}else{this.submitPaymentBtn.classList.remove("is-disabled"),this.submitPaymentBtn.textContent=o;let s="Message"in a&&a.Message?a.Message:"Reservation could not be created. Please try again later or contact Support.";console.error("Reservation creation failed:",a),alert(s);return}}};var Xd=(n,t)=>{let e=`${le.bookingEngine_url}/vouchers/validate`,r={method:"POST",headers:le.headers,body:JSON.stringify(t)};return Fn(e,r,n)};var Na=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"summaryItemWrapperElement");A(this,"summaryItemElement");A(this,"itemNameTemplateElement");A(this,"itemRowTemplateElement");A(this,"totalPriceElement");A(this,"taxElement");A(this,"submitElement");A(this,"couponInputElement");A(this,"couponApplyElement");A(this,"statusTextElement");rr("loading:start",e=>ir(!0,e)),rr("loading:end",e=>ir(!1,e)),this.element=q("summary-box"),this.summaryItemWrapperElement=q("summary-items-wrapper",this.element),this.summaryItemElement=q("summary-item",this.summaryItemWrapperElement),this.itemNameTemplateElement=q("name",this.summaryItemElement),this.itemRowTemplateElement=q("row",this.summaryItemElement),this.totalPriceElement=q("total",this.element),this.taxElement=q("tax",this.element),this.submitElement=q("submit",this.element),this.couponInputElement=q("coupon-input",this.element),this.couponApplyElement=q("apply-coupon",this.element),this.statusTextElement=q("status-text",this.element)}init(){this.updateDOM(),Je("loading:end",this.element)}refresh(){Je("loading:end",this.element)}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t),Array.from(this.element.children).forEach(e=>{e instanceof HTMLDivElement&&e.classList.toggle("hide",!t)})}updateDOM(){lt(this.couponInputElement,"input",()=>{H.updateCouponCode(xc(this.couponInputElement))}),lt(this.couponApplyElement,"click",async t=>{t.preventDefault(),Je("loading:start",this.element),Xd(this.parentComponent.apartmentProperties.enterpriseId,{Client:le.bookingEngineClient,HotelId:this.parentComponent.apartmentProperties.enterpriseId,VoucherCode:H.couponCode}).then(async e=>{let{IsValid:r}=e;if(this.statusTextElement.textContent=r?Se("couponValid"):Se("couponInvalid"),this.statusTextElement.style.color=r?"#1bcb00":"#f44900",r)try{Je("loading:start",this.element),await this.parentComponent.fetchReservationPricing(),console.log("Reservation pricing updated with voucher code")}catch(i){console.error("Error updating reservation pricing with voucher code:",i),this.statusTextElement.textContent=Se("couponError"),this.statusTextElement.style.color="#f44900"}}).catch(e=>{console.error("Error validating coupon:",e),this.statusTextElement.textContent=Se("couponError"),this.statusTextElement.style.color="#f44900"}).finally(()=>{Je("loading:end",this.element),this.statusTextElement.classList.toggle("hide",!1)})}),Rt(()=>{this.couponInputElement.value!==H.couponCode&&po(this.couponInputElement,H.couponCode);let e=H.getReadonlyState().computed.summary;if(H.isFetching){ir(!0,this.element);return}ir(!1,this.element),this.summaryItemWrapperElement.innerHTML="",e.items.forEach(i=>{let o=this.summaryItemElement.cloneNode(!0),a=q("name",o),s=q("row",o),c=document.createDocumentFragment(),u=i.occupancy.adults||0,h=i.occupancy.children||0,p=Yt(a,!0);p.textContent=`[${u} ${Se("adults").toLowerCase()}${h>0?`, ${h} ${Se("children").toLowerCase()}`:""}] x ${i.quantity}`,c.appendChild(p);let y=Yt(a,!0);y.textContent=`${i.pricing.avgPerNight.toLocaleString(Ve,{style:"currency",currency:"EUR"})}/ ${Se("night")}`,c.appendChild(y);let w=Yt(s,!0),T=q("label",w),C=q("price",w);if(T.textContent=`${Se("pricingService")} (${H.nightsCount} ${Se("night").toLowerCase()}${H.nightsCount>1?"s":""}):`,C.textContent=i.pricing.service.toLocaleString?.(Ve,{style:"currency",currency:"EUR"})??null,c.appendChild(w),H.selectedProducts.length>0){let ce=Yt(s,!0),F=q("label",ce);q("price",ce).remove();let Y=H.selectedProducts.map(se=>se.name).join(", ");F.textContent=`${Se("pricingProducts")} ${Y}`,c.appendChild(ce)}let x=Yt(s,!0),$=q("label",x);$.textContent=Se("pricingProductsAndExtras");let K=q("price",x);K.textContent=i.pricing.products.toLocaleString(Ve,{style:"currency",currency:"EUR"}),c.appendChild(x);let G=Yt(s,!0),ee=q("label",G);ee.textContent=Se("pricingTaxes");let oe=q("price",G);oe.textContent=i.pricing.taxes.toLocaleString(Ve,{style:"currency",currency:"EUR"}),c.appendChild(G);let ae=Yt(s,!0),Pe=q("label",ae);Pe.textContent=Se("pricingSubtotal");let Te=q("price",ae);Te.textContent=i.pricing.subtotal.toLocaleString(Ve,{style:"currency",currency:"EUR"}),c.appendChild(ae),o.innerHTML="",o.appendChild(c),this.summaryItemWrapperElement.appendChild(o)});let r=e.totals.taxes||0;this.taxElement.textContent=r>0?r.toLocaleString(Ve,{style:"currency",currency:"EUR"}):"--",this.totalPriceElement.textContent=e.totals.grandTotal.toLocaleString(Ve,{style:"currency",currency:"EUR"})})}};var Oa=class{constructor(t){this.parentComponent=t;A(this,"element");A(this,"tariffsWrapperElement");A(this,"tariffTemplateElement");this.element=q("offer-box"),this.tariffsWrapperElement=q("offers-list",this.element),this.tariffTemplateElement=q("offer-wrapper",this.element)}init(){this.updateDOM()}refresh(){}toggleVisibility(t=!0){this.element.classList.toggle("hide",!t)}updateDOM(){Rt(()=>{if(H.isFetching){console.log("[TariffsSection] Skipping render during fetch operation");return}if(H.computedRates.length===0){console.log("[TariffsSection] No computed rates available, skipping render");return}console.log("[TariffsSection] Rendering tariffs:",{ratesCount:H.computedRates.length,isFetching:H.isFetching});let t=document.createDocumentFragment(),e=H.computedRates.sort((a,s)=>{let c=a.price?.AverageAmountPerTimeUnit?.GrossValue||0,u=s.price?.AverageAmountPerTimeUnit?.GrossValue||0;return c-u}),r=H.selectedRateId,i=r!==null&&e.some(a=>a.id===r),o=i?r:e[0]?.id;!i&&o&&queueMicrotask(()=>H.updateSelectedRateId(o)),e.forEach(a=>{let s=Yt(this.tariffTemplateElement,!0);s.removeAttribute("id");let c=q("name",s);c.textContent=a.name;let u=q("description",s);u.textContent=a.description;let h=q("price",s),p=a.price?.AverageAmountPerTimeUnit?.GrossValue||0;h.textContent=p.toLocaleString(Ve,{style:"currency",currency:"EUR"});let y=H.rates.find($=>$.id===a.id),w=q("label",s),T=q("discount-badge",s),C=q("discount-label",T);if(y)if(w.textContent=y.shortName,y.pricing?.DependentRatePricing){let $=y.pricing?.DependentRatePricing.RelativeAdjustment*100;$===0?T.classList.add("hide"):C.textContent=`${$>0?"+":""}${$}%`}else T.classList.add("hide");else w.classList.add("hide"),T.classList.add("hide");let x=q("radio-input",s);x.value=a.id,a.id===o&&(x.checked=!0,x.previousElementSibling?.classList.add("w--redirected-checked")),lt(x,"change",()=>{x.checked&&H.updateSelectedRateId(a.id)}),t.appendChild(s)}),this.tariffsWrapperElement.innerHTML="",this.tariffsWrapperElement.appendChild(t)})}};var Ha=class{constructor(t){A(this,"apartmentProperties");A(this,"detailsSection");A(this,"optionsSection");A(this,"tariffsSection");A(this,"summarySection");A(this,"paymentModal");rr("loading:start",e=>ir(!0,e)),rr("loading:end",e=>ir(!1,e)),this.apartmentProperties=t,H.setCmsApartmentData(t)}init(){Je("loading:start",document.body);let t=Ft.startDate?J.safeParsePlainDate(Ft.startDate):Tr,e=Ft.endDate?J.safeParsePlainDate(Ft.endDate):ei,r=t&&e?t.until(e).days:0,i=r>=1?t:Tr,o=r>=1?e:ei;i&&H.updateStartDate(i),o&&H.updateEndDate(o),this.fetchAPIData().then(()=>this.parseAPIData()).then(()=>this.initUIComponents()).catch(a=>{console.error("[ReservationComponent] fetchAPIData failed:",a),this.initUIComponents()}),console.log("#=> State:",H.getReadonlyState())}initUIComponents(){let t=H.rates.find(e=>e.isDefault||e.isBaseRate);console.log("#=> Default Rate:",t),H.updateSelectedRateId(t?.id||H.computedRates.find(e=>e.ordering===0&&e.groupOrdering===0)?.id||H.computedRates[0]?.id||null),this.detailsSection=new xa(this),this.detailsSection.init(),this.optionsSection=new Aa(this),this.optionsSection.toggleVisibility(!0),this.optionsSection.init(),this.tariffsSection=new Oa(this),this.tariffsSection.toggleVisibility(!0),this.tariffsSection.init(),this.summarySection=new Na(this),this.summarySection.toggleVisibility(!0),this.summarySection.init(),this.paymentModal=new La(this),this.paymentModal.toggleVisibility(!1),this.paymentModal.init(),this.initPricingButler(),this.initAvailabilityPricingUpdater(),Je("loading:end",document.body)}initPricingButler(){let t=(0,jc.default)(async()=>{console.log("[PricingButler] Fetching reservation pricing..."),await H.fetchReservationPricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId)},500);Rt(()=>{let{rooms:e}=H,{startDate:r}=H,{endDate:i}=H,{selectedProducts:o}=H,{selectedRateId:a}=H,{couponCode:s}=H;if(console.log("[PricingButler] Dependencies changed:",{roomsCount:e.length,startDate:r?.toString(),endDate:i?.toString(),selectedProductsCount:o.length,selectedRateId:a,couponCode:s}),e.length===0){console.log("[PricingButler] No rooms set, skipping pricing update.");return}if(!r||!i){console.log("[PricingButler] Start date or end date is not set, skipping pricing update.");return}if(J.isBefore(r,i)){console.log("[PricingButler] Start date is after or equal to end date, skipping pricing update.");return}t()})}initAvailabilityPricingUpdater(){let t=(0,jc.default)(async()=>{try{await H.fetchAvailability(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),await H.fetchServicePricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),Je("loading:end",document.body)}catch(e){console.error("Error updating availability and pricing data:",e)}},500);Rt(()=>{Je("loading:start",document.body);let{startDate:e,endDate:r}={startDate:H.startDate,endDate:H.endDate};if(!e||!r){console.warn("Start date or end date is not set, skipping availability and pricing updates.");return}if(J.isBefore(e,r)){console.warn("Start date is after or equal to end date, skipping API requests.");return}t()}),Rt(()=>{Je("loading:start",document.body);let{availabilities:e,servicePricing:r,isAvailable:i,restrictionMessage:o}={availabilities:H.availabilities,servicePricing:H.servicePricing,isAvailable:H.isAvailable,restrictionMessage:H.restrictionMessage};if(this.updateAvailabilityBanners(i,o),this.optionsSection&&this.optionsSection.toggleVisibility(i),this.tariffsSection&&this.tariffsSection.toggleVisibility(i),this.summarySection&&this.summarySection.toggleVisibility(i),r&&!H.selectedRateId&&H.computedRates.length>0){let a=H.rates.find(s=>s.isDefault||s.isBaseRate);H.updateSelectedRateId(a?.id||H.computedRates.find(s=>s.ordering===0&&s.groupOrdering===0)?.id||H.computedRates[0]?.id||null)}e&&r&&this.refreshUIComponents()})}async fetchAPIData(){console.log("#=> Fetching API data for reservation component..."),await H.initializeResources(this.apartmentProperties.enterpriseId),await H.initializeRooms(),await H.fetchHotel(this.apartmentProperties.enterpriseId),await H.fetchAvailability(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),await H.fetchServicePricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),await H.fetchReservationPricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId),await H.fetchRates(this.apartmentProperties.enterpriseId)}async parseAPIData(){}refreshUIComponents(){if(H.computedRates.length>0&&!H.selectedRateId){let t=H.rates.find(e=>e.isDefault||e.isBaseRate);H.updateSelectedRateId(t?.id||H.computedRates.find(e=>e.ordering===0&&e.groupOrdering===0)?.id||H.computedRates[0]?.id||null)}this.updateAvailabilityBanners(H.isAvailable,H.restrictionMessage),this.optionsSection&&(this.optionsSection.toggleVisibility(H.isAvailable),this.optionsSection.refresh()),this.tariffsSection&&(this.tariffsSection.toggleVisibility(H.isAvailable),this.tariffsSection.refresh()),this.summarySection&&(this.summarySection.toggleVisibility(H.isAvailable),this.summarySection.refresh()),Je("loading:end",document.body)}updateAvailabilityBanners(t,e){let r=q("banner-box"),i=q("banner-box-restriction"),o=q("banner-restriction-text"),a=q("open-modal");a&&(!!e||!t?a.setAttribute("disabled",""):a.removeAttribute("disabled")),e?(o&&(o.textContent=e),i&&i.classList.remove("hide"),r&&r.classList.add("hide")):t?(r&&r.classList.add("hide"),i&&i.classList.add("hide")):(r&&r.classList.remove("hide"),i&&i.classList.add("hide"))}async fetchReservationPricing(){try{await H.fetchServicePricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId);let t=await H.fetchReservationPricing(this.apartmentProperties.enterpriseId,this.apartmentProperties.categoryId);return this.refreshUIComponents(),t}catch(t){throw console.error("Error fetching reservation pricing:",t),t}}handleDateChange(t,e){return t&&e&&xe.PlainDate.compare(t,e)>=0?(console.warn("Invalid date range: start date must be before end date"),!1):(t&&H.updateStartDate(t),e&&H.updateEndDate(e),!0)}scrollToTariffsSection(){let t=document.getElementById("tariff-section");t&&setTimeout(()=>{t.scrollIntoView({behavior:"smooth",block:"start"})},300)}};function ap(){try{let n=window.WebflowCMSData_apartment;console.log("#=> Properties",n),new Ha(n).init()}catch(n){console.error("Error initializing reservation component",n)}}window.Webflow||(window.Webflow=[]);window.Webflow.push(async()=>{ap()});export{ap as initApparthotelsBookingTemplate};
8
8
  /*! Bundled license information:
9
9
 
10
10
  @vue/shared/dist/shared.esm-bundler.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@influence-society-web/yuna-frontend",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "description": "An Influence Society site",
5
5
  "homepage": "https://github.com/finsweet/client-influence-society#readme",
6
6
  "license": "ISC",