1(()=>{class BookingDualCalendar{constructor(e,a){this.daterange=new window.VoyagerDaterange;const t=this.daterange.cachePickerElements(e);this.daterange.setupAccessibilityAttributes(e,t,a);this.dual_calendar=[];this.dual_calendar.main=document.querySelector(".js-dual-calendar");const n=this.dual_calendar.main.querySelector(".js-start-datepicker");const i=this.dual_calendar.main.querySelector(".js-end-datepicker");const c=this.daterange.getInitialDates();this.result_data={},this.dual_calendar.isOpen=false;this.dual_calendar.card={checkin:{isOpen:false,elem:t.cardCheckin,input:t.inputCheckin},checkOut:{isOpen:false,elem:t.cardCheckout,input:t.inputCheckout}};const r={start_elem:n,end_elem:i,main_elem:this.dual_calendar.main,input:{arrival:t.inputCheckin,departure:t.inputCheckout},initial_date:c.checkin,current_date:c.checkin};this.dualCalendarInstance=new window.DualCalendar(r);this.setupDateClickHandler(e);this.dualCalendarDatePickerInit(c.checkin);this.calenderRightArrowHandler(r);this.calenderleftArrowHandle(r);this.dateInputChange(t.inputCheckin);this.dateInputChange(t.inputCheckout)}setupDateClickHandler(e){e.addEventListener("click",()=>{const e=this.dual_calendar.card;e.checkin.isOpen=!e.checkin.isOpen;if(this.dual_calendar.isOpen){this.dual_calendar.isOpen=false;e.checkin.isOpen=false;e.checkOut.isOpen=false}this.dateCardActiveState();this.dualCalendarPopup()})}dateCardActiveState(){const e=this.dual_calendar.card;e.checkin.elem.classList.toggle("active",e.checkin.isOpen);e.checkOut.elem.classList.toggle("active",e.checkOut.isOpen)}dualCalendarPopup(){const e=this.dual_calendar.card;if(e.checkin.isOpen){this.dual_calendar.isOpen=true;this.dual_calendar.main.classList.add("active")}else{this.dual_calendar.isOpen=false;this.dual_calendar.main.classList.remove("active")}}dualCalendarDatePickerInit(e){this.dualCalendarInstance.init(e);let a=this.dual_calendar.main.getAttribute("data-click-count");const t=new MutationObserver(e=>{e.forEach(e=>{if("attributes"===e.type&&"data-click-count"===e.attributeName){const e=this.dual_calendar.main.getAttribute("data-click-count");if(e!==a){a=e;this.manageDateClick(e)}}})});t.observe(this.dual_calendar.main,{attributes:true,attributeFilter:["data-click-count"]})}manageDateClick(e){if(this.dual_calendar.isOpen){if("1"===e){this.dual_calendar.card.checkin.isOpen=false;this.dual_calendar.card.checkOut.isOpen=false;this.dualCalendarPopup()}if("2"===e){this.dual_calendar.card.checkOut.isOpen=true;this.dual_calendar.card.checkin.isOpen=false}this.dateCardActiveState()}}calenderRightArrowHandler(e){const a=this.dual_calendar.main.querySelector(".js-calendar-right-arrow");a.addEventListener("click",()=>{e.current_date=this.dualCalendarInstance.getNextMonth(e.current_date);this.dualCalendarInstance.init(e.current_date)})}calenderleftArrowHandle(e){const a=this.dual_calendar.main.querySelector(".js-calendar-left-arrow");a.addEventListener("click",()=>{const a=this.daterange.formatDateForCard(e.current_date);const t=this.daterange.formatDateForCard(e.initial_date);if(a.month!==t.month||a.year!==t.year){e.current_date=this.dualCalendarInstance.getPrevMonth(e.current_date);this.dualCalendarInstance.init(e.current_date)}})}dateInputChange(e){e.addEventListener("change",a=>{const t=this.dual_calendar.card;if(e===t.checkin.input)this.result_data.arrival=e.value;if(e===t.checkOut.input)this.result_data.departure=e.value;this.changeDualCalendarInput(this.result_data)});let a=e.value;setInterval(()=>{if(e.value!==a){a=e.value;e.dispatchEvent(new Event("change"))}},100)}changeDualCalendarInput(e){const a=new Date(parseInt(e.arrival));const t=new Date(parseInt(e.departure));const n=document.querySelector(".js-daterange").dataset.content;const i=this.daterange.formatDateForCard(a,JSON.parse(n));const c=this.daterange.formatDateForCard(t,JSON.parse(n));const r=this.dual_calendar.card;this.daterange.updateCardElements(r.checkin.elem,i);this.daterange.updateCardElements(r.checkOut.elem,c)}}window.BookingDualCalendar=BookingDualCalendar})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.