{"version":3,"sources":["constants/index.js","config/index.js","features/drawersSlice.js","lib/helpers.js","components/common/customToast/CustomToast.js","lib/notifications.js","hooks/useOpenBigWidget.js","features/userSlice.js","features/multiproperty/MultipropertySlice.js","interface/index.js","features/MiniBookingWidget/MiniBookingWidgetSlice.js","hooks/useInitCalendar.js","hooks/useOnClickOutside.js","features/roomsSlice.js","components/bookingCalendar/helpers.js","hooks/useGetBookingData.js","hooks/useGetRoomData.js","hooks/useLiveVisitors.js","hooks/useMap.js","hooks/useMedia.js","hooks/useOpenOldWidget.js","hooks/useScrollToTop.js","hooks/useWindowSize.js","hooks/useGetCalendarDay.js","features/cart/cartSlice.js","hooks/useSetCart.js","components/common/barsLoadingIndicator/BarsLoadingIndicator.js","components/channel/Channel.js","components/mobileWidgetHeaderBtn/MobileWidgetHeaderBtn.js","features/modalSlice.js","components/offers/OffersButton.js","components/offers/OfferPopup.js","components/common/input/Input.js","components/common/checkbox/Checkbox.js","components/predifinedPopUp/PredifinedPopUp.js","components/predifinedPopUpType2/PredifinedPopUpType2.js","components/common/button/Button.js","components/common/dynamicIcon/DynamicIcon.js","components/common/modal/hooks.js","components/common/modal/Modal.js","components/popUpNew/popUpNew.js","components/offers/RetargetingOffers.js","components/common/toggleWidgetRoundBtn/ToggleWidgetRoundBtn.js","components/common/stars/Stars.js","components/availableFutureDates/AvailableFutureDates.js","features/noAvailablePrices/NoAvailablePrices.js","components/common/oldWidgetLoadingIndicator/OldWidgetLoadingIndicator.js","components/bookingWidget/MobileBookingWidget.js","components/rate/Rate.js","components/bookButton/BookButton.js","components/bookingWidget/DesktopBookingWidget.js","components/bookingWidget/DesktopHorizontalTooltipContent.js","components/bookingWidget/HorizontalWidgetPriceBlock.js","components/bookingWidget/DesktopHorizontalBookingWidget.js","components/smallTextMultipropertyWidget/SmallTextMultipropertyWidget.js","components/bookingWidget/MultiPropertyBookingWidget.js","components/common/skeleton/Skeleton.js","components/smallMultipropertySingleProperty/SmallMultipropertySingleProperty.js","components/common/paginate/Paginate.js","components/multipropertyCarouselWidget/MultipropertyCarouselWidget.js","features/noAvailablePrices/NoAvailablePricesSlice.js","components/common/readMore/ReadMore.js","components/offers/Offers.js","components/common/counter/Counter.js","components/roomsAdultsSearch/RoomsAdultsSearch.js","components/bookingDropdown/BookingDropdown.js","components/lowestRatesSlider/LowestRatesSlider.js","components/bookingCalendar/Day.js","components/bookingCalendar/hooks.js","components/bookingCalendar/Month.js","components/bookingCalendar/BookingCalendar.js","components/bookingPopoverCalendar/BookingPopoverCalendar.js","components/picker/Picker.js","features/cart/Cart.jsx","components/bigBookingWidgetDrawer/BigBookingWidgetHeader.js","components/bookingHeader/BookingHeader.js","components/common/map/MapWrapper.js","components/bookingWidgetMap/BookingWidgetMap.js","components/cancellationAndPaymentPolicyModal/CancellationAndPaymentPolicyModal.js","components/contactUsModal/ContactUsModal.js","constants/keyCodes.js","components/common/dropdown/Dropdown.js","components/click2CallModal/Click2CallModal.js","components/shareHotelModal/ShareHotelModal.js","components/common/drawer/Drawer.js","components/common/switch/Switch.js","features/ReviewsSlice.js","components/multipropertyCard/MultipropertyCard.js","components/skeletonMultipropertyCard/SkeletonMultipropertyCard.js","components/common/noResults/NoResults.js","components/common/collapsible/Collapsible.js","components/common/tooltip/Tooltip.js","components/reviewScoreFilter/ReviewScoreFilter.js","components/multipropertyFilters/MultipropertyFilters.js","features/multiproperty/Multiproperty.js","components/room/RoomBookButtons.js","features/roomBookingFormSlice.js","components/common/radioGroup/RadioGroup.jsx","components/common/radioGroupCustom/RadioGroupCustom.jsx","components/room/Room.js","components/room/SkeletonRoom.js","components/roomDetails/RoomDetails.js","components/bigBookingWidgetDrawer/SkeletonSidebarSection.js","components/bigBookingWidgetDrawer/BestRateSection.js","components/bigBookingWidgetDrawer/RatingsSection.js","components/bigBookingWidgetDrawer/WhyBookDirectlySection.js","components/singlePropertySidebar/SinglePropertySidebar.js","features/MiniBookingWidget/propertyDetails/PropertyDetails.js","components/sidebarMenu/SidebarMenuItem.js","components/sidebarMenu/SidebarMenu.js","components/trackPricesModal/TrackPricesModal.js","components/finalStepBookingForm/FinalStepBookingForm.js","components/bookingWidgetForm/BookingWidgetForm.js","components/termsAndConditionsModal/TermsAndConditionsModal.js","components/bookingCalendarLite/BookingCalendarLite.js","components/bookingDropdownLite/BookingDropdownLite.js","components/offerModal/OfferModal.js","components/cartItem/CartItem.jsx","components/cartItemSide/CartItemSide.jsx","components/cartItemSide/SkeletonCartItemSide.jsx","components/pleaseWaitForm/PleaseWaitForm.jsx","components/cartContactForm/CartContactForm.jsx","components/cartContactForm/SkeletonCartMobileForm.jsx","components/cartAddOn/CartAddOn.jsx","components/cartAddOn/SkeletonAddOn.jsx","components/cartAddOnWrapper/CartAddOnWrapper.jsx","components/cartItemsMobileButton/CartItemsMobileButton.jsx","components/cartForm/CartForm.jsx","components/cartForm/SkeletonCartForm.jsx","components/areYouSureModal/AreYouSureModal.jsx","components/reviewsModal/ReviewsModal.js","components/bigBookingWidgetDrawer/BigBookingWidgetDrawer.js","components/mobilePropertyCard/MobilePropertyCard.js","components/mobilePropertyCard/MobilePropertyCardSkeleton.js","components/mobileHeaderOptions/MobileHeaderOptions.js","components/radioButtonRatesGroup/RadioButtonRatesGroup.js","components/mobileRoom/MobileRoom.js","components/mobileRoom/SkeletonMobileRoom.js","components/mobilePropertyDetails/MobilePropertyDetails.js","components/mobileBookingDropdown/MobileBookingDropdown.js","components/cartItemsMobile/CartItemsMobile.jsx","components/mobileMultipropertyDrawer/MobileMultipropertyDrawer.js","App.js","reportWebVitals.js","app/store.js","index.js"],"names":["SMALL","MULTIPROPERTY","MOBILE_MULTIPROPERTY","SINGLE_PROPRETY","REGULAR","HORIZONTAL","WIDGET_ACTIONS","dayStatus","searchKeys","CLICK_ACTIONS","sessionStorageKeys","dateFormatStr","dateFormatMobileStr","noReCaptchaPublicKey","MAX_ZINDEX_VALUE","apiConfig","baseUrl","baseStatsUrl","contactUsUrl","getOfferUrl","click2Call","roomForm","addToCartBack","removeFromCartBack","updateToCartBack","removeFromCartExtraBack","addCartItemExtraBack","updateCartItemExtraBack","getAddOns","getFinalPrices","getCValidation","checkAddOns","getCart","submitCartBack","trackPrices","shareHotel","moreReviewsUrl","reserveOnlineUrl","liveVisitorsUrl","developementUrl","demoUrl","localUrl","COOKIE_NAME","WIDGET_STATS_SETTINGS","open","click","offersClick","search","booknow","phone","openInterval","openMultipropertyInterval","clickInterval","WIDGET_LOCAL_STORAGE_KEY","drawersSlice","createSlice","name","initialState","isContactUsDrawerOpen","isBigBookingWidgetDrawerOpen","isMultipropertyDrawerOpen","isMobileMultipropertyDrawerOpen","isMapDrawerOpen","isPropertySidebarDrawerOpen","reducers","openDrawer","state","action","payload","drawerId","closeDrawer","actions","getWidgetPosition","position","vertical","verticalOffset","horizontal","horizontalOffset","split","languageCodeMap","cs","de","el","fr","it","ms","ru","sk","getLanguageCode","lang","document","querySelector","getAttribute","langCode","Object","values","indexOf","getCookie","entry","cookie","find","str","trim","startsWith","pop","error","Error","isMobileDeviceRequest","check","a","navigator","userAgent","vendor","window","opera","test","substr","err","makeStatsRequest","propertyId","data","mobileRequest","axios","get","params","propertyID","widgetAction","mobile","status","miniBookingWidgetSaveData","getLocalStorageData","lastOpenRequestTimestamp","Date","now","lastClickRequestTimestamp","localStorage","setItem","JSON","stringify","makeStatsRequestThrottled","undefined","key","getItem","parse","getsessionStorageData","defaultValue","sessionStorage","areRatesReady","ourPrice","price","loyaltyprice","getPricesUrl","queryString","isZeroNumber","number","_isZeroNumber","isValidPrice","isValid","_isNumber","isNumber","saveWidgetStateToLS","value","checkWidgetIntervalsToDelete","intervalOpts","intervalTimestampKey","intervalKey","applyImportantStyles","stylesObj","prop","style","setProperty","addHashToHexColor","hexColor","stripHTMLTags","html","replace","formatDate","date","formatStr","countryCode","localeCode","locales","bg","enUS","es","nl","nb","pl","ro","sq","srLatn","sv","zhCN","format","locale","getDifferenceInDays","dateLeft","dateRight","dateLeftObj","dateRightObj","differenceInDays","COMPARISON_OPERATORS","CustomToast","icon","text","textColor","url","backgroundColor","closeToast","color","href","target","rel","textDecoration","fontSize","dangerouslySetInnerHTML","__html","displayNotifications","notifications","createToastNotificationsStyles","notification","toast","theme","type","src","autoClose","delay","closeOnClick","className","id","progressClassName","styles","createElement","innerHTML","progressBarBackgroundColor","getElementsByTagName","appendChild","useOpenBigWidget","dispatch","useDispatch","widgetReady","useSelector","miniBookingWidget","selectors","openBigWidgetElmSelectors","attachEvent","selector","listener","tries","elms","querySelectorAll","setTimeout","length","forEach","elm","addEventListener","useEffect","userSlice","updateSearchKey","setCheckInDay","checkInDay","day","setCheckOutDay","checkOutDay","setTempCheckOutDay","tempCheckOutDay","setLanguage","language","setCurrency","currency","setSortBy","sortBy","setSortByProperty","sortByProperty","setIsMultipropertyTrackPrices","isMultipropertyTrackPrices","setCalendarAlert","calendarAlert","msg","setCalendarOpen","isCalendarOpen","setSelectedCancellationAndPaymentPolicyData","selectedCancellationAndPaymentPolicyData","setTermsAndConditionsData","setInitialDate","initialDate","reverse","join","setInitialPrice","initialPrice","Math","round","nights","getBookingWidgetMultipropertyData","setFirstDay","createAsyncThunk","multipropertyUrl","urlParts","map","urlPart","queryParams","response","bookingWidgetMultipropertySlice","multipropertyProperties","multipropertyCount","multipropertyOptions","selectedRoom","selectedRoomIndex","isDrawerOpen","isFetching","isSuccess","isError","errorMessage","multipropertyDropdown","markers","selectedPropertyId","filteredProperties","isMobileFiltersOpen","isMobileSearchOptionsOpen","isMobileDetailsOpen","updateMultiPropertyChannel","channelID","channelId","i","channelIndex","property","channels","findIndex","channel","filter","setSelectedPropertyId","setFilteredProperties","setOpenFilters","setMobileSearchOptions","setMobileDetailsOpen","extraReducers","fulfilled","multiproperty","multiPropertyCount","rejected","pending","ratestrip","getMiniBookingWidgetData","adults","checkin","checkout","localeLanguage","rooms","children","infants","voucher","smartGuest","bookingEngine","keepState","livePrices","isMultipropertyStill","parentPropertyId","location","origin","pageTitle","title","endsWith","substring","rememberClose","miniBookingWidgetSavedState","isOpen","showMultipropertySmallBtn","isDismissed","onbeforeunload","enableBeforeExitAlert","event","preventDefault","returnValue","miniBookingWidgetSlice","show","hidden","ourOffersList","notificationsAvailable","ratesReady","multipropertyData","multipropertyScoreFilter","showOnlySmallMutlipropertyButton","showSingleWidgetMultiproperty","smallMultipropBtnText","widgetPosition","preRetars","bookDirectly","toggle","setDismissed","minimize","hide","setPrice","updateChannel","updateOurPrice","resetNotificationsAvailable","resetAllRoomsUrl","bigPlugin","allRoomsUrl","setCalendar","futureDates","setCartID","cartID","lowestMultiPropertyPrice","multiPropertyBestDealText","multiPropertyImage","multipropertyViewAllButton","Lang","keys","Array","isArray","ourOffers","offersList","notificationsUrl","popUpNewList","useInitCalendar","calendar","checkInDate","checkOutDate","user","isNaN","updatedCalendar","month","index","updatedMonth","updatedJsonResult","fd_JsonResult","updatedData","days","updatedDays","updatedDay","useOnClickOutside","ref","handler","current","contains","removeEventListener","getBookingWidgetRoomData","roomsUrl","bookingWidgetRoomsSlice","roomTypes","setSelectedRoom","isNotAvailableDay","isEnabled","getDaysOfMonth","monthNo","year","fd_Month","fd_Year","useGetBookingData","userProvidedData","totalBookingValue","useMemo","checkInMonthNo","getMonth","checkOutMonthNo","checkInYear","getFullYear","checkOutYear","checkInMonthDays","checkOutMonthDays","daysBetweenCheckInAndCheckOut","_day","isWithinInterval","start","end","reduce","previousValue","calcTotalBookingValue","userBookingData","numberOfRooms","parentPropertyIdMain","parentPropertyID","thisPropertyID","smallWidget","constants","getBookingData","Boolean","useGetRoomData","useLiveVisitors","isMobileDevice","onMove","throttle","post","body","useMap","height","width","initialViewState","zoom","bearing","pitch","bounds","markersLongitude","marker","longitude","markersLatitude","latitude","min","max","getBounds","WebMercatorViewport","fitBounds","padding","useMedia","queries","mediaQueryLists","q","matchMedia","getValue","mql","matches","useState","setValue","addListener","removeListener","useOpenOldWidget","showLoader","setShowLoader","openOldPlugin","OpenPluginFromReact","openEmailForm","openEmailFormReact","openClick2Call","openClick2CallReact","openChat","openChatReact","clickHandler","clickAction","useScrollToTop","dependencyArray","useRef","scrollTop","useWindowSize","windowSize","setWindowSize","handleResize","innerWidth","innerHeight","useGetCalendarDay","cartSlice","cartItems","openSmallCart","currentStep","tempRate","rateID","roomTypeID","hasExtras","isCartCompleted","isCartMobileOpen","isAddingRate","payDirectly","finalPrices","totalPayment","paymentAmount","cartPolicy","setCurrentStep","setTempRate","resetTempRate","addCartItem","push","addCartItemExtra","updatedCartItems","cartItem","extras","updateCartItem","updateCartItemExtra","updatedExtras","extra","addOnID","quantity","removeCartItemExtra","removeCartItem","itemId","setItemIsCompleted","isCompleted","setItemIsNotCompleted","clearCart","setIsCompleteCart","setCartOpenState","setCartMobileOpen","setAddingRate","setSmallCartOpenState","setHasExtras","setCartItems","resetIsCompleteCart","setIsAllItemsCompleteCart","setCartPayDirectly","setFinalPrices","useSetCart","cart","BarsLoadingIndicator","variant","size","classes","alt","defaultProps","Channel","handleClick","logo","logoSize","currencySymbol","extraClasses","disablePointerEvents","isMultiproperty","loading","setLoading","isPriceAvailable","abortCtrl","AbortController","opts","signal","channelName","message","abort","onClick","MobileWidgetHeaderBtn","priceText","colors","disableArrowBtn","showAlways","showBtn","containerStyles","method","onSubmit","primaryBackgroundColor","primaryTextColor","buttonStyles","margin","fontWeight","display","alignItems","version","xmlns","viewBox","preserveAspectRatio","marginRight","transform","fill","stroke","d","modalSlice","isOffersModalOpen","isTrackPricesModalOpen","isCancellationAndPaymentPolicyModalOpen","isContactUsModalOpen","isOfferModalOpen","isCalendarModalOpen","isClick2CallModalOpen","isShareHotelModalOpen","isTermsAndConditionsModalOpen","isAreYouSureModalOpen","isReviewsModalOpen","openModal","modalId","closeModal","OffersButton","offers","showOffersBtn","offersPosition","OfferPopup","props","imageUrl","popupTopImage","topImageHeight","popupTitle","desc","popupText","btnText","popupButton1Text","btnUrl","popupButton1Link","popupID","popupWidth","popupHeight","popupBorderRadius","popupBorderColor","popupBackgroundColor","popupVerticalAlign","popupHorrizontalAlign","popupButton1Background","popupCloseButtonColor","popupCloseButtonBackgroundColor","popupButton1FontColor","popupButton1BorderColor","popupButton1FontSize","popupButtonStyle","popupOpenInterval","popupButton2Text","popupButton2Link","popupButton2FontColor","popupButton2Background","popupButton2BorderColor","popupButton2FontSize","popupBackgroundImage","topMargin","imageTopMargin","bottomMargin","popupBottomMargin","leftMargin","popupLeftMargin","rightMargin","popupRightMargin","extraClass","closedOfferPopups","setIsOpen","positionClass","toLocaleLowerCase","popupCntStyles","borderColor","marginTop","marginBottom","marginLeft","popupInnerCntStyles","borderRadius","backgroundRepeat","backgroundSize","backgroundImage","popupLinkStyles","popupLinkStyles2","Input","forwardRef","autoFocus","isDisabled","isInvalid","isReadOnly","isRequired","errorMsg","helperText","label","onChange","placeholder","rows","isRequiredBorder","onKeyPress","maxlength","autoComplete","showHelperText","inputClass","textAreaClass","htmlFor","role","disabled","readOnly","maxLength","displayName","Checkbox","isChecked","checked","PredifinedPopUp","termsAndConditionsUrl","textboxPlaceHolder","textboxPlaceHolder2","popupButton1MessageAfterPress","setIsSuccess","errors","setErrors","email","setEmail","fullName","setFullName","acceptTermsAndConditions","setAcceptTermsAndConditions","validateInputs","match","pleaseEnterValidEmail","fillInYourEmail","currentUrl","handleSubmit","isEmpty","curCode","toLowerCase","success","verifyEmailMsg","networkError","border","yourEmailAddress","Button","iconSize","isWorking","DynamicIcon","IconComponent","FaIcons","Provider","AUTO_OPEN_CONDITIONS","Modal","animation","placement","renderContent","onClose","onOpen","onOverlayClick","autoOpen","autoOpenConditions","showHeader","extraBodyClass","closeAutoSeconds","modalRef","commonStyles","conditions","hasExitIntent","entries","isFullfilled","timeoutIdRef","removeAutoOpenEventHandlers","handleScroll","clearTimeout","checkShouldOpen","every","condition","removeOnMouseOutEvent","clicks","scrollPercent","scrollY","offsetHeight","scrollPercentRounded","currentScrollPercent","onMouseOut","toElement","relatedTarget","clientY","useAutoOpen","handleClose","setInterval","clearInterval","CSSTransition","in","timeout","nodeRef","unmountOnExit","classNames","ReactDOM","createPortal","maxWidth","closeIcon","$modalRoot","getElementById","renderLink","popUpNew","isDesktopOrMobile","popupTemplate","image","imagePosition","primaryColor","titleColor","description","descriptionColor","buttonText","buttonColor","buttonTextColor","popUpDateTimeISO","popUpDateTime","closeAutomaticaly","closeOption","clickCount","hasClickCount","pageScrollPercent","hasPageCount","pageCount","hasPageScroll","hasShadow","timeDelay","hasTimeDelay","buttonLink","buttonBehavior","closeButtonColor","dateTextColor","dateBackColor","closePopup","isMobileClass","mobileClass","setDays","hours","setHours","minutes","setMinutes","seconds","setSeconds","setautoClose","timeObj","dateString","dateNow","floor","componentDidMount","pageScroll","top","left","tabIndex","focusable","backgroundPosition","background","opacity","transition","RetargetingOffers","popupElm","classList","remove","offer","isPopUpNew","predefinedRetargeting","exitPopup","ToggleWidgetRoundBtn","chatBtnOnClick","toggleWidgetRoundBtn","toggleWidget","showWidget","enableXBtn","showOnlyWhenClosed","showCta","widgetVariant","displayCta","setDisplayCta","openWidgetButtonStyles","getOpenWidgetBtnPosition","btnContainerStyles","includes","useLoyaltyPrice","minPriceBtn","add","nightsText","chatEnabled","Stars","rating","hasHalfStar","fullStars","_","AvailableFutureDates","dates","slice","futureDateData","dateDisplay","dateToDisplay","min_stay","priceStr","reactID","NoAvailablePrices","noAvailablePrices","availableFutureDates","noPricesMessage","OldWidgetLoadingIndicator","loaderStyles","css","bottom","zIndex","MobileBookingWidget","showOffer","enableWidgetOffers","Behavior","poweredBy","enableXButton","lowestPriceMessage","findLowestPriceMessage","disablearrow","bookingRefText","totalScore","totalReviews","widgetPositionStyles","miniWidgetStyles","mobileWidgetHeaderBtnStyles","showOldWidgetLoader","openOldWidget","useCallback","chatBtnHandleClick","inlineStyles","pluginZIndex","hasPrices","showNoPricesMessage","showHorizontalDivider","cursor","loyaltytext","loyaltyurl","borderBottom","toUpperCase","isWebHotelier","stopPropagation","getASecretOffer","float","Rate","rateType","link","BookButton","as","Tag","noPrice","isDirect","noRedirect","isLoading","additionalProps","toString","DesktopBookingWidget","singleProperty","onClickParam","dataOurPrice","closeWidgetBtn","closeBtn","dataPropertyId","dataBookingRefText","dataTotalScore","dataTotalReviews","dataPropertyName","propertyName","showScoresComments","showScoreAndReviews","desktopWidgetStyles","showLowestPriceMessage","secondaryBackgroundColor","isLink","screen","renderActionBtns","ourLowestPrice","borderTopStyle","directPrice","bookNowText","disableLogo","DesktopHorizontalTooltipContent","content","HorizontalWidgetPriceBlock","noPricesMsg","DesktopHorizontalBookingWidget","showToggleBtn","setShowToggleBtn","setShowCta","widgetXPosition","desktopHorizontalWidgetStyles","desktopHorizontalWidgetCntStyles","boxShadow","closeBtnStyles","cursorPointerStyles","bestPriceObj","officialBestRate","onEnter","onExited","appear","horizontalWidgetPrimaryColor","OurBestPrice","WeDoResearch","arrow","lineHeight","horizontalWidgetLoaderColor","SmallTextMultipropertyWidget","smallMultipropBtnTextColor","smallMultipropertyTextBtnColor","MultiPropertyBookingWidget","multipropertyPrice","multipropertyBestPriceText","closeBtnCntRef","mpImage","onMouseOver","onMouseLeave","right","lastMultipropertyCloseTimestamp","dealsFrom","hotels","staysFrom","viewAll","Skeleton","mt","mr","mb","ml","minWidth","SmallMultipropertySingleProperty","propertyIndex","propertyLogo","justifyContent","lowestPrice","hasMinStay","totalScoreDecimal","paddingRight","Properties","properties","Paginate","items","itemsPerPage","currentItems","setCurrentItems","setPageCount","itemOffset","setItemOffset","itemsToShow","setItemsToShow","endOffset","ceil","intervalId","prevOffset","breakLabel","nextLabel","onPageChange","selected","pageRangeDisplayed","previousLabel","renderOnZeroPageCount","marginPagesDisplayed","forcePage","MultipropertyCarouselWidget","multipropertyPropeties","showOnlySmallMobileMultiproperty","intervalID","targetElem","targetElemRole","targetElemAriaLabel","isVisible","lowestPriceProperty","validProperties","parseFloat","propertyPrice","getAvailableFutureDates","noAvailablePricesSlice","builder","addCase","futureDateList","ReadMore","maxChars","moreText","lessText","isReadMore","setIsReadMore","Offers","modal","activeOfferIndex","setActiveOfferIndex","setVisibleOffer","step","handleModalClose","more","less","minStay","minStayText","stayPeriod","stayPeriodText","mealType","mealTypeText","Counter","initialValue","searchKey","lowestValue","maxValue","count","setCount","prevCount","updatedCount","youHaveReachedTheMaximunQuantity","PlacementType","RoomsAdultsSearch","isMobile","setSearchOptions","searchOptions","disableChildrenSearch","handleCounterChange","initValRooms","initValAdults","initValChildren","close","paddingBottom","submit","BookingDropdown","bookingDropdownRef","displayText","Rooms","Adults","Children","handleClickOutside","LowestRatesSlider","lowestRateDays","lowestRateNextDays","lowestRateMonthIndexes","cellPadding","mainClass","wrapperClass","slidesToShow","slidesToScroll","defaultControlsConfig","pagingDotsStyle","prevButtonText","nextButtonText","prevButtonClassName","nextButtonClassName","cellSpacing","framePadding","lowestRateDay","statusClass","lowestRateNextDay","monthIndex","from","soldOut","Day","dayOfMonth","nextDay","onDatesClick","datesOptions","canMakeDataRequest","setCanMakeDataRequest","userCheckInDay","userCheckOutDay","userCheckInDate","userCheckOutDate","tempCheckOutDate","isSelectedDay","isDayWithinInterval","isDayNotAvailable","isSelecting","checkInDayDateObj","checkOutDayDateObj","notAvailableDayBetweenCheckInAndCurrentDay","allDays","isBefore","compareDesc","daysBetweenCheckInAndCurrentDay","isAfter","foundNotAvailableDay","allowHover","useIsAfterNotAvailableDay","isAfterNotAvailableDay","isLowest","userCheckInDateObj","currentDayObj","compareAsc","handleMouseOver","nightsStaying","dateObj","checkNextDay","userCheckOutDateObj","minStayMsg","night","maxSearchNightsAllowedMsg","Month","monthText","weekdaysInitials","monthOnly","firstDayOfMonth","firstDayOfMonthString","toLocaleDateString","weekday","daysOutOfMonth","concat","style2","cells","row","renderRows","BookingCalendar","currentMonthIndex","setCurrentMonthIndex","DateInitials","userCountryCode","tempCheckInDate","calendarContentsRef","currentMonth","nextMonth","handleArrowClick","direction","handleLowestRateClick","filteredNextDays","filteredMonthIndexes","filteredDays","daysArr","flatten","MonthText","paddingLeft","calendarAdults","available","minPrice","selectDates","lowestMonthlyRate","BookingPopoverCalendar","isOpenCalendarModal","bookingCalendarRef","contactUs","Picker","pickedValue","setPickedValue","pickerRef","ariaLabel","handleTiggerBtnClick","renderedItems","numberOfItems","numberOfItemsInCol","actualNumberOfItemsInCol","cols","col","item","itemJSX","isSelected","countryName","handleChange","countryImg","currencyName","currencyCode","currencyID","renderItems","newPickedValue","newPickedItem","Cart","removeItem","somethingWentWrong","totalPrice","total","Number","roomName","rateName","Intl","NumberFormat","goToCart","BigBookingWidgetHeader","hasCart","countries","pluginCountries","currencies","pluginCurrency","selectedCurrency","currencySelected","selectedCountry","country","handleLanguageChange","selectYourLanguage","selectYourCurrency","BookingHeader","iconColor","MapWrapper","mapboxAccessToken","mapStyle","reuseMaps","BookingWidgetMap","closeMap","openPropertyDetails","selectedPopupId","setSelectedPopupId","filteredMarkers","setFilteredMakers","filters","setFilters","multipropertyMapText","uniqueTypes","active","pins","anchor","closeButton","closeOnMove","offset","x","y","goToProperty","updatedFilters","_filter","updatedMarkers","updatedFilter","toggleFilter","CancellationAndPaymentPolicyModal","cancellationAndPaymentPolicyData","modalTitle","cancellationAndPaymentOptions","modalContent","cancellationPolicyType","cancellationPolicy","cancellationPenalty","paymentPolicy","ContactUsModal","setPhone","setMessage","reCaptchaValue","setReCaptchaValue","setIsLoading","reCaptchaRef","reCapatchPublicKey","reCaptchaPublicKey","ignoreReCaptch","token","selectedDays","selecteddays","timeofday","successMessage","reset","requiredField","reCaptcha","pleaseCompleteRecaptcha","howCanWeAssist","qualityHasAlwaysBeen","fillUpThisForm","noValidate","sitekey","iHerebyCertifyThatInfo","KeyCodes","Dropdown","align","searchable","showTextWhenSelected","maxHeight","noResultsText","noSemicolon","options","selectedOption","setSelectedOption","dropdownValue","setDropdownValue","selectedOptionIndex","setSelectedOptionIndex","dropdownOptions","setOptions","dropdownRef","searchInputRef","selectedOptionTmp","option","dropdownSelected","activeElement","onKeyDown","keyCode","dropdownImg","dropdownText","searchText","Click2CallModal","click2CallData","click2CallDropDowns","click2CallName","click2CallImage","dropdownExtraData","countryPhoneCode","click2CallCountryPhone","click2CallCountryCode","setCountry","click2CallText","ShareHotelModal","fromEmail","setFromEmail","toEmail","setToEmail","shareLink","bookLink","dateFrom","dateTo","mailfrom","mailto","emailRegex","shareLinkText","fromEmailText","fromEmailPlaceholder","toEmailPlaceholder","toEmailText","shareMessagePlaceholder","share","Drawer","backdrop","elevation","Switch","inputRef","required","getBookingWidgetReviews","reviewsUrl","bookingWidgetReviewsSlice","reviews","reviewsText","totalReviewsText","guestScoreText","guestScore","guestScoreValueText","sortByScoreOptions","channelScores","sortByCommentsOptions","channelExtras","showCommentsByCountryOptions","setReviews","setSortByScoreOptions","resetReviews","channelComments","channelScorePercentage","channelScore","channelScoreOutOf","sortBySeasonOptions","sortByCommentsLanguage","MultipropertyCard","propertyStars","propertyDescription","commentsUrl","toggleReviewsDrawer","gridTemplateColumns","gap","scoreRating","ariaLocation","saveText","discount","cancelationPolicyType","hasBreakfast","breakfastText","bigPluginUrl","signIn","loyaltyBigPluginUrl","SkeletonMultipropertyCard","NoResults","Collapsible","isFilter","Tooltip","ReviewScoreFilter","menuItems","interactive","tooltipText","MultipropertyFilters","fieldsToCheckAgainst","comparisonOperator","selectedReviewScoreIndex","setSelectedReviewScoreIndex","handleFillterChange","filterName","some","matchingProperties","allFilterResults","currFilter","currFilterResults","fieldToCheckAgainst","result","searchByPropertyName","typeAPropertyNameOrArea","suggestiveFilters","freeWifi","exclusiveOffers","memberPrices","reviewScore","Multiproperty","showMap","enableMap","isFetchingPrices","isFetchingProperties","sortByOptions","sortByText","openTrackPricesModal","cleanup","priceAlertText","checkPriceText","propertiesFound","noPropertiesFound","multipropertyRatesText","RoomBookButtons","isRoomAvailable","rate","showTooltip","pricing","memberPrice","availableRooms","memberBookNowText","memberBookNowUrl","select","BookNowText","bookNowUrl","savePrice","joinUsDiscountMsg","bookingWidgetRoomFormSlice","room","selectedRoomFormIndex","selectedRateID","setSelectedRoomForm","setSelectedRateID","setSelectedFormRoom","rates","obj","RadioGroup","setSelectedRate","selectedRate","defaultIndex","onValueChange","rateIndex","noClick","RadioGroupCustom","Room","defaultRate","isBestRate","roomRef","bestRateText","openRoomDetails","roomIndex","propCode","thisRoomCartItems","openRoomBookingForm","photos","roomType","prePayPrice","roomPhoto","large","ID","handleInfoIconClick","cartSelectedRate","isInCart","isAvailable","notPickedClass","cancelationPolicy","cancelationPenalty","priceAdultsText","photoL","photoText","rateDescription","inThisStayText","paddingTop","remainingText","minStaySort","seeMoreOffers","seeMoreOffersPrice","seeLessOffers","roomAvail","textAlign","whiteSpace","notAvail","SkeletonRoom","RoomDetails","roomInformationText","popularDetails","popularDetailsText","amenities","roomAmenitiesText","amenity","photo","medium","cancellationPoliciesText","variants","SkeletonSidebarSection","expanded","BestRateSection","showSection","linkProps","bestAvailablePriceText","officialWebsite","RatingsSection","channelImage","WhyBookDirectlySection","benefits","benefit","appealIcon","appealOption","SinglePropertySidebar","propertyType","priceAlertsText","ratingText","whyBookDireclty","directAppeal","PropertyDetails","closeProperyDetails","propertiesDropdown","getRoomData","isFetchingRooms","isCartOpen","dayIndex","today","thisDay","channelManager","els","setDate","getDate","checkOutMonth","checkOutMontObj","console","checkOuDayObj","SidebarMenuItem","menuName","menuLink","menuIcon","SidebarMenu","onMouseEnter","menuItem","menuAction","menuname","menulink","menuicon","TrackPrices","cookiepolicyLink","acceptEmailNotifications","setAcceptEmailNotifications","receiveEmailNotification","priceTracking","bySubscribing","privacyPolicy","FinalStepBookingForm","bookingID","propertyPhone","yourBookingIsConfirmed","your","isText","inTheNextMinutesYoullReceiveAnEmail","withBookingDetails","pleasePresentThisConfirmationAtCheckIn","needHelpWithYourReservation","contactTheProperty","BookingWidgetForm","div1Ref","div2Ref","div3Ref","firstName","setFirstName","lastname","setLastname","nationality","setNationality","specialRequests","setSpecialRequests","setChecked","postalCode","setPostalCode","setBookingID","address","setAddress","city","setCity","stateRegion","setStateRegion","cardno","cardtype","expirydt","cvv","cardname","card","setCard","scrollIntoView","behavior","block","inline","scrolled","countryLocalFullName","cardnumber","inputtxt","cardtype1","tmpUserBookingData","tmpNationality","expiration","cardName","rateid","rateDetailID","discountID","d1","d2","step1Class","step2Class","cursorStyle","redBorderClass","textTransform","backTo","roomSelection","billingInformation","confirm","yourBookingDetails","roomPrice","howMuchWillItCostToCancel","flexDirection","minHeight","contactAndPayment","e","lastName","flexWrap","securePayment","allCardDetailsAreEncrypted","creditCardUpper","paymentCardNumber","v","parts","ccFormat","cartypeNew","expdate","expriyFormat","pattern","nameOnCard","iHaveReadAndIAcceptThe","termsAndConditions","TmpTermsAndConditions","wellSendConfirmationOfBookingToEmail","confirmAndBook","TermsAndConditionsModal","termsAndConditionsData","BookingCalendarLite","BookingDropdownLite","OfferModal","isCalendarOpenModal","isCalendarOpenDrawer","clearValues","setLastName","setErrorMessage","setIsCompleted","tmpcheckout","setDatesOptions","prevOptions","setCalendarOpenModal","setCalendarOpenDrawer","great","checkYourEmailForOurProposal","tellUsYourBookingRequest","personalInformation","getAQuote","letUsCreateProposal","CartItem","hasCartExtras","hasExtrasForItem","hasExtra","onClickTrash","extraItem","onClickContinue","borderTop","continueTxt","continueWithoutExtras","CartItemSide","descriction","priceDescription","img","addOnText","propName","multiPropertyParentName","firstIncompleteIndex","yourBooking","propertyDetails","valign","SkeletonCartItemSide","PleaseWaitForm","CartContactForm","ipCountry","paymentMethods","cartData","currentLocalStep","setCurrentLocalStep","cardMethods","meth","PaymentType","bankMethods","matchingCountry","defaultPaymentOption","submitError","setSubmitError","selectedBankOption","setSelectedBankOption","selectedCardOption","setSelectedCardOption","paymentMethodsCard","paymentMethodsBank","isMountedRef","cValidation","pleaseCheckYourCardDetails","newCartID","formattedValue","MM","YY","expDateFormatter","cNo","cName","cExp","cCV","handleOptionClick","payWith","creditCard","bankTransfer","selectACardOption","selectABankOption","pMethod","PaymentGatewayID","PaymentName","PaymentDescription","PaymentImg","termsAndPrivacyPolicy","thankYouForYourPatiencePleaseWait","thankYouForYourPatiencePleaseWaitEmail","SkeletonCartMobileForm","overflow","CartAddOn","minQuantity","maxQuantity","selectedItem","existingExtras","thisExtra","amount","setAmount","updateExtra","addToCart","update","SkeletonAddOn","CartAddOnWrapper","selectedItemID","setExtras","setIsFetching","fetchAddOns","extrasData","noAddOnsAvailable","CartItemsMobileButton","yourStaySummary","CartForm","setHasCartExtras","changeCartFormState","step3Class","checkCart","checkCartResponse","isSomethingDifferent","isEqual","someChangesInYourCart","back","addOns","addAnotherRoom","chooseAddOns","forTxt","SkeletonCartForm","AreYouSureModal","temp","youHaveAlradyChosenARateForThisRoomCategory","changeRate","areYouSureYouWantToChangeTheRate","cancel","ReviewsModal","noResultsFound","noReviews","categories","guestReviews","orderCommentsBy","seasons","averageRatingScore","totalNumberOfReviews","allSources","reviewsPage","setReviewsPage","sortReviewsBy","setSortReviewsBy","selectedReviewsCountry","setSelectedReviewsCountry","selectedReviewsScore","setSelectedReviewsScore","selectedReviewsSeason","setSelectedReviewsSeason","hasMore","setHasMore","fullReviewsRefresh","setFullReviewsRefresh","activeChannel","setActiveChannel","filterChannelID","setFilterChannelID","isFiltersOpen","setIsFiltersOpen","getMoreReviews","page","sortByScore","sortBySeason","filterByChannel","PropertyID","Country","Sort","Page","SortScore","SortSeason","ChannelID","noReviewsAvailable","handleChannelFilterClick","channelExtra","categoryAlias","categoryName","categoryScore","dataLength","loader","next","scrollableTarget","channelComment","commentName","commentChannelIcon","commentDate","commentTitle","commentText","channelReviews","channelScoreDecimal","BigBookingWidgetDrawer","selectedProperty","sortByClick2Call","drawers","isMapOpen","pluginMenus","handleSidebarMenuBtnClick","MobilePropertyCard","handlePropertyClick","only","roomsLeft","propertySite","officialSite","MobilePropertyCardSkeleton","MobileHeaderOptions","details","RadioButtonRatesGroup","outerClass","rightLabelClass","rightLabelText","buttonID","MobileRoom","cartSelectedRateID","BestPriceText","freeCancelationText","SkeletonMobileRoom","MobilePropertyDetails","MobileBookingDropdown","CartItemsMobile","MobileMultipropertyDrawer","setIsCalendarOpen","strokeWidth","multipropertyAppearText","App","setShowWidget","retargetingOffers","popUpNewOffers","drawerAnchor","toastPosition","tostZIndex","getFutureDates","futureDatesUrl","newPrice","showOffers","notificationsShown","intervalOptionIsDismissed","intervalOptionIsOpen","routes","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","configureStore","reducer","render","StrictMode","store"],"mappings":"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","file":"static/js/main.880c79b9.chunk.js","sourcesContent":["export const SMALL = 'small';\nexport const MULTIPROPERTY = 'multiproperty';\nexport const MOBILE_MULTIPROPERTY = 'mobile-multiproperty';\nexport const SINGLE_PROPRETY = 'single-property';\nexport const REGULAR = 'regular';\nexport const REGULAR_BIG = 'regular-big';\nexport const HORIZONTAL = 'horizontal';\nexport const SMALL_MULTIPROPERTY = 'small-multiproperty';\n\nexport const WIDGET_ACTIONS = {\n EMAIL: 'email',\n EMAIL_FORM: 'emailForm',\n TEL: 'tel',\n MESSENGER: 'messenger',\n CLICK_2_CALL: 'click2call',\n SHOW_CONTACT_US_FORM: 'showContactUsForm',\n SHOW_CLICK_2_CALL_FORM: 'showClick2CallForm',\n SHOW_SHARE_HOTEL_FORM: 'showShareHotelForm',\n};\n\nexport const dayStatus = {\n AVAILABLE: 'AVL',\n SOLD_OUT: 'SLD',\n MIN_STAY: 'MIN',\n NOT_AVAILABLE: 'NA',\n STOP_SALE: 'SS',\n CALL_US: 'CLOUT',\n};\n\nexport const searchKeys = {\n NUMBER_OF_ROOMS: 'numberOfRooms',\n ADULTS: 'adults',\n CHILDREN: 'children',\n};\n\nexport const CLICK_ACTIONS = {\n OPEN_PLUGIN: 'openplugin',\n OPEN_BIG_PLUGIN: 'openbigplugin',\n LINK: 'link',\n OPEN_EMAIL_FORM: 'OPEN_EMAIL_FORM',\n OPEN_CLICK_2_CALL: 'OPEN_CLICK_2_CALL',\n OPEN_CHAT: 'OPEN_CHAT',\n};\n\nexport const sessionStorageKeys = {\n CLOSED_OFFER_POPUPS: 'closedOfferPopups',\n};\n\nexport const dateFormatStr = 'EEE d.L';\nexport const dateFormatV2Str = 'EEE d.L.yy';\nexport const dateFormatMobileStr = 'd MMM';\nexport const noReCaptchaPublicKey = 'reCAPTCHA: No public key provided';\nexport const MAX_SEARCH_NIGHTS = 20;\n\n// CSS\nexport const MAX_ZINDEX_VALUE = 2147483647;\n","export const apiConfig = {\n baseUrl: 'https://ratestrip.abouthotelier.com/API/Price/GetPrice',\n baseStatsUrl: 'https://ratestrip.abouthotelier.com/API/Price/PluginStats',\n contactUsUrl: 'https://hotelmanager.abouthotelier.com/API/Price/ContactUs',\n getOfferUrl: 'https://ratestrip.abouthotelier.com/API/Price/GetOffer',\n click2Call: 'https://hotelmanager.abouthotelier.com/API/Price/ClickToCall',\n roomForm: 'https://ratestrip.abouthotelier.com/API/Price/roomForm',\n // roomForm: 'https://devhotelmanager.abouthotelier.com/API/Price/roomForm',\n addToCartBack:\n 'https://ratestrip.abouthotelier.com/API/Price/addToCartBack',\n removeFromCartBack:\n 'https://ratestrip.abouthotelier.com/API/Price/removeFromCartBack',\n updateToCartBack:\n 'https://ratestrip.abouthotelier.com/API/Price/updateToCartBack',\n removeFromCartExtraBack:\n 'https://ratestrip.abouthotelier.com/API/Price/removeFromCartExtraBack',\n addCartItemExtraBack:\n 'https://ratestrip.abouthotelier.com/API/Price/addCartItemExtraBack',\n updateCartItemExtraBack:\n 'https://ratestrip.abouthotelier.com/API/Price/updateCartItemExtraBack',\n getAddOns: 'https://ratestrip.abouthotelier.com/API/Price/getAddOns',\n getFinalPrices:\n 'https://ratestrip.abouthotelier.com/API/Price/getFinalPrices',\n getCValidation:\n 'https://ratestrip.abouthotelier.com/API/Price/getCValidation',\n checkAddOns: 'https://ratestrip.abouthotelier.com/API/Price/checkAddOns',\n getCart: 'https://ratestrip.abouthotelier.com/API/Price/getCart',\n // submitCartBack:\n // 'https://devhotelmanager.abouthotelier.com/API/Price/submitCartBack',\n submitCartBack:\n 'https://ratestrip.abouthotelier.com/API/Price/submitCartBack',\n\n trackPrices: 'https://hotelmanager.abouthotelier.com/API/Price/TrackPrices',\n shareHotel: 'https://hotelmanager.abouthotelier.com/API/Price/ShareHotel',\n moreReviewsUrl:\n 'https://ratestrip.abouthotelier.com/API/Price/GetPropertyCommentsMore',\n reserveOnlineUrl: 'https://palladionboutiquehotel.reserve-online.net/',\n liveVisitorsUrl:\n 'https://ratestrip.abouthotelier.com/API/Price/LiveVisitors',\n developementUrl:\n 'https://hotelmanager.abouthotelier.com/API/Price/GetPrice?url=https://palladion-hotel.gr/&lang=en-US',\n demoUrl:\n // 'https://devhotelmanager.abouthotelier.com/API/Price/GetPrice?url=http://hotelmanager.abouthotelier.com/newreservation/',\n // 'https://devhotelmanager.abouthotelier.com/API/Price/GetPrice?url=http://hotelmanager.abouthotelier.com/reactdemocart/',\n 'https://devhotelmanager.abouthotelier.com/API/Price/GetPrice?url=http://hotelmanager.abouthotelier.com/reactdemo/',\n localUrl: 'http://localhost:3000/react/data/example-response.json',\n // developementUrl:\n // 'https://hotelmanager.abouthotelier.com/API/Price/GetPrice?url=https://palladion-hotel.gr/&lang=el-GR',\n};\n\nexport const COOKIE_NAME = 'HotelManager_Plugin_';\n\nexport const WIDGET_STATS_SETTINGS = {\n actions: {\n open: 'open',\n click: 'click',\n offersClick: 'offers_click',\n search: 'search',\n booknow: 'booknow',\n phone: 'phone',\n },\n intervals: {\n openInterval: 10 * 60 * 1000, // 10 min,\n openMultipropertyInterval: 10 * 60 * 1000, // 10 min,\n clickInterval: 10 * 60 * 1000, // 10 min\n },\n};\n\nexport const WIDGET_LOCAL_STORAGE_KEY = 'ab-mini-booking-widget';\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport const drawersSlice = createSlice({\n name: 'drawers',\n initialState: {\n isContactUsDrawerOpen: false,\n isBigBookingWidgetDrawerOpen: false,\n isMultipropertyDrawerOpen: false,\n isMobileMultipropertyDrawerOpen: false,\n isMapDrawerOpen: false,\n isPropertySidebarDrawerOpen: false,\n },\n reducers: {\n openDrawer: (state, action) => {\n state[`is${action.payload.drawerId}Open`] = true;\n },\n closeDrawer: (state, action) => {\n state[`is${action.payload.drawerId}Open`] = false;\n },\n },\n});\n\nexport const { openDrawer, closeDrawer } = drawersSlice.actions;\n","import axios from 'axios';\nimport { differenceInDays, format } from 'date-fns';\nimport {\n bg,\n cs,\n de,\n el,\n enUS,\n es,\n fr,\n it,\n ms,\n nl,\n nb,\n pl,\n ro,\n ru,\n sk,\n sq,\n srLatn,\n sv,\n zhCN,\n} from 'date-fns/locale';\nimport { get } from 'lodash';\n\nimport {\n apiConfig,\n COOKIE_NAME,\n WIDGET_LOCAL_STORAGE_KEY,\n WIDGET_STATS_SETTINGS,\n} from '../config';\n\nexport const getWidgetPosition = ({\n position = 'bottom-right',\n vertical: verticalOffset = '30px',\n horizontal: horizontalOffset = '30px',\n} = {}) => {\n const [vertical, horizontal] =\n position?.split('-') || 'bottom-right'.split('-');\n\n return {\n [vertical]: verticalOffset || '30px',\n [horizontal]: horizontalOffset || '30px',\n };\n};\n\nexport const getOpenWidgetBtnPosition = (widgetPosition = 'bottom-right') => {\n // eslint-disable-next-line no-unused-vars\n const [vertical, horizontal] =\n widgetPosition?.split('-') || 'bottom-right'.split('-');\n\n return horizontal === 'left'\n ? { marginRight: 'auto' }\n : { marginLeft: 'auto' };\n};\n\nconst languageCodeMap = {\n cs: 'cs-CZ',\n de: 'de-DE',\n el: 'el-GR',\n fr: 'fr-FR',\n it: 'it-IT',\n ms: 'ms-MY',\n ru: 'ru-RU',\n sk: 'sk-SK',\n 'en-US': 'en-US',\n};\n\nexport const getLanguageCode = () => {\n const lang = document.querySelector('html').getAttribute('lang');\n const langCode = languageCodeMap[lang];\n\n if (Object.values(languageCodeMap).indexOf(lang) !== -1) {\n return lang;\n }\n\n return langCode || '';\n};\n\nexport const getCookie = (name) => {\n try {\n const entry = document.cookie\n .split(';')\n .find((str) => str.trim().startsWith(name));\n\n if (entry) {\n return entry.split('=').pop();\n }\n return null;\n } catch (error) {\n throw new Error(error);\n }\n};\n\nexport const isMobileDeviceRequest = () => {\n try {\n let check = false;\n (function (a) {\n if (\n // eslint-disable-next-line no-useless-escape\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\n a\n ) ||\n // eslint-disable-next-line no-useless-escape\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n } catch (err) {\n throw new Error(err);\n }\n};\n\nexport const makeStatsRequest = async (action, propertyId, data) => {\n const langCode = getLanguageCode();\n const cookie = getCookie(COOKIE_NAME);\n const mobileRequest = isMobileDeviceRequest();\n\n try {\n const response = await axios.get(apiConfig.baseStatsUrl, {\n params: {\n propertyID: propertyId,\n lang: langCode,\n cookie: cookie,\n widgetAction: action,\n mobile: mobileRequest,\n ...data,\n },\n });\n\n if (response.status === 200) {\n const miniBookingWidgetSaveData = getLocalStorageData(\n WIDGET_LOCAL_STORAGE_KEY\n );\n\n if (action === WIDGET_STATS_SETTINGS.actions.open) {\n miniBookingWidgetSaveData.lastOpenRequestTimestamp = Date.now();\n } else if (\n action === WIDGET_STATS_SETTINGS.actions.click ||\n action === WIDGET_STATS_SETTINGS.actions.offersClick\n ) {\n miniBookingWidgetSaveData.lastClickRequestTimestamp =\n Date.now();\n }\n\n localStorage.setItem(\n WIDGET_LOCAL_STORAGE_KEY,\n JSON.stringify(miniBookingWidgetSaveData)\n );\n }\n } catch (error) {}\n};\n\nexport const makeStatsRequestThrottled = (action, propertyId) => {\n const { lastOpenRequestTimestamp, lastClickRequestTimestamp } =\n getLocalStorageData(WIDGET_LOCAL_STORAGE_KEY);\n const now = Date.now();\n\n switch (action) {\n case WIDGET_STATS_SETTINGS.actions.open:\n if (\n lastOpenRequestTimestamp === undefined ||\n now - lastOpenRequestTimestamp >=\n WIDGET_STATS_SETTINGS.intervals.openInterval\n ) {\n makeStatsRequest(action, propertyId);\n }\n break;\n case WIDGET_STATS_SETTINGS.actions.click:\n case WIDGET_STATS_SETTINGS.actions.offersClick:\n if (\n lastClickRequestTimestamp === undefined ||\n now - lastClickRequestTimestamp >=\n WIDGET_STATS_SETTINGS.intervals.clickInterval\n ) {\n makeStatsRequest(action, propertyId);\n }\n break;\n case WIDGET_STATS_SETTINGS.actions.booknow:\n makeStatsRequest(action, propertyId);\n break;\n case WIDGET_STATS_SETTINGS.actions.phone:\n makeStatsRequest(action, propertyId);\n break;\n }\n};\n\nexport const getLocalStorageData = (key) => {\n const data = localStorage.getItem(key);\n\n return data ? JSON.parse(data) : {};\n};\n\nexport const addToCartLocalStorageData = (key, value) => {\n const existingData = localStorage.getItem(key);\n const dataArray = existingData ? JSON.parse(existingData) : [];\n const isRateIDExists = dataArray.some(\n (item) => item.rateID === value.rateID\n );\n if (!isRateIDExists) {\n dataArray.push(value);\n localStorage.setItem(key, JSON.stringify(dataArray));\n }\n};\n\nexport const removeFromCartLocalStorageData = (key) => {\n const existingData = localStorage.getItem('cart');\n const dataArray = existingData ? JSON.parse(existingData) : [];\n const updatedCartData = dataArray.filter(\n (cartItem) => cartItem.rateID !== key\n );\n localStorage.setItem('cart', JSON.stringify(updatedCartData));\n};\n\nexport const getsessionStorageData = (key, defaultValue = {}) => {\n const data = sessionStorage.getItem(key);\n\n return data ? JSON.parse(data) : defaultValue;\n};\n\nexport const areRatesReady = (ourPrice) => {\n if (\n (typeof ourPrice.price === 'string' &&\n ourPrice.price.startsWith('getprice')) ||\n (typeof ourPrice.loyaltyprice === 'string' &&\n ourPrice.loyaltyprice.startsWith('getprice'))\n ) {\n return false;\n }\n\n return true;\n};\n\nexport const getPricesUrl = (queryString) => {\n let url;\n\n if (process.env.NODE_ENV === 'production') {\n url = apiConfig.baseUrl + '?' + queryString;\n } else if (process.env.REACT_APP_DEV_ENV === 'local') {\n url = apiConfig.localUrl;\n } else if (process.env.REACT_APP_DEV_ENV === 'demo') {\n url = apiConfig.demoUrl + '?' + queryString;\n } else {\n url = apiConfig.developementUrl + queryString;\n }\n\n return url;\n};\n\nexport const isZeroNumber = (number) => {\n const zeroNumberRe = /^[0\\\\.,]+$/;\n\n let _isZeroNumber = false;\n\n switch (typeof number) {\n case 'number':\n _isZeroNumber = number === 0;\n break;\n case 'string':\n _isZeroNumber = zeroNumberRe.test(number.trim());\n break;\n default:\n _isZeroNumber = false;\n }\n if (typeof number === 'number') {\n return number === 0;\n }\n\n return _isZeroNumber;\n};\n\nexport const isNumber = (number) => {\n // eslint-disable-next-line no-useless-escape\n const isNumberRe = /^\\d*([\\d\\.?,?\\d])*\\d*$/;\n\n let _isNumber = false;\n\n switch (typeof number) {\n case 'number':\n _isNumber = true;\n break;\n case 'string':\n _isNumber = number !== '' && isNumberRe.test(number.trim());\n break;\n default:\n _isNumber = false;\n }\n\n return _isNumber;\n};\n\nexport const isValidPrice = (price) => {\n let isValid = false;\n\n switch (typeof price) {\n case 'string':\n isValid = isNumber(price.trim()) && !isZeroNumber(price.trim());\n break;\n case 'number':\n isValid = price > 0;\n break;\n default:\n isValid = false;\n }\n\n return isValid;\n};\n\nexport const saveWidgetStateToLS = (state = {}) => {\n const miniBookingWidgetSaveData = getLocalStorageData(\n WIDGET_LOCAL_STORAGE_KEY\n );\n for (const key in state) {\n const value = state[key];\n miniBookingWidgetSaveData[key] = value;\n }\n localStorage.setItem(\n WIDGET_LOCAL_STORAGE_KEY,\n JSON.stringify(miniBookingWidgetSaveData)\n );\n};\n\nexport const checkWidgetIntervalsToDelete = (intervalOpts = {}) => {\n const miniBookingWidgetSaveData = getLocalStorageData(\n WIDGET_LOCAL_STORAGE_KEY\n );\n const now = Date.now();\n if (\n miniBookingWidgetSaveData[intervalOpts.intervalTimestampKey] ===\n undefined ||\n now - miniBookingWidgetSaveData[intervalOpts.intervalTimestampKey] >=\n WIDGET_STATS_SETTINGS.intervals.openMultipropertyInterval\n ) {\n delete miniBookingWidgetSaveData[intervalOpts.intervalKey];\n delete miniBookingWidgetSaveData[intervalOpts.intervalTimestampKey];\n }\n\n localStorage.setItem(\n WIDGET_LOCAL_STORAGE_KEY,\n JSON.stringify(miniBookingWidgetSaveData)\n );\n};\n\nexport const applyImportantStyles = (el, stylesObj) => {\n if (el) {\n for (const prop in stylesObj) {\n el.style.setProperty(prop, stylesObj[prop], 'important');\n }\n }\n};\n\nexport const addHashToHexColor = (hexColor = '') => {\n if (hexColor.startsWith('#')) {\n return hexColor;\n }\n\n return '#' + hexColor;\n};\n\nexport const stripHTMLTags = (html = '') => {\n if (typeof html !== 'string') {\n return '';\n }\n\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const formatDate = (date, formatStr, countryCode) => {\n const locales = {\n bg,\n cs,\n de,\n el,\n enUS,\n es,\n fr,\n it,\n ms,\n nl,\n nb,\n pl,\n ro,\n ru,\n sk,\n sq,\n srLatn,\n sv,\n zhCN,\n };\n let localeCode;\n\n switch (countryCode) {\n case 'en-US':\n localeCode = 'enUS';\n break;\n case 'sr-Latn-RS':\n localeCode = 'srLatn';\n break;\n case 'zh-CN':\n localeCode = 'zhCN';\n break;\n default:\n localeCode = countryCode.split('-')[0];\n }\n\n return format(date, formatStr, {\n locale: locales[localeCode],\n });\n};\n\n/**\n * Get the number of full day periods between two dates\n *\n * @param {string} dateLeft - the later date\n * @param {string} dateRight - the earlier date\n *\n */\nexport const getDifferenceInDays = (dateLeft, dateRight) => {\n const dateLeftObj = new Date(dateLeft);\n const dateRightObj = new Date(dateRight);\n\n return differenceInDays(dateLeftObj, dateRightObj);\n};\n\nexport const COMPARISON_OPERATORS = {\n gte: 'gte',\n gt: 'gt',\n lte: 'lte',\n lt: 'lt',\n eq: 'eq',\n};\n\nexport const filter = (data, filters) => {\n const filteredData = data?.filter((item) => {\n // contains the result of each filter (true or false)\n let allFilterResults = [];\n\n for (let i = 0; i < filters.length; i++) {\n const currFilter = filters[i];\n\n // true or false\n const currFilterResults = currFilter.fieldsToCheckAgainst.some(\n (fieldToCheckAgainst) => {\n const value = get(item, fieldToCheckAgainst);\n if (typeof currFilter.value === 'number') {\n switch (currFilter.comparisonOperator) {\n case COMPARISON_OPERATORS.gte:\n return value >= currFilter.value;\n case COMPARISON_OPERATORS.gt:\n return value > currFilter.value;\n case COMPARISON_OPERATORS.lte:\n return value <= currFilter.value;\n case COMPARISON_OPERATORS.lt:\n return value < currFilter.value;\n case COMPARISON_OPERATORS.eq:\n return value === currFilter.value;\n }\n }\n\n // Filter does not have a value, so that means that it is not active\n // and the item can pass through\n if (!currFilter.value) {\n return true;\n }\n\n if (\n typeof currFilter.value === 'string' &&\n currFilter.comparisonOperator !==\n COMPARISON_OPERATORS.eq\n ) {\n return value\n .toLowerCase()\n .includes(currFilter.value.toLocaleLowerCase());\n }\n\n return value === currFilter.value;\n }\n );\n\n allFilterResults = allFilterResults.concat(currFilterResults);\n }\n\n // Return only the items that satisfy all the active filters\n return allFilterResults.every((result) => result === true);\n });\n\n return filteredData;\n};\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst CustomToast = ({\r\n icon,\r\n text,\r\n textColor,\r\n backgroundColor,\r\n url,\r\n closeToast,\r\n}) => {\r\n return (\r\n
\r\n {url ? (\r\n \r\n ) : (\r\n

\r\n )}\r\n
\r\n );\r\n};\r\n\r\nCustomToast.propTypes = {\r\n icon: PropTypes.string,\r\n text: PropTypes.string,\r\n textColor: PropTypes.string,\r\n backgroundColor: PropTypes.string,\r\n url: PropTypes.string,\r\n closeToast: PropTypes.func,\r\n};\r\n\r\nexport default CustomToast;\r\n","import { toast } from 'react-toastify';\r\nimport CustomToast from '../components/common/customToast/CustomToast';\r\n\r\nexport const displayNotifications = (notifications) => {\r\n // create styles and add them to the head\r\n createToastNotificationsStyles(notifications);\r\n\r\n for (const notification of notifications) {\r\n toast(\r\n ,\r\n {\r\n position: notification.position || 'top-left',\r\n icon: ({ theme, type }) => ,\r\n autoClose: notification.autoClose,\r\n delay: notification.delay,\r\n closeOnClick: notification.closeOnClick,\r\n className: `ab-notification-toast-${notification.id}`,\r\n progressClassName: `ab-notification-toast-${notification.id}-progress-bar`,\r\n style: notification.style,\r\n }\r\n );\r\n }\r\n};\r\n\r\nexport const createToastNotificationsStyles = (notifications) => {\r\n const styles = document.createElement('style');\r\n\r\n for (const notification of notifications) {\r\n if (notification.backgroundColor) {\r\n styles.innerHTML += `.ab-notification-toast-${notification.id} { background-color: ${notification.backgroundColor} !important; }`;\r\n styles.innerHTML += '\\n';\r\n }\r\n\r\n if (notification.progressBarBackgroundColor) {\r\n styles.innerHTML += `.ab-notification-toast-${notification.id}-progress-bar { background-color: ${notification.progressBarBackgroundColor} !important; }`;\r\n styles.innerHTML += '\\n';\r\n\r\n styles.innerHTML += `.ab-notification-toast-${notification.id}-progress-bar.Toastify__progress-bar-theme--light { background: transparent; }`;\r\n }\r\n\r\n if (notification.textColor) {\r\n styles.innerHTML += '\\n';\r\n styles.innerHTML += `.ab-notification-toast-${notification.id} .Toastify__close-button--light { color: ${notification.textColor} !important; }`;\r\n }\r\n }\r\n\r\n document.getElementsByTagName('head')[0].appendChild(styles);\r\n};\r\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { openDrawer } from 'features/drawersSlice';\nimport { isMobileDeviceRequest } from 'lib';\n\nconst MAX_TRIES = 10;\n\n// attach click event to non react element in order to big widget\nconst useOpenBigWidget = () => {\n const dispatch = useDispatch();\n\n const widgetReady = useSelector(\n (state) => state.miniBookingWidget.widgetReady\n );\n const selectors =\n useSelector(\n (state) => state.miniBookingWidget.openBigWidgetElmSelectors\n ) || [];\n const mobileRequest = isMobileDeviceRequest();\n const attachEvent = (selector, listener, tries) => {\n // reached max tries, we need to stop\n if (tries === 0) {\n return;\n }\n\n const elms = document.querySelectorAll(selector);\n\n // element is not present in the DOM retry again after 1000ms\n if (!elms) {\n setTimeout(() => attachEvent(selector, listener, tries - 1), 1000);\n }\n\n if (elms.length > 0) {\n elms.forEach((elm) => {\n elm.addEventListener('click', listener);\n });\n }\n };\n\n useEffect(() => {\n // widget has not loaded yet\n if (!widgetReady) {\n return;\n }\n\n selectors.forEach((selector) => {\n attachEvent(\n selector,\n () => {\n if (mobileRequest) {\n dispatch(\n openDrawer({\n drawerId: 'MobileMultipropertyDrawer',\n })\n );\n } else {\n dispatch(\n openDrawer({ drawerId: 'BigBookingWidgetDrawer' })\n );\n }\n },\n MAX_TRIES\n );\n });\n }, [widgetReady]);\n};\n\nexport default useOpenBigWidget;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { searchKeys } from '../constants';\n\nexport const userSlice = createSlice({\n name: 'user',\n initialState: {\n [searchKeys.NUMBER_OF_ROOMS]: 1,\n [searchKeys.ADULTS]: 2,\n [searchKeys.CHILDREN]: 0,\n checkInDay: null,\n checkOutDay: null,\n tempCheckOutDay: null,\n language: null,\n currency: null,\n sortBy: '',\n sortByProperty: '',\n isMultipropertyTrackPrices: '',\n calendarAlert: '',\n isCalendarOpen: false,\n selectedCancellationAndPaymentPolicyData: null,\n initialDate: null,\n },\n reducers: {\n updateSearchKey: (state, { payload }) => {\n state[payload.key] = payload.value;\n },\n setCheckInDay: (state, { payload }) => {\n state.checkInDay = payload.day;\n },\n setCheckOutDay: (state, { payload }) => {\n state.checkOutDay = payload.day;\n },\n setTempCheckOutDay: (state, { payload }) => {\n state.tempCheckOutDay = payload.day;\n },\n setLanguage: (state, { payload }) => {\n state.language = payload.language;\n },\n setCurrency: (state, { payload }) => {\n state.currency = payload.currency;\n },\n setSortBy: (state, { payload }) => {\n state.sortBy = payload.sortBy;\n },\n setSortByProperty: (state, { payload }) => {\n state.sortByProperty = payload.sortByProperty;\n },\n setIsMultipropertyTrackPrices: (state, { payload }) => {\n state.isMultipropertyTrackPrices =\n payload.isMultipropertyTrackPrices;\n },\n setCalendarAlert: (state, { payload }) => {\n state.calendarAlert = payload.msg;\n },\n setCalendarOpen: (state, { payload }) => {\n state.isCalendarOpen = payload.isCalendarOpen;\n },\n setSelectedCancellationAndPaymentPolicyData: (state, { payload }) => {\n state.selectedCancellationAndPaymentPolicyData = payload;\n },\n setTermsAndConditionsData: (state, { payload }) => {\n state.setTermsAndConditionsData = payload;\n },\n setInitialDate: (state, { payload }) => {\n state.initialDate = payload?.split('/').reverse().join('-');\n },\n setInitialPrice: (state, { payload }) => {\n state.initialPrice =\n Math.round((payload?.price / payload?.nights) * 100) / 100;\n },\n },\n});\n\nexport const {\n updateSearchKey,\n setCheckInDay,\n setCheckOutDay,\n setTempCheckOutDay,\n setCurrency,\n setLanguage,\n setSortBy,\n setSortByProperty,\n setIsMultipropertyTrackPrices,\n setCalendarAlert,\n setCalendarOpen,\n setSelectedCancellationAndPaymentPolicyData,\n setTermsAndConditionsData,\n setInitialDate,\n setInitialPrice,\n setFirstDay,\n} = userSlice.actions;\n","import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';\nimport axios from 'axios';\n\nexport const getBookingWidgetMultipropertyData = createAsyncThunk(\n 'booking-widget/get-multiproperty-data',\n async (params = {}) => {\n let url = params.multipropertyUrl;\n\n const sortByProperty = params.sortByProperty || '';\n let urlParts = url.split('&');\n\n // When sortBy is provided replace the sort query parameter with the\n // one selected by the user\n if (sortByProperty) {\n urlParts = urlParts.map((urlPart) => {\n if (urlPart.startsWith('sort')) {\n return `sort=${sortByProperty}`;\n } else {\n return urlPart;\n }\n });\n\n url = urlParts.join('&');\n }\n\n const queryParams = {};\n\n const response = await axios.get(url, { params: queryParams });\n return response.data;\n }\n);\n\nexport const bookingWidgetMultipropertySlice = createSlice({\n name: 'multiproperty',\n initialState: {\n multipropertyProperties: [],\n multipropertyCount: 0,\n multipropertyOptions: [],\n selectedRoom: null,\n selectedRoomIndex: null,\n isDrawerOpen: false,\n isFetching: false,\n isSuccess: false,\n isError: false,\n errorMessage: '',\n multipropertyDropdown: [],\n markers: [],\n selectedPropertyId: null,\n filteredProperties: null,\n isMobileFiltersOpen: false,\n isMobileSearchOptionsOpen: false,\n isMobileDetailsOpen: false,\n },\n reducers: {\n updateMultiPropertyChannel: (state, action) => {\n const channelID = action.payload.channelId;\n const price = action.payload.price;\n for (let i = 0; i < state?.multipropertyProperties?.length; i++) {\n let channelIndex = -1;\n const property = state?.multipropertyProperties[i];\n if (channelIndex === -1) {\n channelIndex = property.channels.findIndex(\n (channel) => channel.channelID === channelID\n );\n }\n\n if (channelIndex !== -1) {\n // There is no price remove the channel\n // eslint-disable-next-line no-useless-escape\n if (\n property.channels !== undefined &&\n property.channels.length !== 0\n ) {\n if (\n !price ||\n price === 0 ||\n /^0*[.,]?0*$/.test(price)\n ) {\n state.multipropertyProperties[i].channels =\n property.channels.filter(\n (channel) => channel.channelID !== channelID\n );\n\n if (\n state.filteredProperties &&\n state.filteredProperties[i]\n ) {\n state.filteredProperties[i].channels =\n property.channels.filter(\n (channel) =>\n channel.channelID !== channelID\n );\n }\n } else {\n state.multipropertyProperties[i].channels[\n channelIndex\n ].price = price;\n\n if (\n state.filteredProperties &&\n state.filteredProperties[i]\n ) {\n state.filteredProperties[i].channels[\n channelIndex\n ].price = price;\n }\n }\n }\n }\n }\n\n // filtered properties\n for (let i = 0; i < state?.filteredProperties?.length; i++) {\n let channelIndex = -1;\n const property = state?.filteredProperties[i];\n if (channelIndex === -1) {\n channelIndex = property.channels.findIndex(\n (channel) => channel.channelID === channelID\n );\n }\n\n if (channelIndex !== -1) {\n // There is no price remove the channel\n // eslint-disable-next-line no-useless-escape\n if (\n property.channels !== undefined &&\n property.channels.length !== 0\n ) {\n if (\n !price ||\n price === 0 ||\n /^0*[.,]?0*$/.test(price)\n ) {\n state.filteredProperties[i].channels =\n property.channels.filter(\n (channel) => channel.channelID !== channelID\n );\n } else {\n state.filteredProperties[i].channels[\n channelIndex\n ].price = price;\n }\n }\n }\n }\n },\n setSelectedPropertyId: (state, action) => {\n state.selectedPropertyId = action.payload.selectedPropertyId;\n },\n setFilteredProperties: (state, action) => {\n state.filteredProperties = action.payload.filteredProperties;\n },\n setOpenFilters: (state, action) => {\n state.isMobileFiltersOpen = action.payload.isMobileFiltersOpen;\n },\n setMobileSearchOptions: (state, action) => {\n state.isMobileSearchOptionsOpen =\n action.payload.isMobileSearchOptionsOpen;\n },\n setMobileDetailsOpen: (state, action) => {\n state.isMobileDetailsOpen = action.payload.isMobileDetailsOpen;\n },\n },\n extraReducers: {\n [getBookingWidgetMultipropertyData.fulfilled]: (state, { payload }) => {\n state.multipropertyProperties = payload.multiproperty || [];\n state.multipropertyOptions = payload.multipropertyOptions || [];\n state.multipropertyDropdown = payload.multipropertyDropdown || [];\n state.markers = payload.markers || [];\n state.multipropertyCount =\n payload.multipropertyOptions?.multiPropertyCount || 0;\n state.isFetching = false;\n state.isSuccess = true;\n state.isError = false;\n state.errorMessage = '';\n },\n [getBookingWidgetMultipropertyData.rejected]: (state, { payload }) => {\n state.isFetching = false;\n state.isSuccess = false;\n state.isError = true;\n state.errorMessage = '';\n },\n [getBookingWidgetMultipropertyData.pending]: (state) => {\n state.isFetching = true;\n state.isSuccess = false;\n state.isError = false;\n state.errorMessage = '';\n },\n },\n});\n\nexport const {\n updateMultiPropertyChannel,\n setSelectedPropertyId,\n setFilteredProperties,\n setOpenFilters,\n setMobileSearchOptions,\n setMobileDetailsOpen,\n} = bookingWidgetMultipropertySlice.actions;\n","export const ratestrip = {\r\n widgetReady: false,\r\n};\r\n","import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';\nimport axios from 'axios';\nimport { getBookingWidgetMultipropertyData } from 'features/multiproperty/MultipropertySlice';\n\nimport {\n COOKIE_NAME,\n WIDGET_LOCAL_STORAGE_KEY,\n WIDGET_STATS_SETTINGS,\n} from '../../config';\nimport {\n areRatesReady,\n getCookie,\n getLanguageCode,\n getLocalStorageData,\n getPricesUrl,\n isMobileDeviceRequest,\n makeStatsRequestThrottled,\n} from '../../lib';\n\nimport { ratestrip } from '../../interface';\n\nexport const getMiniBookingWidgetData = createAsyncThunk(\n 'mini-booking-widget/get-data',\n async (params = {}) => {\n const {\n adults,\n checkin,\n checkout,\n localeLanguage,\n currency,\n nights,\n rooms,\n children,\n infants,\n voucher,\n price,\n smartGuest,\n bookingEngine,\n sortBy,\n keepState,\n livePrices,\n propertyId,\n isMultipropertyStill,\n parentPropertyId,\n } = params;\n\n let href =\n bookingEngine === 1 ? window.location.origin : window.location.href;\n const langCode = getLanguageCode();\n const cookie = getCookie(COOKIE_NAME);\n const mobileRequest = isMobileDeviceRequest();\n\n const pageTitle = document.title;\n\n // Construct query string\n if (href.endsWith('#')) {\n href = href.substring(0, href.length - 1);\n }\n let queryString = '';\n queryString =\n process.env.NODE_ENV === 'development' ? '' : `url=${href}`;\n queryString += localeLanguage\n ? `&lang=${localeLanguage}`\n : `&lang=${langCode}`;\n queryString += `&cookie=${cookie}`;\n queryString += `&mobile=${mobileRequest}`;\n\n queryString += adults !== undefined ? `&widgetAdults=${adults}` : '';\n queryString += checkin !== undefined ? `&widgetCheckin=${checkin}` : '';\n queryString +=\n checkout !== undefined ? `&widgetCheckout=${checkout}` : '';\n queryString +=\n localeLanguage !== undefined\n ? `&localeLanguage=${localeLanguage}`\n : '';\n queryString += currency !== undefined ? `¤cy=${currency}` : '';\n queryString += nights !== undefined ? `&nights=${nights}` : '';\n queryString += rooms !== undefined ? `&rooms=${rooms}` : '';\n queryString +=\n children !== undefined ? `&widgetChildren=${children}` : '';\n queryString += infants !== undefined ? `&widgetInfants=${infants}` : '';\n queryString += voucher !== undefined ? `&voucher=${voucher}` : '';\n queryString += price !== undefined ? `&price=${price}` : '';\n queryString +=\n smartGuest !== undefined ? `&smartguest=${smartGuest}` : '';\n queryString +=\n bookingEngine !== undefined\n ? `&bookingEngine=${bookingEngine}`\n : '';\n queryString += sortBy !== undefined ? `&sort=${sortBy}` : '';\n\n queryString += keepState !== undefined ? `&keepState=${keepState}` : '';\n\n queryString +=\n livePrices !== undefined ? `&livePrices=${livePrices}` : '';\n queryString +=\n propertyId !== undefined ? `&propertyID=${propertyId}` : '';\n queryString +=\n parentPropertyId !== undefined\n ? `&parentPropertyID=${parentPropertyId}`\n : '';\n queryString +=\n isMultipropertyStill !== undefined\n ? `&isMultipropertyStill=${isMultipropertyStill}`\n : '';\n queryString += pageTitle !== undefined ? `&pageTitle=${pageTitle}` : '';\n\n const url = getPricesUrl(queryString);\n\n const response = await axios.get(url);\n\n // TODO: DON'T KNOW IF THIS IS THE RIGHT PLACE TO EXECUTE THIS CODE\n if (response.status === 200) {\n const propertyId = response?.data?.propertyID;\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.open,\n propertyId\n );\n }\n\n // TODO: FIX TYPO\n if (response.data?.rememberClose) {\n const miniBookingWidgetSavedState = getLocalStorageData(\n WIDGET_LOCAL_STORAGE_KEY\n );\n\n if (\n miniBookingWidgetSavedState &&\n miniBookingWidgetSavedState.isOpen !== undefined\n ) {\n response.data.open = miniBookingWidgetSavedState.isOpen;\n }\n }\n\n if (response.data?.showMultipropertySmallBtn) {\n const miniBookingWidgetSavedState = getLocalStorageData(\n WIDGET_LOCAL_STORAGE_KEY\n );\n\n if (\n miniBookingWidgetSavedState &&\n miniBookingWidgetSavedState.isDismissed !== undefined\n ) {\n response.data.isDismissed =\n miniBookingWidgetSavedState.isDismissed;\n }\n }\n\n // some browsers don't display prompts created in beforeunload event\n // handlers unless the page has been interacted with\n if (!window.onbeforeunload && response.data?.enableBeforeExitAlert) {\n window.onbeforeunload = function (event) {\n event.preventDefault();\n\n const confirmationMessage = 'o/';\n (event || window.event).returnValue = confirmationMessage; // Gecko + IE\n\n return confirmationMessage; /* Safari, Chrome, and other WebKit-derived browsers */\n };\n }\n\n return response.data;\n }\n);\n\nexport const miniBookingWidgetSlice = createSlice({\n name: 'miniBookingWidget',\n initialState: {\n show: false,\n data: null,\n isFetching: false,\n isSuccess: false,\n isError: false,\n errorMessage: '',\n hidden: false,\n price: null,\n channels: [],\n ourOffersList: [],\n widgetReady: false,\n notificationsAvailable: false,\n ratesReady: false,\n open: null,\n isDismissed: false,\n multipropertyData: {},\n multipropertyScoreFilter: [],\n openBigWidgetElmSelectors: null,\n showOnlySmallMutlipropertyButton: null,\n showSingleWidgetMultiproperty: null,\n smallMultipropBtnText: '',\n widgetPosition: {},\n preRetars: [],\n bookDirectly: false,\n },\n reducers: {\n toggle: (state) => {\n state.open = !state.open;\n },\n setDismissed: (state, action) => {\n state.isDismissed = action.payload.isDismissed;\n },\n minimize: (state) => {\n state.open = false;\n },\n hide: (state) => {\n state.hidden = true;\n },\n setPrice: (state, action) => {\n state.price = action.payload.price;\n },\n updateChannel: (state, action) => {\n const channelId = action.payload.channelId;\n const price = action.payload.price;\n const channelIndex = state.channels.findIndex(\n (channel) => channel?.channelID === channelId\n );\n\n if (channelIndex !== -1) {\n // There is no price remove the channel\n // eslint-disable-next-line no-useless-escape\n if (!price || price === 0 || /^0*[\\.,]?0*$/.test(price)) {\n state.channels = state.channels.filter(\n (channel) => channel?.channelID !== channelId\n );\n } else {\n state.channels[channelIndex].price = price;\n }\n }\n },\n updateOurPrice: (state, action) => {\n // TODO: 'ourPrice' will be replaced\n // what should happen if a property is missing?\n state.data.ourPrice = action.payload.ourPrice;\n state.ratesReady = areRatesReady(action.payload?.ourPrice || {});\n state.price = action.payload?.ourPrice?.price || '0';\n },\n resetNotificationsAvailable: (state) => {\n state.notificationsAvailable = false;\n },\n resetAllRoomsUrl: (state) => {\n state.data.bigPlugin.allRoomsUrl = '';\n },\n setCalendar: (state, { payload }) => {\n if (payload.length > 0) {\n state.data.futureDates = payload || {};\n }\n },\n setCartID: (state, { payload }) => {\n if (payload.length > 0) {\n state.data.cartID = payload || '';\n }\n },\n },\n extraReducers: {\n [getMiniBookingWidgetData.fulfilled]: (state, { payload }) => {\n state.multipropertyData = {\n lowestMultiPropertyPrice:\n payload?.lowestMultiPropertyPrice ||\n state.multipropertyData.lowestMultiPropertyPrice,\n multiPropertyBestDealText:\n payload?.multiPropertyBestDealText ||\n state.multipropertyData.multiPropertyBestDealText,\n multiPropertyCount:\n payload?.multiPropertyCount ||\n state.multipropertyData.multiPropertyCount,\n multiPropertyImage:\n payload?.multiPropertyImage ||\n state.multipropertyData.multiPropertyImage,\n multipropertyViewAllButton:\n payload?.multipropertyViewAllButton ||\n state.multipropertyData.multipropertyViewAllButton,\n };\n state.multipropertyScoreFilter =\n payload.multipropertyScoreFilter || [];\n\n state.showOnlySmallMutlipropertyButton =\n state.data?.showOnlySmallMutlipropertyButton ||\n payload?.showOnlySmallMutlipropertyButton;\n\n state.showSingleWidgetMultiproperty =\n state.data?.showSingleWidgetMultiproperty ||\n payload?.showSingleWidgetMultiproperty;\n\n state.smallMultipropBtnText =\n state.smallMultipropBtnText ||\n payload?.Lang?.smallMultipropBtnText;\n\n if (!Object.keys(state.widgetPosition).length) {\n state.widgetPosition = payload?.widgetPosition;\n }\n if (!Array.isArray(state.preRetars) || !state.preRetars.length) {\n state.preRetars = payload?.preRetars;\n }\n\n state.data = payload;\n state.show = true;\n state.isFetching = false;\n state.isSuccess = true;\n state.isError = false;\n state.errorMessage = '';\n if (payload.open === false || payload.open === 'false') {\n state.open = false;\n } else if (payload.open === true || payload.open === 'true') {\n state.open = true;\n }\n state.isDismissed = payload.isDismissed;\n state.hidden = payload.hidden;\n state.bookDirectly = payload.bookDirectly;\n state.price = payload.ourPrice?.price;\n state.channels = payload?.channels || [];\n state.ourOffersList = payload?.ourOffers?.offersList || [];\n state.widgetReady = true;\n state.notificationsAvailable =\n payload.notificationsUrl !== undefined &&\n payload.notificationsUrl !== '';\n ratestrip.widgetReady = true;\n state.ratesReady = areRatesReady(payload?.ourPrice || {});\n state.openBigWidgetElmSelectors = payload.openBigWidgetElmSelectors;\n state.popUpNewList = payload.popUpNewList;\n },\n [getMiniBookingWidgetData.rejected]: (state, { payload }) => {\n state.data = null;\n state.show = false;\n state.isFetching = false;\n state.isSuccess = false;\n state.isError = true;\n state.errorMessage = '';\n state.open = false;\n state.hidden = true;\n state.price = null;\n state.bookDirectly = false;\n },\n [getMiniBookingWidgetData.pending]: (state) => {\n state.isFetching = true;\n state.isSuccess = false;\n state.isError = false;\n state.errorMessage = '';\n },\n [getBookingWidgetMultipropertyData.fulfilled]: (state, { payload }) => {\n state.multipropertyData.lowestMultiPropertyPrice =\n payload.multipropertyOptions?.lowestMultiPropertyPrice;\n state.multipropertyData.multiPropertyBestDealText =\n payload.multipropertyOptions?.multiPropertyBestDealText;\n state.multipropertyData.multiPropertyCount =\n payload.multipropertyOptions?.multiPropertyCount;\n state.multipropertyData.multiPropertyImage =\n payload.multipropertyOptions?.multiPropertyImage;\n state.multipropertyData.multipropertyViewAllButton =\n payload.multipropertyOptions?.multipropertyViewAllButton;\n },\n },\n});\n\nexport const {\n toggle,\n minimize,\n hide,\n setPrice,\n updateChannel,\n updateOurPrice,\n resetAllRoomsUrl,\n resetNotificationsAvailable,\n setDismissed,\n setCalendar,\n setCartID,\n} = miniBookingWidgetSlice.actions;\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport {\n setCheckInDay,\n setCheckOutDay,\n setInitialDate,\n setInitialPrice,\n} from 'features/userSlice';\nimport { setCalendar } from 'features/MiniBookingWidget/MiniBookingWidgetSlice';\n\nconst useInitCalendar = () => {\n const dispatch = useDispatch();\n\n // const widgetReady = useSelector(\n // (state) => state.miniBookingWidget.widgetReady\n // );\n\n const calendar =\n useSelector((state) => state.miniBookingWidget?.data?.futureDates) ||\n [];\n\n const checkInDate = useSelector(\n (state) => state.miniBookingWidget?.data?.checkin\n );\n const checkOutDate = useSelector(\n (state) => state.miniBookingWidget?.data?.checkout\n );\n const price = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice?.price\n );\n const nights = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice?.nights\n );\n\n const initialDate = useSelector((state) => state.user?.initialDate);\n const initialPrice = useSelector((state) => state.user?.initialPrice);\n\n if (initialDate == null) {\n dispatch(setInitialDate(checkInDate));\n }\n\n if (initialPrice == null || isNaN(initialPrice)) {\n dispatch(setInitialPrice({ price: price, nights: nights }));\n }\n\n useEffect(() => {\n const updatedCalendar = [...calendar];\n calendar?.forEach((month, index) => {\n const updatedMonth = { ...month };\n const updatedJsonResult = { ...updatedMonth.fd_JsonResult }; // Deep copy of fd_JsonResult\n const updatedData = { ...updatedMonth.fd_JsonResult.data }; // Deep copy of data\n const days = month?.fd_JsonResult?.data?.days;\n const updatedDays = [...days];\n for (let i = 0; i < days.length; i++) {\n const day = days[i];\n const updatedDay = updatedDays[i];\n if (\n initialDate &&\n updatedDay?.date === initialDate &&\n updatedDay?.price &&\n initialPrice &&\n updatedDay?.price !== initialPrice\n ) {\n updatedDays[i] = {\n ...day,\n price: initialPrice,\n };\n }\n if (day?.date === checkInDate?.split('/').reverse().join('-')) {\n dispatch(setCheckInDay({ day }));\n }\n\n if (\n day?.date === checkOutDate?.split('/').reverse().join('-')\n ) {\n dispatch(setCheckOutDay({ day }));\n }\n // Update the days array in the data object\n updatedDays.days = days;\n // Update the data object in the fd_JsonResult object\n updatedJsonResult.data = updatedData;\n // Update the fd_JsonResult object in the updatedMonth object\n updatedMonth.fd_JsonResult = updatedJsonResult;\n\n // Replace the original month with the updatedMonth in the calendar\n updatedCalendar[index] = updatedMonth;\n updatedMonth.fd_JsonResult.data.days = updatedDays;\n }\n });\n // Update the state with the copied and modified calendar\n dispatch(setCalendar(updatedCalendar));\n }, [checkInDate]); // used to be [widgetReady]\n};\n\nexport default useInitCalendar;\n","import { useEffect } from 'react';\r\n\r\nconst useOnClickOutside = (ref, handler) => {\r\n useEffect(() => {\r\n if (typeof handler !== 'function') {\r\n return;\r\n }\r\n\r\n const listener = (event) => {\r\n // Do nothing when clicking ref's element or descendant elements\r\n if (!ref.current || ref.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n handler(event);\r\n };\r\n\r\n document.addEventListener('mousedown', listener);\r\n document.addEventListener('touchstart', listener);\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', listener);\r\n document.removeEventListener('touchstart', listener);\r\n };\r\n }, [ref, handler]);\r\n};\r\n\r\nexport default useOnClickOutside;\r\n","import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';\r\nimport axios from 'axios';\r\n\r\nexport const getBookingWidgetRoomData = createAsyncThunk(\r\n 'booking-widget/get-room-data',\r\n async (params = {}) => {\r\n let url = params.roomsUrl;\r\n const sortBy = params.sortBy || '';\r\n\r\n let urlParts = url.split('&');\r\n\r\n // When sortBy is provided replace the sort query parameter with the\r\n // one selected by the user\r\n if (sortBy) {\r\n urlParts = urlParts.map((urlPart) => {\r\n if (urlPart.startsWith('sort')) {\r\n return `sort=${sortBy}`;\r\n } else {\r\n return urlPart;\r\n }\r\n });\r\n\r\n url = urlParts.join('&');\r\n }\r\n\r\n const response = await axios.get(url);\r\n\r\n return response.data;\r\n }\r\n);\r\n\r\nexport const bookingWidgetRoomsSlice = createSlice({\r\n name: 'rooms',\r\n initialState: {\r\n roomTypes: [],\r\n selectedRoom: null,\r\n selectedRoomIndex: null,\r\n isDrawerOpen: false,\r\n isFetching: false,\r\n isSuccess: false,\r\n isError: false,\r\n errorMessage: '',\r\n },\r\n reducers: {\r\n setSelectedRoom: (state, action) => {\r\n state.selectedRoomIndex = action.payload.selectedRoomIndex;\r\n },\r\n },\r\n extraReducers: {\r\n [getBookingWidgetRoomData.fulfilled]: (state, { payload }) => {\r\n state.roomTypes = payload.roomTypes || [];\r\n state.isFetching = false;\r\n state.isSuccess = true;\r\n state.isError = false;\r\n state.errorMessage = '';\r\n },\r\n [getBookingWidgetRoomData.rejected]: (state, { payload }) => {\r\n state.isFetching = false;\r\n state.isSuccess = false;\r\n state.isError = true;\r\n state.errorMessage = '';\r\n },\r\n [getBookingWidgetRoomData.pending]: (state) => {\r\n state.isFetching = true;\r\n state.isSuccess = false;\r\n state.isError = false;\r\n state.errorMessage = '';\r\n },\r\n },\r\n});\r\n\r\nexport const { setSelectedRoom } = bookingWidgetRoomsSlice.actions;\r\n","import { isWithinInterval } from 'date-fns';\nimport { dayStatus } from '../../constants';\n\nexport function isNotAvailableDay(day) {\n return (\n day?.status === dayStatus.SOLD_OUT ||\n day?.status === dayStatus.NOT_AVAILABLE ||\n day?.status === dayStatus.STOP_SALE ||\n day?.isEnabled === false\n );\n}\n\nexport function getDaysOfMonth(monthNo, year, calendar) {\n if (!calendar) {\n return [];\n }\n\n for (let i = 0; i < calendar?.length; i++) {\n const month = calendar[i];\n\n if (month?.fd_Month === monthNo && month?.fd_Year === year) {\n return month?.fd_JsonResult?.data?.days;\n }\n }\n\n return [];\n}\n\nexport function calcTotalBookingValue(checkInDay, checkOutDay, calendar) {\n let totalBookingValue = 0;\n\n if (!checkOutDay) {\n return checkInDay?.price ?? 0;\n }\n\n // Get all days\n const checkInMonthNo = new Date(checkInDay?.date).getMonth() + 1;\n const checkOutMonthNo = new Date(checkOutDay?.date).getMonth() + 1;\n const checkInDayDateObj = new Date(checkInDay?.date);\n const checkInYear = checkInDayDateObj.getFullYear();\n\n const checkOutDayDateObj = new Date(checkOutDay?.date);\n const checkOutYear = checkOutDayDateObj.getFullYear();\n\n const checkInMonthDays = getDaysOfMonth(\n checkInMonthNo,\n checkInYear,\n calendar\n );\n\n let checkOutMonthDays = [];\n if (checkInMonthNo !== checkOutMonthNo) {\n checkOutMonthDays = getDaysOfMonth(\n checkOutMonthNo,\n checkOutYear,\n calendar\n );\n }\n const allDays = [...checkInMonthDays, ...checkOutMonthDays];\n\n const daysBetweenCheckInAndCheckOut = allDays.filter((_day) => {\n const isDayWithinInterval = isWithinInterval(new Date(_day?.date), {\n start: new Date(checkInDay?.date),\n end: new Date(checkOutDay?.date),\n });\n\n return isDayWithinInterval;\n });\n\n // remove last value from the array\n // don't calculate last day price that's the day you're leaving\n daysBetweenCheckInAndCheckOut.pop();\n\n totalBookingValue = daysBetweenCheckInAndCheckOut.reduce(\n (previousValue, day) => previousValue + day?.price ?? 0,\n 0\n );\n\n return totalBookingValue;\n}\n","import { useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { closeDrawer } from 'features/drawersSlice';\nimport {\n getMiniBookingWidgetData,\n resetAllRoomsUrl,\n} from 'features/MiniBookingWidget/MiniBookingWidgetSlice';\nimport { setSelectedRoom } from 'features/roomsSlice';\nimport { setCalendarOpen, setTempCheckOutDay } from 'features/userSlice';\nimport * as constants from '../constants';\nimport { makeStatsRequest } from 'lib';\nimport { WIDGET_STATS_SETTINGS } from 'config';\nimport { calcTotalBookingValue } from 'components/bookingCalendar/helpers';\n\nconst useGetBookingData = () => {\n const dispatch = useDispatch();\n\n const calendar = useSelector(\n (state) => state.miniBookingWidget?.data?.futureDates\n );\n const userProvidedData = useSelector((state) => state.user);\n\n const totalBookingValue = useMemo(\n () =>\n calcTotalBookingValue(\n userProvidedData.checkInDay,\n userProvidedData.checkOutDay,\n calendar\n ),\n [userProvidedData.checkInDay?.date, userProvidedData.checkOutDay?.date]\n );\n\n const userBookingData = {\n adults: userProvidedData.adults,\n checkin: userProvidedData.checkInDay?.date,\n checkout: userProvidedData.checkOutDay?.date,\n children: userProvidedData.children,\n currency: userProvidedData.currency,\n localeLanguage: userProvidedData.language,\n rooms: userProvidedData.numberOfRooms,\n sortBy: userProvidedData.sortBy,\n totalBookingValue,\n };\n\n const parentPropertyIdMain = useSelector(\n (state) => state?.miniBookingWidget.data?.parentPropertyID\n );\n\n const thisPropertyID = useSelector(\n (state) => state?.miniBookingWidget.data?.propertyID\n );\n\n const multiproperty = useSelector(\n (state) =>\n state?.miniBookingWidget.data?.smallWidget ===\n constants.MULTIPROPERTY ||\n state?.miniBookingWidget.data?.smallWidget ===\n constants.MOBILE_MULTIPROPERTY\n );\n\n const getBookingData = ({\n currency,\n language,\n sortBy = '',\n propertyId,\n parentPropertyId,\n checkInDate,\n checkOutDate,\n } = {}) => {\n if (!parentPropertyId) {\n parentPropertyId = parentPropertyIdMain;\n }\n dispatch(setCalendarOpen({ isCalendarOpen: false }));\n\n // Reset temp check out day\n dispatch(setTempCheckOutDay({ day: null }));\n\n dispatch(\n getMiniBookingWidgetData({\n ...userBookingData,\n checkin: checkInDate || userBookingData?.checkin,\n checkout: checkOutDate || userBookingData?.checkout,\n currency: currency || userBookingData?.currency,\n localeLanguage: language || userBookingData?.localeLanguage,\n sortBy: sortBy || userBookingData?.sortBy,\n livePrices: Boolean(multiproperty),\n propertyId,\n parentPropertyId,\n isMultipropertyStill: multiproperty,\n })\n );\n\n // Reset all rooms url in order to refetch room data\n dispatch(resetAllRoomsUrl());\n // Close room details\n dispatch(setSelectedRoom({ selectedRoomIndex: null }));\n dispatch(closeDrawer({ drawerId: 'MapDrawer' }));\n\n makeStatsRequest(\n WIDGET_STATS_SETTINGS.actions.search,\n thisPropertyID,\n userBookingData\n );\n };\n return { userBookingData, getBookingData };\n};\n\nexport default useGetBookingData;\n","import { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { getBookingWidgetRoomData } from 'features/roomsSlice';\r\n\r\nconst useGetRoomData = () => {\r\n const dispatch = useDispatch();\r\n\r\n const checkInDate = useSelector(\r\n (state) => state.miniBookingWidget?.data?.checkin\r\n );\r\n const checkOutDate = useSelector(\r\n (state) => state.miniBookingWidget?.data?.checkout\r\n );\r\n\r\n const roomsUrl = useSelector(\r\n (state) => state.miniBookingWidget?.data?.bigPlugin?.allRoomsUrl\r\n );\r\n\r\n const userProvidedData = useSelector((state) => state.user);\r\n // TODO: DON'T KNOW IF ALL THESE ARE NECESSARY, PROBABLY NOT\r\n // I THINK THAT 'sortBy' is SUFFICIENT\r\n const getRoomData = ({ currency, language, sortBy = '' } = {}) => {\r\n dispatch(\r\n getBookingWidgetRoomData({\r\n roomsUrl,\r\n adults: userProvidedData.adults,\r\n checkin:\r\n userProvidedData.checkInDay?.date ||\r\n checkInDate?.split('/').reverse().join('-'),\r\n checkout:\r\n userProvidedData.checkOutDay?.date ||\r\n checkOutDate?.split('/').reverse().join('-'),\r\n children: userProvidedData.children,\r\n currency: currency || userProvidedData.currency,\r\n localeLanguage: language || userProvidedData.language,\r\n rooms: userProvidedData.numberOfRooms,\r\n sortBy: sortBy || userProvidedData.sortBy,\r\n })\r\n );\r\n };\r\n return getRoomData;\r\n};\r\n\r\nexport default useGetRoomData;\r\n","import { useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport axios from 'axios';\r\nimport throttle from 'lodash/throttle';\r\n\r\nimport { apiConfig, COOKIE_NAME } from 'config';\r\nimport { displayNotifications, isMobileDeviceRequest, getCookie } from 'lib';\r\n\r\nconst useLiveVisitors = () => {\r\n const propertyID = useSelector(\r\n (state) => state.miniBookingWidget?.data?.propertyID\r\n );\r\n const widgetReady = useSelector(\r\n (state) => state.miniBookingWidget.widgetReady\r\n );\r\n\r\n const isMobileDevice = isMobileDeviceRequest();\r\n const cookie = getCookie(COOKIE_NAME);\r\n\r\n const onMove = throttle(async (event) => {\r\n const userAgent = window.navigator.userAgent;\r\n\r\n try {\r\n const response = await axios.post(apiConfig?.liveVisitorsUrl, {\r\n cookie,\r\n mobile: isMobileDevice,\r\n propertyID,\r\n url: window.location.href,\r\n userAgent,\r\n });\r\n const notifications = response.data.notifications || [];\r\n displayNotifications(notifications);\r\n } catch (error) {}\r\n }, 3000);\r\n\r\n useEffect(() => {\r\n if (!widgetReady) {\r\n return;\r\n }\r\n\r\n const body = document.querySelector('body');\r\n\r\n if (isMobileDevice) {\r\n body.addEventListener('touchmove', onMove);\r\n\r\n return () => {\r\n body.removeEventListener('touchmove', onMove);\r\n };\r\n } else {\r\n body.addEventListener('mousemove', onMove);\r\n return () => {\r\n body.removeEventListener('mousemove', onMove);\r\n };\r\n }\r\n }, [widgetReady]);\r\n};\r\n\r\nexport default useLiveVisitors;\r\n","import { useMemo } from 'react';\r\nimport WebMercatorViewport from '@math.gl/web-mercator';\r\n\r\nconst getBounds = (markers) => {\r\n const markersLongitude = markers.map((marker) => marker.longitude);\r\n const markersLatitude = markers.map((marker) => marker.latitude);\r\n\r\n const bottomLeftBound = [\r\n Math.min(...markersLongitude),\r\n Math.min(...markersLatitude),\r\n ];\r\n const topRightBound = [\r\n Math.max(...markersLongitude),\r\n Math.max(...markersLatitude),\r\n ];\r\n const bounds = [bottomLeftBound, topRightBound];\r\n\r\n return bounds;\r\n};\r\n\r\nconst useMap = ({ height, width, markers }) => {\r\n let initialViewState = {\r\n height: height,\r\n width: width,\r\n zoom: 7,\r\n bearing: 0,\r\n pitch: 0,\r\n };\r\n\r\n if (height && width && markers) {\r\n const bounds = useMemo(() => getBounds(markers), [markers]);\r\n initialViewState = new WebMercatorViewport({\r\n height,\r\n width,\r\n }).fitBounds(bounds, { padding: 100 });\r\n }\r\n\r\n return {\r\n initialViewState,\r\n };\r\n};\r\n\r\nexport default useMap;\r\n","// https://usehooks.com/\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst useMedia = (queries, values, defaultValue) => {\r\n // Array containing a media query list for each query\r\n const mediaQueryLists = queries.map((q) => window.matchMedia(q));\r\n // Function that gets value based on matching media query\r\n const getValue = () => {\r\n // Get index of first media query that matches\r\n const index = mediaQueryLists.findIndex((mql) => mql.matches);\r\n // Return related value or defaultValue if none\r\n return typeof values[index] !== 'undefined'\r\n ? values[index]\r\n : defaultValue;\r\n };\r\n // State and setter for matched value\r\n const [value, setValue] = useState(getValue);\r\n useEffect(\r\n () => {\r\n // Event listener callback\r\n // Note: By defining getValue outside of useEffect we ensure that it has ...\r\n // ... current values of hook args (as this hook callback is created once on mount).\r\n const handler = () => setValue(getValue);\r\n // Set a listener for each media query with above handler as callback.\r\n mediaQueryLists.forEach((mql) => mql.addListener(handler));\r\n // Remove listeners on cleanup\r\n return () =>\r\n mediaQueryLists.forEach((mql) => mql.removeListener(handler));\r\n },\r\n [] // Empty array ensures effect is only run on mount and unmount\r\n );\r\n return value;\r\n};\r\n\r\nexport default useMedia;\r\n","import { useState } from 'react';\r\n\r\nimport { CLICK_ACTIONS } from '../constants';\r\n\r\nconst useOpenOldWidget = () => {\r\n const [showLoader, setShowLoader] = useState(false);\r\n\r\n const openOldPlugin = () => {\r\n if (typeof window.OpenPluginFromReact === 'function') {\r\n window.OpenPluginFromReact();\r\n setShowLoader(false);\r\n } else {\r\n setTimeout(() => {\r\n openOldPlugin();\r\n }, 100);\r\n }\r\n };\r\n\r\n const openEmailForm = () => {\r\n if (typeof window.openEmailFormReact === 'function') {\r\n window.openEmailFormReact();\r\n setShowLoader(false);\r\n } else {\r\n setTimeout(() => {\r\n openEmailForm();\r\n }, 100);\r\n }\r\n };\r\n\r\n // TODO: MAKE THIS BETTER\r\n const openClick2Call = () => {\r\n if (typeof window.openClick2CallReact === 'function') {\r\n window.openClick2CallReact();\r\n setShowLoader(false);\r\n } else {\r\n setTimeout(() => {\r\n openClick2Call();\r\n }, 100);\r\n }\r\n };\r\n\r\n const openChat = () => {\r\n if (typeof window.openChatReact === 'function') {\r\n window.openChatReact();\r\n setShowLoader(false);\r\n } else {\r\n setTimeout(() => {\r\n openChat();\r\n }, 100);\r\n }\r\n };\r\n\r\n const clickHandler = (clickAction) => {\r\n if (clickAction === CLICK_ACTIONS.OPEN_PLUGIN) {\r\n setShowLoader(true);\r\n openOldPlugin();\r\n } else if (clickAction === CLICK_ACTIONS.OPEN_EMAIL_FORM) {\r\n setShowLoader(true);\r\n openEmailForm();\r\n } else if (clickAction === CLICK_ACTIONS.OPEN_CLICK_2_CALL) {\r\n setShowLoader(true);\r\n openClick2Call();\r\n } else if (clickAction === CLICK_ACTIONS.OPEN_CHAT) {\r\n setShowLoader(true);\r\n openChat();\r\n }\r\n };\r\n\r\n return { showLoader, clickHandler };\r\n};\r\n\r\nexport default useOpenOldWidget;\r\n","import { useEffect, useRef } from 'react';\r\n\r\nconst useScrollToTop = (dependencyArray) => {\r\n const ref = useRef();\r\n\r\n useEffect(() => {\r\n if (ref && ref.current) {\r\n ref.current.scrollTop = 0;\r\n }\r\n }, [...dependencyArray]);\r\n\r\n return ref;\r\n};\r\n\r\nexport default useScrollToTop;\r\n","import { useEffect, useState } from 'react';\r\n\r\nconst useWindowSize = () => {\r\n // Initialize state with undefined width/height so server and client renders match\r\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\r\n const [windowSize, setWindowSize] = useState({\r\n width: undefined,\r\n height: undefined,\r\n });\r\n\r\n useEffect(() => {\r\n // Handler to call on window resize\r\n function handleResize() {\r\n // Set window width/height to state\r\n setWindowSize({\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n });\r\n }\r\n\r\n // Add event listener\r\n window.addEventListener('resize', handleResize);\r\n // Call handler right away so state gets updated with initial window size\r\n handleResize();\r\n // Remove event listener on cleanup\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []); // Empty array ensures that effect is only run on mount\r\n return windowSize;\r\n};\r\n\r\nexport default useWindowSize;\r\n","// import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nconst useGetCalendarDay = (date) => {\n let day;\n const calendar =\n useSelector((state) => state.miniBookingWidget?.data?.futureDates) ||\n [];\n\n // useMemo(() => {\n for (let i = 0; i < calendar.length; i++) {\n const month = calendar[i];\n const days = month?.fd_JsonResult?.data?.days || [];\n day = days.find(function (day) {\n return day.date === date;\n });\n if (day) {\n break;\n }\n }\n return day;\n // }, [calendar]);\n};\n\nexport default useGetCalendarDay;\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport const cartSlice = createSlice({\n name: 'cart',\n initialState: {\n cartItems: [],\n open: false,\n openSmallCart: false,\n currentStep: 1,\n tempRate: { rateID: null, roomTypeID: null },\n hasExtras: false,\n isCartCompleted: false,\n isCartMobileOpen: false,\n isAddingRate: false,\n payDirectly: '',\n finalPrices: { totalPayment: 0, paymentAmount: 0, cartPolicy: '' },\n },\n reducers: {\n setCurrentStep: (state, { payload }) => {\n state.currentStep = payload.currentStep;\n },\n setTempRate: (state, { payload }) => {\n state.tempRate.rateID = payload.tempRate;\n state.tempRate.roomTypeID = payload.roomTypeID;\n },\n resetTempRate: (state, { payload }) => {\n state.tempRate.rateID = null;\n state.tempRate.roomTypeID = null;\n },\n addCartItem: (state, { payload }) => {\n state.cartItems.push(payload);\n },\n addCartItemExtra: (state, { payload }) => {\n const updatedCartItems = state.cartItems.map((cartItem) => {\n if (\n cartItem.cartID === payload.cartID &&\n cartItem.rateID === payload.rateID &&\n cartItem.roomTypeID === payload.roomTypeID\n ) {\n return {\n ...cartItem,\n extras: cartItem.extras\n ? [...cartItem.extras, payload]\n : [payload],\n };\n }\n return cartItem;\n });\n\n state.cartItems = updatedCartItems;\n },\n updateCartItem: (state, { payload }) => {\n const updatedCartItems = state.cartItems.map((cartItem) => {\n if (cartItem.roomTypeID === payload.roomTypeID) {\n // Update all properties with payload values\n return { ...cartItem, ...payload };\n }\n return cartItem;\n });\n\n state.cartItems = updatedCartItems;\n },\n updateCartItemExtra: (state, { payload }) => {\n const updatedCartItems = state.cartItems.map((cartItem) => {\n if (\n cartItem.rateID === payload.rateID &&\n cartItem.roomTypeID === payload.roomTypeID\n ) {\n const updatedExtras = cartItem.extras\n ? cartItem.extras.map((extra) => {\n if (extra.addOnID === payload.addOnID) {\n return {\n ...extra,\n quantity: payload.quantity,\n };\n }\n return extra;\n })\n : [];\n\n return {\n ...cartItem,\n extras: updatedExtras,\n };\n }\n return cartItem;\n });\n\n state.cartItems = updatedCartItems;\n },\n removeCartItemExtra: (state, { payload }) => {\n const updatedCartItems = state.cartItems.map((cartItem) => {\n if (\n cartItem.rateID === payload.rateID &&\n cartItem.roomTypeID === payload.roomTypeID\n ) {\n return {\n ...cartItem,\n extras: cartItem.extras\n ? cartItem.extras.filter(\n (extra) => extra.addOnID !== payload.addOnID\n )\n : [],\n };\n }\n return cartItem;\n });\n\n state.cartItems = updatedCartItems;\n },\n removeCartItem: (state, { payload }) => {\n const itemId = payload;\n state.cartItems = state.cartItems.filter(\n (cartItem) => cartItem.rateID !== itemId\n );\n },\n setItemIsCompleted: (state, { payload }) => {\n const updatedCartItems = state.cartItems.map((cartItem) => {\n if (\n cartItem.rateID === payload.rateID &&\n cartItem.roomTypeID === payload.roomTypeID\n ) {\n return { ...cartItem, isCompleted: true };\n }\n return cartItem;\n });\n state.cartItems = updatedCartItems;\n },\n setItemIsNotCompleted: (state, { payload }) => {\n const updatedCartItems = state.cartItems.map((cartItem) => {\n if (\n cartItem.rateID === payload.rateID &&\n cartItem.roomTypeID === payload.roomTypeID\n ) {\n return { ...cartItem, isCompleted: false };\n }\n return cartItem;\n });\n state.cartItems = updatedCartItems;\n },\n clearCart: (state) => {\n state.cartItems = [];\n state.open = false;\n state.openSmallCart = false;\n state.currentStep = 1;\n state.tempRate = { rateID: null, roomTypeID: null };\n state.hasExtras = false;\n state.isCartCompleted = false;\n state.isCartMobileOpen = false;\n state.isAddingRate = false;\n state.payDirectly = '';\n state.finalPrices = {\n totalPayment: 0,\n paymentAmount: 0,\n cartPolicy: '',\n };\n },\n setIsCompleteCart: (state, { payload }) => {\n state.isCartCompleted = true;\n },\n setCartOpenState: (state, { payload }) => {\n state.open = payload;\n },\n setCartMobileOpen: (state, { payload }) => {\n state.isCartMobileOpen = payload;\n },\n setAddingRate: (state, { payload }) => {\n state.isAddingRate = payload;\n },\n setSmallCartOpenState: (state, { payload }) => {\n state.openSmallCart = payload;\n },\n setHasExtras: (state, { payload }) => {\n state.hasExtras = payload;\n },\n setCartItems: (state, { payload }) => {\n state.cartItems = payload;\n },\n resetIsCompleteCart: (state) => {\n const updatedCartItems = state.cartItems.map((cartItem) => {\n return { ...cartItem, isCompleted: false };\n });\n state.cartItems = updatedCartItems;\n },\n setIsAllItemsCompleteCart: (state) => {\n const updatedCartItems = state.cartItems.map((cartItem) => {\n return { ...cartItem, isCompleted: true };\n });\n state.cartItems = updatedCartItems;\n },\n setCartPayDirectly: (state, { payload }) => {\n state.payDirectly = payload;\n },\n setFinalPrices: (state, { payload }) => {\n state.finalPrices.totalPayment = payload.totalPayment;\n state.finalPrices.paymentAmount = payload.paymentAmount;\n state.finalPrices.cartPolicy = payload.cartPolicy;\n },\n },\n});\n\nexport const {\n setCurrentStep,\n addCartItem,\n clearCart,\n removeCartItem,\n setCartOpenState,\n setSmallCartOpenState,\n setCartItems,\n setItemIsCompleted,\n addCartItemExtra,\n removeCartItemExtra,\n resetIsCompleteCart,\n updateCartItemExtra,\n updateCartItem,\n setTempRate,\n resetTempRate,\n setItemIsNotCompleted,\n setHasExtras,\n setIsCompleteCart,\n setIsAllItemsCompleteCart,\n setCartMobileOpen,\n setAddingRate,\n setCartPayDirectly,\n setFinalPrices,\n} = cartSlice.actions;\n","import { setCartItems } from 'features/cart/cartSlice';\nimport { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nconst useSetCart = () => {\n const dispatch = useDispatch();\n\n const widgetReady = useSelector(\n (state) => state.miniBookingWidget.widgetReady\n );\n const cartItems = useSelector(\n (state) => state.miniBookingWidget?.data?.cart?.cartItems || []\n );\n let check = widgetReady;\n useEffect(() => {\n if (!widgetReady && !check) {\n return;\n }\n check = true;\n dispatch(setCartItems(cartItems));\n }, [widgetReady]);\n};\n\nexport default useSetCart;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './BarsLoadingIndicator.css';\r\n\r\nconst BarsLoadingIndicator = ({ variant, size, classes = '', style }) => {\r\n let src = 'https://static.abouthotelier.com/img/bars.svg';\r\n\r\n if (variant === 'puff') {\r\n src = 'https://static.abouthotelier.com/img/puff.svg';\r\n }\r\n\r\n return (\r\n
\r\n \"Loading\r\n
\r\n );\r\n};\r\n\r\nBarsLoadingIndicator.propTypes = {\r\n variant: PropTypes.string,\r\n size: PropTypes.number,\r\n classes: PropTypes.string,\r\n style: PropTypes.object,\r\n};\r\n\r\nBarsLoadingIndicator.defaultProps = {\r\n variant: '',\r\n size: 20,\r\n};\r\n\r\nexport default BarsLoadingIndicator;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport axios from 'axios';\r\n\r\nimport BarsLoadingIndicator from '../common/barsLoadingIndicator/BarsLoadingIndicator';\r\nimport { updateChannel } from '../../features/MiniBookingWidget/MiniBookingWidgetSlice';\r\nimport { updateMultiPropertyChannel } from 'features/multiproperty/MultipropertySlice';\r\n\r\nimport './Channel.css';\r\n\r\nconst Channel = ({\r\n url,\r\n handleClick,\r\n logo,\r\n logoSize = 20,\r\n name,\r\n currencySymbol,\r\n price,\r\n extraClasses = [],\r\n styles,\r\n disablePointerEvents = true,\r\n channelId,\r\n isMultiproperty,\r\n}) => {\r\n // TODO: REFACTOR PASS A PROP FOR THE HOVER ANIMATION\r\n const [loading, setLoading] = useState(false);\r\n // Chanel price should be shown after the main prices\r\n const ratesReady = useSelector(\r\n (state) => state.miniBookingWidget.ratesReady\r\n );\r\n const isPriceAvailable =\r\n typeof price === 'string' && !price.startsWith('getprice');\r\n\r\n const isValidPrice =\r\n // eslint-disable-next-line no-useless-escape\r\n typeof price === 'string' && /^\\d+[\\d\\.?,?\\d]+\\d+$/.test(price);\r\n const dispatch = useDispatch();\r\n\r\n logoSize = typeof logoSize === 'string' ? logoSize : logoSize + 'px';\r\n\r\n useEffect(() => {\r\n const abortCtrl = new AbortController();\r\n const opts = { signal: abortCtrl.signal };\r\n\r\n (async () => {\r\n if (price.startsWith('getprice') && ratesReady) {\r\n const url = price.split('getprice:')[1];\r\n\r\n setLoading(true);\r\n\r\n try {\r\n const response = await axios.get(url, opts);\r\n\r\n if (response && response.data) {\r\n if (isMultiproperty) {\r\n dispatch(\r\n updateMultiPropertyChannel({\r\n channelName: name,\r\n price: response.data,\r\n channelId,\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n updateChannel({\r\n channelName: name,\r\n price: response.data,\r\n channelId,\r\n })\r\n );\r\n }\r\n }\r\n } catch (error) {\r\n if (error.message === 'canceled') {\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // Set price to empty string in order to remove channel\r\n if (isMultiproperty) {\r\n dispatch(\r\n updateMultiPropertyChannel({\r\n channelName: name,\r\n price: '',\r\n channelId,\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n updateChannel({\r\n channelName: name,\r\n price: '',\r\n channelId,\r\n })\r\n );\r\n }\r\n }\r\n\r\n setLoading(false);\r\n }\r\n })();\r\n\r\n return () => abortCtrl.abort();\r\n }, [price, ratesReady]);\r\n\r\n return (\r\n price && (\r\n \r\n {url ? (\r\n \r\n
\r\n
\r\n {logo && (\r\n <>\r\n {' '}\r\n \r\n )}\r\n {name}\r\n
\r\n
\r\n {loading || !isPriceAvailable ? (\r\n \r\n ) : (\r\n
\r\n {isValidPrice && (\r\n <>\r\n \r\n {currencySymbol}\r\n {' '}\r\n \r\n )}\r\n\r\n {price}\r\n
\r\n )}\r\n
\r\n
\r\n \r\n ) : (\r\n \r\n
\r\n {logo && (\r\n <>\r\n {' '}\r\n \r\n )}\r\n {name}\r\n
\r\n
\r\n {loading || !isPriceAvailable ? (\r\n \r\n ) : (\r\n
\r\n {isValidPrice && (\r\n <>\r\n \r\n {currencySymbol}\r\n {' '}\r\n \r\n )}\r\n\r\n {price}\r\n
\r\n )}\r\n
\r\n \r\n )}\r\n \r\n )\r\n );\r\n};\r\n\r\nChannel.propTypes = {\r\n disablePointerEvents: PropTypes.bool,\r\n url: PropTypes.string,\r\n handleClick: PropTypes.func,\r\n name: PropTypes.string.isRequired,\r\n logoSize: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n logo: PropTypes.string,\r\n currencySymbol: PropTypes.string.isRequired,\r\n price: PropTypes.string.isRequired,\r\n extraClasses: PropTypes.array,\r\n styles: PropTypes.object,\r\n channelId: PropTypes.number,\r\n isMultiproperty: PropTypes.bool,\r\n};\r\n\r\nexport default Channel;\r\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useDispatch } from 'react-redux';\nimport axios from 'axios';\n\nimport './MobileWidgetHeaderBtn.css';\nimport { updateOurPrice } from '../../features/MiniBookingWidget/MiniBookingWidgetSlice';\nimport BarsLoadingIndicator from '../common/barsLoadingIndicator/BarsLoadingIndicator';\nimport { applyImportantStyles, isValidPrice } from '../../lib';\n\nconst MobileWidgetHeaderBtn = ({\n price,\n priceText,\n currencySymbol,\n url,\n colors,\n handleClick,\n disableArrowBtn,\n showAlways = false,\n classes = '',\n styles,\n}) => {\n const isPriceAvailable =\n typeof price === 'string' && !price.startsWith('getprice');\n const loading = !isPriceAvailable;\n const dispatch = useDispatch();\n\n useEffect(async () => {\n if (typeof price === 'string' && price.startsWith('getprice')) {\n const url = price.split('getprice:')[1];\n\n try {\n const response = await axios.get(url);\n\n if (response && response.data) {\n dispatch(\n updateOurPrice({\n ourPrice: response.data?.ourPrice,\n })\n );\n }\n } catch (error) {\n dispatch(\n updateOurPrice({\n ourPrice: {},\n })\n );\n }\n }\n // return () => {\n // cleanup\n // }\n }, [price]);\n\n const onSubmit = (event) => {\n if (url === '') {\n event.preventDefault();\n }\n };\n\n const showBtn = showAlways || (isValidPrice(price) && priceText);\n\n return (\n <>\n {showBtn && (\n \n \n {\n applyImportantStyles(el, {\n 'background-color':\n colors?.primaryBackgroundColor,\n color: colors?.primaryTextColor,\n padding: '0 19px',\n margin: '0px',\n fontWeight: '100',\n 'font-weight': '100',\n });\n }}\n >\n {price ? (\n
\n {loading ? (\n <>\n \n {priceText}  \n \n \n \n ) : (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n {priceText}  \n \n \n {currencySymbol} {price}\n \n \n )}\n
\n ) : (\n \n {priceText}\n \n )}\n \n \n \n )}\n \n );\n};\n\nMobileWidgetHeaderBtn.propTypes = {\n price: PropTypes.string.isRequired,\n priceText: PropTypes.string,\n currencySymbol: PropTypes.string.isRequired,\n url: PropTypes.string,\n colors: PropTypes.object.isRequired,\n handleClick: PropTypes.func.isRequired,\n disableArrowBtn: PropTypes.bool.isRequired,\n showAlways: PropTypes.bool,\n classes: PropTypes.string,\n styles: PropTypes.object,\n};\n\nexport default MobileWidgetHeaderBtn;\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport const modalSlice = createSlice({\n name: 'modal',\n initialState: {\n isOffersModalOpen: false,\n isTrackPricesModalOpen: false,\n isCancellationAndPaymentPolicyModalOpen: false,\n isContactUsModalOpen: false,\n isOfferModalOpen: false,\n isCalendarModalOpen: false,\n isClick2CallModalOpen: false,\n isShareHotelModalOpen: false,\n isTermsAndConditionsModalOpen: false,\n isAreYouSureModalOpen: false,\n isReviewsModalOpen: false,\n },\n reducers: {\n openModal: (state, action) => {\n state[`is${action.payload.modalId}Open`] = true;\n },\n closeModal: (state, action) => {\n state[`is${action.payload.modalId}Open`] = false;\n },\n },\n});\n\nexport const { closeModal, openModal } = modalSlice.actions;\n","import PropTypes from 'prop-types';\n\nimport { useDispatch } from 'react-redux';\n\nimport { FaGift } from 'react-icons/fa';\n\nimport { openModal } from '../../features/modalSlice';\n\nimport { WIDGET_STATS_SETTINGS } from '../../config';\nimport { makeStatsRequestThrottled } from '../../lib';\n\nimport './OffersButton.css';\n\nconst OffersButton = ({ offers, isOpen }) => {\n const dispatch = useDispatch();\n\n if (\n offers?.quantity &&\n offers?.quantity !== '0' &&\n offers?.offersList?.length > 0 &&\n offers?.showOffersBtn &&\n isOpen\n ) {\n return (\n
\n \n dispatch(openModal({ modalId: 'OffersModal' }))\n }\n >\n {offers?.text}\n \n {offers?.quantity && (\n {offers.quantity}\n )}\n
\n );\n } else if (offers?.url && offers?.showOffersBtn && isOpen) {\n return (\n
\n \n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.offersClick\n )\n }\n >\n {offers?.text}\n \n {offers?.quantity && (\n {offers.quantity}\n )}\n
\n );\n } else if (offers?.offersList?.length > 0 && !offers?.showOffersBtn) {\n return (\n \n \n dispatch(openModal({ modalId: 'OffersModal' }))\n }\n >\n {offers?.text}\n \n {offers?.quantity && (\n {offers.quantity}\n )}\n \n );\n }\n\n return null;\n};\n\nOffersButton.propTypes = {\n offers: PropTypes.object,\n isOpen: PropTypes.bool,\n};\n\nexport default OffersButton;\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { FaTimes } from 'react-icons/fa';\n\nimport { addHashToHexColor, getsessionStorageData } from '../../lib';\nimport { sessionStorageKeys } from '../../constants';\n\nimport './OfferPopup.css';\n\nconst OfferPopup = ({\n props: {\n popupTopImage: imageUrl,\n topImageHeight,\n popupTitle: title,\n popupText: desc,\n popupButton1Text: btnText,\n popupButton1Link: btnUrl,\n popupID,\n popupWidth,\n popupHeight,\n popupBorderRadius,\n popupBorderColor,\n popupBackgroundColor,\n popupVerticalAlign = 'top',\n popupHorrizontalAlign = 'left',\n\n popupCloseButtonColor,\n popupCloseButtonBackgroundColor,\n\n popupButton1Background,\n popupButton1FontColor,\n popupButton1BorderColor,\n popupButton1FontSize,\n popupButtonStyle,\n popupOpenInterval,\n\n popupButton2Text,\n popupButton2Link,\n popupButton2FontColor,\n popupButton2Background,\n popupButton2BorderColor,\n popupButton2FontSize,\n\n popupBackgroundImage,\n imageTopMargin: topMargin,\n popupBottomMargin: bottomMargin,\n popupLeftMargin: leftMargin,\n popupRightMargin: rightMargin,\n },\n extraClass = '',\n}) => {\n const closedOfferPopups = getsessionStorageData(\n sessionStorageKeys.CLOSED_OFFER_POPUPS,\n []\n );\n\n let initialState;\n\n if (popupOpenInterval === 'Everytime') {\n initialState = true;\n } else {\n initialState = closedOfferPopups.indexOf(popupID) === -1;\n }\n\n const [isOpen, setIsOpen] = useState(initialState);\n\n const closePopup = () => {\n if (\n closedOfferPopups.indexOf(popupID) === -1 &&\n popupOpenInterval !== 'Everytime'\n ) {\n closedOfferPopups.push(popupID);\n sessionStorage.setItem(\n sessionStorageKeys.CLOSED_OFFER_POPUPS,\n JSON.stringify(closedOfferPopups)\n );\n }\n setIsOpen(false);\n };\n\n let positionClass = '';\n\n if (popupVerticalAlign && popupHorrizontalAlign) {\n positionClass = `ab-offer-popup-cnt--${popupVerticalAlign\n .toLocaleLowerCase()\n .replace('middle', 'center')}-${popupHorrizontalAlign\n .toLocaleLowerCase()\n .replace('middle', 'center')}`;\n }\n\n const popupCntStyles = {\n backgroundColor: addHashToHexColor(popupBackgroundColor),\n borderColor: addHashToHexColor(popupBorderColor),\n height: popupHeight,\n width: popupWidth,\n marginTop: topMargin,\n marginBottom: bottomMargin,\n marginLeft: leftMargin,\n marginRight: rightMargin,\n };\n\n const popupInnerCntStyles = {\n borderRadius: popupBorderRadius,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundImage:\n 'url(' +\n `https://hotelmanager.abouthotelier.com/${popupBackgroundImage}` +\n ')',\n };\n\n // const popupCloseBtnStyles = {\n // backgroundColor: addHashToHexColor(popupCloseButtonBackgroundColor),\n // color: addHashToHexColor(popupCloseButtonColor),\n // };\n\n const popupLinkStyles = {\n backgroundColor: addHashToHexColor(popupButton1Background),\n borderColor: addHashToHexColor(popupButton1BorderColor),\n color: addHashToHexColor(popupButton1FontColor),\n fontSize: addHashToHexColor(popupButton1FontSize),\n };\n\n const popupLinkStyles2 = {\n backgroundColor: addHashToHexColor(popupButton2Background),\n borderColor: addHashToHexColor(popupButton2BorderColor),\n color: addHashToHexColor(popupButton2FontColor),\n fontSize: addHashToHexColor(popupButton2FontSize),\n };\n\n return (\n isOpen && (\n \n \n \n \n\n
\n {imageUrl && (\n
\n
\n \"\"\n
\n
\n )}\n\n \n \n
\n {}\n {popupButtonStyle !== 'No Buttons' && (\n <>\n \n {btnText}\n \n {popupButtonStyle === '2 Buttons' && (\n \n {popupButton2Text}\n \n )}\n \n )}\n \n \n \n )\n );\n};\n\n// TODO: MAKE THIS BETTER\nOfferPopup.propTypes = {\n props: PropTypes.object,\n imageUrl: PropTypes.string,\n title: PropTypes.string,\n desc: PropTypes.string,\n btnText: PropTypes.string,\n btnUrl: PropTypes.string,\n extraClass: PropTypes.string,\n};\n\nexport default OfferPopup;\n","import { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './Input.css';\n\nconst Input = forwardRef(\n (\n {\n autoFocus,\n className,\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n errorMsg,\n helperText,\n id,\n label,\n onChange,\n placeholder,\n rows,\n type,\n value,\n isRequiredBorder,\n onKeyPress,\n maxlength,\n name,\n autoComplete,\n },\n ref\n ) => {\n const showHelperText = helperText && (!isInvalid || !errorMsg);\n let inputClass = 'ab-input';\n let textAreaClass = 'ab-textarea';\n if (isRequiredBorder && isInvalid) {\n inputClass = 'ab-input ab-red-border';\n textAreaClass = 'ab-textarea ab-red-border';\n }\n return (\n
\n {label && (\n \n {label}\n {isRequired && (\n \n *\n \n )}\n \n )}\n {type === 'textarea' ? (\n \n ) : (\n \n )}\n\n {showHelperText && (\n
{helperText}
\n )}\n\n {isInvalid && errorMsg && !isRequiredBorder && (\n
{errorMsg}
\n )}\n
\n );\n }\n);\n\nInput.defaultProps = {\n className: '',\n};\n\nInput.propTypes = {\n autoFocus: PropTypes.bool,\n className: PropTypes.string,\n isDisabled: PropTypes.bool,\n isInvalid: PropTypes.bool,\n isReadOnly: PropTypes.bool,\n isRequired: PropTypes.bool,\n isRequiredBorder: PropTypes.bool,\n errorMsg: PropTypes.string,\n helperText: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.string,\n onChange: PropTypes.func,\n onKeyPress: PropTypes.func,\n placeholder: PropTypes.string,\n rows: PropTypes.number,\n type: PropTypes.oneOf(['text', 'number', 'tel', 'email', 'textarea']),\n value: PropTypes.string,\n maxlength: PropTypes.string,\n name: PropTypes.string,\n autoComplete: PropTypes.string,\n};\n\nInput.displayName = 'Input';\nexport default Input;\n","import { forwardRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './Checkbox.css';\r\n\r\nconst Checkbox = forwardRef(\r\n (\r\n {\r\n children,\r\n className,\r\n isChecked,\r\n isDisabled,\r\n isReadOnly,\r\n onChange,\r\n value,\r\n },\r\n ref\r\n ) => {\r\n return (\r\n
\r\n \r\n \r\n
{children}
\r\n \r\n
\r\n );\r\n }\r\n);\r\n\r\nCheckbox.propTypes = {\r\n children: PropTypes.node,\r\n className: PropTypes.string,\r\n isChecked: PropTypes.bool,\r\n isDisabled: PropTypes.bool,\r\n isReadOnly: PropTypes.bool,\r\n onChange: PropTypes.func,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n};\r\n\r\nCheckbox.defaultProps = {\r\n className: '',\r\n};\r\n\r\nCheckbox.displayName = 'Checkbox';\r\nexport default Checkbox;\r\n","import { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { FaTimes } from 'react-icons/fa';\n\nimport {\n addHashToHexColor,\n applyImportantStyles,\n getCookie,\n getsessionStorageData,\n} from '../../lib';\nimport { sessionStorageKeys } from '../../constants';\nimport './PredifinedPopUp.css';\nimport { Input } from 'components/common/input';\nimport { COOKIE_NAME } from 'config';\nimport { isEmpty } from 'lodash';\nimport axios from 'axios';\nimport { useGetBookingData } from 'hooks';\nimport { toast } from 'react-toastify';\nimport { Checkbox } from 'components/common/checkbox';\n\nconst PredifinedPopUp = ({\n props: {\n popupTopImage: imageUrl,\n popupTitle: title,\n popupText: desc,\n popupButton1Text: btnText,\n popupButton1Link: btnUrl,\n popupID,\n popupWidth,\n popupHeight,\n popupBorderRadius,\n popupBorderColor,\n popupBackgroundColor,\n popupVerticalAlign = 'top',\n popupHorrizontalAlign = 'left',\n\n popupCloseButtonColor,\n popupCloseButtonBackgroundColor,\n\n popupButton1Background,\n popupButton1FontColor,\n popupButton1BorderColor,\n popupButton1FontSize,\n\n popupOpenInterval,\n textboxPlaceHolder,\n textboxPlaceHolder2,\n termsAndConditionsUrl,\n popupButton1MessageAfterPress,\n imageTopMargin: topMargin,\n popupBottomMargin: bottomMargin,\n popupLeftMargin: leftMargin,\n popupRightMargin: rightMargin,\n },\n extraClass = '',\n}) => {\n const closedOfferPopups = getsessionStorageData(\n sessionStorageKeys.CLOSED_OFFER_POPUPS,\n []\n );\n const data = useSelector((state) => state.miniBookingWidget?.data);\n const Lang = data?.Lang;\n\n let initialState;\n\n if (popupOpenInterval === 'Everytime') {\n initialState = true;\n } else {\n initialState = closedOfferPopups.indexOf(popupID) === -1;\n }\n\n const [isOpen, setIsOpen] = useState(initialState);\n\n const closePopup = () => {\n if (\n closedOfferPopups.indexOf(popupID) === -1 &&\n popupOpenInterval !== 'Everytime'\n ) {\n closedOfferPopups.push(popupID);\n sessionStorage.setItem(\n sessionStorageKeys.CLOSED_OFFER_POPUPS,\n JSON.stringify(closedOfferPopups)\n );\n }\n setIsOpen(false);\n };\n\n let positionClass = '';\n\n if (popupVerticalAlign && popupHorrizontalAlign) {\n positionClass = `ab-offer-popup-cnt--${popupVerticalAlign\n .toLocaleLowerCase()\n .replace('middle', 'center')}-${popupHorrizontalAlign\n .toLocaleLowerCase()\n .replace('middle', 'center')}`;\n }\n\n const [isSuccess, setIsSuccess] = useState(false);\n\n const popupCntStyles = {\n backgroundColor: addHashToHexColor(popupBackgroundColor),\n borderColor: addHashToHexColor(popupBorderColor),\n height: popupHeight,\n width: popupWidth,\n marginTop: topMargin,\n marginBottom: bottomMargin,\n marginLeft: leftMargin,\n marginRight: rightMargin,\n };\n\n const popupInnerCntStyles = {\n borderRadius: popupBorderRadius,\n };\n\n // const popupCloseBtnStyles = {\n // backgroundColor: addHashToHexColor(popupCloseButtonBackgroundColor),\n // color: addHashToHexColor(popupCloseButtonColor),\n // };\n\n const popupLinkStyles = {\n backgroundColor: addHashToHexColor(popupButton1Background),\n borderColor: addHashToHexColor(popupButton1BorderColor),\n color: addHashToHexColor(popupButton1FontColor),\n fontSize: addHashToHexColor(popupButton1FontSize),\n };\n const { userBookingData } = useGetBookingData();\n const [errors, setErrors] = useState({});\n const [email, setEmail] = useState('');\n const [fullName, setFullName] = useState('');\n const [acceptTermsAndConditions, setAcceptTermsAndConditions] =\n useState(false);\n\n const validateInputs = () => {\n const errors = {};\n\n const emailRegex =\n // eslint-disable-next-line no-useless-escape\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n if (!email) {\n errors.email = Lang?.fillInYourEmail;\n } else if (!email.match(emailRegex)) {\n errors.email = Lang?.pleaseEnterValidEmail;\n }\n\n return errors;\n };\n\n const currentUrl = window.location.href;\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n const errors = validateInputs();\n\n if (!isEmpty(errors)) {\n setErrors(errors);\n return;\n }\n\n const cookie = getCookie(COOKIE_NAME);\n\n try {\n const response = await axios.post(btnUrl, {\n curCode: userBookingData?.currency,\n lang: userBookingData?.localeLanguage,\n key: email,\n fullName,\n cookie,\n popupID,\n currentUrl,\n });\n\n if (response?.data?.toLowerCase() === '') {\n toast.success(Lang?.verifyEmailMsg, {\n autoClose: true,\n theme: 'colored',\n });\n setIsSuccess(true);\n } else if (response?.data?.toLowerCase() === 'Error') {\n toast.error('Something went wrong try again', {\n autoClose: true,\n theme: 'colored',\n });\n setIsSuccess(false);\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n };\n\n return (\n isOpen && (\n \n \n \n \n\n \n {imageUrl && (\n \n
\n \n
\n \n )}\n \n \n \n \n {isSuccess ? (\n <>\n \n \n ) : (\n <>\n \n setAcceptTermsAndConditions(\n event.target.checked\n )\n }\n isChecked={acceptTermsAndConditions}\n >\n Click here to agree to our{' '}\n \n terms and conditions.\n \n \n \n setFullName(event.target.value)\n }\n ref={(el) => {\n applyImportantStyles(el, {\n border: '1px solid #ccc !important;',\n padding: '10px !important;',\n });\n }}\n />\n
\n \n setEmail(event.target.value)\n }\n ref={(el) => {\n applyImportantStyles(el, {\n border: '1px solid #ccc !important;',\n padding: '10px !important;',\n });\n }}\n />\n\n \n {btnText}\n \n
\n \n )}\n \n \n \n \n )\n );\n};\n\n// TODO: MAKE THIS BETTER\nPredifinedPopUp.propTypes = {\n props: PropTypes.object,\n imageUrl: PropTypes.string,\n title: PropTypes.string,\n desc: PropTypes.string,\n btnText: PropTypes.string,\n btnUrl: PropTypes.string,\n extraClass: PropTypes.string,\n};\n\nexport default PredifinedPopUp;\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { FaTimes } from 'react-icons/fa';\n\nimport { addHashToHexColor, getsessionStorageData } from '../../lib';\nimport { sessionStorageKeys } from '../../constants';\nimport './PredifinedPopUpType2.css';\n\nconst PredifinedPopUp = ({\n props: {\n popupTopImage: imageUrl,\n popupTitle: title,\n popupText: desc,\n popupButton1Text: btnText,\n popupButton1Link: btnUrl,\n popupID,\n popupWidth,\n popupHeight,\n popupBorderRadius,\n popupBorderColor,\n popupBackgroundColor,\n popupVerticalAlign = 'top',\n popupHorrizontalAlign = 'left',\n\n popupCloseButtonColor,\n popupCloseButtonBackgroundColor,\n\n popupButton1Background,\n popupButton1FontColor,\n popupButton1BorderColor,\n popupButton1FontSize,\n\n popupOpenInterval,\n textboxPlaceHolder,\n textboxPlaceHolder2,\n termsAndConditionsUrl,\n popupButton1MessageAfterPress,\n imageTopMargin: topMargin,\n popupBottomMargin: bottomMargin,\n popupLeftMargin: leftMargin,\n popupRightMargin: rightMargin,\n },\n extraClass = '',\n}) => {\n const closedOfferPopups = getsessionStorageData(\n sessionStorageKeys.CLOSED_OFFER_POPUPS,\n []\n );\n\n let initialState;\n\n if (popupOpenInterval === 'Everytime') {\n initialState = true;\n } else {\n initialState = closedOfferPopups.indexOf(popupID) === -1;\n }\n\n const [isOpen, setIsOpen] = useState(initialState);\n\n const closePopup = () => {\n if (\n closedOfferPopups.indexOf(popupID) === -1 &&\n popupOpenInterval !== 'Everytime'\n ) {\n closedOfferPopups.push(popupID);\n sessionStorage.setItem(\n sessionStorageKeys.CLOSED_OFFER_POPUPS,\n JSON.stringify(closedOfferPopups)\n );\n }\n setIsOpen(false);\n };\n\n let positionClass = '';\n\n if (popupVerticalAlign && popupHorrizontalAlign) {\n positionClass = `ab-offer-popup-cnt--${popupVerticalAlign\n .toLocaleLowerCase()\n .replace('middle', 'center')}-${popupHorrizontalAlign\n .toLocaleLowerCase()\n .replace('middle', 'center')}`;\n }\n\n const popupCntStyles = {\n backgroundColor: addHashToHexColor(popupBackgroundColor),\n borderColor: addHashToHexColor(popupBorderColor),\n height: popupHeight,\n width: popupWidth,\n marginTop: topMargin,\n marginBottom: bottomMargin,\n marginLeft: leftMargin,\n marginRight: rightMargin,\n };\n\n const popupInnerCntStyles = {\n borderRadius: popupBorderRadius,\n };\n\n // const popupCloseBtnStyles = {\n // backgroundColor: addHashToHexColor(popupCloseButtonBackgroundColor),\n // color: addHashToHexColor(popupCloseButtonColor),\n // };\n\n // const popupLinkStyles = {\n // backgroundColor: addHashToHexColor(popupButton1Background),\n // borderColor: addHashToHexColor(popupButton1BorderColor),\n // color: addHashToHexColor(popupButton1FontColor),\n // fontSize: addHashToHexColor(popupButton1FontSize),\n // };\n\n // const handleSubmit = async (event) => {\n // event.preventDefault();\n // };\n\n return (\n isOpen && (\n \n \n \n \n\n \n {imageUrl && (\n \n
\n \n
\n \n )}\n {/* \n \n \n \n \n {btnText}\n \n \n */}\n \n \n )\n );\n};\n\n// TODO: MAKE THIS BETTER\nPredifinedPopUp.propTypes = {\n props: PropTypes.object,\n imageUrl: PropTypes.string,\n title: PropTypes.string,\n desc: PropTypes.string,\n btnText: PropTypes.string,\n btnUrl: PropTypes.string,\n extraClass: PropTypes.string,\n};\n\nexport default PredifinedPopUp;\n","import { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { applyImportantStyles } from '../../../lib';\n\nimport './Button.css';\n\nconst Button = forwardRef(\n (\n {\n className,\n children,\n icon,\n iconSize,\n disabled,\n isWorking,\n onClick,\n size,\n color,\n styles,\n title,\n width,\n alignItems,\n },\n ref\n ) => {\n width = typeof width === 'string' ? width : width + 'px';\n\n const handleClick = (event) => {\n if (!disabled && !isWorking) {\n onClick(event);\n }\n };\n return (\n {\n applyImportantStyles(el, {\n ...styles,\n });\n }}\n >\n {!isWorking && icon}\n {/* TODO: ADD SPACE BETWEEN ICON AND TEXT */}\n {children}\n \n );\n }\n);\n\nButton.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n iconSize: PropTypes.number,\n disabled: PropTypes.bool,\n isWorking: PropTypes.bool,\n onClick: PropTypes.func,\n size: PropTypes.number,\n styles: PropTypes.object,\n color: PropTypes.string,\n title: PropTypes.string,\n alignItems: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nButton.defaultProps = {\n className: '',\n children: undefined,\n icon: undefined,\n iconSize: 18,\n disabled: false,\n isWorking: false,\n onClick: () => {},\n size: 14,\n color: '#323b43',\n};\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import PropTypes from 'prop-types';\n\nimport { IconContext } from 'react-icons';\n// import * as HiIcons from 'react-icons/hi';\nimport * as FaIcons from 'react-icons/fa';\n// import * as MdIcons from 'react-icons/md';\n// import * as GiIcons from 'react-icons/gi';\n// import * as Fa6Icons from 'react-icons/fa6';\nconst DynamicIcon = ({ name, size, color }) => {\n const IconComponent = FaIcons[name];\n // if (!IconComponent) {\n // IconComponent = HiIcons[name];\n // }\n // if (!IconComponent) {\n // IconComponent = MdIcons[name];\n // }\n // if (!IconComponent) {\n // IconComponent = GiIcons[name];\n // }\n // if (!IconComponent) {\n // IconComponent = Fa6Icons[name];\n // }\n if (!IconComponent) {\n return ;\n }\n\n return (\n \n \n \n );\n};\n\nDynamicIcon.propTypes = {\n color: PropTypes.string,\n name: PropTypes.string,\n size: PropTypes.number,\n};\n\nexport default DynamicIcon;\n","import { useEffect, useRef } from 'react';\r\n\r\nconst AUTO_OPEN_CONDITIONS = {\r\n clickCount: 'clickCount',\r\n pageScroll: 'pageScroll',\r\n timeDelay: 'timeDelay',\r\n hasExitIntent: 'hasExitIntent',\r\n};\r\n\r\nexport const useAutoOpen = (conditions = {}, onOpen) => {\r\n // Diregard the other auto open conditions when 'hasExitIntent' is set to 'true'\r\n const ref = conditions.hasExitIntent\r\n ? useRef([])\r\n : useRef(\r\n Object.entries(conditions)\r\n .filter((entry) => {\r\n const key = entry[0];\r\n const value = entry[1];\r\n\r\n // 'hasExitIntent' should not be included together with the other\r\n // auto open triggers\r\n if (key === AUTO_OPEN_CONDITIONS.hasExitIntent) {\r\n return false;\r\n }\r\n\r\n if (key === AUTO_OPEN_CONDITIONS.timeDelay) {\r\n return true;\r\n }\r\n\r\n return value !== 0 && value !== null;\r\n })\r\n .map((entry) => {\r\n const key = entry[0];\r\n const value = entry[1];\r\n\r\n return {\r\n name: key,\r\n value: value,\r\n isFullfilled: false,\r\n };\r\n })\r\n );\r\n\r\n const timeoutIdRef = useRef(null);\r\n\r\n const removeAutoOpenEventHandlers = () => {\r\n document.removeEventListener('click', handleClick);\r\n window.removeEventListener('scroll', handleScroll);\r\n timeoutIdRef && clearTimeout(timeoutIdRef.current);\r\n };\r\n\r\n const checkShouldOpen = () => {\r\n const allFullfilled = ref.current.every(\r\n (condition) => condition.isFullfilled\r\n );\r\n\r\n if (allFullfilled && typeof onOpen === 'function') {\r\n document.removeEventListener('click', handleClick);\r\n window.removeEventListener('scroll', handleScroll);\r\n timeoutIdRef && clearTimeout(timeoutIdRef.current);\r\n onOpen();\r\n removeOnMouseOutEvent();\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n const condition = ref.current.find(\r\n (condition) => condition.name === AUTO_OPEN_CONDITIONS.clickCount\r\n );\r\n\r\n if (!condition) {\r\n document.removeEventListener('click', handleClick);\r\n return;\r\n }\r\n\r\n condition.clicks =\r\n condition.clicks !== undefined ? condition.clicks + 1 : 1;\r\n\r\n condition.isFullfilled = condition.clicks >= condition.value;\r\n\r\n if (condition.isFullfilled) {\r\n document.removeEventListener('click', handleClick);\r\n }\r\n\r\n checkShouldOpen();\r\n };\r\n\r\n const handleScroll = () => {\r\n const condition = ref.current.find(\r\n (condition) => condition.name === AUTO_OPEN_CONDITIONS.pageScroll\r\n );\r\n\r\n if (!condition) {\r\n window.removeEventListener('scroll', handleScroll);\r\n return;\r\n }\r\n\r\n const scrollTop = window.scrollY;\r\n const docHeight = document.body.offsetHeight;\r\n const winHeight = window.innerHeight;\r\n const scrollPercent = scrollTop / (docHeight - winHeight);\r\n const scrollPercentRounded = Math.round(scrollPercent * 100);\r\n\r\n condition.currentScrollPercent = scrollPercentRounded;\r\n\r\n condition.isFullfilled =\r\n condition.currentScrollPercent >= condition.value;\r\n\r\n if (condition.isFullfilled) {\r\n window.removeEventListener('scroll', handleScroll);\r\n }\r\n\r\n checkShouldOpen();\r\n };\r\n\r\n useEffect(() => {\r\n for (const condition of ref.current) {\r\n if (condition.name === AUTO_OPEN_CONDITIONS.timeDelay) {\r\n timeoutIdRef.current = setTimeout(() => {\r\n const condition = ref.current.find(\r\n (condition) =>\r\n condition.name === AUTO_OPEN_CONDITIONS.timeDelay\r\n );\r\n\r\n if (condition) {\r\n condition.isFullfilled = true;\r\n checkShouldOpen();\r\n }\r\n }, condition.value * 1000);\r\n } else if (condition.name === AUTO_OPEN_CONDITIONS.clickCount) {\r\n document.addEventListener('click', handleClick);\r\n } else if (condition.name === AUTO_OPEN_CONDITIONS.pageScroll) {\r\n window.addEventListener('scroll', handleScroll);\r\n }\r\n }\r\n\r\n return () => {\r\n removeAutoOpenEventHandlers();\r\n };\r\n }, []);\r\n\r\n const removeOnMouseOutEvent = () =>\r\n document.removeEventListener('mouseout', onMouseOut);\r\n\r\n const onMouseOut = (event) => {\r\n if (!conditions.hasExitIntent) {\r\n removeOnMouseOutEvent();\r\n }\r\n\r\n const shouldShowExitIntent =\r\n !event.toElement && !event.relatedTarget && event.clientY < 10;\r\n\r\n if (shouldShowExitIntent && conditions.hasExitIntent) {\r\n onOpen();\r\n removeOnMouseOutEvent();\r\n removeAutoOpenEventHandlers();\r\n }\r\n };\r\n useEffect(() => {\r\n document.addEventListener('mouseout', onMouseOut);\r\n\r\n return () => {\r\n removeOnMouseOutEvent();\r\n };\r\n }, []);\r\n\r\n return {\r\n removeAutoOpenEventHandlers,\r\n };\r\n};\r\n","import { Fragment, useEffect, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { FaTimes } from 'react-icons/fa';\n\nimport './Modal.css';\nimport Button from '../button/Button';\nimport { DynamicIcon } from '../dynamicIcon';\n\nimport { useOnClickOutside } from 'hooks';\nimport { useAutoOpen } from './hooks';\n\nconst Modal = ({\n animation = 'fade-in',\n backgroundColor,\n color,\n icon,\n variant,\n placement,\n width,\n renderContent,\n className,\n isOpen,\n onClose,\n onOpen,\n styles,\n title,\n onOverlayClick,\n autoOpen: autoOpenConditions = {},\n showHeader = true,\n extraBodyClass,\n closeAutoSeconds,\n}) => {\n const modalRef = useRef();\n onOverlayClick && useOnClickOutside(modalRef, onOverlayClick);\n\n const commonStyles =\n variant === 'secondary'\n ? {\n backgroundColor,\n color,\n }\n : {};\n\n const { removeAutoOpenEventHandlers } = useAutoOpen(\n autoOpenConditions,\n onOpen\n );\n\n const handleClose =\n typeof onClose === 'function'\n ? () => {\n removeAutoOpenEventHandlers();\n onClose();\n }\n : undefined;\n\n if (closeAutoSeconds) {\n const autoClose = () => {\n onOverlayClick();\n };\n\n useEffect(() => {\n const id = setInterval(autoClose, closeAutoSeconds * 1000);\n return () => clearInterval(id);\n }, []);\n }\n\n return (\n \n \n {ReactDOM.createPortal(\n
\n
\n \n {showHeader && (\n \n \n \n \n {icon && variant === 'secondary' && (\n \n \n \n )}\n {title && (\n \n {title}\n \n )}\n
\n )}\n\n \n {renderContent()}\n
\n \n \n ,\n $modalRoot\n )}\n
\n \n );\n};\n\nconst $modalRoot = document.getElementById('abouthotelier-modal-root');\n\nModal.propTypes = {\n animation: PropTypes.oneOf([\n 'fade-in',\n 'slide-in-bottom',\n 'slide-in-top',\n 'slide-in-left',\n 'slide-in-right',\n ]),\n autoOpen: PropTypes.shape({\n clickCount: PropTypes.number,\n pageScroll: PropTypes.number,\n timeDelay: PropTypes.number,\n }),\n backgroundColor: PropTypes.string,\n color: PropTypes.string,\n icon: PropTypes.string,\n placement: PropTypes.oneOf(['center', 'aside']),\n variant: PropTypes.oneOf(['primary', 'secondary', 'white-header']),\n width: PropTypes.number,\n renderContent: PropTypes.func.isRequired,\n className: PropTypes.string,\n isOpen: PropTypes.bool,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n styles: PropTypes.object,\n title: PropTypes.string,\n onOverlayClick: PropTypes.func,\n showHeader: PropTypes.bool,\n extraBodyClass: PropTypes.string,\n closeAutoSeconds: PropTypes.number,\n};\n\nModal.defaultProps = {\n color: '#fff',\n backgroundColor: '#222',\n icon: '',\n placement: 'center',\n variant: 'primary',\n width: 600,\n renderLink: () => {},\n className: undefined,\n isOpen: false,\n styles: {},\n};\n\nexport default Modal;\n","import { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getsessionStorageData } from '../../lib';\nimport { sessionStorageKeys } from '../../constants';\nimport './popUpNew.css';\nimport { FaChevronRight } from 'react-icons/fa';\nimport { Modal } from 'components/common/modal';\n\nconst popUpNew = ({\n props: {\n isDesktopOrMobile,\n popupTemplate,\n image: imageUrl,\n imagePosition,\n animation,\n primaryColor,\n title,\n titleColor,\n description,\n descriptionColor,\n buttonText,\n buttonColor,\n buttonTextColor,\n\n popUpDateTime,\n popUpDateTimeISO,\n closeAutomaticaly,\n closeOption,\n closeAutoSeconds,\n hasClickCount,\n clickCount,\n hasExitIntent,\n hasPageCount,\n pageCount,\n hasPageScroll,\n pageScrollPercent,\n hasShadow,\n hasTimeDelay,\n timeDelay,\n popupID,\n popupWidth,\n popupHeight,\n popupOpenInterval,\n buttonLink,\n buttonBehavior,\n closeButtonColor,\n dateTextColor,\n dateBackColor,\n },\n}) => {\n const closedOfferPopups = getsessionStorageData(\n sessionStorageKeys.CLOSED_OFFER_POPUPS,\n []\n );\n\n // let initialState;\n\n // if (popupOpenInterval === 'Everytime') {\n // initialState = true;\n // } else {\n // initialState = closedOfferPopups.indexOf(popupID) === -1;\n // }\n\n // const [isOpen, setIsOpen] = useState(initialState);\n const [isOpen, setIsOpen] = useState(false);\n\n const closePopup = () => {\n if (\n closedOfferPopups.indexOf(popupID) === -1 &&\n popupOpenInterval !== 'Everytime'\n ) {\n closedOfferPopups.push(popupID);\n sessionStorage.setItem(\n sessionStorageKeys.CLOSED_OFFER_POPUPS,\n JSON.stringify(closedOfferPopups)\n );\n }\n setIsOpen(false);\n };\n\n const popupCntStyles = {\n height: popupHeight,\n width: popupWidth,\n };\n\n let isMobileClass = '';\n if (isDesktopOrMobile === 1) {\n isMobileClass = 'ab-popup-new-is-mobile';\n }\n\n let mobileClass = '';\n if (isDesktopOrMobile === 1) {\n mobileClass = '-mobile';\n }\n\n const [days, setDays] = useState(0);\n const [hours, setHours] = useState(0);\n const [minutes, setMinutes] = useState(0);\n const [seconds, setSeconds] = useState(0);\n const [autoClose, setautoClose] = useState(false);\n\n if (autoClose && closeAutomaticaly) {\n closePopup();\n }\n\n const timeObj = () => {\n const dateString = `${popUpDateTimeISO}`;\n const date = new Date(dateString);\n\n const dateNow = new Date();\n let seconds = Math.floor((date - dateNow) / 1000);\n if (Math.floor(seconds) > 0) {\n let minutes = Math.floor(seconds / 60);\n let hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n hours = hours - days * 24;\n minutes = minutes - days * 24 * 60 - hours * 60;\n seconds =\n seconds - days * 24 * 60 * 60 - hours * 60 * 60 - minutes * 60;\n\n timeObj.days = days;\n timeObj.hours = hours;\n timeObj.minutes = minutes;\n timeObj.seconds = seconds;\n } else {\n timeObj.days = 0;\n timeObj.hours = 0;\n timeObj.minutes = 0;\n timeObj.seconds = 0;\n }\n\n return timeObj;\n };\n\n const extraClass = hasExitIntent ? 'ab-exit-popup' : '';\n\n const componentDidMount = () => {\n const days = timeObj().days;\n const hours = timeObj().hours;\n const minutes = timeObj().minutes;\n const seconds = timeObj().seconds;\n setDays(days);\n setHours(hours);\n setMinutes(minutes);\n setSeconds(seconds);\n };\n useEffect(() => {\n const id = setInterval(componentDidMount, 1000);\n return () => clearInterval(id);\n }, []);\n useEffect(() => {\n const id = setInterval(setautoClose, closeAutoSeconds * 1000);\n return () => clearInterval(id);\n }, []);\n\n const renderContent = () => {\n return (\n \n \n \n
\n {closeOption ? (\n \n SKIP\n
\n ) : (\n \n \n \n \n \n )}\n \n \n
\n \n {title}\n \n \n {description}\n
\n {popupTemplate === 7 && (\n
\n \n \n
\n {days}\n
\n
\n
\n day\n
\n \n \n \n
\n {hours}\n
\n \n
\n hours\n
\n \n \n \n
\n {minutes}\n
\n \n
\n minutes\n
\n \n \n \n
\n {seconds}\n
\n \n
\n seconds\n
\n \n \n )}\n {buttonBehavior !== 5 && (\n \n \n {/* \n \n \n \n */}\n \n \n {buttonText}\n \n \n \n \n \n \n \n )}\n \n \n \n \n );\n };\n\n return (\n setIsOpen(true)}\n onOpen={() => setIsOpen(true)}\n onOverlayClick={() => setIsOpen(false)}\n renderContent={renderContent}\n showHeader={false}\n extraBodyClass=\"ab-modal-transparent-back\"\n className=\"ab-modal-transparent-back\"\n closeAutoSeconds={closeAutoSeconds}\n />\n );\n};\n\n// TODO: MAKE THIS BETTER\npopUpNew.propTypes = {\n props: PropTypes.object,\n imageUrl: PropTypes.string,\n title: PropTypes.string,\n desc: PropTypes.string,\n btnText: PropTypes.string,\n btnUrl: PropTypes.string,\n extraClass: PropTypes.string,\n};\n\nexport default popUpNew;\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport OfferPopup from './OfferPopup';\nimport { PredifinedPopUp } from 'components/predifinedPopUp';\nimport { PredifinedPopUpType2 } from 'components/predifinedPopUpType2';\nimport { PopUpNew } from 'components/popUpNew';\n\nconst RetargetingOffers = ({ offers = [] }) => {\n const showPopUpSetTimeout = () => {\n setTimeout(() => {\n const popupElms = document.querySelectorAll('.ab-set-hidden');\n popupElms.forEach((popupElm) => {\n const isExitPopup =\n popupElm.classList.contains('ab-exit-popup');\n if (!isExitPopup) {\n popupElm.classList.remove('ab-set-hidden');\n }\n });\n }, 1000);\n };\n\n useEffect(() => {\n const onMouseOut = (event) => {\n const shouldShowExitIntent =\n !event.toElement && !event.relatedTarget && event.clientY < 10;\n\n if (shouldShowExitIntent) {\n const popupElms = document.querySelectorAll('.ab-exit-popup');\n popupElms.forEach((popupElm) => {\n popupElm.classList.remove('ab-set-hidden');\n });\n }\n };\n document.addEventListener('mouseout', onMouseOut);\n\n return () => {\n document.removeEventListener('mouseout', onMouseOut);\n };\n }, []);\n\n return (\n <>\n {offers.map((offer, index) => {\n if (offer.isPopUpNew) {\n return ;\n } else if (offer.predefinedRetargeting === 7) {\n return (\n \n );\n } else {\n if (offer.predefinedRetargeting === 6) {\n return (\n \n );\n }\n return (\n \n );\n }\n })}\n {offers.length > 0 && showPopUpSetTimeout()}\n \n );\n};\n\nRetargetingOffers.propTypes = {\n offers: PropTypes.array,\n};\n\nexport default RetargetingOffers;\n","import { useEffect, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { FaChevronDown } from 'react-icons/fa';\r\nimport { BsChat } from 'react-icons/bs';\r\nimport { getOpenWidgetBtnPosition, isValidPrice } from '../../../lib';\r\nimport * as constants from './../../../constants';\r\n\r\nimport './ToggleWidgetRoundBtn.css';\r\n\r\nconst ToggleWidgetRoundBtn = ({\r\n chatBtnOnClick,\r\n toggleWidgetRoundBtn,\r\n toggleWidget,\r\n widgetPosition,\r\n showWidget,\r\n enableXBtn,\r\n ourPrice,\r\n showOnlyWhenClosed = false,\r\n showCta = true,\r\n}) => {\r\n // TODO: NEED TO REFACTOR THIS ONLY PASS THE PRICE THAT WE WANT TO DISPLAY??\r\n const isOpen = useSelector((state) => state.miniBookingWidget.open);\r\n const price = useSelector((state) => state.miniBookingWidget.price);\r\n const widgetVariant =\r\n useSelector((state) => state.miniBookingWidget?.data?.smallWidget) ||\r\n constants.SMALL;\r\n\r\n // TODO: REFACTOR THIS\r\n const [displayCta, setDisplayCta] = useState(\r\n (widgetVariant === constants.REGULAR ||\r\n widgetVariant === constants.HORIZONTAL) &&\r\n showCta\r\n );\r\n\r\n let openWidgetButtonStyles = getOpenWidgetBtnPosition(\r\n widgetPosition?.position\r\n );\r\n\r\n const btnContainerStyles = widgetPosition?.position?.includes('left')\r\n ? { marginLeft: 0 }\r\n : { marginLeft: 'auto' };\r\n\r\n if (toggleWidgetRoundBtn) {\r\n openWidgetButtonStyles = {\r\n ...openWidgetButtonStyles,\r\n backgroundColor: toggleWidgetRoundBtn.backgroundColor,\r\n color: toggleWidgetRoundBtn.color,\r\n };\r\n }\r\n\r\n const useLoyaltyPrice = isValidPrice(ourPrice?.loyaltyprice);\r\n\r\n if (!toggleWidgetRoundBtn) {\r\n return null;\r\n }\r\n\r\n const minPriceBtn = useRef(null);\r\n\r\n useEffect(() => {\r\n if (displayCta) {\r\n setTimeout(() => {\r\n if (minPriceBtn.current) {\r\n minPriceBtn.current.classList.add('no-cta');\r\n setTimeout(() => {\r\n setDisplayCta(false);\r\n }, 4500);\r\n }\r\n }, 2000);\r\n }\r\n }, [isOpen]);\r\n\r\n return (\r\n <>\r\n {showOnlyWhenClosed && isOpen ? null : (\r\n
\r\n \r\n {isOpen && !displayCta ? (\r\n \r\n ) : (\r\n <>\r\n {price || useLoyaltyPrice ? (\r\n <>\r\n {/* TODO: WHAT ABOUT 'rememberClose' */}\r\n {displayCta &&\r\n toggleWidgetRoundBtn?.btnText && (\r\n
\r\n {\r\n toggleWidgetRoundBtn?.btnText\r\n }\r\n
\r\n )}\r\n\r\n
\r\n \r\n {useLoyaltyPrice\r\n ? ourPrice?.loyaltyprice\r\n : price}{' '}\r\n \r\n {ourPrice?.currencySymbol}\r\n \r\n \r\n \r\n {ourPrice?.nights}{' '}\r\n {ourPrice?.nightsText}\r\n \r\n
\r\n \r\n ) : (\r\n \r\n {ourPrice?.text}\r\n \r\n )}\r\n\r\n {enableXBtn && (\r\n showWidget(false)}\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n
\r\n {toggleWidgetRoundBtn?.chatEnabled && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nToggleWidgetRoundBtn.propTypes = {\r\n chatBtnOnClick: PropTypes.func,\r\n toggleWidgetRoundBtn: PropTypes.object,\r\n toggleWidget: PropTypes.func.isRequired,\r\n widgetPosition: PropTypes.object,\r\n showWidget: PropTypes.func.isRequired,\r\n enableXBtn: PropTypes.bool,\r\n ourPrice: PropTypes.object,\r\n showOnlyWhenClosed: PropTypes.bool,\r\n showCta: PropTypes.bool,\r\n};\r\n\r\nexport default ToggleWidgetRoundBtn;\r\n","import PropTypes from 'prop-types';\r\nimport { FaStar, FaStarHalfAlt } from 'react-icons/fa';\r\n\r\nimport './Stars.css';\r\n\r\nconst Stars = ({ rating, size = 14, extraClass = '', color = '#f7c852' }) => {\r\n const hasHalfStar = rating % 1 > 0;\r\n const fullStars = Math.floor(rating);\r\n\r\n return (\r\n
\r\n {[...Array(fullStars).keys()].map((_, index) => {\r\n return ;\r\n })}\r\n {hasHalfStar && }\r\n
\r\n );\r\n};\r\n\r\nStars.propTypes = {\r\n rating: PropTypes.number.isRequired,\r\n size: PropTypes.number,\r\n extraClass: PropTypes.string,\r\n color: PropTypes.string,\r\n};\r\n\r\nexport default Stars;\r\n","import { setCheckInDay, setCheckOutDay } from 'features/userSlice';\nimport { useGetBookingData } from 'hooks';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport './AvailableFutureDates.css';\n\nconst AvailableFutureDates = ({ dates }) => {\n if (dates.length === 0) {\n return null;\n }\n const dispatch = useDispatch();\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const { getBookingData } = useGetBookingData();\n return (\n
\n {/* TODO: DISPLAY ONLY TWO FOR NOW */}\n {dates.slice(0, 2).map((date) => {\n const onClick = () => {\n dispatch(setCheckInDay({ day: date.futureDateData[0] }));\n dispatch(setCheckOutDay({ day: date.futureDateData[1] }));\n getBookingData({\n checkInDate: date.futureDateData[0].date,\n checkOutDate: date.futureDateData[1].date,\n });\n };\n\n return (\n \n
\n {date?.dateDisplay} - {date?.dateToDisplay}\n
\n
\n {date?.min_stay} {Lang?.nights}\n
\n
\n {date?.priceStr}\n
\n
\n );\n })}\n \n );\n};\n\nconst DateType = PropTypes.shape({\n reactID: PropTypes.number,\n dateDisplay: PropTypes.string,\n dateToDisplay: PropTypes.string,\n priceStr: PropTypes.string,\n});\n\nAvailableFutureDates.propTypes = {\n dates: PropTypes.arrayOf(DateType),\n};\n\nexport default AvailableFutureDates;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { AvailableFutureDates } from 'components/availableFutureDates';\r\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\r\n\r\nconst NoAvailablePrices = ({ message, variant }) => {\r\n const { availableFutureDates, isFetching, noPricesMessage } =\r\n useSelector((state) => state?.noAvailablePrices) || {};\r\n\r\n return (\r\n
\r\n
\r\n {noPricesMessage || message}\r\n
\r\n\r\n {isFetching ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nNoAvailablePrices.defaultProps = {\r\n variant: 'desktop',\r\n};\r\n\r\nNoAvailablePrices.propTypes = {\r\n message: PropTypes.string,\r\n variant: PropTypes.oneOf(['mobile', 'desktop']),\r\n};\r\n\r\nexport default NoAvailablePrices;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { BarLoader } from 'react-spinners';\r\nimport { css } from '@emotion/react';\r\n\r\nconst OldWidgetLoadingIndicator = ({ color = '#ff5722' }) => {\r\n const loaderStyles = css`\r\n display: block;\r\n margin: 0 auto;\r\n color: #36d7b7;\r\n width: 100%;\r\n `;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nOldWidgetLoadingIndicator.propTypes = {\r\n color: PropTypes.string,\r\n};\r\n\r\nexport default OldWidgetLoadingIndicator;\r\n","import { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { FaTimes, FaChevronRight, FaWpforms } from 'react-icons/fa';\n\nimport { WIDGET_STATS_SETTINGS } from '../../config';\nimport { CLICK_ACTIONS } from '../../constants';\nimport { useOpenOldWidget } from 'hooks';\n\nimport { toggle } from '../../features/MiniBookingWidget/MiniBookingWidgetSlice';\n\nimport './MobileBookingWidget.css';\n\nimport {\n applyImportantStyles,\n getWidgetPosition,\n makeStatsRequestThrottled,\n} from '../../lib';\nimport { openDrawer } from 'features/drawersSlice';\n\nimport Channel from '../channel/Channel';\nimport MobileWidgetHeaderBtn from '../mobileWidgetHeaderBtn/MobileWidgetHeaderBtn';\nimport { OffersButton } from '../offers';\nimport ToggleWidgetRoundBtn from '../common/toggleWidgetRoundBtn/ToggleWidgetRoundBtn';\nimport Stars from '../common/stars/Stars';\nimport { NoAvailablePrices } from 'features/noAvailablePrices';\nimport { OldWidgetLoadingIndicator } from 'components/common/oldWidgetLoadingIndicator';\nimport { openModal } from 'features/modalSlice';\n\nconst MobileBookingWidget = ({ showWidget }) => {\n const isOpen = useSelector((state) => state.miniBookingWidget.open);\n const hidden = useSelector((state) => state.miniBookingWidget.hidden);\n const price = useSelector((state) => state.miniBookingWidget.price);\n\n const data = useSelector((state) => state.miniBookingWidget?.data) || {};\n const channels =\n useSelector((state) => state.miniBookingWidget?.channels) || {};\n const showOffer = data?.enableWidgetOffers;\n const Lang = data?.Lang;\n const {\n Behavior: clickAction,\n ourPrice,\n ourOffers,\n colors,\n poweredBy,\n toggleWidgetRoundBtn,\n enableXButton: enableXBtn,\n findLowestPriceMessage: lowestPriceMessage,\n disablearrow: disableArrowBtn,\n bookingRefText,\n totalScore,\n totalReviews,\n propertyID: propertyId,\n noPricesMessage,\n } = data;\n\n const show = useSelector((state) => state.miniBookingWidget.show);\n const widgetPosition = useSelector(\n (state) => state.miniBookingWidget.widgetPosition\n );\n\n const widgetPositionStyles = getWidgetPosition(widgetPosition);\n\n const miniWidgetStyles = {\n ...widgetPositionStyles,\n display: hidden ? 'none' : 'block',\n 'max-width': disableArrowBtn ? '240px' : '250px',\n };\n\n const mobileWidgetHeaderBtnStyles = {\n // fontSize:\n // channels.length === 0 && ourOffers?.url === '' ? '16px' : '18px',\n fontSize: '16px',\n };\n\n const dispatch = useDispatch();\n\n const toggleWidget = () => {\n dispatch(toggle());\n };\n\n const { showLoader: showOldWidgetLoader, clickHandler: openOldWidget } =\n useOpenOldWidget();\n\n const onClickOffer = (event) => {\n event.stopPropagation();\n dispatch(\n openModal({\n modalId: 'OfferModal',\n })\n );\n };\n\n const onClickReviews = (event) => {\n event.stopPropagation();\n dispatch(\n openModal({\n modalId: 'ReviewsModal',\n })\n );\n };\n\n const onClick = useCallback(() => {\n if (clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN) {\n dispatch(openDrawer({ drawerId: 'MobileMultipropertyDrawer' }));\n if (!document.body.classList.contains('ab-no-overflow')) {\n document.body.classList.add('ab-no-overflow');\n }\n } else {\n openOldWidget(clickAction);\n }\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n );\n }, [clickAction]);\n\n const chatBtnHandleClick = useCallback(() => {\n openOldWidget(CLICK_ACTIONS.OPEN_CHAT);\n }, []);\n\n const renderLowestPriceMsg = () => {\n if (clickAction === CLICK_ACTIONS.OPEN_PLUGIN) {\n return (\n
\n {lowestPriceMessage}\n
\n );\n }\n\n return (\n \n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n )\n }\n >\n
{lowestPriceMessage}
\n \n );\n };\n\n const inlineStyles = {};\n if (data.pluginZIndex) {\n inlineStyles.zIndex = data.pluginZIndex;\n }\n\n if (!show) {\n return null;\n }\n\n const hasPrices = ourPrice?.price || ourPrice?.loyaltyprice;\n const showNoPricesMessage = !hasPrices && noPricesMessage;\n const showHorizontalDivider =\n (channels.length > 0 && (totalScore || totalReviews)) ||\n (channels.length === 0 &&\n lowestPriceMessage &&\n (totalScore || totalReviews));\n\n return (\n {\n applyImportantStyles(el, miniWidgetStyles);\n }}\n >\n {isOpen && (\n <>\n
\n \n \n \n \n
\n\n {}\n }\n style={{\n cursor:\n clickAction === CLICK_ACTIONS.OPEN_PLUGIN ||\n clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN\n ? 'pointer'\n : 'default',\n }}\n >\n \n \n {bookingRefText && (\n \n {bookingRefText}\n \n )}\n\n {/* Loyalty Price */}\n \n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n )\n }\n disableArrowBtn={disableArrowBtn}\n classes=\"ab-loyalty-price\"\n styles={{\n buttonStyles:\n mobileWidgetHeaderBtnStyles,\n }}\n />\n\n {/* Best Rate Price */}\n \n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n )\n }\n disableArrowBtn={disableArrowBtn}\n showAlways={false}\n classes=\"ab-best-rate-price\"\n styles={{\n containerStyles: {\n borderBottom:\n colors.primaryBackgroundColor.toUpperCase() ===\n '#FFF' ||\n colors.primaryBackgroundColor.toUpperCase() ===\n '#FFFFFF'\n ? `1px solid #e4e4e4`\n : 'none',\n },\n buttonStyles:\n mobileWidgetHeaderBtnStyles,\n }}\n />\n \n {/* {!disableArrowBtn && hasPrices && (\n {\n applyImportantStyles(el, {\n margin: '0',\n 'background-color':\n colors?.secondaryBackgroundColor,\n color: colors?.primaryTextColor,\n });\n }}\n onClick={() => {\n const bestRateButton =\n document.querySelector(\n '.ab-best-rate-price button'\n );\n if (bestRateButton) {\n bestRateButton.click();\n }\n }}\n >\n \n \n )} */}\n \n
\n {hasPrices && channels?.length > 0 && (\n
\n {channels.map((channel, index) => {\n return (\n {\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS\n .actions.click,\n propertyId\n );\n }}\n logo={channel?.logo}\n name={channel?.name}\n currencySymbol={\n channel?.currencySymbol\n }\n price={channel?.price}\n key={channel?.channelID}\n channelId={channel?.channelID}\n />\n );\n })}\n
\n )}\n\n {channels.length === 0 &&\n lowestPriceMessage &&\n price\n ? renderLowestPriceMsg()\n : ''}\n\n {showNoPricesMessage && (\n \n )}\n\n {showHorizontalDivider && (\n
\n )}\n {showOffer && !data.isWebHotelier && (\n <>\n \n
\n
\n {}\n \n {Lang?.getASecretOffer}\n \n
\n
\n
\n
\n \n )}\n {(totalScore || totalReviews) && (\n \n {totalScore && (\n <>\n {' '}\n \n {totalScore}\n \n \n )}\n\n {totalReviews && (\n \n ({totalReviews})\n \n )}\n\n \n \n \n \n )}\n \n\n
\n
\n
\n {\n applyImportantStyles(el, {\n 'font-size': '12px',\n color: 'black',\n });\n }}\n >\n Powered by  \n \n \n {\n applyImportantStyles(el, {\n display: 'unset',\n float: 'unset',\n });\n }}\n />\n \n
\n
\n {showOldWidgetLoader && }\n \n \n )}\n\n \n \n );\n};\n\nMobileBookingWidget.propTypes = {\n showWidget: PropTypes.func,\n};\n\nexport default MobileBookingWidget;\n","import { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { FaChevronRight } from 'react-icons/fa';\r\n\r\nimport './Rate.css';\r\n\r\nimport BarsLoadingIndicator from '../common/barsLoadingIndicator/BarsLoadingIndicator';\r\nimport { getMiniBookingWidgetData } from '../../features/MiniBookingWidget/MiniBookingWidgetSlice';\r\nimport { isZeroNumber } from 'lib';\r\n\r\nconst Rate = ({\r\n price,\r\n text,\r\n rateType,\r\n currencySymbol,\r\n className,\r\n onClick,\r\n icon,\r\n link,\r\n url,\r\n}) => {\r\n // There is no need to keep local state as the component will rerender\r\n // after the global state changes\r\n const isPriceAvailable =\r\n typeof price === 'string' && !price.startsWith('getprice');\r\n const loading = !isPriceAvailable;\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n if (typeof price === 'string' && price.startsWith('getprice')) {\r\n dispatch(getMiniBookingWidgetData());\r\n }\r\n // return () => {\r\n // cleanup\r\n // }\r\n }, [price]);\r\n\r\n if (!price || isZeroNumber(price)) {\r\n return null;\r\n }\r\n\r\n return (\r\n price && (\r\n {} : onClick}\r\n >\r\n {link ? (\r\n \r\n
\r\n
\r\n {text}\r\n
\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n {`${currencySymbol} ${price}`}\r\n \r\n )}\r\n \r\n {rateType}\r\n \r\n {icon && (\r\n \r\n {icon}\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n
\r\n
\r\n {text}\r\n
\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n {`${currencySymbol} ${price}`}\r\n \r\n )}\r\n \r\n {rateType}\r\n \r\n {icon && (\r\n \r\n {icon}\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n );\r\n};\r\n\r\nRate.propTypes = {\r\n price: PropTypes.string,\r\n text: PropTypes.string,\r\n rateType: PropTypes.string,\r\n currencySymbol: PropTypes.string,\r\n className: PropTypes.string,\r\n onClick: PropTypes.func,\r\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n link: PropTypes.bool,\r\n url: PropTypes.string,\r\n};\r\n\r\nRate.defaultProps = {\r\n className: '',\r\n};\r\n\r\nexport default Rate;\r\n","import PropTypes from 'prop-types';\n\nimport './BookButton.css';\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\n\nconst BookButton = ({\n as: Tag = 'a',\n currencySymbol,\n price,\n text,\n url,\n variant,\n className,\n noPrice,\n onClick,\n isDirect,\n noRedirect = false,\n isLoading = false,\n}) => {\n if (variant === 'default' && !text) {\n return null;\n }\n\n const props = {\n onClick: onClick,\n };\n if (isDirect || noRedirect) {\n url = '';\n // delete props.onClick;\n // onClick = null;\n }\n\n if (\n (!price || price === '0' || !text || (!url && !isDirect)) &&\n (variant === 'member' || variant === 'non-member') &&\n !noPrice\n ) {\n return null;\n }\n\n let additionalProps = {};\n\n if ((Tag === 'a' && !isDirect) || !noRedirect) {\n additionalProps = {\n href: url,\n target: '_blank',\n rel: 'noopener noreferrer',\n };\n }\n\n return (\n \n
\n
\n {isLoading ? (\n <>\n \n \n ) : (\n <>\n {text}{' '}\n <>\n {!!price && (\n = 5 &&\n 'small-text'\n }`}\n >{`${price}${currencySymbol}`}\n )}\n \n \n )}\n
\n
\n \n );\n};\n\nBookButton.propTypes = {\n as: PropTypes.oneOf(['a', 'button']),\n currencySymbol: PropTypes.string,\n price: PropTypes.string,\n text: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n className: PropTypes.string,\n noPrice: PropTypes.bool,\n noRedirect: PropTypes.bool,\n variant: PropTypes.oneOf(['default', 'member', 'non-member']),\n onClick: PropTypes.func,\n isDirect: PropTypes.bool,\n isLoading: PropTypes.bool,\n};\n\nBookButton.defaultProps = {\n text: '',\n url: '',\n variant: 'default',\n};\n\nexport default BookButton;\n","import { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n FaChevronRight,\n FaHeart,\n FaRegEnvelope,\n FaTimes,\n} from 'react-icons/fa';\nimport { FiThumbsUp } from 'react-icons/fi';\nimport { BiCommentDetail } from 'react-icons/bi';\nimport { MdEmail, MdLocalPhone, MdPhone } from 'react-icons/md';\n\nimport {\n getWidgetPosition,\n isValidPrice,\n makeStatsRequestThrottled,\n applyImportantStyles,\n} from '../../lib';\nimport { WIDGET_STATS_SETTINGS } from '../../config';\nimport { CLICK_ACTIONS, WIDGET_ACTIONS } from '../../constants';\nimport Channel from '../channel/Channel';\nimport { NoAvailablePrices } from 'features/noAvailablePrices';\nimport ToggleWidgetRoundBtn from '../common/toggleWidgetRoundBtn/ToggleWidgetRoundBtn';\n\nimport { openDrawer } from '../../features/drawersSlice';\n\nimport './DesktopBookingWidget.css';\nimport Button from '../common/button/Button';\nimport { OffersButton } from '../offers';\nimport { OldWidgetLoadingIndicator } from 'components/common/oldWidgetLoadingIndicator';\nimport Stars from '../common/stars/Stars';\nimport Rate from '../rate/Rate';\nimport { openModal } from 'features/modalSlice';\nimport { useOpenOldWidget } from 'hooks';\nimport { BookButton } from 'components/bookButton';\n\nconst DesktopBookingWidget = ({\n showWidget,\n toggleWidget,\n singleProperty,\n onClickParam,\n}) => {\n const isOpen = useSelector((state) => state.miniBookingWidget.open);\n const hidden = useSelector((state) => state.miniBookingWidget.hidden);\n const data = useSelector((state) => state.miniBookingWidget?.data) || {};\n\n const dispatch = useDispatch();\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n // const closeBtnCntRef = useRef(null);\n\n // const handleWidgetContentonMouseOver = () => {\n // closeBtnCntRef.current.classList.add('visible');\n // };\n\n // const handleWidgetContentonMouseLeave = (event) => {\n // closeBtnCntRef.current.classList.remove('visible');\n // };\n\n const {\n Behavior: clickAction,\n ourPrice: dataOurPrice,\n ourOffers,\n colors,\n poweredBy,\n toggleWidgetRoundBtn,\n closeBtn: closeWidgetBtn,\n enableXButton: enableXBtn,\n findLowestPriceMessage: lowestPriceMessage,\n propertyID: dataPropertyId,\n actions = [],\n bookingRefText: dataBookingRefText,\n totalScore: dataTotalScore,\n totalReviews: dataTotalReviews,\n noPricesMessage,\n propertyName: dataPropertyName,\n } = data;\n\n const ourPrice = singleProperty ? singleProperty.ourPrice : dataOurPrice;\n const propertyId = singleProperty\n ? singleProperty.propertyID\n : dataPropertyId;\n const bookingRefText = singleProperty\n ? singleProperty.bookingRefText\n : dataBookingRefText;\n const totalScore = singleProperty\n ? singleProperty.totalScore\n : dataTotalScore;\n const totalReviews = singleProperty\n ? singleProperty.totalReviews\n : dataTotalReviews;\n const propertyName = singleProperty\n ? singleProperty.propertyName\n : dataPropertyName;\n const channels = singleProperty\n ? singleProperty?.channels\n : useSelector((state) => state.miniBookingWidget?.channels) || {};\n const show = useSelector((state) => state.miniBookingWidget.show);\n const showOffer = data?.enableWidgetOffers;\n const widgetPosition = useSelector(\n (state) => state.miniBookingWidget.widgetPosition\n );\n const showScoresComments = data?.showScoresComments;\n\n const showScoreAndReviews =\n (totalScore !== '' || totalReviews !== '') && showScoresComments;\n\n const widgetPositionStyles = getWidgetPosition(widgetPosition);\n const desktopWidgetStyles = {\n ...widgetPositionStyles,\n display: hidden ? 'none' : 'block',\n };\n\n const { showLoader: showOldWidgetLoader, clickHandler: openOldWidget } =\n useOpenOldWidget();\n const handleClick = useCallback(() => {\n if (clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN) {\n dispatch(openDrawer({ drawerId: 'BigBookingWidgetDrawer' }));\n } else {\n openOldWidget(clickAction);\n }\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n );\n }, [clickAction, dispatch, propertyId]);\n\n const onClick = onClickParam || handleClick;\n\n const chatBtnHandleClick = useCallback(() => {\n openOldWidget(CLICK_ACTIONS.OPEN_CHAT);\n }, []);\n\n if (!show) {\n return null;\n }\n\n const inlineStyles = {};\n if (data.pluginZIndex) {\n inlineStyles.zIndex = data.pluginZIndex;\n }\n\n const onClickOffer = (event) => {\n event.stopPropagation();\n dispatch(\n openModal({\n modalId: 'OfferModal',\n })\n );\n };\n\n const hasPrices = ourPrice?.price || ourPrice?.loyaltyprice;\n const showLowestPriceMessage = hasPrices && lowestPriceMessage;\n const showNoPricesMessage = !hasPrices && noPricesMessage;\n const doNothingClick = (event) => {\n if (clickAction === 'link') {\n event.stopPropagation();\n }\n };\n function renderActionBtns(actions) {\n if (actions.length > 0) {\n return actions.map((action, index) => {\n let icon;\n let title;\n let onClick;\n let isLink = true;\n let href;\n\n switch (action.type) {\n case WIDGET_ACTIONS.EMAIL:\n icon = ;\n title = 'Email';\n href = `mailto:${action.value}`;\n break;\n case WIDGET_ACTIONS.EMAIL_FORM:\n icon = ;\n title = 'Email';\n isLink = false;\n\n onClick = (event) => {\n event.stopPropagation();\n if (clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN) {\n dispatch(\n openModal({\n modalId: 'ContactUsModal',\n })\n );\n } else {\n openOldWidget(CLICK_ACTIONS.OPEN_EMAIL_FORM);\n }\n };\n break;\n case WIDGET_ACTIONS.CLICK_2_CALL:\n icon = ;\n title = 'Click to call';\n isLink = false;\n onClick = (event) => {\n event.stopPropagation();\n // openOldWidget(CLICK_ACTIONS.OPEN_CLICK_2_CALL);\n if (clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN) {\n dispatch(\n openModal({\n modalId: 'Click2CallModal',\n })\n );\n }\n };\n break;\n case WIDGET_ACTIONS.TEL:\n icon = ;\n title = 'Call';\n isLink = false;\n onClick = (event) => {\n event.stopPropagation();\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.phone,\n propertyId\n );\n window.location.href = `tel:${action.value}`;\n };\n break;\n case WIDGET_ACTIONS.MESSENGER:\n icon = ;\n title = 'Messenger';\n onClick = (event) => {\n event.stopPropagation();\n\n const popupWindowWidth = 704;\n const popupWindowHeight = 510;\n // center popup window\n const left = (screen.width - popupWindowWidth) / 2;\n const top = (screen.height - popupWindowHeight) / 2;\n const params = `width=${popupWindowWidth}, height=${popupWindowHeight}, left=${left}, top=${top}`;\n window.open(action.value, 'Messenger', params);\n };\n isLink = false;\n break;\n default:\n break;\n }\n return isLink === true ? (\n event.stopPropagation()}\n >\n {icon}\n \n ) : (\n \n );\n });\n }\n\n return null;\n }\n\n return (\n {\n applyImportantStyles(el, desktopWidgetStyles);\n }}\n >\n \n {isOpen && (\n \n
\n \n\n \n {\n applyImportantStyles(el, {\n 'background-color':\n colors.secondaryBackgroundColor,\n 'border-radius': '16px',\n color: colors.primaryTextColor,\n });\n }}\n >\n \n {closeWidgetBtn?.text}\n \n \n \n \n \n
\n \n\n \n \n
\n
\n {propertyName && (\n \n {propertyName}\n
\n )}\n {bookingRefText && (\n \n {bookingRefText}\n
\n )}\n \n\n {actions.length > 0 && (\n
\n {renderActionBtns(actions)}\n
\n )}\n \n \n
\n
\n
\n {showNoPricesMessage ? (\n \n ) : (\n
\n }\n link={clickAction === 'link'}\n // onClick={onClick}\n price={ourPrice?.loyaltyprice}\n rateType={ourPrice?.loyaltytext}\n text={Lang?.ourLowestPrice}\n url={ourPrice?.loyaltyurl}\n />\n\n {isValidPrice(\n ourPrice?.loyaltyprice\n ) &&\n ourPrice?.price && (\n \n )}\n\n }\n link={clickAction === 'link'}\n // onClick={onClick}\n price={ourPrice?.price}\n rateType={ourPrice?.text}\n text={Lang?.directPrice}\n url={ourPrice?.url}\n />\n \n {showOffer && (\n \n
\n
\n \n {\n Lang?.getASecretOffer\n }\n \n
\n
\n
\n )}\n
\n )}\n
\n\n {/* {showLowestPriceMessage && (\n \n {lowestPriceMessage}\n
\n )} */}\n \n\n {hasPrices && (\n
\n
\n {channels.length > 0 && (\n
\n {channels.map(\n (channel, index) => {\n let styles = {};\n if (index >= 3) {\n styles = {\n marginTop:\n '7px',\n };\n }\n return (\n \n );\n }\n )}\n
\n )}\n {showLowestPriceMessage && (\n
\n {lowestPriceMessage}\n
\n )}\n
\n
\n )}\n {/* TODO: WHAT ABOUT useCallback */}\n {showScoreAndReviews && (\n {\n // event.stopPropagation();\n // dispatch(toggleReviewsDrawer());\n // }}\n onClick={(event) => {\n event.stopPropagation();\n dispatch(\n openModal({\n modalId: 'ReviewsModal',\n })\n );\n }}\n className=\"ab-desktop-widget-card ab-wrapper-hover\"\n >\n
\n
\n {totalScore && (\n \n )}\n
\n {totalScore && (\n \n {\n totalScore.split(\n '/'\n )[0]\n }\n \n )}\n {totalScore && totalReviews && (\n \n /\n \n )}\n {totalReviews && (\n \n {totalReviews}\n \n )}\n
\n
\n \n \n \n
\n \n )}\n\n {/* {showOffer && (\n \n
\n
\n {\n \n \n
\n }\n \n {Lang?.getASecretOffer}\n \n
\n \n \n \n \n \n )} */}\n \n {/*
\n {\n applyImportantStyles(el, {\n 'font-size': '12px',\n });\n }}\n >\n {\n applyImportantStyles(el, {\n 'font-size': '12px',\n color: 'black',\n });\n }}\n >\n Powered by  \n \n \n
\n */}\n\n {showOldWidgetLoader && }\n \n {!data.disableLogo && (\n
\n \n {\n applyImportantStyles(el, {\n display: 'unset',\n float: 'unset',\n });\n }}\n />\n \n
\n )}\n \n )}\n\n \n \n );\n};\n\nDesktopBookingWidget.propTypes = {\n showWidget: PropTypes.func.isRequired,\n toggleWidget: PropTypes.func.isRequired,\n singleProperty: PropTypes.object,\n onClickParam: PropTypes.func,\n};\n\nexport default DesktopBookingWidget;\n","import PropTypes from 'prop-types';\r\nimport { applyImportantStyles } from '../../lib';\r\nimport './DesktopHorizontalTooltipContent.css';\r\n\r\nexport const DesktopHorizontalTooltipContent = ({ content, poweredBy }) => {\r\n return (\r\n
\r\n
\r\n
\r\n {\r\n applyImportantStyles(el, {\r\n 'font-size': '12px',\r\n color: 'black',\r\n });\r\n }}\r\n >\r\n Powered by  \r\n \r\n \r\n {\r\n applyImportantStyles(el, {\r\n display: 'unset',\r\n float: 'unset',\r\n });\r\n }}\r\n />\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nDesktopHorizontalTooltipContent.propTypes = {\r\n content: PropTypes.string,\r\n poweredBy: PropTypes.shape({\r\n logo: PropTypes.string,\r\n url: PropTypes.string,\r\n }),\r\n};\r\n","import PropTypes from 'prop-types';\r\n\r\nimport { CLICK_ACTIONS } from './../../constants';\r\n\r\nimport { NoAvailablePrices } from 'features/noAvailablePrices';\r\n\r\nexport const HorizontalWidgetPriceBlock = ({\r\n bookingRefText,\r\n clickAction,\r\n color = '#222',\r\n currencySymbol,\r\n price,\r\n priceText,\r\n url,\r\n noPricesMsg,\r\n}) => {\r\n const inlineStyles = { color: color };\r\n\r\n const showNoPricesMessage = !price && noPricesMsg;\r\n\r\n if (showNoPricesMessage) {\r\n return ;\r\n }\r\n\r\n if (clickAction === CLICK_ACTIONS.LINK) {\r\n return (\r\n \r\n {price ? (\r\n <>\r\n \r\n {priceText}\r\n \r\n \r\n {currencySymbol} {price}\r\n \r\n \r\n ) : (\r\n
\r\n {noPricesMsg}\r\n
\r\n )}\r\n\r\n \r\n {bookingRefText}\r\n \r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n {price ? (\r\n <>\r\n \r\n {priceText}\r\n
\r\n \r\n {currencySymbol} {price}\r\n \r\n \r\n ) : (\r\n
\r\n {noPricesMsg}\r\n
\r\n )}\r\n\r\n \r\n {bookingRefText}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nHorizontalWidgetPriceBlock.propTypes = {\r\n bookingRefText: PropTypes.string,\r\n clickAction: PropTypes.string,\r\n color: PropTypes.string,\r\n currencySymbol: PropTypes.string,\r\n price: PropTypes.string,\r\n priceText: PropTypes.string,\r\n url: PropTypes.string,\r\n noPricesMsg: PropTypes.string,\r\n};\r\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport { CSSTransition } from 'react-transition-group';\n\nimport Tippy from '@tippyjs/react';\nimport { VscInfo } from 'react-icons/vsc';\n\nimport { FaChevronDown } from 'react-icons/fa';\n\nimport { openDrawer } from 'features/drawersSlice';\n\nimport { Channel } from 'components/channel';\nimport { DesktopHorizontalTooltipContent } from './DesktopHorizontalTooltipContent';\nimport { HorizontalWidgetPriceBlock } from './HorizontalWidgetPriceBlock';\nimport { OldWidgetLoadingIndicator } from 'components/common/oldWidgetLoadingIndicator';\nimport { ToggleWidgetRoundBtn } from 'components/common/toggleWidgetRoundBtn';\n\nimport { WIDGET_STATS_SETTINGS } from 'config';\nimport { CLICK_ACTIONS } from './../../constants';\nimport {\n applyImportantStyles,\n getWidgetPosition,\n isValidPrice,\n makeStatsRequestThrottled,\n} from 'lib';\nimport { useOpenOldWidget } from 'hooks';\n\nimport './DesktopHorizontalBookingWidget.css';\n\nconst DesktopHorizontalBookingWidget = ({ showWidget, toggleWidget }) => {\n const dispatch = useDispatch();\n\n const isOpen = useSelector((state) => state.miniBookingWidget.open);\n const hidden = useSelector((state) => state.miniBookingWidget.hidden);\n const data = useSelector((state) => state.miniBookingWidget?.data) || {};\n\n // This was used in order for the animation to play correctly\n const [showToggleBtn, setShowToggleBtn] = useState(!isOpen);\n // Show cta and animate toggle button\n const [showCta, setShowCta] = useState(true);\n const nodeRef = useRef(null);\n\n const {\n Behavior: clickAction,\n colors,\n enableXButton: enableXBtn,\n Lang,\n poweredBy,\n propertyID: propertyId,\n ourPrice,\n toggleWidgetRoundBtn,\n noPricesMessage,\n } = data;\n\n const channels =\n useSelector((state) => state.miniBookingWidget?.channels) || {};\n const show = useSelector((state) => state.miniBookingWidget.show);\n const widgetPosition = useSelector(\n (state) => state.miniBookingWidget.widgetPosition\n );\n\n const widgetPositionStyles = getWidgetPosition(widgetPosition);\n const widgetXPosition = widgetPosition?.position?.split('-')[1] || 'right';\n\n const desktopHorizontalWidgetStyles = {\n ...widgetPositionStyles,\n display: hidden ? 'none' : 'block',\n };\n const desktopHorizontalWidgetCntStyles = {\n boxShadow: `3px 3px 0px 0px ${toggleWidgetRoundBtn.backgroundColor} inset, -3px -3px 0px 0px ${toggleWidgetRoundBtn.backgroundColor} inset`,\n position: 'relative',\n };\n const closeBtnStyles = {\n backgroundColor: toggleWidgetRoundBtn.backgroundColor,\n color: toggleWidgetRoundBtn.color,\n };\n\n const { showLoader: showOldWidgetLoader, clickHandler: openOldWidget } =\n useOpenOldWidget();\n\n const handleClick = () => {\n if (clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN) {\n dispatch(openDrawer({ drawerId: 'BigBookingWidgetDrawer' }));\n } else {\n openOldWidget(clickAction);\n }\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n );\n };\n\n const chatBtnHandleClick = useCallback(() => {\n openOldWidget(CLICK_ACTIONS.OPEN_CHAT);\n }, []);\n\n const cursorPointerStyles = {\n cursor:\n clickAction === CLICK_ACTIONS.OPEN_PLUGIN ||\n clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN ||\n clickAction === CLICK_ACTIONS.LINK\n ? 'pointer'\n : 'default',\n };\n\n // TODO: MAKE THIS BETTER\n const useLoyaltyPrice = isValidPrice(ourPrice?.loyaltyprice);\n\n const bestPriceObj = {\n bookingRefText: data?.bookingRefText,\n clickAction,\n currencySymbol: ourPrice?.currencySymbol,\n price: useLoyaltyPrice ? ourPrice?.loyaltyprice : ourPrice?.price,\n priceText: Lang?.officialBestRate,\n url: useLoyaltyPrice ? ourPrice.loyaltyurl : ourPrice.url,\n };\n\n useEffect(() => {\n // We want to show the 'CTA' only the first time\n // that is why we disable it\n setShowCta(false);\n }, []);\n\n const inlineStyles = {};\n if (data.pluginZIndex) {\n inlineStyles.zIndex = data.pluginZIndex;\n }\n\n if (!show) {\n return null;\n }\n\n return (\n {\n applyImportantStyles(el, desktopHorizontalWidgetStyles);\n }}\n >\n setShowToggleBtn(false)}\n onExited={() => setShowToggleBtn(true)}\n appear={true}\n >\n
\n \n
\n \n \n \n
\n \n \n \n
\n {Lang?.OurBestPrice && (\n \n )}\n \n \n {channels.map((channel, index) => {\n return (\n <>\n {channel?.price && (\n \n \n \n )}\n \n );\n })}\n \n\n \n \n }\n arrow={false}\n position={0}\n maxWidth={250}\n >\n \n \n \n \n \n {showOldWidgetLoader && (\n \n )}\n \n \n \n\n {showToggleBtn && (\n \n )}\n \n );\n};\n\nDesktopHorizontalBookingWidget.propTypes = {\n showWidget: PropTypes.func.isRequired,\n toggleWidget: PropTypes.func.isRequired,\n};\n\nexport default DesktopHorizontalBookingWidget;\n","import { React, useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { setDismissed } from 'features/MiniBookingWidget/MiniBookingWidgetSlice';\nimport { openDrawer } from 'features/drawersSlice';\nimport { getWidgetPosition, makeStatsRequestThrottled } from '../../lib';\nimport { WIDGET_STATS_SETTINGS } from '../../config';\n\nimport './SmallTextMultipropertyWidget.css';\n\nconst SmallTextMultipropertyWidget = ({ position, mobile }) => {\n position = position || 'top-left';\n\n const hidden = useSelector((state) => state.miniBookingWidget.hidden);\n const dispatch = useDispatch();\n const data = useSelector((state) => state.miniBookingWidget?.data) || {};\n const widgetPosition =\n useSelector((state) => state.miniBookingWidget?.widgetPosition) || {};\n const smallMultipropBtnText = useSelector(\n (state) => state.miniBookingWidget?.smallMultipropBtnText\n );\n const { Behavior: clickAction, propertyID: propertyId } = data;\n const isDismissed = useSelector(\n (state) => state.miniBookingWidget.isDismissed\n );\n const smallMultipropBtnTextColor = useSelector(\n (state) =>\n state.multiproperty?.multipropertyOptions\n ?.smallMultipropertyTextBtnColor\n );\n\n const widgetPositionStyles = getWidgetPosition(widgetPosition);\n\n const dismissWidget = () => {\n dispatch(setDismissed({ isDismissed: true }));\n // saveWidgetStateToLS({ isDismissed: true });\n };\n const onClick = useCallback(() => {\n if (mobile) {\n dispatch(openDrawer({ drawerId: 'MobileMultipropertyDrawer' }));\n } else {\n dispatch(openDrawer({ drawerId: 'BigBookingWidgetDrawer' }));\n }\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n );\n }, [clickAction]);\n\n const removeShownClass = () => {\n const element = document.querySelector(\n '#ab-small-text-multiproperty-btn'\n );\n element.classList.remove('shown');\n };\n\n const inlineStyles = { display: hidden ? 'none' : 'block' };\n if (data.pluginZIndex) {\n inlineStyles.zIndex = data.pluginZIndex;\n }\n if (smallMultipropBtnTextColor) {\n inlineStyles.backgroundColor = '#' + smallMultipropBtnTextColor;\n }\n\n if (isDismissed) {\n return null;\n }\n return (\n \n

{smallMultipropBtnText}

\n {\n event.stopPropagation();\n dismissWidget();\n removeShownClass();\n }}\n >\n \n \n );\n};\n\nSmallTextMultipropertyWidget.propTypes = {\n position: PropTypes.string,\n mobile: PropTypes.bool,\n};\n\nexport default SmallTextMultipropertyWidget;\n","import PropTypes from 'prop-types';\nimport { useCallback, useRef } from 'react';\nimport { FaChevronRight, FaTimes } from 'react-icons/fa';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { openDrawer } from '../../features/drawersSlice';\nimport {\n applyImportantStyles,\n makeStatsRequestThrottled,\n saveWidgetStateToLS,\n} from '../../lib';\nimport { WIDGET_STATS_SETTINGS } from '../../config';\nimport './MultiPropertyBookingWidget.css';\nimport { SmallTextMultipropertyWidget } from 'components/smallTextMultipropertyWidget';\n\nconst MultiPropertyBookingWidget = ({ toggleWidget }) => {\n const dispatch = useDispatch();\n const data = useSelector((state) => state.miniBookingWidget?.data) || {};\n\n const {\n Behavior: clickAction,\n colors,\n closeBtn: closeWidgetBtn,\n propertyID: propertyId,\n showMultipropertySmallBtn,\n Lang,\n } = data;\n\n const widgetPosition = useSelector(\n (state) => state.miniBookingWidget.widgetPosition\n );\n\n const multipropertyPrice = useSelector(\n (state) =>\n state.miniBookingWidget?.multipropertyData?.lowestMultiPropertyPrice\n );\n\n const multipropertyBestPriceText = useSelector(\n (state) =>\n state.miniBookingWidget?.multipropertyData\n ?.multiPropertyBestDealText\n );\n\n const multiPropertyCount = useSelector(\n (state) =>\n state.miniBookingWidget?.multipropertyData?.multiPropertyCount\n );\n\n const multiPropertyImage = useSelector(\n (state) =>\n state.miniBookingWidget?.multipropertyData?.multiPropertyImage\n );\n\n const closeBtnCntRef = useRef(null);\n\n const handleWidgetContentonMouseOver = () => {\n closeBtnCntRef.current.classList.add('visible');\n };\n\n const handleWidgetContentonMouseLeave = (event) => {\n closeBtnCntRef.current.classList.remove('visible');\n };\n\n const isOpen = useSelector((state) => state.miniBookingWidget.open);\n const isDismissed = useSelector(\n (state) => state.miniBookingWidget.isDismissed\n );\n\n const onClick = useCallback(() => {\n dispatch(openDrawer({ drawerId: 'BigBookingWidgetDrawer' }));\n\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n );\n }, [clickAction]);\n\n const inlineStyles = {};\n\n if (data.pluginZIndex) {\n inlineStyles.zIndex = data.pluginZIndex;\n }\n\n if (isDismissed) {\n return null;\n }\n\n let mpImage = multiPropertyImage;\n if (!mpImage.indexOf('https://hotelmanager.abouthotelier.com/') !== -1) {\n mpImage =\n 'https://hotelmanager.abouthotelier.com/' + multiPropertyImage;\n }\n\n return (\n <>\n {isOpen && (\n \n \n {\n event.stopPropagation();\n toggleWidget();\n saveWidgetStateToLS({\n lastMultipropertyCloseTimestamp: Date.now(),\n });\n }}\n // style={{ display: 'none' }}\n ref={closeBtnCntRef}\n >\n {\n applyImportantStyles(el, {\n 'background-color':\n colors.secondaryBackgroundColor,\n 'border-radius': '16px',\n color: colors.primaryTextColor,\n });\n }}\n >\n \n {closeWidgetBtn?.text}\n \n \n \n \n \n \n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n \n {\n multipropertyBestPriceText\n }\n \n \n {' '}\n \n \n
\n\n

\n {Lang.dealsFrom}{' '}\n {multiPropertyCount}{' '}\n {Lang.hotels}\n

\n\n
\n
\n
\n
\n {/* \n {Lang.bestOfficialRate}\n \n \n {multipropertyPrice}\n */}\n

\n {Lang.staysFrom}{' '}\n {multipropertyPrice}\n

\n
\n\n
\n {\n applyImportantStyles(\n el,\n {\n 'background-color':\n colors.secondaryBackgroundColor,\n 'border-radius':\n '16px',\n color: colors.primaryTextColor,\n }\n );\n }}\n >\n {Lang.viewAll}\n \n
\n
\n
\n
\n
\n
\n
\n
\n {\n applyImportantStyles(\n el,\n {\n 'font-size':\n '12px !important',\n }\n );\n }}\n >\n {\n applyImportantStyles(\n el,\n {\n 'font-size':\n '12px !important',\n }\n );\n }}\n >\n Powered by  \n \n \n {\n applyImportantStyles(\n el,\n {\n display:\n 'unset !important',\n float: 'unset !important',\n }\n );\n }}\n />\n \n
\n
\n
\n
\n
\n \n \n \n \n )}\n {!isOpen && showMultipropertySmallBtn && (\n // \n \n )}\n \n );\n};\n\nMultiPropertyBookingWidget.propTypes = {\n price: PropTypes.string,\n text: PropTypes.string,\n rateType: PropTypes.string,\n currencySymbol: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n link: PropTypes.bool,\n url: PropTypes.string,\n toggleWidget: PropTypes.func,\n};\n\nMultiPropertyBookingWidget.defaultProps = {\n className: '',\n};\n\nexport default MultiPropertyBookingWidget;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './Skeleton.css';\r\n\r\nconst Skeleton = ({\r\n width,\r\n height,\r\n mt,\r\n mr,\r\n mb,\r\n ml,\r\n minWidth,\r\n borderRadius,\r\n}) => {\r\n borderRadius =\r\n typeof borderRadius === 'string' ? borderRadius : borderRadius + 'px';\r\n width = typeof width === 'string' ? width : width + 'px';\r\n height = typeof height === 'string' ? height : height + 'px';\r\n mb = typeof mb === 'string' ? mb : mb + 'px';\r\n ml = typeof ml === 'string' ? ml : ml + 'px';\r\n mr = typeof mr === 'string' ? mr : mr + 'px';\r\n mt = typeof mt === 'string' ? mt : mt + 'px';\r\n minWidth = typeof minWidth === 'string' ? minWidth : minWidth + 'px';\r\n return (\r\n \r\n );\r\n};\r\n\r\nSkeleton.propTypes = {\r\n borderRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n mb: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n ml: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n mr: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n mt: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n};\r\n\r\nexport default Skeleton;\r\n","import PropTypes from 'prop-types';\nimport { useEffect } from 'react';\nimport { FaChevronRight } from 'react-icons/fa';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { getBookingWidgetMultipropertyData } from 'features/multiproperty/MultipropertySlice';\nimport { Stars } from 'components/common/stars';\nimport { SmallTextMultipropertyWidget } from 'components/smallTextMultipropertyWidget';\n// import './MultipropertyCarouselWidget.css';\n\nconst SmallMultipropertySingleProperty = ({\n singleProperty,\n propertyIndex,\n}) => {\n const dispatch = useDispatch();\n const data = useSelector((state) => state.miniBookingWidget?.data) || {};\n const widgetPosition = useSelector(\n (state) => state.miniBookingWidget.widgetPosition\n );\n const { showMultipropertySmallBtn, Lang } = data;\n\n // const multipropertyBestPriceText = useSelector(\n // (state) =>\n // state.miniBookingWidget?.multipropertyData\n // ?.multiPropertyBestDealText\n // );\n\n const multipropertyUrl = useSelector(\n (state) => state.miniBookingWidget?.data?.multipropertyUrl\n );\n\n const multiPropertyCount = useSelector(\n (state) =>\n state.miniBookingWidget?.multipropertyData?.multiPropertyCount\n );\n\n useEffect(() => {\n if (multipropertyUrl) {\n dispatch(\n getBookingWidgetMultipropertyData({\n multipropertyUrl,\n })\n );\n }\n }, [multipropertyUrl]);\n\n const isOpen = useSelector((state) => state.miniBookingWidget.open);\n const isDismissed = useSelector(\n (state) => state.miniBookingWidget.isDismissed\n );\n\n const inlineStyles = {};\n\n if (data.pluginZIndex) {\n inlineStyles.zIndex = data.pluginZIndex;\n }\n\n if (isDismissed) {\n return null;\n }\n\n return (\n <>\n {isOpen && (\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n {/* {multipropertyBestPriceText} */}\n {Lang.dealsFrom}{' '}\n {multiPropertyCount}{' '}\n {Lang.hotels}\n \n
\n {/*

\n {Lang.dealsFrom}{' '}\n {multiPropertyCount}{' '}\n {Lang.hotels}\n

*/}\n
\n
\n \n
\n
\n {\n singleProperty.propertyName\n }\n \n \n \n
\n {singleProperty.lowestPrice &&\n singleProperty.lowestPrice !==\n 0 ? (\n <>\n

\n From{' '}\n \n {\n singleProperty.lowestPrice\n }\n €\n {singleProperty\n .ourPrice\n ?.hasMinStay && (\n \n Min-Stay\n \n )}\n \n

\n \n ) : (\n singleProperty.totalScoreDecimal !==\n 0 &&\n singleProperty.totalReviews && (\n
\n \n \n \n \n \n {\n singleProperty.totalScoreDecimal\n }\n {' '}\n Score from{' '}\n \n \n \n {\n singleProperty.totalReviews\n }\n \n \n
\n )\n )}\n
\n
\n
\n
\n
\n \n \n \n )}\n {!isOpen && showMultipropertySmallBtn && (\n // \n \n )}\n \n );\n};\n\nSmallMultipropertySingleProperty.propTypes = {\n price: PropTypes.string,\n text: PropTypes.string,\n rateType: PropTypes.string,\n currencySymbol: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n link: PropTypes.bool,\n url: PropTypes.string,\n singleProperty: PropTypes.object,\n propertyIndex: PropTypes.number,\n};\n\nSmallMultipropertySingleProperty.defaultProps = {\n className: '',\n};\n\nexport default SmallMultipropertySingleProperty;\n","import { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactPaginate from 'react-paginate';\n\nimport { SmallMultipropertySingleProperty } from 'components/smallMultipropertySingleProperty';\n\nconst Paginate = ({ items, itemsPerPage = 1 }) => {\n const [currentItems, setCurrentItems] = useState(null);\n const [pageCount, setPageCount] = useState(0);\n const [itemOffset, setItemOffset] = useState(0);\n const [itemsToShow, setItemsToShow] = useState(5);\n\n useEffect(() => {\n const endOffset = itemOffset + itemsPerPage;\n setCurrentItems(items.slice(itemOffset, endOffset));\n setPageCount(Math.ceil(items.length / itemsPerPage));\n }, [itemOffset, itemsPerPage, items]);\n\n // Function to change page every 3 seconds\n const autoPaginate = () => {\n const intervalId = setInterval(() => {\n setItemOffset((prevOffset) => (prevOffset + 1) % items.length);\n }, 3000);\n\n return intervalId;\n };\n\n useEffect(() => {\n // Start automatic pagination when the component mounts\n const intervalId = autoPaginate();\n\n // Cleanup function to stop the interval when the component unmounts\n return () => {\n clearInterval(intervalId);\n };\n }, []);\n\n // Invoke when the user clicks to request another page.\n const handlePageClick = (event) => {\n setItemOffset(event.selected * itemsPerPage);\n\n // Set items to show in order to have the same size always\n if (event.selected + 1 === 1 || event.selected + 1 > pageCount - 3) {\n setItemsToShow(5);\n } else if (event.selected + 1 === 2 || event.selected + 1 === 3) {\n setItemsToShow(4);\n } else {\n setItemsToShow(3);\n }\n };\n\n return (\n <>\n \n \"\n onPageChange={handlePageClick}\n pageRangeDisplayed={itemsToShow}\n pageCount={pageCount}\n previousLabel=\"<\"\n renderOnZeroPageCount={null}\n marginPagesDisplayed={1}\n forcePage={itemOffset / itemsPerPage} // Use itemOffset or currentPage as needed\n />\n \n );\n};\n\nfunction Properties({ properties }) {\n return (\n <>\n {properties &&\n properties.map((property, index) => (\n \n ))}\n \n );\n}\n\nPaginate.propTypes = {\n items: PropTypes.array,\n itemsPerPage: PropTypes.number,\n};\n\nProperties.propTypes = {\n properties: PropTypes.array,\n};\n\nexport default Paginate;\n","import PropTypes from 'prop-types';\nimport { useCallback, useRef, useEffect } from 'react';\nimport { FaTimes } from 'react-icons/fa';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { openDrawer } from '../../features/drawersSlice';\nimport {\n getWidgetPosition,\n applyImportantStyles,\n makeStatsRequestThrottled,\n saveWidgetStateToLS,\n} from '../../lib';\nimport { WIDGET_STATS_SETTINGS } from '../../config';\nimport { getBookingWidgetMultipropertyData } from 'features/multiproperty/MultipropertySlice';\nimport { Paginate } from 'components/common/paginate';\n// import { Stars } from 'components/common/stars';\nimport './MultipropertyCarouselWidget.css';\nimport { SmallTextMultipropertyWidget } from 'components/smallTextMultipropertyWidget';\nimport { DesktopBookingWidget } from 'components/bookingWidget';\n\nconst MultipropertyCarouselWidget = ({ toggleWidget, mobile, extraClass }) => {\n const dispatch = useDispatch();\n\n const data = useSelector((state) => state.miniBookingWidget?.data) || {};\n const showOnlySmallMutlipropertyButton = useSelector(\n (state) => state.miniBookingWidget?.showOnlySmallMutlipropertyButton\n );\n const showSingleWidgetMultiproperty = useSelector(\n (state) => state.miniBookingWidget?.showSingleWidgetMultiproperty\n );\n const hidden = useSelector((state) => state.miniBookingWidget.hidden);\n\n const {\n Behavior: clickAction,\n colors,\n closeBtn: closeWidgetBtn,\n propertyID: propertyId,\n showMultipropertySmallBtn,\n } = data;\n\n const multipropertyUrl = useSelector(\n (state) => state.miniBookingWidget?.data?.multipropertyUrl\n );\n const widgetPosition = useSelector(\n (state) => state.miniBookingWidget.widgetPosition\n );\n const multipropertyPropeties =\n useSelector((state) => state.multiproperty.multipropertyProperties) ||\n [];\n\n const closeBtnCntRef = useRef(null);\n\n const showOnlySmallMobileMultiproperty = useSelector(\n (state) =>\n state.miniBookingWidget.data?.showOnlySmallMobileMultiproperty\n );\n\n useEffect(() => {\n if (multipropertyUrl) {\n dispatch(\n getBookingWidgetMultipropertyData({\n multipropertyUrl,\n })\n );\n }\n }, [multipropertyUrl]);\n\n const handleWidgetContentonMouseOver = () => {\n closeBtnCntRef.current.classList.add('visible');\n };\n\n const handleWidgetContentonMouseLeave = (event) => {\n closeBtnCntRef.current.classList.remove('visible');\n };\n\n const isOpen = useSelector((state) => state.miniBookingWidget.open);\n const isDismissed = useSelector(\n (state) => state.miniBookingWidget.isDismissed\n );\n\n const intervalID = useSelector((state) => state.multiproperty.intervalID);\n\n const onClick = useCallback(\n (event) => {\n // Click handler should not run paginate buttons are clicked\n const targetElem = event.target;\n const targetElemRole = targetElem.getAttribute('role');\n const targetElemAriaLabel = targetElem.getAttribute('aria-label');\n\n if (\n targetElemRole === 'button' &&\n (targetElemAriaLabel?.startsWith('Page') ||\n targetElemAriaLabel?.startsWith('Next page') ||\n targetElemAriaLabel?.startsWith('Previous page'))\n ) {\n return;\n }\n if (intervalID) {\n clearInterval(intervalID);\n }\n if (mobile) {\n dispatch(openDrawer({ drawerId: 'MobileMultipropertyDrawer' }));\n } else {\n dispatch(openDrawer({ drawerId: 'BigBookingWidgetDrawer' }));\n }\n\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.click,\n propertyId\n );\n },\n [clickAction, intervalID]\n );\n\n const inlineStyles = { display: hidden ? 'none' : 'block' };\n\n const widgetPositionStyles = getWidgetPosition(widgetPosition);\n let isVisible = '';\n if (mobile) {\n isVisible = 'visible';\n }\n\n if (data.pluginZIndex) {\n inlineStyles.zIndex = data.pluginZIndex;\n }\n\n if (\n isDismissed ||\n !multipropertyPropeties ||\n multipropertyPropeties?.length === 0\n ) {\n return null;\n }\n\n if (!isOpen || showSingleWidgetMultiproperty) {\n let lowestPriceProperty = null;\n\n const validProperties = multipropertyPropeties.filter((property) => {\n const propertyPrice = parseFloat(property.ourPrice?.price);\n return propertyPrice > 0;\n });\n\n if (validProperties.length > 0) {\n validProperties.forEach((property) => {\n const propertyPrice = parseFloat(property.ourPrice.price);\n\n if (\n lowestPriceProperty === null ||\n propertyPrice <\n parseFloat(lowestPriceProperty.ourPrice.price)\n ) {\n lowestPriceProperty = property;\n }\n });\n\n if (lowestPriceProperty) {\n return (\n {}}\n toggleWidget={toggleWidget}\n singleProperty={lowestPriceProperty}\n />\n );\n }\n }\n }\n // we render it here if is mobile and the option is true or is dismissed\n if (\n !isOpen ||\n showOnlySmallMobileMultiproperty ||\n showOnlySmallMutlipropertyButton\n ) {\n return (\n \n );\n }\n\n return (\n <>\n {isOpen && (\n \n {\n applyImportantStyles(el, widgetPositionStyles);\n }}\n onClick={onClick}\n >\n {\n event.stopPropagation();\n toggleWidget();\n saveWidgetStateToLS({\n lastMultipropertyCloseTimestamp: Date.now(),\n });\n }}\n // style={{ display: 'none' }}\n ref={closeBtnCntRef}\n >\n {\n applyImportantStyles(el, {\n 'background-color':\n colors.secondaryBackgroundColor,\n 'border-radius': '16px',\n color: colors.primaryTextColor,\n });\n }}\n >\n \n {closeWidgetBtn?.text}\n \n \n \n \n \n \n
\n {multipropertyPropeties?.length > 0 && (\n
\n \n
\n )}\n \n
\n {\n applyImportantStyles(el, {\n 'background-color':\n colors.secondaryBackgroundColor,\n color: colors.primaryTextColor,\n });\n }}\n >\n View All\n \n
\n
\n \n\n
\n \n
\n
\n \n \n \n
\n
\n
\n \n \n \n )}\n {!isOpen && showMultipropertySmallBtn && (\n \n )}\n \n );\n};\n\nMultipropertyCarouselWidget.propTypes = {\n price: PropTypes.string,\n text: PropTypes.string,\n rateType: PropTypes.string,\n currencySymbol: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n link: PropTypes.bool,\n url: PropTypes.string,\n toggleWidget: PropTypes.func,\n mobile: PropTypes.bool,\n extraClass: PropTypes.string,\n};\n\nMultipropertyCarouselWidget.defaultProps = {\n className: '',\n};\n\nexport default MultipropertyCarouselWidget;\n","import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';\r\nimport axios from 'axios';\r\n\r\nconst initialState = {\r\n isFetching: false,\r\n isSuccess: false,\r\n isError: false,\r\n errorMessage: '',\r\n availableFutureDates: [],\r\n noPricesMessage: '',\r\n};\r\n\r\nexport const getAvailableFutureDates = createAsyncThunk(\r\n 'no-available-prices/getAvailableFutureDates',\r\n async (url) => {\r\n const response = await axios.get(url);\r\n\r\n return response.data;\r\n }\r\n);\r\n\r\nexport const noAvailablePricesSlice = createSlice({\r\n name: 'noAvailablePrices',\r\n initialState,\r\n extraReducers: (builder) => {\r\n builder.addCase(getAvailableFutureDates.pending, (state) => {\r\n state.isFetching = true;\r\n state.isSuccess = false;\r\n state.isError = false;\r\n state.errorMessage = '';\r\n state.availableFutureDates = [];\r\n });\r\n builder.addCase(\r\n getAvailableFutureDates.fulfilled,\r\n (state, { payload }) => {\r\n state.isFetching = false;\r\n state.isSuccess = true;\r\n state.isError = false;\r\n state.errorMessage = '';\r\n state.availableFutureDates = payload?.futureDateList;\r\n state.noPricesMessage = payload?.noPricesMessage;\r\n }\r\n );\r\n builder.addCase(getAvailableFutureDates.rejected, (state) => {\r\n state.isFetching = false;\r\n state.isSuccess = false;\r\n state.isError = false;\r\n state.errorMessage = '';\r\n state.availableFutureDates = [];\r\n });\r\n },\r\n});\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { stripHTMLTags } from 'lib';\r\n\r\nimport './ReadMore.css';\r\n\r\nconst ReadMore = ({\r\n children,\r\n maxChars = 138,\r\n className,\r\n moreText,\r\n lessText,\r\n}) => {\r\n const text = children;\r\n const [isReadMore, setIsReadMore] = useState(true);\r\n\r\n const toggleReadMore = (event) => {\r\n event.stopPropagation();\r\n setIsReadMore(!isReadMore);\r\n };\r\n\r\n if (!text) {\r\n return null;\r\n }\r\n\r\n return text.length <= maxChars ? (\r\n \r\n ) : (\r\n
\r\n {isReadMore &&
{stripHTMLTags(text.slice(0, maxChars))}
}\r\n\r\n {!isReadMore && (\r\n
\r\n )}\r\n\r\n \r\n {isReadMore ? (\r\n <>\r\n {moreText} ...\r\n \r\n ) : (\r\n <>\r\n ... {lessText}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nReadMore.defaultProps = {\r\n className: '',\r\n moreText: 'more',\r\n lessText: 'less',\r\n};\r\n\r\nReadMore.propTypes = {\r\n children: PropTypes.string,\r\n maxChars: PropTypes.number,\r\n className: PropTypes.string,\r\n moreText: PropTypes.string.isRequired,\r\n lessText: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default ReadMore;\r\n","import { useCallback, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { FaChevronLeft, FaChevronRight } from 'react-icons/fa';\r\n\r\nimport './Offers.css';\r\nimport Button from '../common/button/Button';\r\nimport { Modal } from 'components/common/modal';\r\nimport ReadMore from '../common/readMore/ReadMore';\r\n\r\nimport { closeModal } from 'features/modalSlice';\r\n\r\nconst Offers = () => {\r\n const dispatch = useDispatch();\r\n\r\n const { isOffersModalOpen } = useSelector((state) => state.modal);\r\n\r\n const ourOffersList = useSelector(\r\n (state) => state.miniBookingWidget?.ourOffersList\r\n );\r\n const colors = useSelector(\r\n (state) => state.miniBookingWidget?.data?.colors\r\n );\r\n\r\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\r\n\r\n const commonStyles = {\r\n backgroundColor: colors?.primaryBackgroundColor,\r\n color: colors?.primaryTextColor,\r\n };\r\n\r\n const [activeOfferIndex, setActiveOfferIndex] = useState(0);\r\n\r\n const setVisibleOffer = (step) => {\r\n if (activeOfferIndex + step < 0) {\r\n setActiveOfferIndex(ourOffersList.length - 1);\r\n } else if (activeOfferIndex + step >= ourOffersList.length) {\r\n setActiveOfferIndex(0);\r\n } else {\r\n setActiveOfferIndex(activeOfferIndex + step);\r\n }\r\n };\r\n\r\n const title = ourOffersList[activeOfferIndex]?.title;\r\n\r\n const handleModalClose = useCallback(() => {\r\n dispatch(closeModal({ modalId: 'OffersModal' }));\r\n }, [dispatch, closeModal]);\r\n\r\n if (!ourOffersList || ourOffersList.length === 0) {\r\n return null;\r\n }\r\n\r\n const renderContent = () => {\r\n return (\r\n
\r\n
\r\n {ourOffersList.map((offer, index) => {\r\n if (index === activeOfferIndex) {\r\n return (\r\n
\r\n
\r\n \r\n {offer.text}\r\n \r\n
\r\n {offer?.minStay &&\r\n offer?.minStayText && (\r\n
\r\n \r\n {offer.minStay}\r\n \r\n \r\n {offer.minStayText}\r\n \r\n
\r\n )}\r\n\r\n {offer?.stayPeriod &&\r\n offer?.stayPeriodText && (\r\n
\r\n \r\n {offer.stayPeriod}\r\n \r\n \r\n {\r\n offer.stayPeriodText\r\n }\r\n \r\n
\r\n )}\r\n\r\n {offer?.mealType &&\r\n offer?.mealTypeText && (\r\n
\r\n \r\n {offer.mealType}\r\n \r\n \r\n {offer.mealTypeText}\r\n \r\n
\r\n )}\r\n\r\n {offer?.price && offer?.priceText && (\r\n
\r\n {offer.price}\r\n \r\n {offer.priceText}\r\n \r\n
\r\n )}\r\n
\r\n\r\n {offer?.buttonLink &&\r\n offer?.buttonText && (\r\n \r\n \r\n {offer.buttonText}\r\n \r\n \r\n )}\r\n
\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n })}\r\n
\r\n\r\n {ourOffersList.length > 1 && (\r\n
\r\n setVisibleOffer(-1)}\r\n className=\"ab-offers-nav-btn--left\"\r\n >\r\n \r\n \r\n \r\n {activeOfferIndex + 1} / {ourOffersList.length}\r\n \r\n setVisibleOffer(1)}\r\n className=\"ab-offers-nav-btn--right\"\r\n >\r\n \r\n \r\n
\r\n )}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Offers;\r\n","import { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { FaMinus, FaPlus } from 'react-icons/fa';\n\nimport './Counter.css';\nimport { toast } from 'react-toastify';\nimport { useSelector } from 'react-redux';\n\nconst Counter = ({\n initialValue,\n label,\n onChange,\n searchKey,\n lowestValue = 0,\n maxValue = null,\n}) => {\n const [count, setCount] = useState(initialValue);\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const handleIncrement = () => {\n setCount((prevCount) => {\n const updatedCount = prevCount + 1;\n if (maxValue === null || updatedCount <= maxValue) {\n return updatedCount;\n } else {\n if (maxValue && updatedCount > maxValue) {\n toast.error(Lang?.youHaveReachedTheMaximunQuantity, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n }\n return prevCount;\n }\n });\n };\n const handleDecrement = () => {\n setCount((prevCount) =>\n prevCount - 1 < lowestValue ? lowestValue : prevCount - 1\n );\n };\n\n useEffect(() => {\n if (onChange) {\n onChange(searchKey, count);\n }\n }, [count]);\n\n return (\n
\n {label}\n
\n \n \n \n {/* TODO: WHAT ABOUT MIN MAX VALUES */}\n \n \n \n \n
\n
\n );\n};\n\nCounter.propTypes = {\n initialValue: PropTypes.number,\n label: PropTypes.string,\n onChange: PropTypes.func,\n searchKey: PropTypes.string,\n lowestValue: PropTypes.number,\n maxValue: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf([null])]),\n};\n\nexport default Counter;\n","import { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Counter } from 'components/common/counter';\n\nimport { searchKeys } from './../../constants';\nimport { updateSearchKey } from 'features/userSlice';\nimport { useGetBookingData } from 'hooks';\nimport { setMobileSearchOptions } from 'features/multiproperty/MultipropertySlice';\n\nimport './RoomsAdultsSearch.css';\n\nconst RoomsAdultsSearch = ({\n Lang = {},\n isMobile = false,\n setSearchOptions,\n searchOptions,\n}) => {\n const dispatch = useDispatch();\n\n const calendarAlert = useSelector((state) => state.user?.calendarAlert);\n const disableChildrenSearch = useSelector(\n (state) => state.miniBookingWidget?.data?.disableChildrenSearch\n );\n const userProvidedData = useSelector((state) => state.user);\n\n const handleCounterChange = (key, value) => {\n if (setSearchOptions) {\n setSearchOptions(key, value);\n } else {\n dispatch(updateSearchKey({ key, value }));\n }\n };\n\n const { getBookingData } = useGetBookingData();\n const selectedPropertyId = useSelector(\n (state) => state.multiproperty?.selectedPropertyId\n );\n\n const isMobileSearchOptionsOpen = useSelector(\n (state) => state.multiproperty?.isMobileSearchOptionsOpen\n );\n\n let initValRooms = userProvidedData[searchKeys.NUMBER_OF_ROOMS];\n let initValAdults = userProvidedData[searchKeys.ADULTS];\n let initValChildren = userProvidedData[searchKeys.CHILDREN];\n if (searchOptions) {\n initValRooms = searchOptions.numberOfRooms;\n initValAdults = searchOptions.adults;\n initValChildren = searchOptions.children;\n }\n return (\n <>\n {isMobile && (\n
\n {\n dispatch(\n setMobileSearchOptions({\n isMobileSearchOptionsOpen:\n !isMobileSearchOptionsOpen,\n })\n );\n }}\n >\n {Lang?.close}\n \n
\n )}\n\n
\n
\n {/* TODO: NEEDS TO COME FROM BACKEND */}\n \n \n {!disableChildrenSearch && (\n \n )}\n {isMobile && (\n \n {\n getBookingData({\n propertyId: selectedPropertyId,\n });\n dispatch(\n setMobileSearchOptions({\n isMobileSearchOptionsOpen:\n !isMobileSearchOptionsOpen,\n })\n );\n }}\n disabled={Boolean(calendarAlert)}\n >\n
\n
\n {Lang?.submit}\n
\n
\n \n
\n )}\n
\n \n \n );\n};\nRoomsAdultsSearch.propTypes = {\n Lang: PropTypes.object,\n isMobile: PropTypes.bool,\n setSearchOptions: PropTypes.func,\n searchOptions: PropTypes.object,\n};\nexport default RoomsAdultsSearch;\n","import { useCallback, useRef, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { FaUser } from 'react-icons/fa';\r\n\r\nimport { useOnClickOutside } from 'hooks';\r\n\r\nimport { searchKeys } from './../../constants';\r\nimport './BookingDropdown.css';\r\nimport RoomsAdultsSearch from 'components/roomsAdultsSearch/RoomsAdultsSearch';\r\n\r\nconst BookingDropdown = () => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const bookingDropdownRef = useRef(null);\r\n\r\n const disableChildrenSearch = useSelector(\r\n (state) => state.miniBookingWidget?.data?.disableChildrenSearch\r\n );\r\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\r\n const userProvidedData = useSelector((state) => state.user);\r\n let displayText = `${userProvidedData[searchKeys.NUMBER_OF_ROOMS]} ${\r\n Lang?.Rooms\r\n }, ${userProvidedData[searchKeys.ADULTS]} ${Lang?.Adults}`;\r\n\r\n if (!disableChildrenSearch) {\r\n displayText += `, ${userProvidedData[searchKeys.CHILDREN]} ${\r\n Lang?.Children\r\n }`;\r\n }\r\n\r\n const handleClickOutside = useCallback(() => {\r\n setIsOpen(false);\r\n }, []);\r\n\r\n useOnClickOutside(bookingDropdownRef, handleClickOutside);\r\n return (\r\n
\r\n
setIsOpen(!isOpen)}>\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayText}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n {isOpen && (\r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default BookingDropdown;\r\n","import PropTypes from 'prop-types';\nimport { FaChevronLeft, FaChevronRight } from 'react-icons/fa';\n\nimport Carousel from 'nuka-carousel';\n\nimport { formatDate } from 'lib';\nimport { dateFormatStr, dateFormatV2Str, dayStatus } from './../../constants';\nimport { useMedia } from 'hooks';\n\nimport './LowestRatesSlider.css';\n\nconst LowestRatesSlider = ({\n lowestRateDays = [],\n lowestRateNextDays = [],\n lowestRateMonthIndexes = [],\n Lang,\n onClick,\n countryCode,\n cellPadding = 15,\n mainClass = 'ab-lowest-rate',\n wrapperClass = '',\n title = 'LOWEST MONTHLY RATE',\n type = 'monthly',\n animation = false,\n height = '55px',\n}) => {\n const slidesToShow = useMedia(\n // Media queries\n [\n '(min-width: 850px)',\n '(min-width: 750px)',\n '(min-width: 600px)',\n '(min-width: 350px)',\n ],\n // slides\n [5, 4, 3, 3],\n // Default\n 1\n );\n\n return (\n lowestRateDays?.length > 0 && (\n
\n

{title}

\n ,\n nextButtonText: ,\n prevButtonClassName: 'ab-lowest-rate-slider-prev-btn',\n nextButtonClassName: 'ab-lowest-rate-slider-next-btn',\n }}\n cellSpacing={cellPadding}\n framePadding=\"0 40px\"\n >\n {lowestRateDays.map((lowestRateDay, index) => {\n const lowestRateNextDay = lowestRateNextDays[index];\n const monthIndex = lowestRateMonthIndexes[index];\n\n const status = lowestRateDay?.status;\n let statusClass;\n\n switch (status) {\n case dayStatus.AVAILABLE:\n statusClass =\n 'iHotelWebAppCalendarSelectableDay ab-day-available';\n break;\n case dayStatus.SOLD_OUT:\n statusClass = 'ab-day-stop-sale';\n break;\n case dayStatus.MIN_STAY:\n statusClass = 'ab-day-min-stay';\n break;\n case dayStatus.NOT_AVAILABLE:\n statusClass = 'ab-day-stop-sale';\n break;\n case dayStatus.STOP_SALE:\n statusClass = 'ab-day-stop-sale';\n break;\n case dayStatus.CALL_US:\n statusClass = 'ab-day-available';\n break;\n default:\n break;\n }\n return (\n \n onClick(\n lowestRateDay,\n lowestRateNextDay,\n monthIndex\n )\n }\n data-date={`${lowestRateDay.date}`}\n >\n
\n {type === 'daily' ? (\n <>\n {formatDate(\n new Date(lowestRateDay?.date),\n dateFormatV2Str,\n countryCode\n )}{' '}\n \n ) : (\n <>\n {' '}\n {formatDate(\n new Date(lowestRateDay?.date),\n dateFormatStr,\n countryCode\n )}\n \n )}\n
\n
\n {lowestRateDay?.price ? (\n <>\n {Lang?.from} {lowestRateDay?.price}\n {lowestRateDay?.currency}\n \n ) : (\n
\n {Lang?.soldOut}\n
\n )}\n
\n {type === 'daily' && (\n <>\n {lowestRateDay?.status === 'MIN' && (\n
\n \n Min stay\n
\n \n {lowestRateDay?.min_stay}{' '}\n {Lang?.nights}\n
\n \n )}\n \n )}\n \n );\n })}\n \n \n )\n );\n};\n\nLowestRatesSlider.propTypes = {\n Lang: PropTypes.object.isRequired,\n lowestRateDays: PropTypes.array.isRequired,\n lowestRateNextDays: PropTypes.array.isRequired,\n lowestRateMonthIndexes: PropTypes.array.isRequired,\n onClick: PropTypes.func,\n countryCode: PropTypes.string,\n mainClass: PropTypes.string,\n wrapperClass: PropTypes.string,\n title: PropTypes.string,\n type: PropTypes.string,\n height: PropTypes.string,\n cellPadding: PropTypes.number,\n animation: PropTypes.bool,\n};\n\nexport default LowestRatesSlider;\n","import { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { compareAsc, differenceInDays, isWithinInterval } from 'date-fns';\nimport _ from 'lodash';\n\nimport { dayStatus } from '../../constants';\nimport {\n setCalendarAlert,\n setCheckInDay,\n setCheckOutDay,\n setTempCheckOutDay,\n} from 'features/userSlice';\nimport { isNotAvailableDay } from './helpers';\nimport { useGetBookingData, useGetCalendarDay } from 'hooks';\nimport { useIsAfterNotAvailableDay } from './hooks';\nimport './Day.css';\n\nexport const Day = ({\n day,\n dayOfMonth,\n mobile,\n nextDay,\n onDatesClick,\n datesOptions,\n setCalendarOpen,\n}) => {\n const dispatch = useDispatch();\n\n const [canMakeDataRequest, setCanMakeDataRequest] = useState(false);\n let userCheckInDay = useSelector((state) => state.user?.checkInDay);\n\n if (onDatesClick) {\n userCheckInDay = useGetCalendarDay(datesOptions?.checkin);\n }\n let userCheckOutDay = useSelector((state) => state.user?.checkOutDay);\n if (onDatesClick) {\n userCheckOutDay = useGetCalendarDay(datesOptions?.checkout);\n }\n const tempCheckOutDay = useSelector((state) => state.user?.tempCheckOutDay);\n\n const userCheckInDate = userCheckInDay?.date;\n const userCheckOutDate = userCheckOutDay?.date;\n const tempCheckOutDate = tempCheckOutDay?.date || userCheckInDate;\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const { getBookingData } = useGetBookingData();\n\n const selectedPropertyId = useSelector(\n (state) => state.multiproperty?.selectedPropertyId\n );\n\n const isSelectedDay =\n userCheckInDate === day?.date ||\n userCheckOutDate === day?.date ||\n tempCheckOutDate === day?.date;\n\n const isDayWithinInterval =\n isWithinInterval(new Date(day?.date), {\n start: new Date(userCheckInDate),\n end: new Date(userCheckOutDate),\n }) ||\n isWithinInterval(new Date(day?.date), {\n start: new Date(userCheckInDate),\n end: new Date(tempCheckOutDate),\n });\n const isDayNotAvailable = isNotAvailableDay(day);\n const isSelecting =\n userCheckInDay?.date === userCheckOutDay?.date || tempCheckOutDay;\n const [\n isAfterNotAvailableDay,\n allowHover,\n notAvailableDayBetweenCheckInAndCurrentDay,\n ] = useIsAfterNotAvailableDay(\n day,\n userCheckInDay,\n tempCheckOutDay || userCheckOutDay\n );\n\n const status = day?.status;\n let statusClass;\n\n switch (status) {\n case dayStatus.AVAILABLE:\n statusClass = 'iHotelWebAppCalendarSelectableDay ab-day-available';\n break;\n case dayStatus.SOLD_OUT:\n statusClass = 'ab-day-sold-out';\n break;\n case dayStatus.MIN_STAY:\n statusClass = 'ab-day-min-stay';\n break;\n case dayStatus.NOT_AVAILABLE:\n statusClass = 'ab-day-not-available';\n break;\n case dayStatus.STOP_SALE:\n statusClass = 'ab-day-stop-sale';\n break;\n case dayStatus.CALL_US:\n statusClass = 'ab-day-available';\n break;\n default:\n break;\n }\n\n if (day?.isLowest) {\n statusClass = 'ab-day-min-price';\n }\n\n // day is within interval, highlight it\n statusClass += isDayWithinInterval ? ' ab-day-highlighted' : '';\n statusClass +=\n !day?.isEnabled || (isAfterNotAvailableDay && isSelecting)\n ? ' ab-day-disabled'\n : '';\n\n const handleMouseOver = (day) => {\n const userCheckInDateObj = new Date(userCheckInDate);\n const currentDayObj = new Date(day?.date);\n\n // current day is before check in day return and also\n // set tempCheckOutDay to null in order to clear highlighted days\n if (compareAsc(currentDayObj, userCheckInDateObj) === -1) {\n if (tempCheckOutDay) {\n if (onDatesClick) {\n onDatesClick('tmpcheckout', { day: null });\n } else {\n dispatch(setTempCheckOutDay({ day: null }));\n }\n }\n return;\n }\n\n if (\n !allowHover &&\n !_.isEmpty(notAvailableDayBetweenCheckInAndCurrentDay) &&\n isSelecting\n ) {\n if (onDatesClick) {\n onDatesClick('tmpcheckout', {\n day: notAvailableDayBetweenCheckInAndCurrentDay,\n });\n } else {\n dispatch(\n setTempCheckOutDay({\n day: notAvailableDayBetweenCheckInAndCurrentDay,\n })\n );\n }\n\n return;\n }\n\n if (userCheckInDay && isSelecting && allowHover) {\n if (onDatesClick) {\n onDatesClick('tmpcheckout', {\n day: day,\n });\n } else {\n dispatch(setTempCheckOutDay({ day: day }));\n }\n }\n };\n\n const handleClick = (day, nextDay) => {\n // Order is important, do not change\n if (isAfterNotAvailableDay && isSelecting) {\n return;\n }\n\n if (isSelecting) {\n // Allow all days to be selected as checkout day, even those that are not\n // available like the ones below.\n } else if (isDayNotAvailable) {\n return;\n }\n\n const dateObj = new Date(day?.date);\n let userCheckInDateObj = new Date(userCheckInDate);\n let nightsStaying = 0;\n let checkNextDay = true;\n\n // Do not allow clicking previous not available day\n if (\n differenceInDays(dateObj, userCheckInDateObj) < 0 &&\n isDayNotAvailable\n ) {\n return;\n } else if (differenceInDays(dateObj, userCheckInDateObj) < 0) {\n userCheckInDay = day;\n if (onDatesClick) {\n onDatesClick('checkin', day.date);\n } else {\n dispatch(setCheckInDay({ day: day }));\n }\n } else if (differenceInDays(dateObj, userCheckInDateObj) === 0) {\n // Just check the next day nothing more\n } else {\n if (userCheckInDate === userCheckOutDate) {\n userCheckOutDay = day;\n checkNextDay = false;\n if (onDatesClick) {\n onDatesClick('checkout', day.date);\n } else {\n dispatch(setCheckOutDay({ day: day }));\n }\n } else {\n userCheckInDay = day;\n if (onDatesClick) {\n onDatesClick('checkin', day.date);\n } else {\n dispatch(setCheckInDay({ day: day }));\n }\n }\n }\n\n if (checkNextDay) {\n if (\n day?.min_stay <= 1 &&\n (nextDay?.status === dayStatus.SOLD_OUT ||\n nextDay?.status === dayStatus.NOT_AVAILABLE ||\n nextDay?.status === dayStatus.STOP_SALE)\n ) {\n userCheckOutDay = nextDay;\n if (onDatesClick) {\n onDatesClick('checkout', nextDay.date);\n } else {\n dispatch(setCheckOutDay({ day: nextDay }));\n }\n } else {\n userCheckOutDay = day;\n if (onDatesClick) {\n onDatesClick('checkout', day.date);\n } else {\n dispatch(setCheckOutDay({ day: day }));\n }\n }\n }\n\n // Calculate staying nights and check whether min stay message should be\n // displayed\n\n userCheckInDateObj = new Date(userCheckInDay?.date);\n const userCheckOutDateObj = new Date(userCheckOutDay?.date);\n nightsStaying = differenceInDays(\n userCheckOutDateObj,\n userCheckInDateObj\n );\n\n const minStay = userCheckInDay?.min_stay;\n\n if (minStay > 1 && nightsStaying < minStay) {\n const msg =\n minStay > 1\n ? `${Lang?.minStayMsg} ${minStay} ${Lang?.nights}`\n : `${Lang?.minStayMsg} ${minStay} ${Lang?.night}`;\n\n dispatch(setCalendarAlert({ msg: msg }));\n // Set check out day equal to check in day in order to allow the user to\n // select another day\n if (onDatesClick) {\n onDatesClick('checkout', userCheckInDay.date);\n } else {\n dispatch(setCheckOutDay({ day: userCheckInDay }));\n }\n } else if (nightsStaying > 20) {\n dispatch(\n setCalendarAlert({ msg: Lang?.maxSearchNightsAllowedMsg })\n );\n // Set check out day equal to check in day in order to allow the user to\n // select another day\n if (onDatesClick) {\n onDatesClick('checkout', userCheckInDay.date);\n } else {\n dispatch(setCheckOutDay({ day: userCheckInDay }));\n }\n } else {\n // Set to '' so that calendar message is not displayed\n dispatch(setCalendarAlert({ msg: '' }));\n setCanMakeDataRequest(true);\n }\n };\n\n useEffect(() => {\n if (\n userCheckInDay?.date !== userCheckOutDay?.date &&\n canMakeDataRequest &&\n !mobile\n ) {\n if (onDatesClick) {\n setCalendarOpen(false);\n } else {\n getBookingData({ propertyId: selectedPropertyId });\n }\n }\n\n // Set always to false regardless if we make a request or not\n setCanMakeDataRequest(false);\n }, [canMakeDataRequest]);\n\n if (day === '') {\n return ;\n }\n\n return (\n handleMouseOver(day)}\n onClick={() => handleClick(day, nextDay)}\n className={`iHotelWebAppCalendarDay ${statusClass} ${\n isSelectedDay ? 'iHotelWebAppCalendarSelectedDate' : ''\n }`}\n >\n
\n
\n {dayOfMonth} \n
\n {day?.price && (\n <>\n {day?.price}{' '}\n \n {day?.currency}\n  \n \n \n )}\n
\n
\n
\n \n );\n};\n\nDay.propTypes = {\n day: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n date: PropTypes.string,\n status: PropTypes.string,\n price: PropTypes.number,\n currency: PropTypes.string,\n }),\n ]),\n dayOfMonth: PropTypes.string,\n mobile: PropTypes.bool,\n nextDay: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n date: PropTypes.string,\n status: PropTypes.string,\n price: PropTypes.number,\n currency: PropTypes.string,\n }),\n ]),\n onDatesClick: PropTypes.func,\n setCalendarOpen: PropTypes.func,\n datesOptions: PropTypes.object,\n};\n","import { useSelector } from 'react-redux';\r\nimport { compareDesc, isWithinInterval } from 'date-fns';\r\n\r\nimport { getDaysOfMonth, isNotAvailableDay } from './helpers';\r\n\r\nexport function useIsAfterNotAvailableDay(day, checkInDay, checkOutDay) {\r\n const calendar = useSelector(\r\n (state) => state.miniBookingWidget?.data?.futureDates\r\n );\r\n\r\n if (!day) {\r\n return [false, false, null];\r\n }\r\n\r\n const checkInDayDateObj = new Date(checkInDay?.date);\r\n const checkInMonthNo = checkInDayDateObj.getMonth() + 1;\r\n const checkInYear = checkInDayDateObj.getFullYear();\r\n\r\n const checkOutDayDateObj = new Date(checkOutDay?.date);\r\n const checkOutMonthNo = checkOutDayDateObj.getMonth() + 1;\r\n const checkOutYear = checkOutDayDateObj.getFullYear();\r\n\r\n const checkInMonthDays = getDaysOfMonth(\r\n checkInMonthNo,\r\n checkInYear,\r\n calendar\r\n );\r\n\r\n let checkOutMonthDays = [];\r\n if (checkInMonthNo !== checkOutMonthNo) {\r\n checkOutMonthDays = getDaysOfMonth(\r\n checkOutMonthNo,\r\n checkOutYear,\r\n calendar\r\n );\r\n }\r\n\r\n const allDays = [...checkInMonthDays, ...checkOutMonthDays];\r\n const daysBetweenCheckInAndCheckOut = allDays.filter((_day) => {\r\n const isDayWithinInterval = isWithinInterval(new Date(_day?.date), {\r\n start: new Date(checkInDay?.date),\r\n end: new Date(checkOutDay?.date),\r\n });\r\n const isBefore =\r\n compareDesc(new Date(_day?.date), new Date(day?.date)) === 1;\r\n return isDayWithinInterval && isBefore;\r\n });\r\n\r\n const daysBetweenCheckInAndCurrentDay = allDays.filter((_day) => {\r\n const isBefore =\r\n compareDesc(new Date(_day?.date), new Date(day?.date)) === 1;\r\n const isAfter =\r\n compareDesc(new Date(_day?.date), new Date(checkInDay?.date)) ===\r\n -1;\r\n return isBefore && isAfter;\r\n });\r\n\r\n let foundNotAvailableDay = false;\r\n let allowHover = true;\r\n let notAvailableDayBetweenCheckInAndCurrentDay;\r\n\r\n for (const _day of daysBetweenCheckInAndCheckOut) {\r\n if (isNotAvailableDay(_day)) {\r\n foundNotAvailableDay = true;\r\n break;\r\n }\r\n }\r\n\r\n for (const _day of daysBetweenCheckInAndCurrentDay) {\r\n if (isNotAvailableDay(_day)) {\r\n allowHover = false;\r\n notAvailableDayBetweenCheckInAndCurrentDay = _day;\r\n break;\r\n }\r\n }\r\n\r\n return [\r\n foundNotAvailableDay,\r\n allowHover,\r\n notAvailableDayBetweenCheckInAndCurrentDay,\r\n ];\r\n}\r\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Day } from './Day';\n\nexport const Month = ({\n days,\n mobile,\n monthNo,\n monthText = '',\n weekdaysInitials,\n onDatesClick,\n datesOptions,\n setCalendarOpen,\n}) => {\n const WEEKDAYS = [\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday',\n ];\n\n const [monthOnly, year] = monthText.split(' ');\n\n if (days.length < 28) {\n return null;\n }\n\n const firstDayOfMonth = days[0];\n const firstDayOfMonthString = new Date(\n firstDayOfMonth?.date\n ).toLocaleDateString('en-us', {\n weekday: 'long',\n });\n\n const daysOutOfMonth = WEEKDAYS.indexOf(firstDayOfMonthString);\n\n // Add days out of month\n if (daysOutOfMonth > 0) {\n days = new Array(daysOutOfMonth).fill('').concat(days);\n }\n\n const renderRows = () => {\n const rows = [];\n let cells = [];\n\n for (let i = 0; i < days.length; i++) {\n const day = days[i];\n const nextDay = i + 1 < days.length ? days[i + 1] : undefined;\n\n if (i === 0 || i % 7 !== 0) {\n if (day === '') {\n cells.push(\n \n );\n } else {\n const dayOfMonth = day.date.split('-')[2];\n\n cells.push(\n \n );\n }\n } else {\n rows.push(cells);\n cells = [];\n\n if (day === '') {\n cells.push(\n \n );\n } else {\n const dayOfMonth = day.date.split('-')[2];\n cells.push(\n \n );\n }\n }\n\n if (i === days.length - 1) {\n rows.push(cells);\n }\n }\n\n return rows?.map((row, index) => {\n return {row};\n });\n };\n\n return (\n
\n {mobile ? (\n
\n {monthOnly}\n {year}\n
\n ) : (\n {monthText}\n )}\n \n \n \n {weekdaysInitials?.map((day, index) => {\n return (\n \n {day}\n \n );\n })}\n \n \n \n {renderRows()}\n \n
\n
\n );\n};\n\nMonth.propTypes = {\n days: PropTypes.arrayOf(\n PropTypes.shape({\n date: PropTypes.string,\n status: PropTypes.string,\n price: PropTypes.number,\n currency: PropTypes.string,\n })\n ),\n mobile: PropTypes.bool,\n monthNo: PropTypes.number,\n monthText: PropTypes.string,\n weekdaysInitials: PropTypes.arrayOf(PropTypes.string),\n onDatesClick: PropTypes.func,\n setCalendarOpen: PropTypes.func,\n datesOptions: PropTypes.object,\n};\n\nMonth.defaultProps = {\n days: [],\n weekdaysInitials: [],\n};\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { flatten } from 'lodash';\nimport { FaChevronLeft, FaChevronRight } from 'react-icons/fa';\n\nimport { Button } from 'components/common/button';\nimport { getDifferenceInDays, formatDate } from 'lib';\nimport { dateFormatStr, MAX_SEARCH_NIGHTS } from './../../constants';\nimport {\n setCalendarAlert,\n setCheckInDay,\n setCheckOutDay,\n setTempCheckOutDay,\n} from 'features/userSlice';\nimport { useGetBookingData, useGetCalendarDay } from 'hooks';\n\nimport { LowestRatesSlider } from 'components/lowestRatesSlider';\nimport { Month } from './Month';\nimport './BookingCalendar.css';\n\nconst BookingCalendar = ({\n currentMonthIndex,\n setCurrentMonthIndex,\n mobile,\n onDatesClick,\n datesOptions,\n setCalendarOpen,\n}) => {\n const dispatch = useDispatch();\n const isOpen = useSelector((state) => state.user?.isCalendarOpen);\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const { getBookingData } = useGetBookingData();\n const selectedPropertyId = useSelector(\n (state) => state.multiproperty?.selectedPropertyId\n );\n\n const calendar = useSelector(\n (state) => state.miniBookingWidget?.data?.futureDates\n );\n\n const weekdaysInitials = useSelector(\n (state) => state.miniBookingWidget?.data?.DateInitials\n );\n\n const userCountryCode =\n useSelector((state) => state.user?.language) || 'en-US';\n\n let userCheckInDay = useSelector((state) => state.user?.checkInDay);\n\n if (onDatesClick) {\n userCheckInDay = useGetCalendarDay(datesOptions?.checkin);\n }\n\n let tempCheckInDate = useSelector((state) => state.user?.checkInDay?.date);\n let tempCheckOutDate = useSelector(\n (state) => state.user?.checkOutDay?.date\n );\n if (datesOptions) {\n tempCheckInDate = datesOptions.checkin;\n tempCheckOutDate = datesOptions.checkout;\n }\n\n const tempCheckOutDay = useSelector((state) => state.user?.tempCheckOutDay);\n\n const calendarAlert = useSelector((state) => state.user?.calendarAlert);\n\n const nights = getDifferenceInDays(\n tempCheckOutDay?.date || tempCheckOutDate,\n tempCheckInDate\n );\n\n const calendarContentsRef = useRef(null);\n\n const currentMonth = calendar[currentMonthIndex];\n const nextMonth = calendar[currentMonthIndex + 1];\n\n const handleArrowClick = (direction) => {\n if (direction === 'L') {\n setCurrentMonthIndex(\n currentMonthIndex > 0\n ? currentMonthIndex - 1\n : currentMonthIndex\n );\n\n // TODO: TRY ANIMATING TRANSITION\n }\n\n if (direction === 'R') {\n setCurrentMonthIndex(\n currentMonthIndex + 2 === calendar?.length\n ? currentMonthIndex\n : currentMonthIndex + 1\n );\n }\n };\n\n const handleLowestRateClick = useCallback(\n (day, nextDay, monthIndex) => {\n setCurrentMonthIndex(monthIndex);\n dispatch(setCheckInDay({ day }));\n if (nextDay) {\n dispatch(setCheckOutDay({ day: nextDay }));\n }\n\n // Rest temp check out day\n dispatch(setTempCheckOutDay({ day: null }));\n },\n [calendar]\n );\n\n const [lowestRateDays, lowestRateNextDays, lowestRateMonthIndexes] =\n useMemo(() => {\n const filteredNextDays = [];\n const filteredMonthIndexes = [];\n\n const filteredDays = calendar?.map((month, monthIndex) => {\n return month?.fd_JsonResult?.data?.days?.filter(\n (day, index, daysArr) => {\n if (day?.isLowest) {\n const nextDay = daysArr[index + 1];\n filteredMonthIndexes.push(monthIndex);\n filteredNextDays.push(nextDay);\n return day;\n }\n\n return false;\n }\n );\n });\n\n return [\n flatten(filteredDays),\n filteredNextDays,\n filteredMonthIndexes,\n ];\n }, [calendar]);\n\n useEffect(() => {\n const minStay = userCheckInDay?.min_stay;\n\n if (nights > MAX_SEARCH_NIGHTS) {\n dispatch(\n setCalendarAlert({ msg: Lang?.maxSearchNightsAllowedMsg })\n );\n } else if (userCheckInDay?.min_stay > 1 && nights < minStay) {\n const msg =\n minStay > 1\n ? `${Lang?.minStayMsg} ${minStay} ${Lang?.nights}`\n : `${Lang?.minStayMsg} ${minStay} ${Lang?.night}`;\n dispatch(setCalendarAlert({ msg }));\n }\n }, [isOpen]);\n\n if (!tempCheckInDate || !tempCheckOutDate) {\n return null;\n }\n\n return (\n currentMonth && (\n \n
\n {!mobile && (\n handleArrowClick('L')}\n >\n \n
\n )}\n\n
\n
\n \n {mobile ? (\n
\n {calendar?.map((month) => {\n return (\n \n );\n })}\n
\n ) : (\n
\n \n \n
\n )}\n
\n
\n \n\n {!mobile && (\n handleArrowClick('R')}\n >\n \n \n )}\n \n\n
\n {/* Nights */}\n
\n
\n {userCheckInDay\n ? formatDate(\n new Date(userCheckInDay?.date),\n dateFormatStr,\n userCountryCode\n )\n : formatDate(\n new Date(tempCheckInDate),\n dateFormatStr,\n userCountryCode\n )}\n {' - '}\n {tempCheckOutDay\n ? formatDate(\n new Date(tempCheckOutDay?.date),\n dateFormatStr,\n userCountryCode\n )\n : formatDate(\n new Date(tempCheckOutDate),\n dateFormatStr,\n userCountryCode\n )}\n ({`${nights} ${Lang?.nights}`})\n
\n
\n {Lang?.calendarAdults}\n
\n
\n\n
\n
\n
\n {Lang?.available}\n
\n
\n {Lang?.minStay}\n
\n
\n {Lang?.soldOut}\n
\n
\n {Lang?.minPrice}\n
\n
\n {Boolean(calendarAlert) && (\n
\n {calendarAlert}\n
\n )}\n\n {/* TODO: CHANGE THIS - PASS IT AS A PROP */}\n {mobile && (\n {\n if (onDatesClick) {\n setCalendarOpen(false);\n } else {\n getBookingData({\n propertyId: selectedPropertyId,\n });\n }\n }}\n styles={{\n 'background-color': 'rgb(0, 66, 126)',\n 'margin-bottom': '15px',\n 'margin-top': '15px',\n padding: '25px',\n }}\n width=\"100%\"\n >\n {Lang?.selectDates}\n \n )}\n
\n\n {!mobile && (\n \n )}\n
\n \n )\n );\n};\n\nBookingCalendar.propTypes = {\n currentMonthIndex: PropTypes.number,\n setCurrentMonthIndex: PropTypes.func,\n mobile: PropTypes.bool,\n onDatesClick: PropTypes.func,\n setCalendarOpen: PropTypes.func,\n datesOptions: PropTypes.object,\n};\n\nexport default BookingCalendar;\n","import { useCallback, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { BsCalendarWeekFill } from 'react-icons/bs';\n\nimport { BookingCalendar } from 'components/bookingCalendar';\nimport { formatDate } from 'lib';\nimport { dateFormatStr } from '../../constants';\nimport { useOnClickOutside } from '../../hooks';\nimport {\n setCalendarAlert,\n setCalendarOpen,\n setTempCheckOutDay,\n} from 'features/userSlice';\n\nimport './BookingPopoverCalendar.css';\nimport { Modal } from 'components/common/modal';\nimport { closeModal, openModal } from 'features/modalSlice';\n\nconst BookingPopoverCalendar = ({ isOpenCalendarModal = false }) => {\n const dispatch = useDispatch();\n const isOpen = useSelector((state) => state.user?.isCalendarOpen);\n\n const setIsOpen = (isOpen) => {\n if (isOpenCalendarModal) {\n dispatch(openModal({ modalId: 'CalendarModal' }));\n }\n dispatch(setCalendarOpen({ isCalendarOpen: isOpen }));\n };\n const colors = useSelector(\n (state) => state.miniBookingWidget?.data?.colors\n );\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const userCountryCode =\n useSelector((state) => state.user?.language) || 'en-US';\n\n const tempCheckInDate = useSelector(\n (state) => state.user?.checkInDay?.date\n );\n const tempCheckOutDate = useSelector(\n (state) => state.user?.checkOutDay?.date\n );\n\n const [currentMonthIndex, setCurrentMonthIndex] = useState(0);\n\n const bookingCalendarRef = useRef(null);\n\n const handleModalClose = useCallback(() => {\n dispatch(closeModal({ modalId: 'CalendarModal' }));\n });\n\n const handleClickOutside = useCallback(() => {\n setIsOpen(false);\n dispatch(setTempCheckOutDay({ day: null }));\n dispatch(setCalendarAlert({ msg: '' }));\n if (isOpenCalendarModal) {\n dispatch(closeModal({ modalId: 'CalendarModal' }));\n }\n }, []);\n\n useOnClickOutside(bookingCalendarRef, handleClickOutside);\n\n if (!tempCheckInDate || !tempCheckOutDate) {\n return null;\n }\n\n const renderBookingCalendar = () => (\n \n );\n\n let renderContent = null;\n if (isOpenCalendarModal) {\n renderContent = renderBookingCalendar;\n }\n\n return (\n
\n
setIsOpen(!isOpen)}>\n
\n
\n
\n \n \n \n \n \n {formatDate(\n new Date(tempCheckInDate),\n dateFormatStr,\n userCountryCode\n )}\n \n \n
\n\n
\n\n
\n \n \n \n \n \n {formatDate(\n new Date(tempCheckOutDate),\n dateFormatStr,\n userCountryCode\n )}\n \n \n
\n
\n
\n
\n\n
\n
\n {isOpenCalendarModal\n ? isOpen && (\n \n )\n : isOpen && (\n \n )}\n
\n
\n
\n );\n};\n\nBookingPopoverCalendar.propTypes = {\n isOpenCalendarModal: PropTypes.bool,\n};\n\nexport default BookingPopoverCalendar;\n","import { useCallback, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { FaTimes } from 'react-icons/fa';\r\nimport { MdKeyboardArrowDown } from 'react-icons/md';\r\n\r\nimport { Button } from 'components/common/button';\r\n\r\nimport { useOnClickOutside } from 'hooks';\r\n\r\nimport './Picker.css';\r\n\r\nconst Picker = ({ data, type, value, onChange, title }) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [pickedValue, setPickedValue] = useState(value);\r\n const pickerRef = useRef(null);\r\n\r\n let ariaLabel = '';\r\n\r\n if (type === 'country') {\r\n ariaLabel = 'Choose your language';\r\n } else if (type === 'currency') {\r\n ariaLabel = 'Choose your currency';\r\n }\r\n\r\n const handleTiggerBtnClick = useCallback(() => {\r\n setIsOpen(!isOpen);\r\n }, [isOpen]);\r\n\r\n const renderItems = () => {\r\n const MIN_NUMBER_OF_ITEMS_IN_COL = 10;\r\n const MAX_NUMBER_OF_COLS = 3;\r\n\r\n const numberOfItems = data?.length || 0;\r\n const numberOfItemsInCol = Math.ceil(\r\n numberOfItems / MAX_NUMBER_OF_COLS\r\n );\r\n const actualNumberOfItemsInCol =\r\n numberOfItemsInCol > MIN_NUMBER_OF_ITEMS_IN_COL\r\n ? numberOfItemsInCol\r\n : MIN_NUMBER_OF_ITEMS_IN_COL;\r\n\r\n const cols = [];\r\n let col = [];\r\n for (let i = 0; i < data?.length; i++) {\r\n const item = data[i];\r\n let itemJSX;\r\n let isSelected;\r\n\r\n if (type === 'country') {\r\n isSelected = pickedValue?.countryName === item?.countryName;\r\n itemJSX = (\r\n handleChange(item?.countryCode)}\r\n aria-label={item?.countryName}\r\n aria-selected={isSelected}\r\n >\r\n
\r\n \r\n
\r\n\r\n -\r\n \r\n {item?.countryName}\r\n \r\n \r\n );\r\n }\r\n\r\n if (type === 'currency') {\r\n isSelected = pickedValue?.currencyName === item?.currencyName;\r\n itemJSX = (\r\n handleChange(item?.currencyCode)}\r\n >\r\n \r\n {item?.currencySymbol}\r\n \r\n -\r\n \r\n {item?.currencyCode}\r\n \r\n {/* {item?.currencyName} */}\r\n \r\n );\r\n }\r\n\r\n col.push(itemJSX);\r\n\r\n if (\r\n (i + 1) % actualNumberOfItemsInCol === 0 ||\r\n i === numberOfItems - 1\r\n ) {\r\n cols.push(col);\r\n col = [];\r\n }\r\n }\r\n\r\n return cols.map((col, index) => {\r\n return
{col}
;\r\n });\r\n };\r\n\r\n // TODO: MAYBE CHANGE THIS\r\n const renderedItems = useMemo(() => renderItems(), [data, onChange]);\r\n\r\n const handleChange = (newPickedValue) => {\r\n let newPickedItem;\r\n if (type === 'country') {\r\n newPickedItem = data.find((item) => {\r\n return item.countryCode === newPickedValue;\r\n });\r\n // TODO: PROBABLY NEED SOMETHING - NEEDS TO COME FROM THE BACKEND\r\n onChange(newPickedItem.countryCode);\r\n }\r\n\r\n if (type === 'currency') {\r\n newPickedItem = data.find((item) => {\r\n return item.currencyCode === newPickedValue;\r\n });\r\n\r\n onChange(newPickedItem.currencyCode);\r\n }\r\n\r\n setPickedValue(newPickedItem);\r\n setIsOpen(false);\r\n };\r\n\r\n const handleClickOutside = () => {\r\n setIsOpen(false);\r\n };\r\n\r\n useOnClickOutside(pickerRef, handleClickOutside);\r\n\r\n return (\r\n data?.length > 0 && (\r\n
\r\n \r\n {type === 'currency' && (\r\n {pickedValue?.currencyCode}\r\n )}\r\n {type === 'country' && (\r\n \r\n )}{' '}\r\n \r\n \r\n\r\n {isOpen && (\r\n \r\n {title && (\r\n
\r\n {title}\r\n \r\n \r\n \r\n
\r\n )}\r\n
{renderedItems}
\r\n
\r\n )}\r\n \r\n )\r\n );\r\n};\r\n\r\nPicker.propTypes = {\r\n data: PropTypes.oneOfType([\r\n PropTypes.arrayOf(\r\n PropTypes.shape({\r\n countryName: PropTypes.string,\r\n countryCode: PropTypes.string,\r\n countryImg: PropTypes.string,\r\n })\r\n ),\r\n PropTypes.arrayOf(\r\n PropTypes.shape({\r\n currencySymbol: PropTypes.string,\r\n currencyName: PropTypes.string,\r\n currencyID: PropTypes.string,\r\n currencyCode: PropTypes.string,\r\n })\r\n ),\r\n ]),\r\n onChange: PropTypes.func,\r\n type: PropTypes.oneOf(['country', 'currency']),\r\n value: PropTypes.oneOfType([\r\n PropTypes.shape({\r\n currencySymbol: PropTypes.string,\r\n currencyName: PropTypes.string,\r\n currencyID: PropTypes.string,\r\n currencyCode: PropTypes.string,\r\n }),\r\n PropTypes.shape({\r\n countryName: PropTypes.string,\r\n countryCode: PropTypes.string,\r\n countryImg: PropTypes.string,\r\n }),\r\n ]),\r\n title: PropTypes.string,\r\n};\r\n\r\nexport default Picker;\r\n","import './Cart.css';\nimport { FaShoppingCart, FaTrashAlt } from 'react-icons/fa';\nimport { useCallback, useRef } from 'react';\nimport { useOnClickOutside } from 'hooks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n setCartOpenState,\n removeCartItem,\n setSmallCartOpenState,\n} from './cartSlice';\nimport PropTypes from 'prop-types';\nimport { toast } from 'react-toastify';\nimport axios from 'axios';\nimport { apiConfig } from 'config';\n\nconst Cart = ({ isMobile = false }) => {\n const dispatch = useDispatch();\n const pickerRef = useRef(null);\n // const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const isOpen = useSelector((state) => state.cart?.openSmallCart);\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const items = useSelector((state) => state.cart?.cartItems);\n const currency = useSelector((state) => state.user?.currency);\n const cartItems = useSelector((state) => state.cart?.cartItems);\n\n const onClick = useCallback(() => {\n dispatch(setSmallCartOpenState(!isOpen));\n }, [isOpen]);\n const handleClickOutside = () => {\n dispatch(setSmallCartOpenState(false));\n };\n\n const removeItem = async (rateID, roomTypeID) => {\n const cartItem = cartItems.find(\n (item) => item.rateID === rateID && item.roomTypeID === roomTypeID\n );\n if ((await removeFromCartBack(cartItem)) === 'ok') {\n dispatch(setSmallCartOpenState(true));\n dispatch(removeCartItem(rateID));\n }\n };\n\n const removeFromCartBack = async (cartItem) => {\n try {\n const response = await axios.post(apiConfig?.removeFromCartBack, {\n ...cartItem,\n });\n\n if (response?.data.split(',')[0].toLowerCase() === 'ok') {\n return 'ok';\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n const openCartDrawer = (state) => {\n dispatch(setCartOpenState(state));\n dispatch(setSmallCartOpenState(false));\n };\n\n useOnClickOutside(pickerRef, handleClickOutside);\n return (\n
\n \n {items?.length > 0 && (\n \n {items?.length}\n \n )}\n \n \n \n
\n\n {isOpen && (\n
\n \n
\n \n \n {Lang?.cartItems} (\n \n {items?.length}\n \n )\n \n
    \n {items?.map((item, index) => {\n const totalPrice = item?.extras?.reduce(\n (total, extra) => {\n const extraPrice =\n Number(extra.price) || 0;\n const extraQuantity =\n Number(extra.quantity) || 0;\n return (\n total +\n extraPrice * extraQuantity\n );\n },\n 0\n );\n return (\n
  • \n
    \n \n {item?.quantity} x{' '}\n {item?.roomName}\n \n \n {item?.rateName}\n \n

    \n {Lang?.price}:\n \n {new Intl.NumberFormat(\n 'en-US',\n {\n style: 'currency',\n currency:\n currency,\n }\n ).format(\n Number(\n item?.price +\n totalPrice\n )\n )}{' '}\n \n

    \n
    \n
    \n \n removeItem(\n item?.rateID,\n item?.roomTypeID\n )\n }\n >\n \n
    \n
\n \n );\n })}\n \n\n
\n openCartDrawer(true)}\n >\n {Lang?.goToCart}\n \n
\n
\n
\n \n \n \n )}\n \n );\n};\n\nCart.propTypes = {\n isMobile: PropTypes.bool,\n};\n\nexport default Cart;\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport { FaSearch } from 'react-icons/fa';\n\nimport { BookingDropdown } from 'components/bookingDropdown';\nimport { BookingPopoverCalendar } from 'components/bookingPopoverCalendar';\nimport { Picker } from 'components/picker';\n\nimport { searchKeys } from '../../constants';\nimport { getLanguageCode } from 'lib';\nimport { useGetBookingData } from 'hooks';\nimport { setCurrency, setLanguage, updateSearchKey } from 'features/userSlice';\n\nimport './BigBookingWidgetHeader.css';\nimport { Cart } from 'features/cart';\n\n// TODO: REMOVE INLINE STYLES AND ADD THEM TO THE CSS FILE\n// TODO: DO SOMETHING ABOUT THE CLCIK HANDLERS\nconst BigBookingWidgetHeader = ({ propertyId }) => {\n const dispatch = useDispatch();\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const hasCart = useSelector(\n (state) => state.miniBookingWidget?.data?.hasCart\n );\n const countries =\n useSelector(\n (state) => state.miniBookingWidget?.data?.pluginCountries\n ) || [];\n const currencies =\n useSelector((state) => state.miniBookingWidget?.data?.pluginCurrency) ||\n [];\n\n const adults = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice?.adults\n );\n\n const numberOfRooms = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice?.rooms\n );\n\n const calendarAlert = useSelector((state) => state.user?.calendarAlert);\n\n let countryCode = getLanguageCode();\n\n const selectedCurrency = currencies.find((currency) => {\n return currency.currencySelected === 'selected';\n });\n const selectedCountry = countries.find((country) => {\n if (!countryCode) {\n countryCode = useSelector(\n (state) => state.miniBookingWidget?.data?.langCode\n );\n }\n return country.countryCode === countryCode;\n });\n\n const { getBookingData } = useGetBookingData();\n\n const handleCurrencyChange = (currencyCode) => {\n dispatch(setCurrency({ currency: currencyCode }));\n getBookingData({ currency: currencyCode });\n };\n\n const handleLanguageChange = async (countryCode) => {\n await dispatch(setLanguage({ language: countryCode }));\n getBookingData({ language: countryCode });\n };\n\n useEffect(() => {\n // Set initial values\n dispatch(setCurrency({ currency: selectedCurrency?.currencyCode }));\n dispatch(setLanguage({ language: selectedCountry?.countryCode }));\n dispatch(\n updateSearchKey({ key: searchKeys.ADULTS, value: adults || 1 })\n );\n dispatch(\n updateSearchKey({\n key: searchKeys.NUMBER_OF_ROOMS,\n value: numberOfRooms || 1,\n })\n );\n }, []);\n\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n\n \n \n getBookingData({\n propertyId:\n propertyId,\n })\n }\n disabled={Boolean(\n calendarAlert\n )}\n >\n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n {hasCart && }\n
\n
\n
\n
\n
\n
\n
\n \n \n );\n};\n\nBigBookingWidgetHeader.propTypes = {\n propertyId: PropTypes.string,\n};\n\nexport default BigBookingWidgetHeader;\n","import PropTypes from 'prop-types';\n\nimport { FaTimes } from 'react-icons/fa';\n\nimport './BookingHeader.css';\n\nconst BookingHeader = ({ children, iconColor, onClick, title, extraClass }) => {\n return (\n
\n {onClick && (\n \n )}\n {title &&
{title}
}\n {children}\n
\n );\n};\n\nBookingHeader.propTypes = {\n children: PropTypes.node,\n iconColor: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n extraClass: PropTypes.string,\n};\n\nexport default BookingHeader;\n","import PropTypes from 'prop-types';\r\nimport Map, { NavigationControl } from 'react-map-gl';\r\nimport 'mapbox-gl/dist/mapbox-gl.css';\r\n\r\nimport './MapWrapper.css';\r\n\r\nconst MapWrapper = ({\r\n children,\r\n height,\r\n initialViewState,\r\n width,\r\n mapboxAccessToken,\r\n}) => {\r\n if (!height || !width) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {children}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nMapWrapper.propTypes = {\r\n children: PropTypes.node,\r\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n initialViewState: PropTypes.object,\r\n mapboxAccessToken: PropTypes.string,\r\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n};\r\n\r\nexport default MapWrapper;\r\n","import { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Marker, Popup } from 'react-map-gl';\n\nimport { BookingHeader } from 'components/bookingHeader';\nimport { Button } from 'components/common/button';\nimport { DynamicIcon } from 'components/common/dynamicIcon';\nimport { MapWrapper } from 'components/common/map';\n\nimport { useMap } from 'hooks';\n\nimport './BookingWidgetMap.css';\n\nconst BookingWidgetMap = ({\n height,\n width,\n closeMap,\n markers,\n mapboxAccessToken,\n openPropertyDetails,\n}) => {\n const { initialViewState } = useMap({\n height: window.innerHeight - 140,\n width,\n markers,\n });\n\n const [selectedPopupId, setSelectedPopupId] = useState(null);\n const [filteredMarkers, setFilteredMakers] = useState([...markers]);\n const [filters, setFilters] = useState([]);\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const multipropertyMapText = useSelector(\n (state) =>\n state.multiproperty?.multipropertyOptions?.multipropertyMapText\n );\n\n if (!height || !width) {\n return null;\n }\n\n const toggleFilter = (filter) => {\n const updatedFilters = filters.map((_filter) => {\n if (_filter.type === filter.type) {\n _filter.active = !_filter.active;\n }\n\n return _filter;\n });\n\n const updatedMarkers = [];\n\n for (const updatedFilter of updatedFilters) {\n for (const marker of markers) {\n if (\n updatedFilter.type === marker.type &&\n updatedFilter.active\n ) {\n updatedMarkers.push(marker);\n }\n }\n }\n\n setFilters(updatedFilters);\n setFilteredMakers(updatedMarkers);\n };\n\n const handleOnClickForProperty = (propertyId) => {\n openPropertyDetails(propertyId);\n closeMap();\n };\n\n useEffect(() => {\n const uniqueTypes = [];\n const filters = [];\n\n for (const marker of markers) {\n const type = marker.type;\n const icon = marker.icon;\n\n if (uniqueTypes.indexOf(type) === -1) {\n uniqueTypes.push(type);\n filters.push({\n type,\n icon,\n active: true,\n });\n }\n }\n\n setFilters(filters);\n }, []);\n\n const pins = filteredMarkers.map((marker) => {\n return (\n
\n {\n setSelectedPopupId(marker.id);\n }}\n >\n {/* */}\n {marker.price}\n \n\n {selectedPopupId === marker.id && (\n setSelectedPopupId(null)}\n offset={{\n bottom: { x: 0, y: -50 },\n top: { x: 0, y: 0 },\n }}\n >\n
\n {/* TODO: WHAT IF THE IMAGE IS MISSING */}\n
\n
\n
\n {marker.title}\n
\n
\n
\n {/* {' '} */}\n {marker.price}\n
\n \n handleOnClickForProperty(\n marker.propertyID\n )\n }\n size={12}\n >\n {Lang?.goToProperty}\n \n
\n
\n
\n \n )}\n \n );\n });\n\n return (\n
\n \n \n {pins}\n {filters?.length > 0 && (\n
\n {filters.map((filter, index) => {\n return (\n toggleFilter(filter)}\n >\n \n \n );\n })}\n
\n )}\n \n
\n );\n};\n\nBookingWidgetMap.propTypes = {\n closeMap: PropTypes.func,\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n markers: PropTypes.array,\n mapboxAccessToken: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n openPropertyDetails: PropTypes.func,\n};\n\nexport default BookingWidgetMap;\n","import PropTypes from 'prop-types';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Modal } from 'components/common/modal';\r\n\r\nimport { closeModal } from 'features/modalSlice';\r\nimport { setSelectedCancellationAndPaymentPolicyData } from 'features/userSlice';\r\n\r\nimport './CancellationAndPaymentPolicyModal.css';\r\n\r\nconst CancellationAndPaymentPolicyModal = ({ title }) => {\r\n const dispatch = useDispatch();\r\n\r\n const { isCancellationAndPaymentPolicyModalOpen } = useSelector(\r\n (state) => state.modal\r\n );\r\n\r\n const cancellationAndPaymentPolicyData = useSelector(\r\n (state) => state.user?.selectedCancellationAndPaymentPolicyData\r\n );\r\n\r\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\r\n const modalTitle =\r\n cancellationAndPaymentPolicyData?.modalTitle ||\r\n Lang?.cancellationAndPaymentOptions ||\r\n 'Cancellation and payment options';\r\n const handleModalClose = () => {\r\n dispatch(closeModal({ modalId: 'CancellationAndPaymentPolicyModal' }));\r\n dispatch(setSelectedCancellationAndPaymentPolicyData(null));\r\n };\r\n\r\n const renderContent = () => {\r\n return (\r\n
\r\n
\r\n
\r\n\r\n

\r\n {\r\n cancellationAndPaymentPolicyData?.cancellationPolicyType\r\n }\r\n

\r\n
\r\n \r\n \r\n {cancellationAndPaymentPolicyData?.paymentPolicy && (\r\n
\r\n

{Lang?.paymentPolicy}

\r\n
\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\nCancellationAndPaymentPolicyModal.propTypes = {\r\n title: PropTypes.string,\r\n};\r\n\r\nexport default CancellationAndPaymentPolicyModal;\r\n","import { useCallback, useState, useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\n\r\nimport axios from 'axios';\r\nimport { isEmpty } from 'lodash';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\r\nimport { Input } from '../common/input';\r\nimport { Modal } from 'components/common/modal';\r\n\r\nimport { closeModal } from 'features/modalSlice';\r\n\r\nimport { apiConfig, COOKIE_NAME } from '../../config';\r\nimport { useGetBookingData } from 'hooks';\r\nimport { getDifferenceInDays, getCookie } from 'lib';\r\nimport { noReCaptchaPublicKey } from '../../constants';\r\n\r\nimport './ContactUsModal.css';\r\n\r\nconst ContactUsModal = () => {\r\n const dispatch = useDispatch();\r\n const [fullName, setFullName] = useState('');\r\n const [email, setEmail] = useState('');\r\n const [phone, setPhone] = useState('');\r\n const [message, setMessage] = useState('');\r\n const [errors, setErrors] = useState({});\r\n const [reCaptchaValue, setReCaptchaValue] = useState('');\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const reCaptchaRef = useRef(null);\r\n\r\n const colors = useSelector(\r\n (state) => state.miniBookingWidget?.data?.colors\r\n );\r\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\r\n const propertyID = useSelector(\r\n (state) => state.miniBookingWidget?.data?.propertyID\r\n );\r\n const ourPrice = useSelector(\r\n (state) => state.miniBookingWidget?.data?.ourPrice\r\n );\r\n\r\n const reCapatchPublicKey =\r\n process.env.NODE_ENV === 'production'\r\n ? useSelector(\r\n (state) => state.miniBookingWidget?.data?.reCaptchaPublicKey\r\n )\r\n : process.env.REACT_APP_RE_CAPTCHA_PUBLIC_KEY;\r\n\r\n // On production ignore reCaptcha if the public key is not provided\r\n const ignoreReCaptch = !reCapatchPublicKey;\r\n\r\n const isOpen = useSelector((state) => state.modal.isContactUsModalOpen);\r\n\r\n const handleModalClose = useCallback(() => {\r\n dispatch(closeModal({ modalId: 'ContactUsModal' }));\r\n // Reset\r\n setErrors({});\r\n setFullName('');\r\n setEmail('');\r\n setPhone('');\r\n setMessage('');\r\n setReCaptchaValue('');\r\n });\r\n\r\n const { userBookingData } = useGetBookingData();\r\n\r\n const handleSubmit = async (event) => {\r\n event.preventDefault();\r\n const errors = validateInputs();\r\n const token = reCapatchPublicKey\r\n ? reCaptchaRef.current.getValue()\r\n : noReCaptchaPublicKey;\r\n\r\n if (!isEmpty(errors)) {\r\n setErrors(errors);\r\n return;\r\n }\r\n\r\n const cookie = getCookie(COOKIE_NAME);\r\n const selectedDays = getDifferenceInDays(\r\n userBookingData?.checkout,\r\n userBookingData?.checkin\r\n );\r\n\r\n try {\r\n setIsLoading(true);\r\n const response = await axios.post(apiConfig?.contactUsUrl, {\r\n ...userBookingData,\r\n curCode: userBookingData?.currency,\r\n lang: userBookingData?.localeLanguage,\r\n fullName,\r\n email,\r\n phone,\r\n message,\r\n token,\r\n cookie,\r\n propertyID,\r\n price: ourPrice?.price,\r\n selecteddays: selectedDays,\r\n timeofday: Date.now(),\r\n });\r\n\r\n if (response?.data.toLowerCase() === 'ok') {\r\n toast.success(Lang?.successMessage, {\r\n autoClose: true,\r\n theme: 'colored',\r\n });\r\n }\r\n } catch (error) {\r\n toast.error(Lang?.networkError, {\r\n autoClose: true,\r\n theme: 'colored',\r\n });\r\n }\r\n\r\n handleModalClose();\r\n setIsLoading(false);\r\n\r\n if (reCaptchaRef.current) {\r\n reCaptchaRef.current.reset();\r\n }\r\n };\r\n\r\n // TODO: IMPROVE THIS (KEEP IT DRY)\r\n const validateInputs = () => {\r\n const errors = {};\r\n\r\n const emailRegex =\r\n // eslint-disable-next-line no-useless-escape\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n if (!fullName) {\r\n errors.fullName = Lang?.requiredField;\r\n }\r\n\r\n if (!email) {\r\n errors.email = Lang?.requiredField;\r\n } else if (!email.match(emailRegex)) {\r\n errors.email = Lang?.pleaseEnterValidEmail;\r\n }\r\n\r\n if (!phone) {\r\n errors.phone = Lang?.requiredField;\r\n }\r\n\r\n if (!message) {\r\n errors.message = Lang?.requiredField;\r\n }\r\n\r\n if (!ignoreReCaptch && !reCaptchaValue) {\r\n errors.reCaptcha = Lang?.pleaseCompleteRecaptcha;\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n const renderContent = () => {\r\n return (\r\n
\r\n
\r\n {Lang?.howCanWeAssist}\r\n
\r\n

\r\n {Lang?.qualityHasAlwaysBeen}\r\n

\r\n\r\n
\r\n {Lang?.fillUpThisForm}\r\n
\r\n\r\n \r\n
\r\n
\r\n {\r\n setFullName(event.target.value);\r\n }}\r\n isInvalid={Boolean(errors?.fullName)}\r\n errorMsg={errors.fullName}\r\n isRequired\r\n id=\"contact-us-full-name\"\r\n autoFocus\r\n label={Lang?.fullName}\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n {\r\n setEmail(event.target.value);\r\n }}\r\n isInvalid={Boolean(errors?.email)}\r\n errorMsg={errors.email}\r\n isRequired\r\n id=\"contact-us-email\"\r\n label={Lang?.email}\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n {\r\n setPhone(event.target.value);\r\n }}\r\n isInvalid={Boolean(errors?.phone)}\r\n errorMsg={errors.phone}\r\n isRequired\r\n id=\"contact-us-phone\"\r\n label={Lang?.phone}\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n {\r\n setMessage(event.target.value);\r\n }}\r\n isInvalid={Boolean(errors?.message)}\r\n errorMsg={errors.message}\r\n id=\"contact-us-message\"\r\n label={Lang?.message}\r\n />\r\n
\r\n
\r\n {!!reCapatchPublicKey && (\r\n
\r\n setReCaptchaValue(value)}\r\n ref={reCaptchaRef}\r\n />\r\n {errors.reCaptcha && (\r\n
\r\n {errors.reCaptcha}\r\n
\r\n )}\r\n
\r\n )}\r\n\r\n

\r\n {Lang?.iHerebyCertifyThatInfo}\r\n

\r\n\r\n \r\n {isLoading ? : Lang?.submit}\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default ContactUsModal;\r\n","export const KeyCodes = {\r\n TAB: 9,\r\n ENTER: 13,\r\n ESCAPE: 27,\r\n SPACE: 32,\r\n ARROW_LEFT: 37,\r\n ARROW_UP: 38,\r\n ARROW_RIGHT: 39,\r\n ARROW_DOWN: 40,\r\n M: 77,\r\n};\r\n","import { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MdKeyboardArrowDown } from 'react-icons/md';\n\nimport { Input } from '../input';\n\nimport { useOnClickOutside } from 'hooks';\nimport { KeyCodes } from 'constants/keyCodes';\nimport './Dropdown.css';\n\nconst Dropdown = ({\n align = 'right',\n id,\n fontSize,\n label,\n searchable,\n showTextWhenSelected = true,\n value,\n maxHeight,\n noResultsText,\n noSemicolon,\n onChange,\n options = [],\n variant = 'standard',\n width,\n extraClass,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedOption, setSelectedOption] = useState('');\n const [dropdownValue, setDropdownValue] = useState(value);\n const [selectedOptionIndex, setSelectedOptionIndex] = useState(null);\n const [dropdownOptions, setOptions] = useState(options);\n const dropdownRef = useRef(null);\n const searchInputRef = useRef(null);\n\n const handleKeyDown = (event) => {\n if (\n event.keyCode === KeyCodes.ESCAPE ||\n event.keyCode === KeyCodes.TAB\n ) {\n setIsOpen(false);\n setOptions(options);\n }\n\n // TODO: IMPLEMENT THIS\n // else if (event.keyCode === KeyCodes.ENTER) {\n // handleEnterKeyDown(event);\n // } else if (\n // event.keyCode === KeyCodes.ARROW_DOWN ||\n // event.keyCode === KeyCodes.ARROW_UP\n // ) {\n // handleArrowUpOrDownKeyDown(event);\n // }\n };\n\n // const handleEnterKeyDown = (event) => {\n // event.preventDefault();\n // setSelectedOption(dropdownOptions[selectedOptionIndex]);\n // setIsOpen(false);\n // };\n\n // TODO: IMPLEMENT THIS\n // const handleArrowUpOrDownKeyDown = (event) => {\n // const optionsNo = dropdownOptions.length;\n\n // if (event.keyCode === KeyCodes.ARROW_DOWN) {\n // if (selectedOptionIndex + 1 < optionsNo) {\n // setSelectedOptionIndex(selectedOptionIndex + 1);\n // }\n // }\n // };\n\n useOnClickOutside(dropdownRef, () => {\n setIsOpen(false);\n setOptions(options);\n });\n useEffect(() => {\n let selectedOptionTmp;\n let selectedOptionIndex;\n\n for (let index = 0; index < options.length; index++) {\n const option = options[index];\n if (value && option?.dropdownSelected) {\n selectedOptionTmp = option;\n setSelectedOption(option);\n setDropdownValue(option.dropdownValue);\n setSelectedOptionIndex(index);\n selectedOptionIndex = index;\n } else if (\n dropdownValue &&\n option.dropdownValue === dropdownValue\n ) {\n selectedOptionTmp = option;\n setSelectedOption(option);\n setDropdownValue(option?.dropdownValue);\n setSelectedOptionIndex(index);\n selectedOptionIndex = index;\n } else if (!dropdownValue && option?.dropdownSelected) {\n selectedOptionTmp = option;\n setSelectedOption(option);\n setDropdownValue(option.dropdownValue);\n setSelectedOptionIndex(index);\n selectedOptionIndex = index;\n }\n }\n\n if (!selectedOptionTmp) {\n const option = options[0];\n if (option) {\n setSelectedOption(options[0]);\n setDropdownValue(options[0]?.dropdownValue);\n setSelectedOptionIndex(0);\n }\n } else {\n setSelectedOption(selectedOptionTmp);\n setDropdownValue(selectedOptionTmp.dropdownValue);\n setSelectedOptionIndex(selectedOptionIndex);\n }\n\n setOptions(options);\n }, [options, value]);\n\n return (\n
\n {\n // If search input has focus then return\n if (\n searchInputRef.current &&\n searchInputRef.current === document.activeElement\n ) {\n return;\n }\n\n setIsOpen(!isOpen);\n setOptions(options);\n }}\n onKeyDown={handleKeyDown}\n >\n {noSemicolon ? (\n
{label}
\n ) : (\n
{label} :
\n )}\n\n
\n
\n {selectedOption?.dropdownImg && (\n \n )}\n {showTextWhenSelected && selectedOption?.dropdownText}\n
\n
\n {}\n
\n
\n\n {isOpen && (\n
\n \n {searchable && (\n {\n const searchText = event.target.value;\n if (searchText === '') {\n setOptions(options);\n return;\n }\n\n setOptions(\n dropdownOptions.filter((option) => {\n return option?.dropdownText\n .toLowerCase()\n .includes(\n searchText.toLowerCase()\n );\n })\n );\n }}\n ref={searchInputRef}\n />\n )}\n \n {dropdownOptions?.length > 0 &&\n dropdownOptions.map((option, index) => {\n return (\n {\n setSelectedOption(option);\n setDropdownValue(\n option.dropdownValue\n );\n setSelectedOptionIndex(\n index\n );\n onChange(option);\n }}\n >\n
\n {option?.dropdownImg && (\n \n )}\n \n {option.dropdownText}\n \n
\n \n );\n })}\n\n {dropdownOptions?.length === 0 && (\n
  • \n {noResultsText}\n
  • \n )}\n \n
    \n
    \n )}\n \n \n );\n};\n\nconst optionShape = PropTypes.shape({\n dropdownText: PropTypes.string,\n dropdownValue: PropTypes.any.isRequired,\n dropdownImg: PropTypes.string,\n dropdownSelected: PropTypes.bool,\n});\n\nDropdown.propTypes = {\n align: PropTypes.oneOf(['left', 'right']),\n id: PropTypes.string,\n fontSize: PropTypes.string,\n label: PropTypes.string,\n searchable: PropTypes.bool,\n showTextWhenSelected: PropTypes.bool,\n value: PropTypes.any,\n noResultsText: PropTypes.string,\n noSemicolon: PropTypes.bool,\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(optionShape).isRequired,\n width: PropTypes.string,\n maxHeight: PropTypes.string,\n variant: PropTypes.oneOf(['standard', 'outlined']),\n extraClass: PropTypes.string,\n};\n\nexport default Dropdown;\n","import { useCallback, useState, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport ReCAPTCHA from 'react-google-recaptcha';\n\nimport axios from 'axios';\nimport { isArray, isEmpty } from 'lodash';\nimport { toast } from 'react-toastify';\n\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\nimport { Input } from '../common/input';\nimport { Modal } from 'components/common/modal';\n\nimport { closeModal } from 'features/modalSlice';\n\nimport { apiConfig, COOKIE_NAME } from '../../config';\nimport { useGetBookingData } from 'hooks';\nimport { getCookie } from 'lib';\nimport { Dropdown } from 'components/common/dropdown';\n\nimport { noReCaptchaPublicKey } from '../../constants';\n\nimport './Click2CallModal.css';\n\nconst Click2CallModal = () => {\n const dispatch = useDispatch();\n\n const colors = useSelector(\n (state) => state.miniBookingWidget?.data?.colors\n );\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const propertyID = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyID\n );\n const click2CallData = useSelector(\n (state) => state.miniBookingWidget?.data?.click2CallDropDowns\n );\n\n const dropdownOptions = isArray(click2CallData)\n ? click2CallData.map((item) => {\n return {\n dropdownText: item?.click2CallName,\n dropdownSelected: item?.dropdownSelected,\n dropdownImg: item?.click2CallImage,\n dropdownExtraData: {\n countryPhoneCode: item?.click2CallCountryPhone,\n countryCode: item?.click2CallCountryCode,\n },\n dropdownValue: item?.dropdownValue,\n };\n })\n : [];\n\n const reCaptchaRef = useRef(null);\n const [fullName, setFullName] = useState('');\n const [errors, setErrors] = useState({});\n const [reCaptchaValue, setReCaptchaValue] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n const [phone, setPhone] = useState(\n isArray(click2CallData) ? click2CallData[0].click2CallCountryPhone : ''\n );\n const [country, setCountry] = useState(\n isArray(click2CallData) ? click2CallData[0].click2CallCountryCode : ''\n );\n\n const reCapatchPublicKey =\n process.env.NODE_ENV === 'production'\n ? useSelector(\n (state) => state.miniBookingWidget?.data?.reCaptchaPublicKey\n )\n : process.env.REACT_APP_RE_CAPTCHA_PUBLIC_KEY;\n\n // On production ignore reCaptcha if the public key is not provided\n const ignoreReCaptch = !reCapatchPublicKey;\n\n const isOpen = useSelector((state) => state.modal.isClick2CallModalOpen);\n\n const handleModalClose = useCallback(() => {\n dispatch(closeModal({ modalId: 'Click2CallModal' }));\n // Reset\n setErrors({});\n setFullName('');\n setPhone(click2CallData[0].click2CallCountryPhone);\n setReCaptchaValue('');\n setCountry(click2CallData[0].click2CallCountryCode);\n });\n\n const { userBookingData } = useGetBookingData();\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n const errors = validateInputs();\n const token = reCapatchPublicKey\n ? reCaptchaRef.current.getValue()\n : noReCaptchaPublicKey;\n\n if (!isEmpty(errors)) {\n setErrors(errors);\n return;\n }\n\n const cookie = getCookie(COOKIE_NAME);\n\n try {\n setIsLoading(true);\n const response = await axios.post(apiConfig?.click2Call, {\n ...userBookingData,\n lang: userBookingData?.localeLanguage,\n fullName,\n phone,\n token,\n cookie,\n propertyID,\n timeofday: Date.now(),\n country,\n });\n\n if (response?.data === true) {\n toast.success(Lang?.successMessage, {\n autoClose: true,\n theme: 'colored',\n });\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n\n handleModalClose();\n setIsLoading(false);\n\n if (reCaptchaRef.current) {\n reCaptchaRef.current.reset();\n }\n };\n\n // TODO: IMPROVE THIS (KEEP IT DRY)\n const validateInputs = () => {\n const errors = {};\n\n if (!fullName) {\n errors.fullName = Lang?.requiredField;\n }\n\n if (!phone) {\n errors.phone = Lang?.requiredField;\n }\n\n if (!ignoreReCaptch && !reCaptchaValue) {\n errors.reCaptcha = Lang?.pleaseCompleteRecaptcha;\n }\n\n return errors;\n };\n\n const renderContent = () => {\n return (\n
    \n
    \n {Lang?.click2CallText}\n
    \n \n
    \n
    \n {\n setFullName(event.target.value);\n }}\n isInvalid={Boolean(errors?.fullName)}\n errorMsg={errors.fullName}\n isRequired\n id=\"call-us-full-name\"\n autoFocus\n label={Lang?.fullName}\n />\n
    \n
    \n\n
    \n
    \n {dropdownOptions.length > 0 && (\n {\n setPhone(\n option?.dropdownExtraData\n ?.countryPhoneCode\n );\n setCountry(\n option?.dropdownExtraData\n ?.countryCode\n );\n }}\n options={dropdownOptions}\n showTextWhenSelected={false}\n width=\"210px\"\n extraClass=\"ab-mr-10\"\n />\n )}\n\n {\n setPhone(event.target.value);\n }}\n isInvalid={Boolean(errors?.phone)}\n errorMsg={errors.phone}\n isRequired\n id=\"call-us-phone\"\n />\n
    \n
    \n {!!reCapatchPublicKey && (\n
    \n setReCaptchaValue(value)}\n ref={reCaptchaRef}\n />\n {errors.reCaptcha && (\n
    \n {errors.reCaptcha}\n
    \n )}\n
    \n )}\n\n

    \n {Lang?.iHerebyCertifyThatInfo}\n

    \n\n \n {isLoading ? : Lang?.submit}\n \n \n
    \n );\n };\n\n return (\n \n );\n};\n\nexport default Click2CallModal;\n","import { useCallback, useState, useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\n\r\nimport axios from 'axios';\r\nimport { isEmpty } from 'lodash';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\r\nimport { Input } from '../common/input';\r\nimport { Modal } from 'components/common/modal';\r\n\r\nimport { closeModal } from 'features/modalSlice';\r\n\r\nimport { apiConfig } from '../../config';\r\nimport { useGetBookingData } from 'hooks';\r\nimport { getDifferenceInDays } from 'lib';\r\nimport { noReCaptchaPublicKey } from '../../constants';\r\n\r\nimport './ShareHotelModal.css';\r\n\r\nconst ShareHotelModal = () => {\r\n const dispatch = useDispatch();\r\n const [fromEmail, setFromEmail] = useState('');\r\n const [toEmail, setToEmail] = useState('');\r\n const [message, setMessage] = useState('');\r\n const [errors, setErrors] = useState({});\r\n const [reCaptchaValue, setReCaptchaValue] = useState('');\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const reCaptchaRef = useRef(null);\r\n\r\n const colors = useSelector(\r\n (state) => state.miniBookingWidget?.data?.colors\r\n );\r\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\r\n const propertyID = useSelector(\r\n (state) => state.miniBookingWidget?.data?.propertyID\r\n );\r\n const reCapatchPublicKey =\r\n process.env.NODE_ENV === 'production'\r\n ? useSelector(\r\n (state) => state.miniBookingWidget?.data?.reCaptchaPublicKey\r\n )\r\n : process.env.REACT_APP_RE_CAPTCHA_PUBLIC_KEY;\r\n const shareLink = useSelector(\r\n (state) => state.miniBookingWidget?.data?.shareLink\r\n );\r\n\r\n // On production ignore reCaptcha if the public key is not provided\r\n const ignoreReCaptch = !reCapatchPublicKey;\r\n\r\n const isOpen = useSelector((state) => state.modal.isShareHotelModalOpen);\r\n\r\n const handleModalClose = useCallback(() => {\r\n dispatch(closeModal({ modalId: 'ShareHotelModal' }));\r\n // Reset\r\n setErrors({});\r\n setFromEmail('');\r\n setToEmail('');\r\n setMessage('');\r\n setReCaptchaValue('');\r\n });\r\n\r\n const { userBookingData } = useGetBookingData();\r\n\r\n const handleSubmit = async (event) => {\r\n event.preventDefault();\r\n const errors = validateInputs();\r\n const token = reCapatchPublicKey\r\n ? reCaptchaRef.current.getValue()\r\n : noReCaptchaPublicKey;\r\n\r\n if (!isEmpty(errors)) {\r\n setErrors(errors);\r\n return;\r\n }\r\n\r\n const selectedDays = getDifferenceInDays(\r\n userBookingData?.checkout,\r\n userBookingData?.checkin\r\n );\r\n\r\n let bookLink = `${apiConfig.reserveOnlineUrl}?src=470^adults=${userBookingData?.adults}`;\r\n bookLink += `^children=${userBookingData?.children}^lang=${userBookingData?.localeLanguage}`;\r\n bookLink += `^currency=${userBookingData?.currency}^checkin=${userBookingData?.checkin}`;\r\n bookLink += `^checkout=${userBookingData?.checkout}^nights=${selectedDays}`;\r\n\r\n try {\r\n setIsLoading(true);\r\n const response = await axios.post(apiConfig?.shareHotel, {\r\n dateFrom: userBookingData?.checkin,\r\n dateTo: userBookingData?.checkout,\r\n lang: userBookingData?.localeLanguage,\r\n mailfrom: fromEmail,\r\n mailto: toEmail,\r\n message,\r\n token,\r\n propertyID,\r\n nights: selectedDays,\r\n bookLink,\r\n });\r\n\r\n if (response?.data.toLowerCase() === 'ok') {\r\n toast.success(Lang?.successMessage, {\r\n autoClose: true,\r\n theme: 'colored',\r\n });\r\n }\r\n } catch (error) {\r\n toast.error(Lang?.networkError, {\r\n autoClose: true,\r\n theme: 'colored',\r\n });\r\n }\r\n\r\n handleModalClose();\r\n setIsLoading(false);\r\n\r\n if (reCaptchaRef.current) {\r\n reCaptchaRef.current.reset();\r\n }\r\n };\r\n\r\n // TODO: IMPROVE THIS (KEEP IT DRY)\r\n const validateInputs = () => {\r\n const errors = {};\r\n\r\n const emailRegex =\r\n // eslint-disable-next-line no-useless-escape\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n if (!fromEmail) {\r\n errors.fromEmail = Lang?.requiredField;\r\n } else if (!fromEmail.match(emailRegex)) {\r\n errors.fromEmail = Lang?.pleaseEnterValidEmail;\r\n }\r\n\r\n if (!toEmail) {\r\n errors.toEmail = Lang?.requiredField;\r\n } else if (!toEmail.match(emailRegex)) {\r\n errors.fromEmail = Lang?.pleaseEnterValidEmail;\r\n }\r\n\r\n if (!message) {\r\n errors.message = Lang?.requiredField;\r\n }\r\n\r\n if (!ignoreReCaptch && !reCaptchaValue) {\r\n errors.reCaptcha = Lang?.pleaseCompleteRecaptcha;\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n const renderContent = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n setFromEmail(event.target.value);\r\n }}\r\n isInvalid={Boolean(errors?.fromEmail)}\r\n errorMsg={errors.fromEmail}\r\n isRequired\r\n id=\"from-email\"\r\n label={Lang?.fromEmailPlaceholder}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n setToEmail(event.target.value);\r\n }}\r\n isInvalid={Boolean(errors?.toEmail)}\r\n errorMsg={errors.toEmail}\r\n isRequired\r\n id=\"to-email\"\r\n label={Lang?.toEmailText}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n setMessage(event.target.value);\r\n }}\r\n isInvalid={Boolean(errors?.message)}\r\n errorMsg={errors.message}\r\n id=\"share-hotel-message\"\r\n // label={Lang?.message}\r\n placeholder={Lang?.shareMessagePlaceholder}\r\n />\r\n
    \r\n
    \r\n {!!reCapatchPublicKey && (\r\n
    \r\n setReCaptchaValue(value)}\r\n ref={reCaptchaRef}\r\n />\r\n {errors.reCaptcha && (\r\n
    \r\n {errors.reCaptcha}\r\n
    \r\n )}\r\n
    \r\n )}\r\n\r\n \r\n {isLoading ? : Lang?.share}\r\n \r\n \r\n
    \r\n );\r\n };\r\n\r\n if (!shareLink) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default ShareHotelModal;\r\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { useOnClickOutside } from 'hooks';\n\nimport './Drawer.css';\n\nconst Drawer = ({\n anchor,\n backdrop,\n elevation,\n open,\n onClose,\n onOpen,\n children,\n className = '',\n height,\n width,\n top,\n left,\n right,\n}) => {\n const nodeRef = useRef(null);\n\n useOnClickOutside(nodeRef, onClose);\n\n height = typeof height === 'string' ? height : height + 'px';\n top = typeof top === 'string' ? top : top + 'px';\n width = typeof width === 'string' ? width : width + 'px';\n left = typeof left === 'string' ? left : left + 'px';\n right = typeof right === 'string' ? right : right + 'px';\n\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nDrawer.propTypes = {\n anchor: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),\n backdrop: PropTypes.bool,\n elevation: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n open: PropTypes.bool,\n onClose: PropTypes.func,\n onOpen: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n left: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n right: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n top: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nexport default Drawer;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './Switch.css';\r\n\r\nconst Switch = ({\r\n checked,\r\n classes,\r\n color,\r\n disabled,\r\n id,\r\n inputRef,\r\n onChange,\r\n required,\r\n size,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nSwitch.propTypes = {\r\n checked: PropTypes.bool,\r\n classes: PropTypes.string,\r\n color: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n id: PropTypes.string.isRequired,\r\n inputRef: PropTypes.oneOfType([\r\n PropTypes.func,\r\n PropTypes.shape({ current: PropTypes.instanceOf(HTMLInputElement) }),\r\n ]),\r\n onChange: PropTypes.func,\r\n required: PropTypes.bool,\r\n size: PropTypes.oneOf(['large', 'medium', 'small']),\r\n};\r\n\r\nexport default Switch;\r\n","import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';\nimport axios from 'axios';\n\nexport const getBookingWidgetReviews = createAsyncThunk(\n 'booking-widget/get-reviews',\n async (params = {}) => {\n const url = params.reviewsUrl;\n\n const response = await axios.get(url);\n\n return response.data;\n }\n);\n\nexport const bookingWidgetReviewsSlice = createSlice({\n name: 'reviews',\n initialState: {\n reviews: [],\n reviewsText: '',\n totalReviewsText: '',\n guestScoreText: '',\n guestScore: '',\n guestScoreValueText: '',\n sortByScoreOptions: [],\n channelScores: [],\n sortByCommentsOptions: [],\n channelExtras: [],\n showCommentsByCountryOptions: [],\n isDrawerOpen: false,\n isFetching: false,\n isSuccess: false,\n isError: false,\n errorMessage: '',\n },\n reducers: {\n toggle: (state) => {\n state.isDrawerOpen = !state.isDrawerOpen;\n },\n setReviews: (state, action) => {\n state.reviews = [...state.reviews, ...action.payload.reviews];\n },\n setSortByScoreOptions: (state, action) => {\n state.sortByScoreOptions = action.payload.sortByScoreOptions;\n },\n resetReviews: (state) => {\n state.reviews = [];\n },\n },\n extraReducers: {\n [getBookingWidgetReviews.fulfilled]: (state, { payload }) => {\n state.reviews = payload.channelComments || [];\n state.reviewsText = payload?.reviewsText;\n state.totalReviews = payload?.totalReviews;\n state.totalReviewsText = payload?.totalReviewsText;\n state.guestScoreText = payload?.guestScoreText;\n state.guestScore = payload?.guestScore;\n state.channelExtras = payload?.channelExtras;\n state.guestScoreValueText = payload?.guestScoreValueText;\n state.channelScores = payload?.channelScores\n ?.filter((channel) => channel?.channelName)\n .map((channel) => {\n const channelScore = parseFloat(\n channel.channelScore.replace(',', '.')\n );\n const channelScoreOutOf = parseFloat(\n channel.channelScoreOutOf\n .replace('/', '')\n .replace(',', '.')\n );\n const channelScorePercentage =\n (channelScore / channelScoreOutOf) * 100;\n\n return {\n ...channel,\n channelScorePercentage,\n };\n });\n state.sortByCommentsOptions = payload?.sortByCommentsOptions;\n state.sortByScoreOptions = payload?.sortByScoreOptions;\n state.sortBySeasonOptions = payload?.sortBySeasonOptions;\n state.showCommentsByCountryOptions =\n payload?.sortByCommentsLanguage;\n state.isFetching = false;\n state.isSuccess = true;\n state.isError = false;\n state.errorMessage = '';\n },\n [getBookingWidgetReviews.rejected]: (state, { payload }) => {\n state.isFetching = false;\n state.isSuccess = false;\n state.isError = true;\n state.errorMessage = '';\n },\n [getBookingWidgetReviews.pending]: (state) => {\n state.isFetching = true;\n state.isSuccess = false;\n state.isError = false;\n state.errorMessage = '';\n },\n },\n});\n\nexport const { toggle, resetReviews, setReviews, setSortByScoreOptions } =\n bookingWidgetReviewsSlice.actions;\n","import { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport { Stars } from 'components/common/stars';\nimport Channel from 'components/channel/Channel';\nimport { closeDrawer } from 'features/drawersSlice';\nimport {\n toggle as toggleReviewsDrawer,\n getBookingWidgetReviews,\n} from 'features/ReviewsSlice';\n\nimport { BookButton } from 'components/bookButton';\nimport { ReadMore } from 'components/common/readMore';\nimport { stripHTMLTags } from '../../lib';\nimport './MultipropertyCard.css';\nimport { MdFreeBreakfast } from 'react-icons/md';\n\nconst MultipropertyCard = ({\n property = {},\n Lang = {},\n openPropertyDetails,\n}) => {\n const dispatch = useDispatch();\n\n const { currencySymbol } = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice\n );\n\n return (\n
    \n
    \n {property.ourPrice.text}\n
    \n
    \n
    \n \n openPropertyDetails(\n property?.propertyID,\n property?.parentPropertyID\n )\n }\n >\n
    \n
    \n \n openPropertyDetails(\n property?.propertyID,\n property?.parentPropertyID\n )\n }\n >\n
    \n
    \n {property.propertyName}\n
    \n
    \n \n
    \n
    \n \n
    \n \n {stripHTMLTags(\n property.propertyDescription\n )}\n \n
    \n
    \n {property?.totalScore && (\n {\n event.stopPropagation();\n dispatch(\n getBookingWidgetReviews({\n reviewsUrl:\n property.commentsUrl,\n })\n );\n dispatch(\n closeDrawer({\n drawerId:\n 'BigBookingWidgetDrawer',\n })\n );\n dispatch(toggleReviewsDrawer());\n }}\n >\n {property?.totalScore?.split(' /')[0]}\n \n )}\n\n \n \n {property?.totalScore && (\n
    \n
    \n {property.scoreRating}\n
    \n
    \n {property.totalReviews}\n
    \n
    \n )}\n\n
    \n
    \n {Lang?.location ?? 'location'}\n
    \n
    \n {property.ariaLocation}\n
    \n
    \n
    \n
    \n \n\n
    \n {property.channels.length > 0 && (\n
    \n {property.channels.map(\n (channel, index) => {\n let styles = {};\n if (index >= 3) {\n styles = {\n marginTop: '7px',\n };\n }\n return (\n \n );\n }\n )}\n
    \n )}\n
    \n \n \n
    \n
    \n {property.ourPrice?.loyaltyprice &&\n property.ourPrice?.loyaltyprice !== '0' ? (\n <>\n
    \n {property.ourPrice?.price}{' '}\n {property.lowestPrice > 0 &&\n currencySymbol}\n
    \n \n {property.ourPrice?.loyaltyprice}{' '}\n {property.lowestPrice > 0 &&\n currencySymbol}\n
    \n
    \n
    \n {Lang?.saveText}{' '}\n \n {property.ourPrice?.discount}{' '}\n {property.lowestPrice > 0 &&\n currencySymbol}\n \n
    \n
    \n \n ) : (\n property.ourPrice?.price &&\n property.ourPrice?.price !== '0' && (\n <>\n \n {property.ourPrice?.price}{' '}\n {property.lowestPrice > 0 &&\n currencySymbol}\n
    \n \n )\n )}\n\n {property.lowestPrice > 0 && (\n <>\n {property.ourPrice?.hasMinStay && (\n
    \n Min-Stay\n
    \n )}\n
    \n
    \n {\n property?.ourPrice\n ?.cancelationPolicyType\n }\n
    \n
    \n {property.ourPrice?.hasBreakfast ? (\n <>\n
    \n
    \n \n \n {Lang?.breakfastText}\n \n
    \n
    \n \n ) : (\n <>\n )}\n \n )}\n \n\n 0\n ? property?.ourPrice?.price\n : ''\n }\n text={\n property.lowestPrice > 0\n ? Lang?.bookNowText\n : Lang?.soldOut\n }\n url={property?.ourPrice?.bigPluginUrl}\n variant=\"non-member\"\n noPrice={!property.lowestPrice}\n className={\n !property.lowestPrice &&\n 'ab-book-button-sold-out'\n }\n />\n \n \n \n \n \n );\n};\n\nMultipropertyCard.propTypes = {\n property: PropTypes.object,\n Lang: PropTypes.object,\n index: PropTypes.number,\n openPropertyDetails: PropTypes.func,\n};\n\nexport default MultipropertyCard;\n","import { Skeleton } from 'components/common/skeleton';\r\n\r\nimport './SkeletonMultipropertyCard.css';\r\nconst SkeletonMultipropertyCard = () => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n {/*
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    */}\r\n\r\n {/*
    \r\n \r\n \r\n
    */}\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SkeletonMultipropertyCard;\r\n","import PropTypes from 'prop-types';\r\n\r\nimport './NoResults.css';\r\n\r\nconst NoResults = ({ icon, message }) => {\r\n return (\r\n
    \r\n {icon && icon}\r\n {message &&
    {message}
    }\r\n
    \r\n );\r\n};\r\n\r\nNoResults.propTypes = {\r\n icon: PropTypes.node,\r\n message: PropTypes.string,\r\n};\r\n\r\nexport default NoResults;\r\n","import { useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { CSSTransition } from 'react-transition-group';\n\nimport {\n MdKeyboardArrowUp,\n MdKeyboardArrowDown,\n MdFilterList,\n} from 'react-icons/md';\n\nimport './Collapsible.css';\n\nconst Collapsible = ({\n title,\n open = false,\n children,\n extraClass = '',\n isFilter = false,\n}) => {\n const [isOpen, setIsOpen] = useState(open);\n const nodeRef = useRef(null);\n\n // TODO: WRAP EVERYTHING INSIDE CSSTransition AND\n // ANIMATE THE ARROWS AS WELL\n\n return (\n \n setIsOpen(!isOpen)}\n >\n
    {title}
    \n
    \n {isFilter ? (\n isOpen ? (\n \n ) : (\n \n )\n ) : isOpen ? (\n \n ) : (\n \n )}\n
    \n \n \n \n {children}\n \n \n \n );\n};\n\nCollapsible.propTypes = {\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n open: PropTypes.bool,\n isFilter: PropTypes.bool,\n children: PropTypes.node,\n extraClass: PropTypes.string,\n};\n\nexport default Collapsible;\n","import PropTypes from 'prop-types';\r\n\r\nimport Tippy from '@tippyjs/react';\r\nimport 'tippy.js/dist/tippy.css';\r\n\r\nimport './Tooltip.css';\r\n\r\nconst Tooltip = (props) => {\r\n return (\r\n \r\n
    {props.children}
    \r\n
    \r\n );\r\n};\r\n\r\nTooltip.propTypes = {\r\n content: PropTypes.node,\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default Tooltip;\r\n","import PropTypes from 'prop-types';\r\n// import { useDispatch, useSelector } from 'react-redux';\r\nimport { Tooltip } from 'components/common/tooltip';\r\n// import { getBookingWidgetMultipropertyData } from 'features/multiproperty/MultipropertySlice';\r\n\r\nconst ReviewScoreFilter = ({ menuItems, onClick, selected }) => {\r\n // const multipropertyUrl = useSelector(\r\n // (state) => state.miniBookingWidget?.data?.multipropertyUrl\r\n // );\r\n // const sortByProperty = useSelector((state) => state.user?.sortByProperty);\r\n // const dispatch = useDispatch();\r\n // const handleScoreReviewFilterClick = (value) => {\r\n // const scoreFilter = '&scoreFilter=' + value;\r\n // dispatch(\r\n // getBookingWidgetMultipropertyData({\r\n // multipropertyUrl,\r\n // sortByProperty,\r\n // scoreFilter,\r\n // })\r\n // );\r\n // };\r\n\r\n return (\r\n \r\n {menuItems.tooltipText}\r\n \r\n }\r\n zIndex={100004}\r\n // trigger=\"click\"\r\n >\r\n \r\n {menuItems.text}\r\n \r\n \r\n );\r\n};\r\n\r\nReviewScoreFilter.propTypes = {\r\n menuItems: PropTypes.object,\r\n onClick: PropTypes.func,\r\n selected: PropTypes.bool,\r\n};\r\n\r\nexport default ReviewScoreFilter;\r\n","import { useDispatch, useSelector } from 'react-redux';\r\nimport { useState } from 'react';\r\nimport { Checkbox } from 'components/common/checkbox';\r\nimport { Collapsible } from 'components/common/collapsible';\r\nimport { Input } from 'components/common/input';\r\nimport { ReviewScoreFilter } from 'components/reviewScoreFilter';\r\nimport { COMPARISON_OPERATORS, filter } from 'lib';\r\nimport {\r\n setFilteredProperties,\r\n // getBookingWidgetMultipropertyData,\r\n} from 'features/multiproperty/MultipropertySlice';\r\n\r\nconst MultipropertyFilters = () => {\r\n const dispatch = useDispatch();\r\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\r\n\r\n // const multipropertyUrl = useSelector(\r\n // (state) => state.miniBookingWidget?.data?.multipropertyUrl\r\n // );\r\n\r\n const multipropertyPropeties =\r\n useSelector((state) => state.multiproperty.multipropertyProperties) ||\r\n [];\r\n\r\n const multipropertyScoreFilter =\r\n useSelector(\r\n (state) => state.miniBookingWidget?.data?.multipropertyScoreFilter\r\n ) || [];\r\n\r\n const [filters, setFilters] = useState([\r\n {\r\n name: 'hasBreakfast',\r\n value: false,\r\n fieldsToCheckAgainst: ['hasBreakfast'],\r\n },\r\n {\r\n name: 'hasMemberPrice',\r\n value: false,\r\n fieldsToCheckAgainst: ['hasMemberPrice'],\r\n },\r\n { name: 'hasWifi', value: false, fieldsToCheckAgainst: ['hasWifi'] },\r\n {\r\n name: 'reviewsScore',\r\n value: 0,\r\n fieldsToCheckAgainst: ['totalScoreDecimal'],\r\n comparisonOperator: COMPARISON_OPERATORS.gte,\r\n },\r\n {\r\n name: 'searchInput',\r\n value: '',\r\n fieldsToCheckAgainst: ['propertyName', 'ariaLocation'],\r\n },\r\n ]);\r\n\r\n // const sortByProperty = useSelector((state) => state.user?.sortByProperty);\r\n\r\n // useEffect(() => {\r\n // if (multipropertyUrl) {\r\n // dispatch(\r\n // getBookingWidgetMultipropertyData({\r\n // multipropertyUrl,\r\n // sortByProperty,\r\n // filters,\r\n // })\r\n // );\r\n // }\r\n // }, [multipropertyUrl]);\r\n\r\n const [selectedReviewScoreIndex, setSelectedReviewScoreIndex] = useState(0);\r\n\r\n const handleFillterChange = (filterName, value) => {\r\n const updatedFilters = filters.map((filter) => {\r\n if (filter.name === filterName) {\r\n filter.value = value;\r\n }\r\n\r\n return filter;\r\n });\r\n\r\n setFilters(updatedFilters);\r\n\r\n const hasActiveFilters = updatedFilters.some((filter) => {\r\n return filter.value;\r\n });\r\n\r\n if (hasActiveFilters) {\r\n const matchingProperties = filter(\r\n multipropertyPropeties,\r\n updatedFilters\r\n );\r\n dispatch(\r\n setFilteredProperties({\r\n filteredProperties: matchingProperties,\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n setFilteredProperties({\r\n filteredProperties: multipropertyPropeties,\r\n })\r\n );\r\n }\r\n };\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n handleFillterChange(\r\n 'searchInput',\r\n event.target.value\r\n );\r\n }}\r\n placeholder={Lang?.typeAPropertyNameOrArea}\r\n id=\"search\"\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {\r\n return filter.name === 'hasBreakfast';\r\n })?.value\r\n }\r\n onChange={(event) =>\r\n handleFillterChange(\r\n 'hasBreakfast',\r\n event.target.checked\r\n )\r\n }\r\n >\r\n {Lang?.breakfastText}\r\n \r\n {\r\n return filter.name === 'hasWifi';\r\n })?.value\r\n }\r\n onChange={(event) =>\r\n handleFillterChange('hasWifi', event.target.checked)\r\n }\r\n >\r\n {Lang?.freeWifi}\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n {\r\n return filter.name === 'hasMemberPrice';\r\n })?.value\r\n }\r\n onChange={(event) =>\r\n handleFillterChange(\r\n 'hasMemberPrice',\r\n event.target.checked\r\n )\r\n }\r\n >\r\n {Lang?.memberPrices}\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {multipropertyScoreFilter.map((property, index) => {\r\n return (\r\n {\r\n setSelectedReviewScoreIndex(index);\r\n handleFillterChange(\r\n 'reviewsScore',\r\n property.value\r\n );\r\n }}\r\n />\r\n );\r\n })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MultipropertyFilters;\r\n","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport { FaHotel, FaRegBell } from 'react-icons/fa';\nimport { VscInfo } from 'react-icons/vsc';\nimport { Button } from 'components/common/button';\nimport { BookButton } from 'components/bookButton';\nimport { Switch } from 'components/common/switch';\n\nimport { Dropdown } from 'components/common/dropdown';\nimport { MultipropertyCard } from 'components/multipropertyCard';\nimport { SkeletonMultipropertyCard } from 'components/skeletonMultipropertyCard';\n\nimport { getBookingWidgetMultipropertyData } from 'features/multiproperty/MultipropertySlice';\nimport {\n setSortByProperty,\n setIsMultipropertyTrackPrices,\n} from 'features/userSlice';\nimport { Skeleton } from 'components/common/skeleton';\nimport { NoResults } from 'components/common/noResults';\nimport './Multiproperty.css';\nimport { closeModal, openModal } from 'features/modalSlice';\n\nimport { MultipropertyFilters } from 'components/multipropertyFilters';\nimport { useScrollToTop } from 'hooks';\n\nconst Multiproperty = ({ openPropertyDetails, showMap, enableMap }) => {\n const dispatch = useDispatch();\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const multipropertyUrl = useSelector(\n (state) => state.miniBookingWidget?.data?.multipropertyUrl\n );\n const multipropertyPropeties =\n useSelector((state) => state.multiproperty.multipropertyProperties) ||\n [];\n\n const filteredProperties = useSelector(\n (state) => state.multiproperty.filteredProperties\n );\n // TODO: CHANGE THIS\n const isFetchingPrices = useSelector(\n (state) => state?.miniBookingWidget?.isFetching\n );\n const isFetchingProperties =\n useSelector((state) => state.multiproperty?.isFetching) ||\n isFetchingPrices;\n\n const data = useSelector((state) => state.miniBookingWidget?.data);\n const multipropertyDropdown = useSelector(\n (state) => state.multiproperty?.multipropertyDropdown\n );\n const sortByOptions = multipropertyDropdown;\n const sortByText = data?.bigPlugin?.sortByText;\n\n const { isTrackPricesModalOpen } = useSelector((state) => state.modal);\n\n const ref = useScrollToTop([isFetchingPrices]);\n\n const multipropertyCount =\n filteredProperties !== null\n ? filteredProperties.length\n : multipropertyPropeties?.length || 0;\n\n const openTrackPricesModal = useCallback(() => {\n if (!isTrackPricesModalOpen) {\n dispatch(\n openModal({\n modalId: 'TrackPricesModal',\n })\n );\n dispatch(\n setIsMultipropertyTrackPrices({\n isMultipropertyTrackPrices: true,\n })\n );\n } else {\n dispatch(\n closeModal({\n modalId: 'TrackPricesModal',\n })\n );\n dispatch(\n setIsMultipropertyTrackPrices({\n isMultipropertyTrackPrices: false,\n })\n );\n }\n }, [dispatch, isTrackPricesModalOpen]);\n\n return (\n
    \n
    \n
    \n
    \n {enableMap &&\n (isFetchingPrices ? (\n \n ) : (\n \n \n
    \n ))}\n\n {!isFetchingPrices ? (\n <>\n
    \n \n \n \n {data?.bigPlugin?.priceAlertText}\n
    \n
    \n
    \n
    \n \n {\n data?.bigPlugin\n ?.checkPriceText\n }\n \n\n \n }\n />\n
    \n\n \n
    \n
    \n \n ) : (\n \n )}\n
    \n\n \n
    \n
    \n\n
    \n {/* TODO: CHANGE THIS */}\n
    \n {isFetchingProperties ? (\n
    \n \n
    \n ) : (\n
    \n {multipropertyCount} {Lang?.propertiesFound}\n
    \n )}\n
    \n {isFetchingProperties ? (\n \n ) : (\n
    \n {\n // TODO: NOT SURE ABOUT THIS\n dispatch(\n setSortByProperty({\n sortByProperty:\n option.dropdownValue,\n })\n );\n dispatch(\n getBookingWidgetMultipropertyData({\n multipropertyUrl,\n sortByProperty:\n option.dropdownValue,\n })\n );\n }}\n options={sortByOptions || []}\n />\n
    \n )}\n
    \n
    \n\n {/*
    */}\n \n {isFetchingProperties && (\n <>\n \n \n \n \n )}\n {!isFetchingProperties &&\n (filteredProperties !== null\n ? filteredProperties\n : multipropertyPropeties\n ).map((property, index) => {\n return (\n \n );\n })}\n\n {!isFetchingProperties && multipropertyCount === 0 && (\n }\n message={Lang?.noPropertiesFound}\n />\n )}\n
    \n * {Lang?.multipropertyRatesText}\n
    \n
    \n
    \n \n );\n};\n\nMultiproperty.propTypes = {\n enableMap: PropTypes.bool,\n openPropertyDetails: PropTypes.func,\n showMap: PropTypes.func,\n};\n\nexport default Multiproperty;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport BookButton from 'components/bookButton/BookButton';\nimport { Tooltip } from 'components/common/tooltip';\n\nimport './RoomBookButtons.css';\n\nconst RoomBookButtons = ({\n currencySymbol,\n isRoomAvailable,\n Lang,\n rate,\n onClick,\n isDirect,\n noRedirect = false,\n isLoading = false,\n}) => {\n if (!rate) {\n return null;\n }\n\n const showTooltip =\n rate?.pricing?.memberPrice &&\n rate.availableRooms[0]?.memberBookNowText &&\n rate.availableRooms[0]?.memberBookNowUrl;\n\n return (\n
    \n {isRoomAvailable ? (\n <>\n {showTooltip ? (\n \n \n \n {rate?.pricing?.savePrice > 0 && (\n

    \n {Lang.joinUsDiscountMsg}{' '}\n \n {currencySymbol}\n {rate?.pricing?.savePrice}\n \n

    \n )}\n
    \n }\n zIndex={100004}\n // trigger=\"click\"\n >\n 0\n ? rate.availableRooms[0]\n ?.memberBookNowUrl\n : rate.availableRooms[0]?.bookNowUrl\n }\n price={`${\n rate?.pricing?.memberPrice > 0\n ? rate?.pricing?.memberPrice\n : rate?.pricing?.price\n }`}\n currencySymbol={currencySymbol}\n onClick={onClick}\n isDirect={isDirect}\n noRedirect={noRedirect}\n isLoading={isLoading}\n />\n \n ) : (\n 0\n ? rate?.pricing?.memberPrice\n : rate?.pricing?.price\n }`}\n currencySymbol={currencySymbol}\n onClick={onClick}\n isDirect={isDirect}\n noRedirect={noRedirect}\n isLoading={isLoading}\n />\n )}\n \n ) : (\n \n )}\n \n );\n};\n\nRoomBookButtons.propTypes = {\n currencySymbol: PropTypes.string.isRequired,\n isRoomAvailable: PropTypes.bool.isRequired,\n Lang: PropTypes.object.isRequired,\n rate: PropTypes.object.isRequired,\n onClick: PropTypes.func,\n isDirect: PropTypes.number,\n noRedirect: PropTypes.bool,\n isLoading: PropTypes.bool,\n};\n\nexport default RoomBookButtons;\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport const bookingWidgetRoomFormSlice = createSlice({\n name: 'roomBookingForm',\n initialState: {\n room: {},\n selectedRoomFormIndex: null,\n selectedRateID: null,\n isDrawerOpen: false,\n },\n reducers: {\n setSelectedRoomForm: (state, action) => {\n state.selectedRoomFormIndex = action.payload.selectedRoomFormIndex;\n },\n setSelectedRateID: (state, action) => {\n state.selectedRateID = action.payload.selectedRateID;\n },\n setSelectedFormRoom: (state, action) => {\n let rates = [];\n if (action.payload?.room?.rates?.length > 0) {\n rates = action.payload?.room?.rates?.filter((obj) => {\n return obj.rateID === state.selectedRateID;\n });\n }\n\n state.room = { ...action.payload.room, rates: rates };\n },\n },\n});\n\nexport const { setSelectedRoomForm, setSelectedRateID, setSelectedFormRoom } =\n bookingWidgetRoomFormSlice.actions;\n","import * as RadioGroupRadix from '@radix-ui/react-radio-group';\nimport PropTypes from 'prop-types';\nimport './RadioGroup.css';\n\nconst RadioGroup = ({ setSelectedRate, items = {}, selectedRate = 0 }) => {\n const onValueChange = (rateIndex) => {\n setSelectedRate(items[rateIndex].id);\n };\n // Find the index of the selectedRate in the items array\n const defaultIndex = items.findIndex((item) => item?.id === selectedRate);\n return (\n
    \n \n {/* Do not show the first rate as it is the one that is displayed by default */}\n {items.map((item, index) => {\n return (\n \n \n \n \n \n
    \n );\n })}\n \n \n );\n};\n\nRadioGroup.propTypes = {\n setSelectedRate: PropTypes.func,\n items: PropTypes.array,\n selectedRate: PropTypes.number,\n};\n\nexport default RadioGroup;\n","import * as RadioGroupRadix from '@radix-ui/react-radio-group';\nimport { setTempRate } from 'features/cart/cartSlice';\nimport { openModal } from 'features/modalSlice';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\n\nconst RadioGroupCustom = ({\n setSelectedRate,\n items = [],\n selectedRate = 0,\n}) => {\n const dispatch = useDispatch();\n const isAddingRate = useSelector((state) => state.cart?.isAddingRate);\n const onValueChange = (rateIndex) => {\n if (isAddingRate) {\n return;\n }\n if (!items[rateIndex].noClick) {\n setSelectedRate(items[rateIndex].id);\n } else {\n dispatch(\n setTempRate({\n tempRate: items[rateIndex].id,\n roomTypeID: items[rateIndex].room.roomTypeID,\n })\n );\n dispatch(\n openModal({\n modalId: 'AreYouSureModal',\n })\n );\n }\n };\n\n // Find the index of the selectedRate in the items array\n const defaultIndex = items.findIndex((item) => item?.id === selectedRate);\n\n return (\n
    \n \n {items.map((item, index) => (\n onValueChange(index)}\n >\n \n \n \n \n
    \n ))}\n \n \n );\n};\n\nRadioGroupCustom.propTypes = {\n setSelectedRate: PropTypes.func,\n items: PropTypes.array,\n selectedRate: PropTypes.number,\n};\n\nexport default RadioGroupCustom;\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport { MdKeyboardArrowDown, MdFreeBreakfast } from 'react-icons/md';\nimport { VscInfo } from 'react-icons/vsc';\n\nimport { Button } from 'components/common/button';\nimport { BookButton } from 'components/bookButton';\nimport RoomBookButtons from './RoomBookButtons';\n\nimport { openModal } from 'features/modalSlice';\nimport { setSelectedRoom } from '../../features/roomsSlice';\nimport { setSelectedCancellationAndPaymentPolicyData } from 'features/userSlice';\n\nimport { stripHTMLTags, makeStatsRequestThrottled } from '../../lib';\n\nimport './Room.css';\nimport {\n setSelectedRateID,\n setSelectedRoomForm,\n setSelectedFormRoom,\n} from 'features/roomBookingFormSlice';\nimport { RadioGroup } from 'components/common/radioGroup';\nimport {\n addCartItem,\n setAddingRate,\n setCartOpenState,\n setSmallCartOpenState,\n setTempRate,\n} from 'features/cart/cartSlice';\nimport axios from 'axios';\nimport { toast } from 'react-toastify';\nimport { RadioGroupCustom } from 'components/common/radioGroupCustom';\nimport { apiConfig, WIDGET_STATS_SETTINGS } from 'config';\n\nconst Room = ({ room = {}, index, isBestRate }) => {\n const dispatch = useDispatch();\n const [isOpen, setIsOpen] = useState(() => index === 0);\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const roomRef = useRef(null);\n const { currencySymbol, text: bestRateText } = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice\n );\n\n let defaultRate;\n\n if (Array.isArray(room.rates) && room.rates.length > 0) {\n defaultRate = room.rates[0];\n }\n\n const openRoomDetails = (roomIndex) => {\n dispatch(setSelectedRoom({ selectedRoomIndex: roomIndex }));\n };\n\n const isDirect = useSelector(\n (state) => state.miniBookingWidget?.data?.bookDirectly\n );\n const propCode = useSelector(\n (state) => state.miniBookingWidget?.data?.propCode\n );\n const propertyID = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyID\n );\n const hasCart = useSelector(\n (state) => state.miniBookingWidget?.data?.hasCart\n );\n const cartItems = useSelector((state) => state.cart?.cartItems);\n const isAddingRate = useSelector((state) => state.cart?.isAddingRate);\n\n const searchOptions = useSelector((state) => state.user);\n const cartID = useSelector(\n (state) => state.miniBookingWidget?.data?.cartID\n );\n let noRedirect = false;\n if (hasCart || isDirect) {\n noRedirect = true;\n }\n\n const thisRoomCartItems = cartItems.filter(\n (item) => item.roomTypeID === room.roomTypeID\n );\n\n const openRoomBookingForm = async (roomIndex, rateID, room) => {\n if (isAddingRate) {\n return;\n }\n if (hasCart) {\n if (room) {\n const { name, type, rates, photos, roomTypeID } = room;\n const roomName = name;\n const roomType = type;\n const price = rates.find((rate) => rate.rateID === rateID)\n .pricing?.price;\n const prePayPrice = rates.find((rate) => rate.rateID === rateID)\n .pricing?.prePayPrice;\n const roomPhoto = photos?.[0]?.large;\n const rateName = rates.find(\n (rate) => rate.rateID === rateID\n ).name;\n if (cartItems.some((item) => item.roomTypeID === roomTypeID)) {\n if (cartItems.some((item) => item.rateID === rateID)) {\n dispatch(setCartOpenState(true));\n } else {\n dispatch(\n setTempRate({\n tempRate: rateID,\n roomTypeID: roomTypeID,\n })\n );\n dispatch(\n openModal({\n modalId: 'AreYouSureModal',\n })\n );\n }\n } else {\n if (!cartItems.some((item) => item.rateID === rateID)) {\n const cartItem = {\n rateID: rateID,\n propCode,\n roomName,\n roomType,\n price,\n roomPhoto,\n roomTypeID,\n quantity: searchOptions?.numberOfRooms,\n adults: searchOptions?.adults,\n children: searchOptions?.children,\n checkin: searchOptions?.checkInDay.date,\n checkout: searchOptions?.checkOutDay.date,\n cartID,\n rateName,\n isCompleted: false,\n totalPrice:\n Number(price) *\n Number(searchOptions?.numberOfRooms),\n extras: [],\n prePayPrice,\n };\n dispatch(setAddingRate(true));\n const response = await addToCartBack(cartItem);\n if (response?.status === 'ok') {\n cartItem.ID = response.ID;\n dispatch(setSmallCartOpenState(true));\n dispatch(addCartItem(cartItem));\n }\n } else {\n dispatch(setCartOpenState(true));\n }\n dispatch(setAddingRate(false));\n }\n }\n } else if (isDirect) {\n dispatch(setSelectedRoomForm({ selectedRoomFormIndex: roomIndex }));\n dispatch(setSelectedRateID({ selectedRateID: rateID }));\n dispatch(setSelectedFormRoom({ room: room }));\n } else {\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.booknow,\n propertyID\n );\n }\n };\n\n const addToCartBack = async (cartItem) => {\n try {\n const response = await axios.post(apiConfig?.addToCartBack, {\n ...cartItem,\n });\n\n if (response?.data.status.toLowerCase() === 'ok') {\n return response?.data;\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n const handleInfoIconClick = useCallback((data) => {\n dispatch(setSelectedCancellationAndPaymentPolicyData({ ...data }));\n dispatch(\n openModal({\n modalId: 'CancellationAndPaymentPolicyModal',\n })\n );\n }, []);\n\n const MAX_CHARS = 160;\n\n if (!defaultRate) {\n return null;\n }\n\n const [selectedRate, setSelectedRate] = useState(0);\n\n useEffect(() => {\n if (thisRoomCartItems && thisRoomCartItems.length > 0) {\n const cartSelectedRate = thisRoomCartItems[0].rateID;\n setSelectedRate(cartSelectedRate);\n }\n }, [thisRoomCartItems]);\n\n const items = room.rates.map((rate, index) => {\n let isInCart = false;\n let noClick = false;\n if (thisRoomCartItems && thisRoomCartItems.length > 0) {\n isInCart = cartItems?.filter((item) => item.rateID === rate.rateID);\n if (!isInCart || isInCart?.length === 0) {\n noClick = true;\n }\n }\n\n const isAvailable =\n rate?.availableRooms?.length > 0 &&\n rate?.memberBookNowText !== 'Not Avail';\n const notPickedClass =\n rate?.rateID === selectedRate || (index === 0 && selectedRate === 0)\n ? ''\n : 'ab-not-picked-rate';\n\n const label = (\n \n
    \n
    \n
    \n \n {rate.rate}\n \n {\n event.stopPropagation();\n handleInfoIconClick({\n cancellationPolicyType:\n rate?.cancelationPolicyType,\n cancellationPolicy:\n rate?.cancelationPolicy,\n cancellationPenalty:\n rate?.cancelationPenalty,\n paymentPolicy: rate?.paymentPolicy,\n modalTitle: 'Cancellation policy',\n });\n }}\n icon={}\n >\n
    \n
    \n {stripHTMLTags(rate.cancelationPolicy).length >\n MAX_CHARS &&\n stripHTMLTags(rate.cancelationPolicy).substr(\n 0,\n MAX_CHARS\n ) + '...'}\n\n {stripHTMLTags(rate.cancelationPolicy).length <=\n MAX_CHARS &&\n stripHTMLTags(rate.cancelationPolicy)}\n
    \n
    \n
    \n
    \n
    \n
    \n {Lang?.priceAdultsText}\n
    \n {rate?.pricing?.memberPrice ? (\n <>\n
    \n \n {rate.pricing.price} {currencySymbol}\n {' '}\n {rate.pricing.memberPrice} {currencySymbol}\n
    \n
    \n
    \n {rate.pricing.saveText}{' '}\n \n {rate.pricing.savePrice}{' '}\n {currencySymbol}\n \n
    \n
    \n \n ) : (\n <>\n {rate?.pricing?.price !== 0 && (\n
    \n {rate.pricing.price} {currencySymbol}\n
    \n )}\n \n )}\n {/*
    \n {rate.hasMinStay && (\n
    \n Min-Stay\n
    \n )}\n
    */}\n
    \n
    \n
    \n \n openRoomBookingForm(index, rate?.rateID, room)\n }\n isDirect={isDirect}\n noRedirect={noRedirect}\n isLoading={isAddingRate}\n />\n
    \n \n );\n\n return {\n id: rate.rateID,\n value: rate.rateID,\n label: label,\n noClick: noClick,\n room: room,\n };\n });\n\n return (\n \n
    \n openRoomDetails(index)}\n >\n
    \n {room?.photos?.length > 0 && (\n
    \n +{room.photos.length} {room.photoText}\n
    \n )}\n \n
    \n openRoomDetails(index)}\n >\n
    \n
    \n {room?.name}\n
    \n
    \n
    \n
    \n
    \n {defaultRate.pricing.inThisStayText}\n
    \n \n
    \n {room?.remainingText}\n
    \n {defaultRate?.hasBreakfast && (\n \n
    \n \n \n {Lang.breakfastText}\n \n
    \n
    \n )}\n \n\n {room?.minStaySort > 0 && (\n
    \n Min-Stay\n
    \n )}\n \n \n {/* Do not take into account the default rate which is the first one */}\n {room?.rates?.length >= 1 && (\n
    \n
    \n {\n if (roomRef.current) {\n roomRef.current.classList.add(\n 'expanded'\n );\n }\n setIsOpen(true);\n }}\n >\n \n \n \n {room.seeMoreOffers}\n \n {room?.seeMoreOffersPrice}\n \n
    \n {\n if (roomRef.current) {\n roomRef.current.classList.remove(\n 'expanded'\n );\n }\n setIsOpen(false);\n }}\n >\n \n \n \n {room.seeLessOffers}\n
    \n \n \n )}\n \n \n {room?.roomAvail > 0 ? (\n <>\n {isBestRate && (\n
    \n {bestRateText}\n
    \n )}\n\n
    \n
    \n {Lang?.priceAdultsText}\n
    \n {defaultRate.pricing?.memberPrice ? (\n <>\n
    \n {defaultRate.pricing.price}{' '}\n {currencySymbol}\n
    \n \n {defaultRate?.pricing.memberPrice}{' '}\n {currencySymbol}\n
    \n
    \n
    \n {defaultRate.pricing.saveText}{' '}\n \n {\n defaultRate.pricing\n .savePrice\n }{' '}\n {currencySymbol}\n \n
    \n
    \n \n ) : (\n <>\n \n {defaultRate?.pricing.price}{' '}\n {currencySymbol}\n \n \n )}\n\n {/* {defaultRate?.cancelationPolicy && (\n
    \n
    \n {defaultRate.cancelationPolicyType}\n {defaultRate?.freeCancelationText && (\n
    \n {\n defaultRate.freeCancelationText\n }\n
    \n )}\n
    \n
    \n )} */}\n\n
    \n
    \n {defaultRate?.rate && (\n \n handleInfoIconClick({\n cancellationPolicyType:\n defaultRate?.cancelationPolicyType,\n cancellationPolicy:\n defaultRate?.cancelationPolicy,\n cancellationPenalty:\n defaultRate?.cancelationPenalty,\n paymentPolicy:\n defaultRate?.paymentPolicy,\n modalTitle:\n 'Cancellation policy',\n })\n }\n icon={}\n >\n \n \n {defaultRate?.rate}\n
    \n \n \n )}\n
    \n \n \n \n openRoomBookingForm(\n index,\n defaultRate?.rateID,\n room\n )\n }\n isDirect={isDirect}\n noRedirect={noRedirect}\n isLoading={isAddingRate}\n />\n \n openRoomBookingForm(\n index,\n defaultRate?.rateID,\n room\n )\n }\n isDirect={isDirect}\n noRedirect={noRedirect}\n isLoading={isAddingRate}\n />\n \n ) : room?.rates[0]?.memberBookNowText === 'Not Avail' ? (\n {Lang.notAvail}\n ) : (\n {Lang.soldOut}\n )}\n \n \n\n {room?.rates?.length >= 1 && isOpen && (\n
    \n {hasCart ? (\n \n ) : (\n \n )}\n
    \n )}\n \n );\n};\n\nRoom.propTypes = {\n room: PropTypes.object,\n index: PropTypes.number,\n isBestRate: PropTypes.bool,\n};\n\nexport default Room;\n","import { Skeleton } from 'components/common/skeleton';\r\n\r\nimport './SkeletonRoom.css';\r\nconst SkeletonRoom = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SkeletonRoom;\r\n","import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport Carousel from 'nuka-carousel';\n\nimport { IoIosArrowBack, IoIosArrowForward } from 'react-icons/io';\nimport { VscInfo } from 'react-icons/vsc';\n\nimport { BookingHeader } from 'components/bookingHeader';\nimport { Button } from 'components/common/button';\nimport { RoomBookButtons } from 'components/room';\n\nimport { openModal } from 'features/modalSlice';\nimport { setSelectedRoom } from '../../features/roomsSlice';\nimport { setSelectedCancellationAndPaymentPolicyData } from 'features/userSlice';\n\nimport { Collapsible } from './../common/collapsible';\n\nimport { stripHTMLTags, makeStatsRequestThrottled } from '../../lib';\n\nimport './RoomDetails.css';\nimport {\n setSelectedFormRoom,\n setSelectedRateID,\n setSelectedRoomForm,\n} from 'features/roomBookingFormSlice';\nimport {\n addCartItem,\n setAddingRate,\n setCartOpenState,\n setSmallCartOpenState,\n setTempRate,\n} from 'features/cart/cartSlice';\nimport { RadioGroupCustom } from 'components/common/radioGroupCustom';\nimport axios from 'axios';\nimport { toast } from 'react-toastify';\nimport { apiConfig, WIDGET_STATS_SETTINGS } from 'config';\nimport { RadioGroup } from 'components/common/radioGroup';\n\nconst RoomDetails = () => {\n const dispatch = useDispatch();\n\n const { currencySymbol } = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice\n );\n\n const selectedRoomIndex = useSelector(\n (state) => state.rooms.selectedRoomIndex\n );\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const rooms = useSelector((state) => state.rooms?.roomTypes) || [];\n\n let selectedRoom = null;\n if (selectedRoomIndex !== null && selectedRoomIndex !== undefined) {\n selectedRoom = rooms[selectedRoomIndex];\n }\n\n const isDirect = useSelector(\n (state) => state.miniBookingWidget?.data?.bookDirectly\n );\n let noRedirect = false;\n const hasCart = useSelector(\n (state) => state.miniBookingWidget?.data?.hasCart\n );\n if (hasCart || isDirect) {\n noRedirect = true;\n }\n const cartItems = useSelector((state) => state.cart?.cartItems);\n const isAddingRate = useSelector((state) => state.cart?.isAddingRate);\n\n const thisRoomCartItems = cartItems.filter(\n (item) => item.roomTypeID === selectedRoom?.roomTypeID\n );\n const propCode = useSelector(\n (state) => state.miniBookingWidget?.data?.propCode\n );\n const propertyID = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyID\n );\n const searchOptions = useSelector((state) => state.user);\n const cartID = useSelector(\n (state) => state.miniBookingWidget?.data?.cartID\n );\n const [selectedRate, setSelectedRate] = useState(0);\n const addToCartBack = async (cartItem) => {\n try {\n const response = await axios.post(apiConfig?.addToCartBack, {\n ...cartItem,\n });\n\n if (response?.data.status.toLowerCase() === 'ok') {\n return response?.data;\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n const openRoomBookingForm = async (roomIndex, rateID, room) => {\n if (isAddingRate) {\n return;\n }\n if (hasCart) {\n if (room) {\n const { name, type, rates, photos, roomTypeID } = room;\n const roomName = name;\n const roomType = type;\n const price = rates.find((rate) => rate.rateID === rateID)\n .pricing?.price;\n const prePayPrice = rates.find((rate) => rate.rateID === rateID)\n .pricing?.prePayPrice;\n const roomPhoto = photos?.[0]?.large;\n const rateName = rates.find(\n (rate) => rate.rateID === rateID\n ).name;\n\n if (cartItems.some((item) => item.roomTypeID === roomTypeID)) {\n if (cartItems.some((item) => item.rateID === rateID)) {\n dispatch(setCartOpenState(true));\n } else {\n dispatch(\n setTempRate({\n tempRate: rateID,\n roomTypeID: roomTypeID,\n })\n );\n dispatch(\n openModal({\n modalId: 'AreYouSureModal',\n })\n );\n }\n } else {\n if (!cartItems.some((item) => item.rateID === rateID)) {\n const cartItem = {\n rateID: rateID,\n propCode,\n roomName,\n roomType,\n price,\n roomPhoto,\n roomTypeID,\n quantity: searchOptions?.numberOfRooms,\n adults: searchOptions?.adults,\n children: searchOptions?.children,\n checkin: searchOptions?.checkInDay.date,\n checkout: searchOptions?.checkOutDay.date,\n cartID,\n rateName,\n isCompleted: false,\n totalPrice:\n Number(price) *\n Number(searchOptions?.numberOfRooms),\n extras: [],\n prePayPrice,\n };\n dispatch(setAddingRate(true));\n const response = await addToCartBack(cartItem);\n if (response?.status === 'ok') {\n cartItem.ID = response.ID;\n dispatch(setSmallCartOpenState(true));\n dispatch(addCartItem(cartItem));\n }\n dispatch(setAddingRate(false));\n } else {\n dispatch(setCartOpenState(true));\n }\n }\n }\n } else if (isDirect) {\n dispatch(setSelectedRoomForm({ selectedRoomFormIndex: roomIndex }));\n dispatch(setSelectedRateID({ selectedRateID: rateID }));\n dispatch(setSelectedFormRoom({ room: room }));\n } else {\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.booknow,\n propertyID\n );\n }\n };\n const isCollapsibleOpen = true;\n\n const handleInfoIconClick = useCallback((data) => {\n dispatch(setSelectedCancellationAndPaymentPolicyData({ ...data }));\n dispatch(\n openModal({\n modalId: 'CancellationAndPaymentPolicyModal',\n })\n );\n }, []);\n\n const closeRoomDetails = () => {\n dispatch(\n setSelectedRoom({\n selectedRoomIndex: null,\n })\n );\n };\n\n useEffect(() => {\n if (thisRoomCartItems && thisRoomCartItems.length > 0) {\n const cartSelectedRate = thisRoomCartItems[0].rateID;\n setSelectedRate(cartSelectedRate);\n }\n }, [thisRoomCartItems]);\n\n const items = selectedRoom?.rates.map((rate, index) => {\n let isInCart = false;\n let noClick = false;\n if (thisRoomCartItems && thisRoomCartItems.length > 0) {\n isInCart = cartItems?.filter((item) => item.rateID === rate.rateID);\n if (!isInCart || isInCart?.length === 0) {\n noClick = true;\n }\n }\n\n const isAvailable =\n rate?.availableRooms?.length > 0 &&\n rate?.memberBookNowText !== 'Not Avail';\n const notPickedClass =\n rate?.rateID === selectedRate || (index === 0 && selectedRate === 0)\n ? ''\n : 'ab-not-picked-rate';\n\n const label = rate?.availableRooms?.length > 0 && (\n \n {rate?.rate && (\n
    \n
    \n
    \n {rate?.rate}\n
    \n \n {stripHTMLTags(rate.cancelationPolicy).substr(\n 0,\n 100\n ) + '...'}\n \n handleInfoIconClick({\n cancellationPolicyType:\n rate?.cancelationPolicyType,\n cancellationPolicy:\n rate?.cancelationPolicy,\n cancellationPenalty:\n rate?.cancelationPenalty,\n paymentPolicy: rate?.paymentPolicy,\n })\n }\n icon={\n \n }\n />\n
    \n
    \n \n )}\n\n
    \n
    \n {rate?.pricing?.memberPrice ? (\n <>\n
    \n \n {rate.pricing.price} {currencySymbol}\n {' '}\n {rate.pricing.memberPrice} {currencySymbol}\n
    \n
    \n {rate.pricing.saveText}{' '}\n \n {rate.pricing.savePrice}{' '}\n {currencySymbol}\n \n
    \n {rate.hasMinStay && (\n
    \n Min-Stay\n
    \n )}\n \n ) : !isAvailable ? (\n <>\n ) : (\n <>\n
    \n {rate.pricing.price} {currencySymbol}\n
    \n \n )}\n
    \n
    \n
    \n \n openRoomBookingForm(\n index,\n rate?.rateID,\n selectedRoom\n )\n }\n isDirect={isDirect}\n noRedirect={noRedirect}\n isLoading={isAddingRate}\n />\n
    \n \n );\n\n return {\n id: rate.rateID,\n value: rate.rateID,\n label: label,\n noClick: noClick,\n room: selectedRoom,\n };\n });\n\n return (\n
    \n \n\n
    \n
    \n
    \n {selectedRoom?.popularDetails && (\n
    \n
    \n \n
    \n {selectedRoom?.popularDetailsText}\n
    \n
    \n
    \n
    \n {selectedRoom?.popularDetails?.map(\n (item, index) => {\n return (\n \n \n
    \n );\n }\n )}\n
    \n
    \n )}\n {selectedRoom?.amenities && (\n
    \n {/* TODO: COLLAPSIBLE IS NOT OPEN EVERY TIME THAT WE OPEN THE DETAIL VIEW */}\n \n
    \n {selectedRoom?.amenities.map(\n (amenity, index) => {\n return (\n \n \n
    \n );\n }\n )}\n
    \n \n
    \n )}\n
    \n \n\n
    \n {Array.isArray(selectedRoom?.photos) &&\n selectedRoom?.photos.length > 0 && (\n
    \n \n ),\n nextButtonText: (\n \n ),\n prevButtonClassName:\n 'ab-image-carousel-prev-btn',\n nextButtonClassName:\n 'ab-image-carousel-next-btn',\n }}\n cellSpacing={10}\n >\n {selectedRoom?.photos.map(\n (photo, index) => {\n return (\n \n );\n }\n )}\n \n
    \n )}\n\n
    \n
    \n {selectedRoom?.name}\n
    \n
    \n {selectedRoom?.cancellationPoliciesText}\n \n handleInfoIconClick({\n cancellationPolicyType:\n selectedRoom?.rates[0]\n ?.cancelationPolicyType,\n cancellationPolicy:\n selectedRoom?.rates[0]\n ?.cancelationPolicy,\n cancellationPenalty:\n selectedRoom?.rates[0]\n ?.cancelationPenalty,\n paymentPolicy:\n selectedRoom?.rates[0]\n ?.paymentPolicy,\n })\n }\n icon={\n \n }\n />\n
    \n
    \n\n {Array.isArray(selectedRoom?.rates) &&\n selectedRoom?.rates.length > 0 && (\n
    \n {hasCart ? (\n \n ) : (\n \n )}\n
    \n )}\n
    \n \n \n \n );\n};\n\nRoomDetails.propTypes = {\n selectedRoomIndex: PropTypes.number,\n setSelectedRoom: PropTypes.func,\n};\n\nexport default RoomDetails;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Skeleton } from 'components/common/skeleton';\r\n\r\nconst variants = {\r\n bestRate: 'best-rate',\r\n};\r\n\r\nconst SkeletonSidebarSection = ({ variant, expanded }) => {\r\n return (\r\n \r\n {variant === variants.bestRate && (\r\n <>\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {expanded && !variant && (\r\n <>\r\n \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n \r\n )}\r\n\r\n {!expanded && !variant && (\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nSkeletonSidebarSection.propTypes = {\r\n expanded: PropTypes.bool,\r\n variant: PropTypes.oneOf([...Object.values(variants)]),\r\n};\r\n\r\nexport default SkeletonSidebarSection;\r\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { MdArrowForwardIos } from 'react-icons/md';\n\nimport { FaHeart, FaRegThumbsUp } from 'react-icons/fa';\n\nimport { isValidPrice, makeStatsRequestThrottled } from 'lib';\nimport { Channel } from 'components/channel';\nimport { WIDGET_STATS_SETTINGS } from 'config';\n\nconst BestRateSection = () => {\n const ourPrice = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice\n );\n\n const channels = useSelector((state) => state.miniBookingWidget?.channels);\n\n const data = useSelector(\n (state) => state.miniBookingWidget?.data?.bigPlugin\n );\n const propertyID = data?.propertyID;\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const showSection =\n ourPrice?.price || ourPrice?.loyaltyprice || channels.length > 0;\n\n const hasCart = useSelector(\n (state) => state.miniBookingWidget?.data?.hasCart\n );\n const linkProps = {\n rel: 'noopener noreferrer',\n };\n\n if (!hasCart) {\n linkProps.href = ourPrice ? ourPrice.bigPluginUrl : '';\n linkProps.target = '_blank';\n }\n return (\n showSection && (\n
    \n
    \n \n
    {data?.bestAvailablePriceText}
    \n
    \n
    \n
    \n {/* TODO: MAYBE CREATE A COMPONENT FOR THIS */}\n {isValidPrice(ourPrice?.loyaltyprice) && (\n \n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.booknow,\n propertyID\n )\n }\n >\n
    \n
    \n
    \n {Lang?.ourLowestPrice}\n
    \n
    \n
    \n {ourPrice?.loyaltytext}\n \n \n \n
    \n
    \n \n {ourPrice.loyaltyprice}{' '}\n {ourPrice?.currencySymbol}\n {' '}\n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n )}\n\n {isValidPrice(ourPrice?.price) && (\n \n \n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.booknow,\n propertyID\n )\n }\n >\n
    \n
    \n {data?.officialWebsite}\n
    \n
    \n \n {Lang?.directPrice}\n \n \n \n
    \n
    \n \n {ourPrice?.price}{' '}\n {ourPrice?.currencySymbol}\n {' '}\n
    \n
    \n \n \n \n
    \n
    \n
    \n \n \n )}\n\n {channels?.map((channel) => {\n return (\n \n );\n })}\n \n \n )\n );\n};\n\nexport default BestRateSection;\n","import { useDispatch, useSelector } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport { closeDrawer } from '../../features/drawersSlice';\r\nimport { Collapsible } from '../common/collapsible';\r\nimport { toggle as toggleReviewsDrawer } from '../../features/ReviewsSlice';\r\nexport const RatingsSection = ({ title }) => {\r\n const reviews = useSelector((state) => state.reviews);\r\n const dispatch = useDispatch();\r\n return (\r\n reviews?.reviews.length > 0 && (\r\n
    \r\n \r\n {\r\n event.stopPropagation();\r\n dispatch(\r\n closeDrawer({\r\n drawerId: 'BigBookingWidgetDrawer',\r\n })\r\n );\r\n dispatch(toggleReviewsDrawer());\r\n }}\r\n >\r\n
    \r\n
    \r\n {reviews?.guestScore}\r\n
    \r\n
    \r\n
    \r\n {reviews?.guestScoreValueText}\r\n
    \r\n
    {reviews?.totalReviewsText}
    \r\n
    \r\n
    \r\n\r\n {reviews?.channelScores.map((channel, index) => {\r\n return (\r\n \r\n
    \r\n \r\n {channel.channelName}\r\n
    \r\n
    \r\n {channel.channelScore}\r\n {channel.channelScoreOutOf.length <\r\n 3 ? (\r\n \r\n {channel.channelScoreOutOf}{' '}\r\n  \r\n \r\n ) : (\r\n channel.channelScoreOutOf\r\n )}\r\n
    \r\n
    \r\n );\r\n })}\r\n \r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nRatingsSection.propTypes = {\r\n title: PropTypes.string,\r\n};\r\n","import PropTypes from 'prop-types';\n\nimport { Collapsible } from '../common/collapsible';\n\nimport { DynamicIcon } from 'components/common/dynamicIcon';\n\nexport const WhyBookDirectlySection = ({ title, benefits = [] }) => {\n return (\n benefits.length > 0 && (\n
    \n \n \n {benefits.map((benefit, index) => {\n return (\n
    \n \n
    \n );\n })}\n
    \n \n \n )\n );\n};\n\nWhyBookDirectlySection.propTypes = {\n title: PropTypes.string,\n benefits: PropTypes.array,\n};\n","import { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { FaRegBell } from 'react-icons/fa';\nimport SkeletonSidebarSection from 'components/bigBookingWidgetDrawer/SkeletonSidebarSection';\nimport BestRateSection from 'components/bigBookingWidgetDrawer/BestRateSection';\nimport { RatingsSection } from 'components/bigBookingWidgetDrawer/RatingsSection';\nimport { WhyBookDirectlySection } from 'components/bigBookingWidgetDrawer/WhyBookDirectlySection';\nimport { Switch } from 'components/common/switch';\nimport { VscInfo } from 'react-icons/vsc';\nimport { Button } from 'components/common/button';\nimport { Skeleton } from 'components/common/skeleton';\nimport { setSelectedCancellationAndPaymentPolicyData } from 'features/userSlice';\nimport { closeModal, openModal } from 'features/modalSlice';\nimport './SinglePropertySidebar.css';\n\nconst SinglePropertySidebar = ({ propertyType, mainClass = '' }) => {\n const dispatch = useDispatch();\n const data = useSelector((state) => state.miniBookingWidget?.data);\n const Lang = data?.Lang;\n const isFetchingPrices = useSelector(\n (state) => state.miniBookingWidget.isFetching\n );\n\n const { isTrackPricesModalOpen } = useSelector((state) => state.modal);\n const showScoresComments = data?.showScoresComments;\n const handleInfoIconClick = useCallback((data) => {\n dispatch(setSelectedCancellationAndPaymentPolicyData({ ...data }));\n dispatch(\n openModal({\n modalId: 'CancellationAndPaymentPolicyModal',\n })\n );\n }, []);\n const openTrackPricesModal = useCallback(() => {\n if (!isTrackPricesModalOpen) {\n dispatch(\n openModal({\n modalId: 'TrackPricesModal',\n })\n );\n } else {\n dispatch(\n closeModal({\n modalId: 'TrackPricesModal',\n })\n );\n }\n }, [dispatch, isTrackPricesModalOpen]);\n\n return (\n
    \n
    \n
    \n {isFetchingPrices && (\n \n )}\n\n {!isFetchingPrices && (\n <>\n
    \n \n \n \n {data?.bigPlugin?.priceAlertText}\n
    \n
    \n
    \n
    \n \n {data?.bigPlugin?.checkPriceText}\n \n\n \n handleInfoIconClick({\n modalTitle:\n Lang?.trackPrices,\n modalContent:\n Lang?.priceAlertsText,\n })\n }\n icon={\n \n }\n />\n
    \n\n \n
    \n
    \n \n )}\n
    \n {isFetchingPrices && (\n <>\n \n \n \n \n )}\n\n {!isFetchingPrices && (\n <>\n \n {showScoresComments && (\n \n )}\n\n \n \n )}\n
    \n
    \n );\n};\n\nSinglePropertySidebar.propTypes = {\n propertyType: PropTypes.string,\n mainClass: PropTypes.string,\n};\n\nexport default SinglePropertySidebar;\n","import { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport { BookingHeader } from 'components/bookingHeader';\n\nimport { Dropdown } from 'components/common/dropdown';\n\nimport { Room, SkeletonRoom } from 'components/room';\n\nimport { getBookingWidgetRoomData } from 'features/roomsSlice';\nimport { setCheckInDay, setCheckOutDay, setSortBy } from 'features/userSlice';\n\nimport { useGetBookingData, useGetRoomData, useScrollToTop } from 'hooks';\n\nimport './PropertyDetails.css';\nimport { SinglePropertySidebar } from 'components/singlePropertySidebar';\nimport { LowestRatesSlider } from 'components/lowestRatesSlider';\nimport { flatten } from 'lodash';\nimport { differenceInDays } from 'date-fns';\nconst PropertyDetails = ({\n closeProperyDetails,\n property = {},\n showHeader,\n openPropertyDetails,\n}) => {\n const dispatch = useDispatch();\n const data = useSelector((state) => state.miniBookingWidget?.data);\n const multipropertyPropeties =\n useSelector((state) => state.multiproperty.multipropertyProperties) ||\n [];\n const selectedPropertyId = useSelector(\n (state) => state.multiproperty?.selectedPropertyId\n );\n const propertiesDropdown = multipropertyPropeties?.map((property) => {\n let option = {};\n\n if (selectedPropertyId === property.propertyID) {\n option = {\n dropdownText: property.propertyName,\n dropdownValue: property.propertyID,\n dropdownSelected: true,\n };\n } else {\n option = {\n dropdownText: property.propertyName,\n dropdownValue: property.propertyID,\n dropdownSelected: false,\n };\n }\n return option;\n });\n\n const sortByOptions = data?.bigPlugin?.sortByOptions;\n const sortByText = data?.bigPlugin?.sortByText;\n const roomsUrl = data?.bigPlugin?.allRoomsUrl;\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const getRoomData = useGetRoomData();\n const roomTypes = useSelector((state) => state.rooms.roomTypes);\n\n // TODO: CHANGE THIS\n const isFetchingPrices = useSelector(\n (state) => state.miniBookingWidget.isFetching\n );\n const isFetchingRooms = useSelector((state) => state.rooms?.isFetching);\n const isCartOpen = useSelector((state) => state.cart?.open);\n\n const ref = useScrollToTop([isFetchingRooms, isFetchingPrices]);\n\n useEffect(() => {\n if (roomsUrl) {\n dispatch(getBookingWidgetRoomData({ roomsUrl }));\n }\n }, [roomsUrl, isCartOpen]);\n\n const calendar = useSelector(\n (state) => state.miniBookingWidget?.data?.futureDates\n );\n\n const userCountryCode =\n useSelector((state) => state.user?.language) || 'en-US';\n const { getBookingData } = useGetBookingData();\n const onClick = (day) => {\n let checkOutDate = new Date(day?.date);\n const els = document.querySelectorAll('.ab-daily-lowest-rate');\n for (const element of els) {\n element.classList.remove('ab-day-selected');\n }\n const thisEl = document.querySelectorAll(`[data-date=\"${day?.date}\"]`);\n thisEl[0].classList.add('ab-day-selected');\n checkOutDate = checkOutDate.setDate(\n checkOutDate.getDate() + day?.min_stay\n );\n checkOutDate = new Date(checkOutDate);\n const dateString = checkOutDate\n .toLocaleDateString('en-GB', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n })\n .split('/')\n .reverse()\n .join('-');\n\n const checkOutMonth = checkOutDate.getMonth() + 1;\n const checkOutMontObj = calendar.find((month) => {\n return month.fd_Month === checkOutMonth;\n });\n\n if (!checkOutMontObj) {\n console.error('Month not found');\n return false;\n }\n const checkOuDayObj = checkOutMontObj?.fd_JsonResult?.data?.days.find(\n (day) => {\n return day.date === dateString;\n }\n );\n if (!checkOuDayObj) {\n console.error('Day not found');\n return false;\n }\n dispatch(setCheckInDay({ day: day }));\n\n dispatch(setCheckOutDay({ day: checkOuDayObj }));\n\n getBookingData({\n checkInDate: day?.date,\n checkOutDate: checkOuDayObj?.date,\n propertyId: selectedPropertyId,\n });\n return false;\n };\n const initialDate = useSelector((state) => state.user?.initialDate);\n const [lowestRateDays, lowestRateNextDays, lowestRateMonthIndexes] =\n useMemo(() => {\n const filteredNextDays = [];\n const filteredMonthIndexes = [];\n const monthsToDisplay = calendar?.slice(0, 2);\n const filteredDays = monthsToDisplay.map((month, monthIndex) => {\n return month?.fd_JsonResult?.data?.days?.filter(\n (day, dayIndex, daysArr) => {\n const today = new Date(initialDate);\n const thisDay = new Date(day?.date);\n if (differenceInDays(thisDay, today) >= 0) {\n const nextDay = daysArr[dayIndex + 1];\n\n filteredMonthIndexes.push(monthIndex);\n filteredNextDays.push(nextDay);\n return day;\n }\n return false;\n }\n );\n });\n return [\n flatten(filteredDays),\n filteredNextDays,\n filteredMonthIndexes,\n ];\n }, [calendar]);\n\n return (\n
    \n {showHeader && (\n \n {\n const propertyId = option.dropdownValue;\n const parentPropertyId = property?.parentPropertyID;\n openPropertyDetails(propertyId, parentPropertyId);\n }}\n options={propertiesDropdown || []}\n extraClass=\"ab-properties-dropdown\"\n />\n \n )}\n\n
    \n \n\n
    \n {data?.channelManager !== 'guesty' && (\n \n )}\n\n
    \n {\n // TODO: NOT SURE ABOUT THIS\n dispatch(\n setSortBy({\n sortBy: option.dropdownValue,\n })\n );\n getRoomData({\n sortBy: option.dropdownValue,\n });\n }}\n options={sortByOptions || []}\n />\n
    \n\n \n {(isFetchingRooms || isFetchingPrices) && (\n <>\n \n \n \n \n )}\n {!isFetchingRooms &&\n !isFetchingPrices &&\n roomTypes.map((room, index) => {\n return (\n \n );\n })}\n
    \n
    \n
    \n \n );\n};\n\nPropertyDetails.propTypes = {\n closeProperyDetails: PropTypes.func,\n property: PropTypes.shape({\n propertyName: PropTypes.string,\n }),\n showHeader: PropTypes.bool,\n openPropertyDetails: PropTypes.func,\n};\n\nexport default PropertyDetails;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { DynamicIcon } from '../common/dynamicIcon';\r\n\r\nconst SidebarMenuItem = ({ menuName, menuLink, menuIcon, onClick }) => {\r\n if (menuLink) {\r\n return (\r\n
  • \r\n \r\n \r\n {menuName}\r\n \r\n
  • \r\n );\r\n }\r\n return (\r\n
  • \r\n \r\n {menuName}\r\n
  • \r\n );\r\n};\r\n\r\nSidebarMenuItem.propTypes = {\r\n menuName: PropTypes.string,\r\n menuLink: PropTypes.string,\r\n menuIcon: PropTypes.string,\r\n onClick: PropTypes.func,\r\n};\r\n\r\nexport default SidebarMenuItem;\r\n","import { useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { VscMenu } from 'react-icons/vsc';\r\n\r\nimport SidebarMenuItem from './SidebarMenuItem';\r\nimport { WIDGET_ACTIONS } from '../../constants';\r\n\r\nimport { openModal } from 'features/modalSlice';\r\nimport { applyImportantStyles } from '../../lib';\r\n\r\nimport './SidebarMenu.css';\r\n\r\nconst SidebarMenu = ({ menuItems, onClick }) => {\r\n const poweredBy =\r\n useSelector((state) => state.miniBookingWidget?.data?.poweredBy) || {};\r\n\r\n const dispatch = useDispatch();\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleMouseEnter = () => {\r\n if (!isOpen) {\r\n setIsOpen(true);\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n if (isOpen) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n {\r\n applyImportantStyles(el, {\r\n 'font-size': '12px',\r\n });\r\n }}\r\n >\r\n \r\n {\r\n applyImportantStyles(el, {\r\n display: 'unset',\r\n float: 'unset',\r\n });\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSidebarMenu.propTypes = {\r\n menuItems: PropTypes.array,\r\n onClick: PropTypes.func,\r\n};\r\n\r\nexport default SidebarMenu;\r\n","import { useCallback, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport axios from 'axios';\r\nimport { isEmpty } from 'lodash';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport { Modal } from 'components/common/modal';\r\nimport { closeModal } from 'features/modalSlice';\r\n\r\nimport { Checkbox } from 'components/common/checkbox';\r\nimport { Input } from 'components/common/input';\r\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\r\n\r\nimport { apiConfig, COOKIE_NAME } from '../../config';\r\nimport { useGetBookingData } from 'hooks';\r\nimport { getCookie, applyImportantStyles } from 'lib';\r\n\r\nimport './TrackPricesModal.css';\r\n\r\nconst TrackPrices = () => {\r\n const dispatch = useDispatch();\r\n\r\n const bookingRefText = useSelector(\r\n (state) => state.miniBookingWidget?.data?.bookingRefText\r\n );\r\n const colors = useSelector(\r\n (state) => state.miniBookingWidget?.data?.colors\r\n );\r\n const { isTrackPricesModalOpen } = useSelector((state) => state.modal);\r\n const data = useSelector((state) => state.miniBookingWidget?.data);\r\n const Lang = data?.Lang;\r\n const propertyID = data?.propertyID;\r\n const ourPrice = data?.ourPrice;\r\n const cookiepolicyLink = data?.cookiepolicyLink;\r\n\r\n const [email, setEmail] = useState('');\r\n const [acceptEmailNotifications, setAcceptEmailNotifications] =\r\n useState(false);\r\n const [errors, setErrors] = useState({});\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const { userBookingData } = useGetBookingData();\r\n\r\n const isMultiproperty = useSelector(\r\n (state) => state.user?.isMultipropertyTrackPrices === true\r\n );\r\n\r\n const handleSubmit = async (event) => {\r\n event.preventDefault();\r\n const errors = validateInputs();\r\n\r\n if (!isEmpty(errors)) {\r\n setErrors(errors);\r\n return;\r\n }\r\n\r\n const cookie = getCookie(COOKIE_NAME);\r\n // let bookLink = `${apiConfig.reserveOnlineUrl}?src=470^adults=${userBookingData?.adults}`;\r\n // bookLink += `^children=${userBookingData?.children}^lang=${userBookingData?.localeLanguage}`;\r\n // bookLink += `^currency=${userBookingData?.currency}^checkin=${userBookingData?.checkin}`;\r\n // bookLink += `^checkout=${userBookingData?.checkout}^nights=0`;\r\n\r\n try {\r\n setIsLoading(true);\r\n const response = await axios.post(apiConfig?.trackPrices, {\r\n ...userBookingData,\r\n curCode: userBookingData?.currency,\r\n lang: userBookingData?.localeLanguage,\r\n email,\r\n cookie,\r\n propertyID,\r\n price: ourPrice?.price,\r\n // booklink: bookLink,\r\n isMultiproperty: isMultiproperty,\r\n });\r\n\r\n if (response?.data?.toLowerCase() === 'ok') {\r\n toast.success(Lang?.verifyEmailMsg, {\r\n autoClose: true,\r\n theme: 'colored',\r\n });\r\n }\r\n } catch (error) {\r\n toast.error(Lang?.networkError, {\r\n autoClose: true,\r\n theme: 'colored',\r\n });\r\n }\r\n\r\n handleModalClose();\r\n setIsLoading(false);\r\n };\r\n\r\n const handleModalClose = useCallback(() => {\r\n dispatch(closeModal({ modalId: 'TrackPricesModal' }));\r\n setErrors({});\r\n }, [dispatch, closeModal, setErrors]);\r\n\r\n const validateInputs = () => {\r\n const errors = {};\r\n\r\n const emailRegex =\r\n // eslint-disable-next-line no-useless-escape\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n if (!email) {\r\n errors.email = Lang?.fillInYourEmail;\r\n } else if (!email.match(emailRegex)) {\r\n errors.email = Lang?.pleaseEnterValidEmail;\r\n }\r\n\r\n if (!acceptEmailNotifications) {\r\n errors.acceptEmailNotifications = Lang?.acceptTermsAndConditions;\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n const renderContent = () => {\r\n return (\r\n
    \r\n

    {bookingRefText}

    \r\n\r\n \r\n
    \r\n
    \r\n \r\n setEmail(event.target.value)\r\n }\r\n isRequired\r\n isInvalid={Boolean(errors?.email)}\r\n errorMsg={errors.email}\r\n id=\"track-prices-email\"\r\n autoFocus\r\n ref={(el) => {\r\n applyImportantStyles(el, {\r\n border: '1px solid #ccc !important;',\r\n padding: '10px !important;',\r\n });\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n setAcceptEmailNotifications(\r\n event.target.checked\r\n )\r\n }\r\n >\r\n {Lang?.receiveEmailNotification}\r\n \r\n
    \r\n\r\n {errors?.acceptEmailNotifications && (\r\n
    \r\n {{errors.acceptEmailNotifications}}\r\n
    \r\n )}\r\n
    \r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n Lang?.priceTracking\r\n )}\r\n \r\n \r\n\r\n

    \r\n {Lang?.bySubscribing}{' '}\r\n \r\n {Lang?.privacyPolicy}\r\n \r\n

    \r\n
    \r\n );\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default TrackPrices;\r\n","import { BsCheck2Circle } from 'react-icons/bs';\nimport './FinalStepBookingForm.css';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\n\nfunction FinalStepBookingForm({ bookingID }) {\n const phone = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyPhone\n );\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n return (\n
    \n \n

    Your Booking is Confirmed!

    \n
    \n {Lang?.yourBookingIsConfirmed}.\n
    \n
    \n {Lang?.your}{' '}\n Purchase No.{' '}\n {Lang?.isText} {bookingID}\n
    \n
    \n {Lang?.inTheNextMinutesYoullReceiveAnEmail}\n
    \n
    \n {Lang?.withBookingDetails}.\n
    \n
    \n {Lang?.pleasePresentThisConfirmationAtCheckIn}.\n
    \n
    \n {Lang?.needHelpWithYourReservation}?\n
    \n
    \n \n {Lang?.contactTheProperty}\n {' '}\n {Lang?.phone}: {phone}\n
    \n
    \n );\n}\nFinalStepBookingForm.propTypes = {\n bookingID: PropTypes.string,\n};\n\nexport default FinalStepBookingForm;\n","import axios from 'axios';\nimport { Input } from 'components/common/input';\nimport { apiConfig, COOKIE_NAME } from 'config';\nimport { useGetBookingData } from 'hooks';\nimport { getCookie } from 'lib';\nimport { useCallback, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { toast } from 'react-toastify';\nimport './BookingWidgetForm.css';\nimport { isArray, isEmpty } from 'lodash';\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\nimport { Checkbox } from 'components/common/checkbox';\nimport PropTypes from 'prop-types';\n\nimport {\n FaChartBar,\n FaCheck,\n FaEnvelope,\n FaLock,\n FaRegCalendarAlt,\n FaUserAlt,\n} from 'react-icons/fa';\nimport {\n setSelectedRoomForm,\n setSelectedRateID,\n setSelectedFormRoom,\n} from 'features/roomBookingFormSlice';\nimport Carousel from 'nuka-carousel';\nimport { IoIosArrowBack, IoIosArrowForward } from 'react-icons/io';\nimport { Dropdown } from 'components/common/dropdown';\nimport { FinalStepBookingForm } from 'components/finalStepBookingForm';\nimport { setSelectedCancellationAndPaymentPolicyData } from 'features/userSlice';\nimport { openModal } from 'features/modalSlice';\n\nfunction BookingWidgetForm({ extraClass }) {\n const dispatch = useDispatch();\n const { userBookingData } = useGetBookingData();\n const colors = useSelector(\n (state) => state.miniBookingWidget?.data?.colors\n );\n const pluginCountries = useSelector(\n (state) => state.miniBookingWidget?.data?.pluginCountries\n );\n const currencySymbol = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice?.currencySymbol\n );\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const propertyID = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyID\n );\n\n const div1Ref = useRef();\n const div2Ref = useRef();\n const div3Ref = useRef();\n\n const rateID = useSelector((state) => state.roomForm?.selectedRoomIndex);\n const roomForm = useSelector((state) => state.roomForm) || {};\n\n const room = roomForm?.room;\n const rate = roomForm?.room?.rates[0];\n\n const [firstName, setFirstName] = useState('');\n const [lastname, setLastname] = useState('');\n const [email, setEmail] = useState('');\n const [phone, setPhone] = useState('');\n const [nationality, setNationality] = useState(\n pluginCountries[0]?.countryName\n );\n const [specialRequests, setSpecialRequests] = useState('');\n const [checked, setChecked] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [errors, setErrors] = useState({});\n const [currentStep, setCurrentStep] = useState(1);\n const [postalCode, setPostalCode] = useState('');\n const [bookingID, setBookingID] = useState(null);\n const [address, setAddress] = useState('');\n const [city, setCity] = useState('');\n const [stateRegion, setStateRegion] = useState('');\n const [card, setCard] = useState({\n cardno: '',\n cardtype: '',\n expirydt: '',\n cvv: '',\n cardname: '',\n });\n\n const handleInfoIconClick = useCallback((data) => {\n dispatch(setSelectedCancellationAndPaymentPolicyData({ ...data }));\n dispatch(\n openModal({\n modalId: 'CancellationAndPaymentPolicyModal',\n })\n );\n }, []);\n\n const handleScroll = (ref) => {\n ref.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start',\n });\n };\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const validateInputs = () => {\n const errors = {};\n let scrolled = false;\n if (!firstName) {\n errors.firstName = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!lastname) {\n errors.lastname = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!email || !emailRegex.test(email)) {\n errors.email = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!phone) {\n errors.phone = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n // if (!city) {\n // errors.city = Lang?.requiredField;\n // if (!scrolled) {\n // scrolled = !scrolled;\n // handleScroll(div1Ref);\n // }\n // }\n\n // if (!nationality) {\n // errors.nationality = Lang?.requiredField;\n // if (!scrolled) {\n // scrolled = !scrolled;\n // handleScroll(div1Ref);\n // }\n // }\n\n if (!card?.cardno) {\n errors.cardno = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div2Ref);\n }\n }\n\n if (!card?.expirydt) {\n errors.expirydt = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div2Ref);\n }\n }\n\n if (!card?.cvv) {\n errors.cvv = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div2Ref);\n }\n }\n\n if (!card?.cardname) {\n errors.cardname = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div2Ref);\n }\n }\n\n if (!checked) {\n errors.checked = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div3Ref);\n }\n }\n\n return errors;\n };\n\n const dropdownOptions = isArray(pluginCountries)\n ? pluginCountries.map((item) => {\n let countryName = item?.countryName;\n if (item?.countryName === 'EN') {\n countryName = 'US';\n }\n\n return {\n dropdownText: item?.countryLocalFullName,\n dropdownImg: item?.countryImg,\n dropdownSelected: item?.dropdownSelected,\n dropdownExtraData: {\n countryCode: countryName,\n },\n dropdownValue: countryName,\n };\n })\n : [];\n\n const onChange = (e) => {\n const cartypeNew = cardnumber(e.target.value);\n setCard({\n ...card,\n cardno: e.target.value,\n cardtype: cartypeNew,\n });\n };\n const cardnumber = (inputtxt) => {\n const matches = inputtxt.match(/(\\d+)/);\n let cardno = '';\n if (matches) {\n cardno = inputtxt.split(' - ').join('');\n }\n let cardtype1 = card.cardtype;\n\n const visa = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;\n const mastercardRegEx = /^(?:5[1-5][0-9]{14})$/;\n const amexpRegEx = /^(?:3[47][0-9]{13})$/;\n const discovRegEx = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;\n if (visa.test(cardno) === true) {\n // eg:4651970022334445\n cardtype1 = 'Visa';\n } else if (mastercardRegEx.test(cardno) === true) {\n cardtype1 = 'MasterCard';\n } else if (amexpRegEx.test(cardno) === true) {\n cardtype1 = 'AmericanExpress';\n } else if (discovRegEx.test(cardno) === true) {\n cardtype1 = 'Discover';\n }\n return cardtype1;\n };\n\n const ccFormat = (value) => {\n const v = value.replace(/[^0-9]/gi, '').substr(0, 16);\n\n const parts = [];\n for (let i = 0; i < v.length; i += 4) {\n parts.push(v.substr(i, 4));\n }\n return parts.length > 1 ? parts.join(' - ') : value;\n };\n const expriyFormat = (value) => {\n const expdate = value;\n const expDateFormatter =\n expdate.replace(/\\//g, '').substring(0, 2) +\n (expdate.length > 2 ? '/' : '') +\n expdate.replace(/\\//g, '').substring(2, 4);\n\n return expDateFormatter;\n };\n const onChangeExp = (e) => {\n setCard({\n ...card,\n expirydt: e.target.value,\n });\n };\n const onChangeCVV = (e) => {\n setCard({\n ...card,\n cvv: e.target.value,\n });\n };\n const onChangeCardName = (e) => {\n setCard({\n ...card,\n cardname: e.target.value,\n });\n };\n\n const closeRoomForm = () => {\n dispatch(setSelectedRoomForm({ selectedRoomFormIndex: null }));\n dispatch(setSelectedRateID({ selectedRateID: null }));\n dispatch(setSelectedFormRoom({ room: {} }));\n };\n\n // const handleModalClose = useCallback(() => {\n // closeRoomForm();\n // });\n\n const tmpUserBookingData = { ...userBookingData };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n const errors = validateInputs();\n setErrors(errors);\n\n if (!isEmpty(errors)) {\n return;\n }\n\n const cookie = getCookie(COOKIE_NAME);\n let tmpNationality = nationality;\n if (nationality === 'EN') {\n tmpNationality = 'US';\n }\n try {\n setIsLoading(true);\n const response = await axios.post(apiConfig?.roomForm, {\n ...tmpUserBookingData,\n lang: userBookingData?.localeLanguage,\n firstName,\n lastname,\n email,\n phone,\n nationality: tmpNationality,\n specialRequests,\n card: card.cardno,\n cvv: card.cvv,\n expiration: card.expirydt,\n cardName: card.cardname,\n cardtype: card.cardtype,\n cookie,\n propertyID,\n rateID,\n rateid: rate.rateID,\n timeofday: Date.now(),\n address,\n city,\n stateRegion,\n postalCode,\n price: rate?.pricing?.price,\n roomTypeID: rate?.roomTypeID,\n rateDetailID: rate?.rateDetailID,\n discountID: rate?.discountID,\n });\n\n if (response?.data.split(',')[0].toLowerCase() === 'booked') {\n toast.success(Lang?.successMessage, {\n autoClose: true,\n theme: 'colored',\n });\n setBookingID(response?.data.split(',')[1]);\n setCurrentStep(2);\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n\n // handleModalClose();\n setIsLoading(false);\n };\n const d1 = Date.parse(tmpUserBookingData.checkin);\n const d2 = Date.parse(tmpUserBookingData.checkout);\n\n const nights = Math.round((d2 - d1) / (1000 * 60 * 60 * 24));\n\n let step1Class = '';\n let step2Class = '';\n let cursorStyle = {};\n if (currentStep === 1) {\n step1Class = ' ab-active';\n cursorStyle = { cursor: 'pointer' };\n } else {\n step2Class = ' ab-active';\n }\n\n if (isEmpty(room)) {\n return null;\n }\n\n let redBorderClass = '';\n if (errors?.nationality) {\n redBorderClass = 'ab-reb-border';\n }\n return (\n
    \n
    \n
    \n
    \n \n
    1
    \n \n {Lang.backTo} {Lang.roomSelection} 1/1\n
    \n
    \n
    \n
    2
    \n
    \n {Lang.billingInformation}\n
    \n
    \n
    \n
    \n \n
    \n
    {Lang.confirm}
    \n
    \n
    \n
    \n
    \n {currentStep === 1 ? (\n \n
    \n
    \n
    \n
    \n {Lang.yourBookingDetails}\n
    \n
    \n {Array.isArray(room?.photos) &&\n room.photos.length > 0 && (\n
    \n \n ),\n nextButtonText:\n (\n \n ),\n prevButtonClassName:\n 'ab-image-carousel-prev-btn',\n nextButtonClassName:\n 'ab-image-carousel-next-btn',\n }}\n cellSpacing={10}\n >\n {room.photos.map(\n (\n photo,\n index\n ) => {\n return (\n \n );\n }\n )}\n \n
    \n )}\n
    \n\n
    \n
    \n {room?.name}\n
    \n
    \n
    \n \n
    \n
    \n {tmpUserBookingData.checkin\n .split('-')\n .reverse()\n .join('-')}{' '}\n -{' '}\n {tmpUserBookingData.checkout\n .split('-')\n .reverse()\n .join('-')}\n
    \n
    \n
    \n
    \n \n
    \n
    \n {Lang.Adults}:{' '}\n {tmpUserBookingData.adults}\n
    \n
    \n
    \n
    \n \n
    \n
    \n Rate: {rate?.rate}\n {' - '}\n {\n rate?.cancelationPolicyType\n }\n
    \n
    \n
    \n
    \n {Lang.total}{' '}\n \n {rate?.pricing?.price}{' '}\n {currencySymbol}\n \n
    \n
    \n \n {Lang.roomPrice} (\n {tmpUserBookingData.rooms}{' '}\n {Lang.rooms} × {nights}{' '}\n {Lang.nights})\n \n \n {rate?.pricing?.price}{' '}\n {currencySymbol}\n \n
    \n
    \n\n
    \n
    \n {Lang.howMuchWillItCostToCancel}?\n
    \n \n {rate?.rateDescription && (\n '\n ),\n }}\n >\n )}\n\n {rate?.paymentPolicy && (\n '\n ),\n }}\n >\n )}\n {rate?.cancelationPolicy && (\n '\n ),\n }}\n >\n )}\n
    \n
    \n {/* {rate?.paymentPolicy && (\n
    \n
    \n {Lang.paymentPolicy}\n
    \n
    \n '\n ),\n }}\n >\n
    \n
    \n )} */}\n
    \n
    \n
    \n
    \n \n
    \n {Lang.contactAndPayment}\n
    \n\n \n
    \n
    \n \n \n setFirstName(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.firstName\n )}\n errorMsg={\n errors.firstName\n }\n isRequiredBorder={true}\n id=\"form-FirstName\"\n />\n
    \n
    \n \n \n setLastname(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.lastname\n )}\n errorMsg={\n errors.lastname\n }\n isRequiredBorder={true}\n id=\"form-LastName\"\n />\n
    \n
    \n\n
    \n
    \n \n \n setEmail(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.email\n )}\n errorMsg={errors.email}\n isRequiredBorder={true}\n id=\"form-Email\"\n />\n
    \n
    \n \n \n setPhone(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.phone\n )}\n errorMsg={errors.phone}\n isRequiredBorder={true}\n id=\"form-Phone\"\n />\n
    \n
    \n\n
    \n
    \n \n \n setCity(\n e.target.value\n )\n }\n className=\"ab-input\"\n // isRequired\n // isInvalid={Boolean(\n // errors?.city\n // )}\n // errorMsg={errors?.city}\n // isRequiredBorder={true}\n id=\"form-City\"\n />\n
    \n \n \n\n
    \n {\n setNationality(\n option\n ?.dropdownExtraData\n ?.countryCode\n );\n }}\n searchable\n options={\n dropdownOptions ||\n []\n }\n showTextWhenSelected={\n true\n }\n extraClass={`ab-nationality-dropdown ${redBorderClass}`}\n id=\"form-Nationality\"\n />\n
    \n
    \n
    \n\n
    \n
    \n \n \n setStateRegion(\n e.target.value\n )\n }\n className=\"ab-input\"\n />\n
    \n
    \n \n \n setPostalCode(\n e.target.value\n )\n }\n className=\"ab-input\"\n />\n
    \n
    \n\n \n
    \n \n \n setAddress(\n e.target.value\n )\n }\n className=\"ab-input\"\n />\n
    \n
    \n
    \n\n
    \n
    \n \n \n setSpecialRequests(\n e.target.value\n )\n }\n type=\"textarea\"\n />\n
    \n
    \n \n \n\n \n
    \n
    \n {Lang.securePayment}\n
    \n
    \n {\n Lang.allCardDetailsAreEncrypted\n }\n .\n
    \n
    \n
    \n
    \n \n {Lang.creditCardUpper}\n \n
    \n \n
    \n
    \n\n \n
    \n
    \n \n {\n if (\n !/[0-9]/.test(\n event.key\n )\n ) {\n event.preventDefault();\n }\n }}\n id=\"form-Cardno\"\n />\n
    \n
    \n
    \n \n \n
    \n
    \n \n {\n if (\n !/[0-9]/.test(\n event.key\n )\n ) {\n event.preventDefault();\n }\n }}\n type=\"password\"\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.cvv\n )}\n errorMsg={\n errors?.cvv\n }\n isRequiredBorder={\n true\n }\n id=\"form-Cvv\"\n />\n
    \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n {\n Lang.howMuchWillItCostToCancel\n }\n ?\n
    \n
    \n '\n ),\n }}\n >\n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n {\n tmpUserBookingData.checkin\n }{' '}\n -{' '}\n {\n tmpUserBookingData.checkout\n }\n
    \n
    \n
    \n
    \n \n
    \n \n {Lang.Adults}:{' '}\n {\n tmpUserBookingData.adults\n }\n
    \n \n \n\n
    \n \n \n setChecked(\n event.target.checked\n )\n }\n >\n \n {\n Lang?.iHaveReadAndIAcceptThe\n }\n \n \n handleInfoIconClick({\n cancellationPolicyType:\n rate?.cancelationPolicyType,\n cancellationPolicy:\n rate?.cancelationPolicy,\n cancellationPenalty:\n rate?.cancelationPenalty,\n paymentPolicy:\n rate?.paymentPolicy,\n })\n }\n >\n {Lang?.termsAndConditions}\n \n {Lang?.TmpTermsAndConditions && (\n <>\n \n &\n \n \n {\n Lang?.privacyPolicy\n }\n \n \n )}\n\n {Boolean(errors?.checked) && (\n \n {Lang?.requiredField}\n \n )}\n \n
    \n \n \n \n {\n Lang?.wellSendConfirmationOfBookingToEmail\n }{' '}\n {email}\n \n \n \n \n
    \n \n {isLoading ? (\n \n ) : (\n Lang?.confirmAndBook\n )}\n \n
    \n \n \n \n ) : (\n \n )}\n \n \n \n );\n}\nBookingWidgetForm.propTypes = {\n extraClass: PropTypes.string,\n};\n\nexport default BookingWidgetForm;\n","import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Modal } from 'components/common/modal';\n\nimport { closeModal } from 'features/modalSlice';\nimport { setTermsAndConditionsData } from 'features/userSlice';\n\nimport './TermsAndConditionsModal.css';\n\nconst TermsAndConditionsModal = ({ title }) => {\n const dispatch = useDispatch();\n\n const { isTermsAndConditionsModalOpen } = useSelector(\n (state) => state.modal\n );\n\n const termsAndConditionsData = useSelector(\n (state) => state.user?.setTermsAndConditionsData\n );\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const modalTitle =\n termsAndConditionsData?.modalTitle ||\n Lang?.termsAndConditions ||\n 'Terms and Conditions';\n const handleModalClose = () => {\n dispatch(closeModal({ modalId: 'TermsAndConditionsModal' }));\n dispatch(setTermsAndConditionsData(null));\n };\n\n const renderContent = () => {\n return (\n
    \n
    \n
    \n\n

    {termsAndConditionsData?.cancellationPolicyType}

    \n
    \n \n \n {termsAndConditionsData?.paymentPolicy && (\n
    \n

    {Lang?.paymentPolicy}

    \n
    \n \n )}\n \n );\n };\n\n return (\n \n );\n};\nTermsAndConditionsModal.propTypes = {\n title: PropTypes.string,\n};\n\nexport default TermsAndConditionsModal;\n","import { useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport { BsCalendarWeekFill } from 'react-icons/bs';\nimport PropTypes from 'prop-types';\nimport { formatDate } from 'lib';\nimport { dateFormatStr } from '../../constants';\n\nconst BookingCalendarLite = ({ onClick, datesOptions }) => {\n const userCountryCode =\n useSelector((state) => state.user?.language) || 'en-US';\n\n const tempCheckInDate = datesOptions?.checkin;\n const tempCheckOutDate = datesOptions?.checkout;\n\n const bookingCalendarRef = useRef(null);\n\n if (!tempCheckInDate || !tempCheckOutDate) {\n return null;\n }\n\n return (\n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n {formatDate(\n new Date(tempCheckInDate),\n dateFormatStr,\n userCountryCode\n )}\n \n \n
    \n\n
    \n\n
    \n \n \n \n \n \n {formatDate(\n new Date(tempCheckOutDate),\n dateFormatStr,\n userCountryCode\n )}\n \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n );\n};\n\nBookingCalendarLite.propTypes = {\n onClick: PropTypes.func,\n datesOptions: PropTypes.object,\n};\n\nexport default BookingCalendarLite;\n","import { useCallback, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { FaUser } from 'react-icons/fa';\n\nimport { useOnClickOutside } from 'hooks';\n\nimport PropTypes from 'prop-types';\nimport RoomsAdultsSearch from 'components/roomsAdultsSearch/RoomsAdultsSearch';\n\nconst BookingDropdownLite = ({ onChange, searchOptions }) => {\n const [isOpen, setIsOpen] = useState(false);\n const bookingDropdownRef = useRef(null);\n\n const disableChildrenSearch = useSelector(\n (state) => state.miniBookingWidget?.data?.disableChildrenSearch\n );\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n let displayText = `${searchOptions.numberOfRooms} ${Lang?.Rooms}, ${searchOptions.adults} ${Lang?.Adults}`;\n\n if (!disableChildrenSearch) {\n displayText += `, ${searchOptions.children} ${Lang?.Children}`;\n }\n\n const handleClickOutside = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n useOnClickOutside(bookingDropdownRef, handleClickOutside);\n return (\n
    \n
    setIsOpen(!isOpen)}>\n \n
    \n
    \n
    \n \n \n \n \n \n \n {displayText}\n \n
    \n
    \n
    \n \n
    \n\n {isOpen && (\n \n
    \n \n
    \n
    \n )}\n \n );\n};\n\nBookingDropdownLite.propTypes = {\n onChange: PropTypes.func,\n searchOptions: PropTypes.object,\n};\n\nexport default BookingDropdownLite;\n","import axios from 'axios';\nimport { BookingCalendar } from 'components/bookingCalendar';\nimport { BookingCalendarLite } from 'components/bookingCalendarLite';\nimport { BookingDropdownLite } from 'components/bookingDropdownLite';\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\nimport { Drawer } from 'components/common/drawer';\nimport { Dropdown } from 'components/common/dropdown';\nimport { Input } from 'components/common/input';\nimport { Modal } from 'components/common/modal';\nimport { apiConfig } from 'config';\nimport { closeModal } from 'features/modalSlice';\nimport { useGetBookingData } from 'hooks';\nimport { isMobileDeviceRequest } from 'lib';\nimport { isArray, isEmpty } from 'lodash';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport * as constants from './../../constants';\nimport { toast } from 'react-toastify';\nimport { FaRegCheckCircle, FaRegTimesCircle } from 'react-icons/fa';\n\nimport { BookingHeader } from 'components/bookingHeader';\nimport './OfferModal.css';\nimport { Checkbox } from 'components/common/checkbox';\n\nconst OfferModal = () => {\n const dispatch = useDispatch();\n const isOpen = useSelector((state) => state.modal.isOfferModalOpen);\n const handleModalClose = useCallback(() => {\n if (!isCalendarOpenModal && !isCalendarOpenDrawer) {\n dispatch(closeModal({ modalId: 'OfferModal' }));\n setTimeout(clearValues, 1000);\n }\n });\n const colors = useSelector(\n (state) => state.miniBookingWidget?.data?.colors\n );\n const propertyID = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyID\n );\n const pluginCountries = useSelector(\n (state) => state.miniBookingWidget?.data?.pluginCountries\n );\n const tempCheckInDate = useSelector(\n (state) => state.user?.checkInDay?.date\n );\n const tempCheckOutDate = useSelector(\n (state) => state.user?.checkOutDay?.date\n );\n\n const isMobileDevice = isMobileDeviceRequest();\n const { userBookingData } = useGetBookingData();\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n const [message, setMessage] = useState('');\n const [email, setEmail] = useState('');\n const [phone, setPhone] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isCompleted, setIsCompleted] = useState('');\n const [checked, setChecked] = useState(false);\n const [searchOptions, setSearchOptions] = useState({\n numberOfRooms: 1,\n adults: 2,\n children: 0,\n });\n const [datesOptions, setDatesOptions] = useState({\n checkin: '',\n checkout: '',\n tmpcheckout: {},\n });\n\n const commonStyles = {\n backgroundColor: colors?.primaryBackgroundColor,\n color: colors?.primaryTextColor,\n };\n\n useEffect(() => {\n // Update the state after the initial render\n setDatesOptions((prevOptions) => ({\n ...prevOptions,\n checkin: tempCheckInDate,\n checkout: tempCheckOutDate,\n tmpcheckout: {},\n }));\n }, [tempCheckInDate, tempCheckOutDate]);\n const [isCalendarOpenModal, setCalendarOpenModal] = useState(false);\n const [isCalendarOpenDrawer, setCalendarOpenDrawer] = useState(false);\n const [nationality, setNationality] = useState(\n pluginCountries[0]?.countryName\n );\n const [errors, setErrors] = useState({});\n const [isLoading, setIsLoading] = useState(false);\n\n const dropdownOptions = isArray(pluginCountries)\n ? pluginCountries.map((item) => {\n let countryName = item?.countryName;\n if (item?.countryName === 'EN') {\n countryName = 'US';\n }\n\n return {\n dropdownText: item?.countryLocalFullName,\n dropdownImg: item?.countryImg,\n dropdownSelected: item?.dropdownSelected,\n dropdownExtraData: {\n countryCode: countryName,\n },\n dropdownValue: countryName,\n };\n })\n : [];\n\n let mobileClass = '';\n if (isMobileDevice) {\n mobileClass = 'offer-modal-mobile';\n }\n\n const clearValues = () => {\n setFirstName('');\n setLastName('');\n setMessage('');\n setEmail('');\n setPhone('');\n setSearchOptions({ numberOfRooms: 1, adults: 2, children: 0 });\n setDatesOptions((prevOptions) => ({\n ...prevOptions,\n checkin: tempCheckInDate,\n checkout: tempCheckOutDate,\n tmpcheckout: {},\n }));\n setIsCompleted('');\n setErrorMessage('');\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n const errors = validateInputs();\n\n if (!isEmpty(errors)) {\n setErrors(errors);\n return;\n }\n\n let tmpNationality = nationality;\n if (nationality === 'EN') {\n tmpNationality = 'US';\n }\n try {\n setIsLoading(true);\n const response = await axios.post(apiConfig?.getOfferUrl, {\n curCode: userBookingData?.currency,\n lang: userBookingData?.localeLanguage,\n firstName,\n email,\n phone,\n lastName,\n nationality: tmpNationality,\n propertyID,\n message,\n adults: searchOptions.adults,\n children: searchOptions.children,\n rooms: searchOptions.numberOfRooms,\n checkin: datesOptions.checkin,\n checkout: datesOptions.checkout,\n });\n\n if (response?.data.toLowerCase() !== 'ok') {\n setIsCompleted('false');\n setErrorMessage(response?.data);\n } else {\n setIsCompleted('true');\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n\n // handleModalClose();\n setIsLoading(false);\n };\n\n const validateInputs = () => {\n const errors = {};\n\n const emailRegex =\n // eslint-disable-next-line no-useless-escape\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n if (!firstName) {\n errors.firstName = Lang?.requiredField;\n }\n\n if (!lastName) {\n errors.lastName = Lang?.requiredField;\n }\n\n if (!email) {\n errors.email = Lang?.requiredField;\n } else if (!email.match(emailRegex)) {\n errors.email = Lang?.pleaseEnterValidEmail;\n }\n\n if (!phone) {\n errors.phone = Lang?.requiredField;\n }\n\n if (!checked) {\n errors.checked = Lang?.requiredField;\n }\n\n return errors;\n };\n\n const handleCalendarOpen = () => {\n if (!isMobileDevice) {\n setCalendarOpenModal(true);\n } else {\n setCalendarOpenDrawer(true);\n }\n };\n\n let redBorderClass = '';\n if (errors?.nationality) {\n redBorderClass = 'ab-reb-border';\n }\n const [currentMonthIndex, setCurrentMonthIndex] = useState(0);\n const renderBookingCalendar = () => (\n \n setDatesOptions((prevOptions) => ({\n ...prevOptions,\n [key]: value,\n }))\n }\n mobile={isMobileDevice}\n setCalendarOpen={() => setCalendarOpenModal(false)}\n datesOptions={datesOptions}\n />\n );\n\n const renderContent = () => {\n return (\n \n {isCompleted === 'true' ? (\n \n
    \n \n
    \n handleModalClose()}\n className=\"ab-offer-success-bottom\"\n >\n
    \n {Lang?.great}!\n
    \n
    \n {Lang?.checkYourEmailForOurProposal}.\n
    \n \n X {Lang?.close}\n \n \n \n ) : isCompleted === 'false' ? (\n \n
    \n \n
    \n handleModalClose()}\n className=\"ab-offer-success-bottom\"\n >\n
    \n {Lang?.somethingWentWrong}!\n
    \n
    \n {errorMessage}.\n
    \n \n X {Lang?.close}\n \n \n \n ) : (\n \n

    \n {Lang?.tellUsYourBookingRequest}\n

    \n\n
    \n
    \n
    \n handleCalendarOpen()}\n datesOptions={datesOptions}\n />\n
    \n
    \n {!isMobileDevice && (\n
    \n
    \n \n setSearchOptions(\n (prevOptions) => ({\n ...prevOptions,\n [key]: value,\n })\n )\n }\n searchOptions={searchOptions}\n />{' '}\n
    \n
    \n )}\n
    \n {isMobileDevice && (\n
    \n
    \n \n setSearchOptions((prevOptions) => ({\n ...prevOptions,\n [key]: value,\n }))\n }\n searchOptions={searchOptions}\n />{' '}\n
    \n
    \n )}\n

    \n {Lang?.personalInformation}\n

    \n
    \n
    \n
    \n {\n setFirstName(event.target.value);\n }}\n isInvalid={Boolean(errors?.firstName)}\n errorMsg={errors.firstName}\n isRequired\n id=\"contact-us-full-name\"\n label={Lang?.firstName}\n name=\"firstname\"\n autoComplete=\"given-name\"\n />\n
    \n
    \n
    \n
    \n {\n setLastName(event.target.value);\n }}\n isInvalid={Boolean(errors?.lastName)}\n errorMsg={errors.lastName}\n isRequired\n id=\"contact-us-full-name\"\n label={Lang?.lastName}\n name=\"lastname\"\n autoComplete=\"family-name\"\n />\n
    \n
    \n
    \n \n \n {Lang.nationality}\n \n {\n setNationality(\n option?.dropdownExtraData\n ?.countryCode\n );\n }}\n searchable\n options={dropdownOptions || []}\n showTextWhenSelected={true}\n extraClass={`ab-nationality-dropdown ${redBorderClass}`}\n id=\"form-Nationality\"\n maxHeight=\"250px\"\n />\n
    \n
    \n \n
    \n
    \n
    \n {\n setEmail(event.target.value);\n }}\n isInvalid={Boolean(errors?.email)}\n errorMsg={errors.email}\n isRequired\n id=\"contact-us-full-name\"\n label={Lang?.email}\n name=\"email\"\n autoComplete=\"email\"\n />\n
    \n
    \n
    \n
    \n {\n setPhone(event.target.value);\n }}\n isInvalid={Boolean(errors?.phone)}\n errorMsg={errors.phone}\n isRequired\n id=\"contact-us-full-name\"\n label={Lang?.phone}\n name=\"phone\"\n autoComplete=\"tel\"\n />\n
    \n
    \n
    \n
    \n
    \n
    \n {\n setMessage(event.target.value);\n }}\n id=\"contact-us-full-name\"\n label={Lang?.message}\n />\n
    \n
    \n
    \n
    \n {' '}\n \n \n setChecked(event.target.checked)\n }\n >\n \n {Lang?.iHaveReadAndIAcceptThe}\n \n\n {Lang?.TmpTermsAndConditions && (\n <>\n \n \n {Lang?.termsAndConditions}\n \n\n \n &\n \n {Lang?.privacyPolicy}\n \n \n )}\n\n {Boolean(errors?.checked) && (\n \n {Lang?.requiredField}\n \n )}\n \n
    \n\n \n {isLoading ? (\n \n ) : (\n Lang?.getAQuote\n )}\n \n \n )}\n \n );\n };\n\n return (\n <>\n \n\n {!isMobileDevice ? (\n setCalendarOpenModal(false)}\n onOverlayClick={() => setCalendarOpenModal(false)}\n placement=\"center\"\n renderContent={renderBookingCalendar}\n styles={{\n closeIcon: { color: colors?.primaryTextColor },\n }}\n title={Lang?.selectDates}\n variant=\"secondary\"\n width={1000}\n />\n ) : (\n \n <>\n setCalendarOpenDrawer(false)}\n extraClass=\"show-import\"\n />\n \n setDatesOptions((prevOptions) => ({\n ...prevOptions,\n [key]: value,\n }))\n }\n mobile={isMobileDevice}\n setCalendarOpen={() => setCalendarOpenDrawer(false)}\n datesOptions={datesOptions}\n />\n \n \n )}\n \n );\n};\n\nexport default OfferModal;\n","import { useEffect, useState } from 'react';\nimport {\n FaAngleDown,\n FaPencilAlt,\n FaRegTimesCircle,\n FaRegTrashAlt,\n} from 'react-icons/fa';\nimport PropTypes from 'prop-types';\nimport './CartItem.css';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n removeCartItem,\n removeCartItemExtra,\n resetIsCompleteCart,\n setCurrentStep,\n setItemIsCompleted,\n setItemIsNotCompleted,\n} from 'features/cart/cartSlice';\nimport { toast } from 'react-toastify';\nimport axios from 'axios';\nimport { apiConfig } from 'config';\n\nconst CartItem = ({ item, count, selected, hasCartExtras }) => {\n const dispatch = useDispatch();\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const currency = useSelector((state) => state.user?.currency);\n const [isOpen, setIsOpen] = useState(() => selected);\n const currentStep = useSelector((state) => state.cart?.currentStep);\n const onClick = () => {\n if (item.isCompleted || selected || currentStep === 2) {\n setIsOpen(!isOpen);\n }\n };\n const cartItems = useSelector((state) => state.cart?.cartItems);\n const hasExtrasForItem = useSelector((state) => state.cart?.hasExtras);\n\n useEffect(() => {\n setIsOpen(selected);\n }, [selected, item.isCompleted]);\n\n const hasExtra = item?.extras && item?.extras.length > 0;\n\n const removeItem = async (rateID, roomTypeID) => {\n dispatch(resetIsCompleteCart());\n dispatch(setCurrentStep({ currentStep: 1 }));\n const cartItem = cartItems.find(\n (item) => item.rateID === rateID && item.roomTypeID === roomTypeID\n );\n if ((await removeFromCartBack(cartItem)) === 'ok') {\n dispatch(removeCartItem(rateID));\n }\n };\n\n const removeFromCartBack = async (cartItem) => {\n try {\n const response = await axios.post(apiConfig?.removeFromCartBack, {\n ...cartItem,\n });\n\n if (response?.data.split(',')[0].toLowerCase() === 'ok') {\n return 'ok';\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n const onClickTrash = async (extra) => {\n if ((await removeFromCartExtraBack(extra)) === 'ok') {\n dispatch(\n removeCartItemExtra({\n rateID: extra.rateID,\n roomTypeID: extra.roomTypeID,\n addOnID: extra.addOnID,\n })\n );\n }\n };\n\n const removeFromCartExtraBack = async (extra) => {\n try {\n const extraItem = { ...extra };\n extraItem.cartID = item?.cartID;\n extraItem.propCode = item?.propCode;\n const response = await axios.post(\n apiConfig?.removeFromCartExtraBack,\n { ...extraItem }\n );\n\n if (response?.data.toLowerCase() === 'ok') {\n return 'ok';\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n // const completeItemCartBack = async (item) => {\n // try {\n // const cartItem = { ...item };\n // cartItem.isCompleted = true;\n\n // const response = await axios.post(\n // 'https://devhotelmanager.abouthotelier.com/API/Price/completeItemCartBack',\n // { ...cartItem }\n // );\n\n // if (response?.data.toLowerCase() === 'ok') {\n // return 'ok';\n // } else {\n // toast.error(Lang?.somethingWentWrong, {\n // autoClose: true,\n // theme: 'colored',\n // PlacementType: 'top-left',\n // });\n // return 'error';\n // }\n // } catch (error) {\n // toast.error(Lang?.networkError, {\n // autoClose: true,\n // theme: 'colored',\n // });\n // return 'error';\n // }\n // };\n\n const onClickContinue = async () => {\n // if ((await completeItemCartBack(item)) === 'ok') {\n dispatch(\n setItemIsCompleted({\n rateID: item.rateID,\n roomTypeID: item.roomTypeID,\n })\n );\n // }\n };\n\n const setThisNotCompleted = () => {\n dispatch(\n setItemIsNotCompleted({\n rateID: item.rateID,\n roomTypeID: item.roomTypeID,\n })\n );\n };\n\n const totalPrice = item?.extras?.reduce((total, extra) => {\n const extraPrice = Number(extra.price) || 0;\n const extraQuantity = Number(extra.quantity) || 0;\n return total + extraPrice * extraQuantity;\n }, 0);\n return (\n
    \n
    \n

    onClick()}>\n \n {Lang?.Room.toUpperCase().replace('Ά', 'Α')} {count}\n {' '}\n \n

    \n\n
    \n {currentStep === 1 && (\n \n removeItem(item?.rateID, item?.roomTypeID)\n }\n style={{\n margin: '0',\n cursor: 'pointer',\n height: '32px',\n alignItems: 'center',\n display: 'flex',\n }}\n >\n \n {Lang?.remove}\n \n\n \n
    \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n

    Check in

    \n
    \n
    \n

    \n {item.checkin}\n
    \n After 15:00\n

    \n
    \n
    \n \n
    \n
    \n

    Check out

    \n
    \n
    \n

    \n {item.checkout}\n
    \n Before 11:00\n

    \n
    \n
    \n \n
    \n \n
    \n {item.roomName}\n
    \n
    \n \n {item.price} € / {Lang?.Room}\n \n
    \n
    \n
    \n
    \n {item.rateName}\n
    \n
    \n
    \n
    \n \n x {item.quantity} Rooms\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n {item.adults} {Lang?.Adults}\n {item?.children > 0 &&\n `, ${item?.children} Childern`}\n \n
    \n
    \n {hasCartExtras && (\n <>\n \n \n

    {Lang.extras}

    \n \n {currentStep === 1 && (\n
    \n \n setThisNotCompleted(item)\n }\n >\n \n
    \n \n )}\n \n {item?.extras?.map((extra, index) => {\n return (\n \n
    \n

    {extra.title}

    \n {currentStep === 1 && (\n
    \n \n onClickTrash(extra)\n }\n >\n \n
    \n
    \n )}\n
    \n

    \n {new Intl.NumberFormat(\n 'en-US',\n {\n style: 'currency',\n currency: currency,\n }\n ).format(\n Number(extra.price) *\n Number(extra.quantity)\n )}\n

    \n
    \n \n \n );\n })}\n \n )}\n\n \n \n

    {Lang?.total}

    \n

    \n {new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: currency,\n }).format(\n Number(item.price) * Number(item.quantity) +\n totalPrice\n )}\n

    \n \n \n {item?.prePayPrice > 0 && (\n \n \n

    {Lang?.paymentAmount}

    \n

    \n {new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: currency,\n }).format(Number(item?.prePayPrice))}\n

    \n \n \n )}\n\n {!item.isCompleted && (\n onClickContinue(item)}\n >\n {!hasExtrasForItem\n ? Lang?.continueWithoutExtras\n : hasExtra\n ? Lang?.continueTxt\n : Lang?.continueWithoutExtras}\n \n )}\n \n \n );\n};\n\nCartItem.propTypes = {\n item: PropTypes.object,\n count: PropTypes.number,\n selected: PropTypes.bool,\n hasCartExtras: PropTypes.bool,\n};\n\nexport default CartItem;\n","import { CartItem } from 'components/cartItem';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport './CartItemSide.css';\n\nconst CartItemSide = ({\n title,\n descriction,\n price,\n priceText,\n priceDescription,\n img,\n addOnText,\n hasCartExtras,\n extraClass,\n}) => {\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const propName = useSelector(\n (state) => state.miniBookingWidget?.data?.multiPropertyParentName\n );\n const propertyLogo = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyLogo\n );\n const items = useSelector((state) => state.cart?.cartItems);\n const currency = useSelector((state) => state.user?.currency);\n const finalPrices = useSelector((state) => state.cart?.finalPrices);\n const firstIncompleteIndex = items.findIndex((item) => !item.isCompleted);\n const currentStep = useSelector((state) => state.cart?.currentStep);\n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n {Lang?.yourBooking}\n
    \n {Lang?.propertyDetails}\n \n {propName}\n \n
    \n
    \n {items?.map((item, index) => {\n let selected = index === firstIncompleteIndex;\n if ((currentStep === 2 || currentStep === 3) && index === 0) {\n selected = true;\n }\n return (\n \n );\n })}\n {currentStep === 2 ||\n (currentStep === 3 && (\n
    \n \n \n \n \n \n

    \n {currency}  \n {finalPrices?.totalPayment}\n \n {finalPrices?.cartPolicy}\n \n

    \n \n
    \n\n {/* {finalPrices?.totalPayment !==\n finalPrices?.paymentAmount && (\n \n \n \n

    \n {currency}  \n {finalPrices?.paymentAmount}\n

    \n \n
    \n )} */}\n \n
    \n {Lang?.total}\n
    \n {Lang?.paymentAmount}\n
    \n
    \n ))}\n
    \n );\n};\n\nCartItemSide.propTypes = {\n title: PropTypes.string,\n descriction: PropTypes.string,\n price: PropTypes.string,\n priceText: PropTypes.string,\n priceDescription: PropTypes.string,\n img: PropTypes.string,\n addOnText: PropTypes.string,\n hasCartExtras: PropTypes.bool,\n extraClass: PropTypes.string,\n};\n\nexport default CartItemSide;\n","import { Skeleton } from 'components/common/skeleton';\nimport './CartItemSide.css';\n\nconst SkeletonCartItemSide = () => {\n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n {' '}\n \n \n \n \n \n
    \n
    \n
    \n
    \n \n\n
    \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n \n \n
    \n \n
    \n \n \n \n \n\n \n \n \n
    \n \n
    \n \n \n \n );\n};\n\nexport default SkeletonCartItemSide;\n","import { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nfunction PleaseWaitForm({ text, isLoading = false }) {\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n return (\n
    \n

    \n {Lang?.yourBookingIsConfirmed}!\n

    \n {isLoading && (\n \n )}\n \n {text}\n
    \n \n );\n}\nPleaseWaitForm.propTypes = {\n isLoading: PropTypes.bool,\n text: PropTypes.string,\n};\n\nexport default PleaseWaitForm;\n","import axios from 'axios';\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\nimport { Checkbox } from 'components/common/checkbox';\nimport { Dropdown } from 'components/common/dropdown';\nimport { Input } from 'components/common/input';\nimport { FinalStepBookingForm } from 'components/finalStepBookingForm';\nimport { useGetBookingData } from 'hooks';\nimport { isArray, isEmpty } from 'lodash';\nimport { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n FaCreditCard,\n FaEnvelope,\n FaLock,\n FaRegBuilding,\n} from 'react-icons/fa';\nimport {\n setCartMobileOpen,\n setCartPayDirectly,\n setCurrentStep,\n setFinalPrices,\n setIsCompleteCart,\n} from 'features/cart/cartSlice';\nimport { toast } from 'react-toastify';\nimport PropTypes from 'prop-types';\nimport './CartContactForm.css';\nimport { apiConfig } from 'config';\nimport { setCartID } from 'features/MiniBookingWidget/MiniBookingWidgetSlice';\nimport { PleaseWaitForm } from 'components/pleaseWaitForm';\nimport PhoneInput from 'react-phone-input-2';\nimport 'react-phone-input-2/lib/style.css';\nfunction CartContactForm({ extraClass }) {\n const dispatch = useDispatch();\n const { userBookingData } = useGetBookingData();\n\n const colors = useSelector(\n (state) => state.miniBookingWidget?.data?.colors\n );\n const ipCountry = useSelector(\n (state) => state.miniBookingWidget?.data?.ipCountry\n );\n const pluginCountries = useSelector(\n (state) => state.miniBookingWidget?.data?.pluginCountries\n );\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const paymentMethods = useSelector(\n (state) => state.miniBookingWidget?.data?.paymentMethods\n );\n\n const cartData = useSelector((state) => state.cart);\n const cartItems = cartData?.cartItems;\n const payDirectly = cartData?.payDirectly;\n\n const [currentLocalStep, setCurrentLocalStep] = useState(1);\n const cardMethods = paymentMethods.filter((meth) => meth.PaymentType === 1);\n const bankMethods = paymentMethods.filter((meth) => meth.PaymentType === 2);\n\n const div1Ref = useRef();\n const div2Ref = useRef();\n const div3Ref = useRef();\n\n const [firstName, setFirstName] = useState('');\n const [lastname, setLastname] = useState('');\n const [email, setEmail] = useState('');\n const [phone, setPhone] = useState('');\n const [nationality, setNationality] = useState(\n pluginCountries[0]?.countryName\n );\n\n useEffect(() => {\n dispatch(setCartMobileOpen(false));\n if (ipCountry && ipCountry !== '') {\n const matchingCountry = pluginCountries.find(\n (country) => country.countryName === ipCountry\n );\n if (matchingCountry) {\n setNationality(matchingCountry.countryName);\n }\n }\n }, []);\n const [specialRequests, setSpecialRequests] = useState('');\n const [checked, setChecked] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [errors, setErrors] = useState({});\n const [postalCode, setPostalCode] = useState('');\n const [bookingID, setBookingID] = useState(null);\n const [address, setAddress] = useState('');\n const [city, setCity] = useState('');\n // const [stateRegion, setStateRegion] = useState('');\n const defaultPaymentOption = bankMethods?.length > 0 ? 'bank' : 'card';\n const [selectedOption, setSelectedOption] = useState(defaultPaymentOption);\n const [submitError, setSubmitError] = useState(false);\n const [card, setCard] = useState({\n cardno: '',\n cardtype: '',\n expirydt: '',\n cvv: '',\n cardname: '',\n });\n\n const [selectedBankOption, setSelectedBankOption] = useState(0);\n const [selectedCardOption, setSelectedCardOption] = useState(0);\n\n const handleScroll = (ref) => {\n ref.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start',\n });\n };\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const validateInputs = () => {\n const errors = {};\n let scrolled = false;\n if (!firstName) {\n errors.firstName = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!lastname) {\n errors.lastname = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!email || !emailRegex.test(email)) {\n errors.email = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!phone) {\n errors.phone = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!address) {\n errors.address = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!city) {\n errors.city = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!postalCode) {\n errors.postalCode = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div1Ref);\n }\n }\n\n if (!checked) {\n errors.checked = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div3Ref);\n }\n }\n\n if (\n (cardMethods?.length > 0 || bankMethods?.length > 0) &&\n payDirectly?.toLowerCase() !== 'token'\n ) {\n if (selectedOption === 'card') {\n if (!selectedCardOption) {\n errors.paymentMethodsCard = Lang?.requiredField;\n }\n } else if (selectedOption === 'bank') {\n if (!selectedBankOption) {\n errors.paymentMethodsBank = Lang?.requiredField;\n }\n }\n }\n\n if (payDirectly?.toLowerCase() === 'token') {\n if (!card?.cardno) {\n errors.cardno = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div2Ref);\n }\n }\n\n if (!card?.expirydt) {\n errors.expirydt = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div2Ref);\n }\n }\n\n if (!card?.cvv) {\n errors.cvv = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div2Ref);\n }\n }\n\n if (!card?.cardname) {\n errors.cardname = Lang?.requiredField;\n if (!scrolled) {\n scrolled = !scrolled;\n handleScroll(div2Ref);\n }\n }\n }\n\n return errors;\n };\n\n const dropdownOptions = isArray(pluginCountries)\n ? pluginCountries.map((item) => {\n let countryName = item?.countryName;\n if (item?.countryName === 'EN') {\n countryName = 'US';\n }\n return {\n dropdownText: item?.countryLocalFullName,\n dropdownImg: item?.countryImg,\n dropdownSelected:\n countryName === nationality || item?.dropdownSelected,\n dropdownExtraData: {\n countryCode: countryName,\n },\n dropdownValue: countryName,\n };\n })\n : [];\n\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n // Component will unmount, update the ref\n isMountedRef.current = false;\n };\n }, []);\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n const errors = validateInputs();\n setErrors(errors);\n\n if (!isEmpty(errors)) {\n return;\n }\n if (selectedOption === 'bank') {\n setCurrentLocalStep(2);\n }\n let tmpNationality = nationality;\n if (nationality === 'EN') {\n tmpNationality = 'US';\n }\n try {\n setIsLoading(true);\n if (payDirectly?.toLowerCase() === 'token') {\n const validationResponse = await cValidation();\n if (validationResponse !== 'ok') {\n errors.cardno = Lang?.requiredField;\n errors.expirydt = Lang?.requiredField;\n errors.cvv = Lang?.requiredField;\n errors.cardname = Lang?.requiredField;\n setErrors(errors);\n toast.error(Lang?.pleaseCheckYourCardDetails, {\n autoClose: true,\n theme: 'colored',\n });\n setIsLoading(false);\n return;\n }\n }\n\n if (selectedOption === 'card') {\n setCurrentLocalStep(2);\n dispatch(setCurrentStep({ currentStep: 3 }));\n }\n const response = await axios.post(apiConfig?.submitCartBack, {\n lang: userBookingData?.localeLanguage,\n firstName,\n lastname,\n email,\n phone,\n nationality: tmpNationality,\n specialRequests,\n\n address,\n city,\n // stateRegion,\n postalCode,\n cartItems,\n\n selectedOption,\n selectedBankOption,\n selectedCardOption,\n payDirectly,\n });\n\n if (response?.data.split(',')[0].toLowerCase() === 'ok') {\n if (isMountedRef.current) {\n toast.success(Lang?.successMessage, {\n autoClose: true,\n theme: 'colored',\n });\n\n setBookingID(response?.data.split(',')[1]);\n if (\n selectedOption === 'bank' ||\n payDirectly?.toLowerCase() === 'token'\n ) {\n setCurrentLocalStep(2);\n dispatch(setCurrentStep({ currentStep: 3 }));\n }\n\n dispatch(setIsCompleteCart());\n const newCartID = response?.data.split(',')[2];\n dispatch(setCartID(newCartID));\n if (selectedOption === 'card') {\n const url = response?.data.split(',')[3];\n window.location.href = url;\n }\n }\n } else {\n setCurrentLocalStep(1);\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n }\n } catch (error) {\n setSubmitError(true);\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n\n setIsLoading(false);\n };\n\n const onChange = (e) => {\n const cartypeNew = cardnumber(e.target.value);\n setCard({\n ...card,\n cardno: e.target.value,\n cardtype: cartypeNew,\n });\n };\n const cardnumber = (inputtxt) => {\n const matches = inputtxt.match(/(\\d+)/);\n let cardno = '';\n if (matches) {\n cardno = inputtxt.split(' - ').join('');\n }\n let cardtype1 = card.cardtype;\n\n const visa = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;\n const mastercardRegEx = /^(?:5[1-5][0-9]{14})$/;\n const amexpRegEx = /^(?:3[47][0-9]{13})$/;\n const discovRegEx = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;\n if (visa.test(cardno) === true) {\n // eg:4651970022334445\n cardtype1 = 'Visa';\n } else if (mastercardRegEx.test(cardno) === true) {\n cardtype1 = 'MasterCard';\n } else if (amexpRegEx.test(cardno) === true) {\n cardtype1 = 'AmericanExpress';\n } else if (discovRegEx.test(cardno) === true) {\n cardtype1 = 'Discover';\n }\n return cardtype1;\n };\n\n const ccFormat = (value) => {\n const v = value.replace(/[^0-9]/gi, '').substr(0, 16);\n\n const parts = [];\n for (let i = 0; i < v.length; i += 4) {\n parts.push(v.substr(i, 4));\n }\n return parts.length > 1 ? parts.join(' - ') : value;\n };\n const expriyFormat = (value) => {\n const formattedValue = value.replace(/\\D/g, ''); // Remove non-numeric characters\n const MM = formattedValue.substring(0, 2);\n const YY = formattedValue.substring(2, 4);\n\n let expDateFormatter = '';\n\n if (MM) {\n expDateFormatter += MM;\n if (YY) {\n expDateFormatter += `/${YY}`;\n }\n }\n\n return expDateFormatter;\n };\n\n const onChangeExp = (e) => {\n const formattedValue = e.target.value;\n setCard({ ...card, expirydt: expriyFormat(formattedValue) });\n };\n const onChangeCVV = (e) => {\n setCard({\n ...card,\n cvv: e.target.value,\n });\n };\n const onChangeCardName = (e) => {\n setCard({\n ...card,\n cardname: e.target.value,\n });\n };\n\n useEffect(() => {\n const getFinalPrices = async () => {\n try {\n const response = await axios.post(apiConfig?.getFinalPrices, {\n cartID: cartItems[0]?.cartID,\n propCode: cartItems[0]?.propCode,\n });\n const finalPrices = response?.data;\n if (finalPrices?.status?.toLowerCase() === 'ok') {\n if (finalPrices?.payDirectly?.toLowerCase() === 'token') {\n dispatch(setCartPayDirectly(finalPrices?.payDirectly));\n } else {\n setSelectedOption('card');\n }\n dispatch(setFinalPrices(finalPrices?.finalPrices));\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n };\n\n getFinalPrices();\n }, []);\n\n let redBorderClass = '';\n if (errors?.nationality) {\n redBorderClass = 'ab-reb-border';\n }\n\n const cValidation = async () => {\n // return 'error';\n try {\n const response = await axios.post(apiConfig?.getCValidation, {\n cartID: cartItems[0]?.cartID,\n propCode: cartItems[0]?.propCode,\n cNo: card?.cardno,\n cName: card?.cardname,\n cExp: card?.expirydt,\n cCV: card?.cvv,\n });\n return response?.data;\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n const handleOptionClick = (option) => {\n setSelectedOption(option);\n };\n\n const handleBankOptionClick = (option) => {\n setSelectedBankOption(option);\n };\n\n const handleCardOptionClick = (option) => {\n setSelectedCardOption(option);\n };\n\n return (\n \n
    \n
    \n {currentLocalStep === 1 ? (\n \n
    \n
    \n \n
    \n {Lang?.contactAndPayment}\n
    \n\n \n
    \n
    \n \n \n setFirstName(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.firstName\n )}\n errorMsg={\n errors.firstName\n }\n isRequiredBorder={true}\n id=\"form-FirstName\"\n />\n
    \n
    \n \n \n setLastname(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.lastname\n )}\n errorMsg={\n errors.lastname\n }\n isRequiredBorder={true}\n id=\"form-LastName\"\n />\n
    \n
    \n\n
    \n
    \n \n \n setEmail(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.email\n )}\n errorMsg={errors.email}\n isRequiredBorder={true}\n id=\"form-Email\"\n />\n
    \n
    \n \n {/* \n setPhone(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.phone\n )}\n errorMsg={errors.phone}\n isRequiredBorder={true}\n id=\"form-Phone\"\n /> */}\n \n \n
    \n
    \n
    \n\n
    \n
    \n \n \n setCity(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.city\n )}\n errorMsg={errors.city}\n isRequiredBorder={true}\n id=\"form-City\"\n />\n
    \n
    \n \n\n
    \n {\n setNationality(\n option\n ?.dropdownExtraData\n ?.countryCode\n );\n }}\n value={nationality}\n searchable\n options={\n dropdownOptions ||\n []\n }\n showTextWhenSelected={\n true\n }\n extraClass={`ab-nationality-dropdown ${redBorderClass}`}\n id=\"form-Nationality\"\n />\n
    \n
    \n
    \n\n
    \n
    \n \n \n setAddress(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.address\n )}\n errorMsg={\n errors.address\n }\n isRequiredBorder={true}\n id=\"form-Address\"\n />\n
    \n
    \n \n \n setPostalCode(\n e.target.value\n )\n }\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.postalCode\n )}\n errorMsg={\n errors.postalCode\n }\n isRequiredBorder={true}\n id=\"form-PostalCode\"\n />\n
    \n
    \n\n
    \n
    \n \n \n setSpecialRequests(\n e.target.value\n )\n }\n type=\"textarea\"\n />\n
    \n
    \n
    \n\n \n
    \n {Lang?.payWith}\n
    \n {payDirectly?.toLowerCase() ===\n 'token' ? (\n \n
    \n
    \n {' '}\n {Lang.securePayment}\n
    \n
    \n {\n Lang.allCardDetailsAreEncrypted\n }\n .\n
    \n
    \n
    \n
    \n \n {\n if (\n !/[0-9]/.test(\n event.key\n )\n ) {\n event.preventDefault();\n }\n }}\n id=\"form-Cardno\"\n />\n
    \n
    \n
    \n \n \n
    \n
    \n \n {\n if (\n !/[0-9]/.test(\n event.key\n )\n ) {\n event.preventDefault();\n }\n }}\n className=\"ab-input\"\n isRequired\n isInvalid={Boolean(\n errors?.cvv\n )}\n errorMsg={\n errors?.cvv\n }\n isRequiredBorder={\n true\n }\n id=\"form-Cvv\"\n />\n
    \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n ) : (\n <>\n
    \n
    \n {cardMethods?.length >\n 0 && (\n \n handleOptionClick(\n 'card'\n )\n }\n >\n {\n Lang?.creditCard\n }\n
    \n )}\n {bankMethods?.length >\n 0 && (\n \n handleOptionClick(\n 'bank'\n )\n }\n >\n {\n Lang?.bankTransfer\n }\n
    \n )}\n
    \n\n
    \n {errors?.paymentMethodsCard &&\n Lang?.selectACardOption}\n {errors?.paymentMethodsBank &&\n Lang?.selectABankOption}\n
    \n \n\n {selectedOption ===\n 'card' ? (\n
    \n
    \n
    \n {' '}\n {\n Lang.securePayment\n }\n
    \n
    \n {\n Lang.allCardDetailsAreEncrypted\n }\n .\n
    \n
    \n {cardMethods?.map(\n (\n pMethod,\n index\n ) => {\n return (\n \n handleCardOptionClick(\n pMethod.PaymentGatewayID\n )\n }\n className={`ab-whitebox-body ab-p-10 ab-cart-card-wrapper ${\n selectedCardOption ===\n pMethod.PaymentGatewayID\n ? 'selected'\n : ''\n }`}\n style={{\n cursor: 'pointer',\n }}\n >\n
    \n
    \n \n
    \n
    \n
    \n {\n pMethod.PaymentName\n }\n
    \n
    \n {\n pMethod.PaymentDescription\n }\n
    \n
    \n
    \n
    \n \n
    \n
    \n );\n }\n )}\n \n ) : (\n
    \n {bankMethods?.map(\n (\n pMethod,\n index\n ) => {\n return (\n \n handleBankOptionClick(\n pMethod.PaymentGatewayID\n )\n }\n className={`ab-cart-bank-wrapper ${\n selectedBankOption ===\n pMethod.PaymentGatewayID\n ? 'selected'\n : ''\n }`}\n style={{\n cursor: 'pointer',\n }}\n >\n
    \n \n
    \n
    \n
    \n {\n pMethod.PaymentName\n }\n
    \n
    \n \n {\n pMethod.PaymentDescription\n }\n \n
    \n
    \n
    \n );\n }\n )}\n \n )}\n \n )}\n\n
    \n
    \n\n \n \n setChecked(\n event.target\n .checked\n )\n }\n >\n \n {\n Lang?.iHaveReadAndIAcceptThe\n }\n \n \n\n {Lang?.TmpTermsAndConditions && (\n
    \n \n {\n Lang?.termsAndPrivacyPolicy\n }\n \n
    \n )}\n \n {Boolean(errors?.checked) && (\n \n {Lang?.requiredField}\n \n )}\n
    \n \n \n \n {\n Lang?.wellSendConfirmationOfBookingToEmail\n }{' '}\n {email}\n \n
    \n \n \n \n\n
    \n \n {isLoading ? (\n \n ) : (\n Lang?.confirmAndBook\n )}\n \n
    \n \n \n \n ) : (\n <>\n {!submitError && (\n <>\n {selectedOption === 'card' ? (\n \n ) : isLoading ? (\n \n ) : (\n \n )}\n \n )}\n \n )}\n \n \n \n );\n}\n\nCartContactForm.propTypes = {\n extraClass: PropTypes.string,\n};\n\nexport default CartContactForm;\n","import { Skeleton } from 'components/common/skeleton';\nimport PropTypes from 'prop-types';\nfunction SkeletonCartMobileForm({ extraClass }) {\n return (\n \n
    \n
    \n
    \n
    \n \n \n
    \n \n
    \n\n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n\n \n \n
    \n \n
    \n
    \n
    \n\n \n
    \n \n
    \n
    \n
    \n \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n\n \n \n \n\n
    \n \n \n
    \n \n \n \n\n
    \n
    \n \n
    \n
    \n \n \n \n \n \n \n );\n}\n\nSkeletonCartMobileForm.propTypes = {\n extraClass: PropTypes.string,\n};\n\nexport default SkeletonCartMobileForm;\n","import axios from 'axios';\nimport { Counter } from 'components/common/counter';\nimport { apiConfig } from 'config';\nimport {\n addCartItemExtra,\n removeCartItemExtra,\n updateCartItemExtra,\n} from 'features/cart/cartSlice';\nimport PropTypes from 'prop-types';\nimport { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { toast } from 'react-toastify';\nimport './CartAddOn.css';\n\nconst CartAddOn = ({\n title,\n description,\n price,\n priceText,\n priceDescription,\n img,\n addOnText,\n addOnID,\n minQuantity,\n maxQuantity,\n quantity,\n isMobile = false,\n}) => {\n const dispatch = useDispatch();\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const searchOptions = useSelector((state) => state.user);\n\n const cartItems = useSelector((state) => state.cart?.cartItems);\n const firstIncompleteIndex = cartItems.findIndex(\n (item) => !item.isCompleted\n );\n const selectedItem =\n useSelector((state) => state.cart?.cartItems[firstIncompleteIndex]) ||\n {};\n const existingExtras =\n cartItems &&\n cartItems.find((cartItem) =>\n cartItem?.extras?.some(\n (item) =>\n item.cartID === selectedItem?.cartID &&\n item.rateID === selectedItem?.rateID &&\n item.roomTypeID === selectedItem?.roomTypeID &&\n item.addOnID === addOnID\n )\n );\n const thisExtra = existingExtras?.extras?.filter(\n (extra) =>\n extra.cartID === selectedItem?.cartID &&\n extra.addOnID === addOnID &&\n extra.rateID === selectedItem?.rateID &&\n extra.roomTypeID === selectedItem?.roomTypeID\n );\n const [amount, setAmount] = useState(\n thisExtra && thisExtra.length > 0 ? thisExtra[0].quantity : 1\n );\n const handleCounterChange = (key, value) => {\n setAmount(value);\n };\n\n const updateExtra =\n thisExtra && thisExtra.length > 0\n ? thisExtra[0].quantity !== amount\n : false;\n const addToCart = async (addOnID) => {\n const extra = {\n addOnID,\n rateID: selectedItem?.rateID,\n roomTypeID: selectedItem?.roomTypeID,\n title,\n price,\n img,\n quantity: amount,\n minQuantity: minQuantity,\n maxQuantity: maxQuantity,\n checkin: searchOptions?.checkInDay.date,\n checkout: searchOptions?.checkOutDay.date,\n cartID: selectedItem?.cartID,\n propCode: selectedItem?.propCode,\n };\n if (!existingExtras) {\n const response = await addCartItemExtraBack(extra);\n if (response.status === 'ok') {\n extra.ID = response.ID;\n dispatch(addCartItemExtra(extra));\n }\n } else {\n if (updateExtra) {\n const response = await updateCartItemExtraBack(extra);\n if (response.status === 'ok') {\n extra.ID = response.ID;\n dispatch(updateCartItemExtra(extra));\n }\n } else {\n if ((await removeFromCartExtraBack(thisExtra)) === 'ok')\n dispatch(\n removeCartItemExtra({\n rateID: selectedItem?.rateID,\n roomTypeID: selectedItem?.roomTypeID,\n addOnID,\n })\n );\n }\n }\n };\n\n const removeFromCartExtraBack = async (extra) => {\n try {\n extra.cartID = selectedItem?.cartID;\n extra.propCode = selectedItem?.propCode;\n const response = await axios.post(\n apiConfig?.removeFromCartExtraBack,\n { ...extra[0] }\n );\n\n if (response?.data.toLowerCase() === 'ok') {\n return 'ok';\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n const addCartItemExtraBack = async (extra) => {\n try {\n const response = await axios.post(apiConfig?.addCartItemExtraBack, {\n ...extra,\n });\n\n if (response?.data.status.toLowerCase() === 'ok') {\n return response?.data;\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n const updateCartItemExtraBack = async (extra) => {\n try {\n const response = await axios.post(\n apiConfig?.updateCartItemExtraBack,\n { ...extra }\n );\n\n if (response?.data.status.toLowerCase() === 'ok') {\n return response?.data;\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n return (\n \n {!isMobile ? (\n <>\n {' '}\n
    {title}
    \n
    \n
    \n \n
    \n
    \n
    \n {description}\n
    \n
    \n {' '}\n 0 ? quantity : 1}\n onChange={handleCounterChange}\n searchKey={'amount'}\n lowestValue={minQuantity}\n maxValue={maxQuantity}\n />\n
    \n
    \n
    \n \n ) : (\n
    \n
    \n \n
    \n
    {title}
    \n
    \n
    \n {description}\n
    \n
    \n {' '}\n 0 ? quantity : 1}\n onChange={handleCounterChange}\n searchKey={'amount'}\n lowestValue={minQuantity}\n maxValue={maxQuantity}\n />\n
    \n
    \n
    \n )}\n\n
    \n
    \n
    \n \n {new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: searchOptions.currency,\n })\n .format(Number(price))\n .replace(/(\\D)(\\d)/, '$1\\u00A0$2')}\n \n {priceText}\n
    \n
    \n {priceDescription}\n
    \n
    \n addToCart(addOnID)}\n >\n {existingExtras\n ? updateExtra\n ? Lang?.update\n : Lang?.remove\n : Lang?.select}\n \n
    \n
    \n \n );\n};\n\nCartAddOn.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n price: PropTypes.string,\n priceText: PropTypes.string,\n priceDescription: PropTypes.string,\n img: PropTypes.string,\n addOnText: PropTypes.string,\n addOnID: PropTypes.number,\n minQuantity: PropTypes.number,\n maxQuantity: PropTypes.number,\n quantity: PropTypes.number,\n isMobile: PropTypes.bool,\n};\n\nexport default CartAddOn;\n","import { Skeleton } from 'components/common/skeleton';\nimport PropTypes from 'prop-types';\nimport './CartAddOn.css';\n\nconst SkeletonAddOn = (isMobile = false) => {\n return (\n \n {!isMobile ? (\n <>\n {' '}\n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n {' '}\n \n
    \n
    \n
    \n \n ) : (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n {' '}\n \n
    \n
    \n
    \n )}\n\n
    \n
    \n
    \n \n \n \n
    \n
    \n \n
    \n
    \n \n );\n};\n\nSkeletonAddOn.propTypes = {\n isMobile: PropTypes.bool,\n};\n\nexport default SkeletonAddOn;\n","import axios from 'axios';\nimport CartAddOn from 'components/cartAddOn/CartAddOn';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { toast } from 'react-toastify';\nimport {\n setCurrentStep,\n setCartOpenState,\n setHasExtras,\n} from 'features/cart/cartSlice';\nimport { apiConfig } from 'config';\nimport { SkeletonAddOn } from 'components/cartAddOn';\n\nconst CartAddOnWrapper = ({ isMobile = false }) => {\n const dispatch = useDispatch();\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const items = useSelector((state) => state.cart?.cartItems);\n const firstIncompleteIndex = items.findIndex((item) => !item.isCompleted);\n const selectedItem = useSelector(\n (state) => state.cart?.cartItems[firstIncompleteIndex]\n );\n const selectedItemID = selectedItem?.ID;\n const [extras, setExtras] = useState([]);\n const [isFetching, setIsFetching] = useState(true);\n const changeCartFormState = (state) => {\n dispatch(setCartOpenState(state));\n };\n useEffect(() => {\n if (firstIncompleteIndex === -1) {\n // Use a setTimeout to defer the state update until the next render cycle\n if (items?.length > 0) {\n setTimeout(() => {\n dispatch(setCurrentStep({ currentStep: 2 }));\n }, 0);\n } else {\n changeCartFormState(false);\n }\n }\n }, [firstIncompleteIndex, setCurrentStep]);\n\n useEffect(() => {\n if (firstIncompleteIndex !== -1) {\n const fetchAddOns = async () => {\n try {\n setIsFetching(true);\n dispatch(setHasExtras(false));\n const response = await axios.post(apiConfig?.getAddOns, {\n rateID: selectedItem.rateID,\n roomTypeID: selectedItem.roomTypeID,\n cartID: selectedItem.cartID,\n propCode: selectedItem.propCode,\n });\n\n if (response?.data?.length > 0) {\n // Assuming the extras are available in the response.data\n const extrasData = response?.data;\n setExtras(extrasData);\n dispatch(setHasExtras(true));\n } else {\n setExtras([]);\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n setIsFetching(false);\n };\n\n fetchAddOns();\n }\n }, [selectedItemID]);\n return (\n
    \n {!isFetching ? (\n extras.length > 0 ? (\n extras.map((extra) => (\n \n ))\n ) : (\n

    \n {Lang?.noAddOnsAvailable}\n

    \n )\n ) : (\n \n )}\n
    \n );\n};\n\nCartAddOnWrapper.propTypes = {\n isMobile: PropTypes.bool,\n};\n\nexport default CartAddOnWrapper;\n","import PropTypes from 'prop-types';\nimport './CartItemsMobileButton.css';\nimport { FaArrowUp } from 'react-icons/fa';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setCartMobileOpen, setItemIsCompleted } from 'features/cart/cartSlice';\n\nconst CartItemsMobileButton = ({ hasCartExtras, extraClass }) => {\n const dispatch = useDispatch();\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const isCartMobileOpen = useSelector(\n (state) => state.cart?.isCartMobileOpen\n );\n const hasExtrasForItem = useSelector((state) => state.cart?.hasExtras);\n const items = useSelector((state) => state.cart?.cartItems);\n const firstIncompleteIndex = items.findIndex((item) => !item.isCompleted);\n const currentStep = useSelector((state) => state.cart?.currentStep);\n const item = items[firstIncompleteIndex];\n const hasExtra = item?.extras && item?.extras.length > 0;\n const onClick = (open) => {\n dispatch(setCartMobileOpen(open));\n };\n const onClickContinue = async () => {\n dispatch(\n setItemIsCompleted({\n rateID: item.rateID,\n roomTypeID: item.roomTypeID,\n })\n );\n // }\n };\n return (\n
    \n onClick(!isCartMobileOpen)}\n >\n
    {Lang?.yourStaySummary}
    \n
    \n \n
    \n
    \n {currentStep === 1 && (\n
    \n
    onClickContinue()}>\n {!hasExtrasForItem\n ? Lang?.continueWithoutExtras\n : hasExtra\n ? Lang?.continueTxt\n : Lang?.continueWithoutExtras}\n
    \n
    \n )}\n \n );\n};\n\nCartItemsMobileButton.propTypes = {\n hasCartExtras: PropTypes.bool,\n extraClass: PropTypes.string,\n};\n\nexport default CartItemsMobileButton;\n","import { FaCheck, FaPlusCircle } from 'react-icons/fa';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n clearCart,\n resetIsCompleteCart,\n setCartItems,\n setCartOpenState,\n setCurrentStep,\n setIsAllItemsCompleteCart,\n} from 'features/cart/cartSlice';\nimport './CartForm.css';\nimport { CartItemSide } from 'components/cartItemSide';\nimport {\n CartContactForm,\n SkeletonCartMobileForm,\n} from 'components/cartContactForm';\nimport { CartAddOnWrapper } from 'components/cartAddOnWrapper';\nimport { useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport axios from 'axios';\nimport { apiConfig } from 'config';\nimport { SkeletonCartForm } from '.';\nimport CartItemsMobileButton from 'components/cartItemsMobileButton/CartItemsMobileButton';\nimport { isEqual } from 'lodash';\nconst CartForm = ({ extraClass = '', isMobile = false }) => {\n const dispatch = useDispatch();\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const currentStep = useSelector((state) => state.cart?.currentStep);\n const isCartCompleted = useSelector((state) => state.cart?.isCartCompleted);\n const items = useSelector((state) => state.cart?.cartItems);\n const firstIncompleteIndex = items.findIndex((item) => !item.isCompleted);\n const cartID = useSelector(\n (state) => state.miniBookingWidget?.data?.cartID\n );\n const propCode = useSelector(\n (state) => state.miniBookingWidget?.data?.propCode\n );\n const [hasCartExtras, setHasCartExtras] = useState(false);\n const [isFetching, setIsFetching] = useState(true);\n\n const changeCartFormState = (state) => {\n dispatch(setCartOpenState(state));\n if (isCartCompleted) {\n dispatch(clearCart(state));\n }\n };\n useEffect(() => {\n if (!hasCartExtras) {\n dispatch(resetIsCompleteCart());\n dispatch(setCurrentStep({ currentStep: 1 }));\n }\n }, []);\n let step1Class = '';\n let step2Class = '';\n let step3Class = '';\n if (currentStep === 1) {\n step1Class = 'ab-active';\n } else if (currentStep === 2) {\n step2Class = 'ab-active';\n step1Class = 'ab-go-back';\n } else if (currentStep === 3) {\n step3Class = 'ab-active';\n }\n\n useEffect(async () => {\n const checkCart = async () => {\n try {\n setIsFetching(true);\n const response = await axios.post(apiConfig?.getCart, {\n cartID,\n propCode,\n });\n\n return response?.data;\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n setIsFetching(false);\n };\n const fetchAddOns = async () => {\n try {\n setIsFetching(true);\n const response = await axios.post(apiConfig?.checkAddOns, {\n cartID,\n propCode,\n });\n\n if (response?.data?.toLowerCase() === 'ok') {\n setHasCartExtras(true);\n } else {\n dispatch(setCurrentStep({ currentStep: 2 }));\n dispatch(setIsAllItemsCompleteCart());\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n setIsFetching(false);\n };\n const checkCartResponse = await checkCart();\n if (checkCartResponse?.isSomethingDifferent) {\n if (isEqual(items, checkCartResponse?.cartItems) === false) {\n toast.error(Lang?.someChangesInYourCart, {\n autoClose: true,\n theme: 'colored',\n });\n }\n dispatch(setCartItems(checkCartResponse?.cartItems));\n if (checkCartResponse?.cartItems.length === 0) {\n changeCartFormState(false);\n }\n }\n fetchAddOns();\n }, []);\n\n return (\n <>\n {!isFetching ? (\n \n
    \n \n \n changeCartFormState(false)}\n >\n
    \n 1\n
    \n \n {!isMobile ? (\n <>\n {Lang.backTo}{' '}\n {Lang.roomSelection} 1/1\n \n ) : (\n <>{Lang?.back} \n )}\n
    \n \n {hasCartExtras && (\n {\n if (currentStep === 2) {\n dispatch(resetIsCompleteCart());\n dispatch(\n setCurrentStep({\n currentStep: 1,\n })\n );\n }\n }}\n >\n
    2
    \n
    \n {!isMobile ? (\n <>\n {Lang?.addOns} /{' '}\n {Lang?.extras}\n \n ) : (\n <>{Lang?.extras}\n )}\n
    \n \n )}\n\n \n
    \n {hasCartExtras ? 3 : 2}\n
    \n
    \n {!isMobile ? (\n <>{Lang.billingInformation}\n ) : (\n <>Checkout\n )}\n
    \n \n \n dispatch(\n setCurrentStep({ currentStep: 1 })\n )\n }\n className={`ab-line-step-cart ${step3Class}`}\n >\n
    \n \n
    \n
    \n {Lang.confirm}\n
    \n \n \n \n\n \n {!isMobile ? (\n
    \n
    \n \n
    \n \n changeCartFormState(false)\n }\n className=\"ab-cart-right-side-top-bottom\"\n >\n \n \n {' '}\n {Lang?.addAnotherRoom\n .replace('Ά', 'Α')\n .replace('Έ', 'Ε')}\n \n
    \n \n ) : (\n <>\n {currentStep !== 3 && (\n \n )}\n \n )}\n\n {currentStep === 1 ? (\n <>\n \n
    \n {Lang?.chooseAddOns}{' '}\n {Lang?.forTxt.toLowerCase()}{' '}\n {Lang?.Room}{' '}\n {firstIncompleteIndex + 1}\n
    \n
    \n
    \n \n
    \n \n \n ) : currentStep >= 2 ? (\n \n ) : null}\n \n \n \n ) : !isMobile ? (\n \n ) : (\n \n )}\n \n );\n};\n\nCartForm.propTypes = {\n extraClass: PropTypes.string,\n isMobile: PropTypes.bool,\n};\n\nexport default CartForm;\n","import { SkeletonAddOn } from 'components/cartAddOn';\nimport { SkeletonCartItemSide } from 'components/cartItemSide';\nimport { Skeleton } from 'components/common/skeleton';\nimport './CartForm.css';\n\nconst SkeletonCartForm = () => {\n return (\n
    \n
    \n \n \n
    \n\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n );\n};\n\nexport default SkeletonCartForm;\n","import PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Modal } from 'components/common/modal';\n\nimport { closeModal } from 'features/modalSlice';\nimport {\n resetTempRate,\n setAddingRate,\n setSmallCartOpenState,\n updateCartItem,\n} from 'features/cart/cartSlice';\nimport axios from 'axios';\nimport { toast } from 'react-toastify';\nimport './AreYouSureModal.css';\nimport { apiConfig } from 'config';\n\nconst AreYouSureModal = ({ width = 500 }) => {\n const dispatch = useDispatch();\n\n const { isAreYouSureModalOpen } = useSelector((state) => state.modal);\n const isAddingRate = useSelector((state) => state.cart?.isAddingRate);\n const temp = useSelector((state) => state.cart?.tempRate);\n const roomTypes = useSelector((state) => state.rooms?.roomTypes);\n const cartID = useSelector(\n (state) => state.miniBookingWidget?.data?.cartID\n );\n const propCode = useSelector(\n (state) => state.miniBookingWidget?.data?.propCode\n );\n const searchOptions = useSelector((state) => state.user);\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const modalTitle = Lang?.youHaveAlradyChosenARateForThisRoomCategory;\n const handleModalClose = () => {\n dispatch(resetTempRate());\n dispatch(closeModal({ modalId: 'AreYouSureModal' }));\n };\n\n const changeRate = async () => {\n if (isAddingRate) {\n return;\n }\n const room =\n roomTypes.find((room) => {\n return room.roomTypeID === Number(temp.roomTypeID);\n }) || {};\n\n const rate = (room.rates || []).find((rate) => {\n return rate.rateID === temp.rateID;\n });\n\n if (rate) {\n const price = rate.pricing?.price;\n const prePayPrice = rate.pricing?.prePayPrice;\n const cartItem = {\n rateID: rate.rateID,\n propCode,\n roomName: room.name,\n roomType: room.type,\n price: price,\n roomPhoto: room.photos?.[0]?.large,\n roomTypeID: room.roomTypeID,\n quantity: searchOptions?.numberOfRooms,\n adults: searchOptions?.adults,\n children: searchOptions?.children,\n checkin: searchOptions?.checkInDay.date,\n checkout: searchOptions?.checkOutDay.date,\n cartID,\n prePayPrice: prePayPrice,\n rateName: rate.name,\n isCompleted: false,\n totalPrice:\n Number(price) * Number(searchOptions?.numberOfRooms),\n extras: [],\n };\n dispatch(setAddingRate(true));\n if ((await updateToCartBack(cartItem)) === 'ok') {\n dispatch(setSmallCartOpenState(true));\n dispatch(updateCartItem(cartItem));\n }\n dispatch(setAddingRate(false));\n }\n handleModalClose();\n };\n\n const updateToCartBack = async (cartItem) => {\n try {\n const response = await axios.post(apiConfig?.updateToCartBack, {\n ...cartItem,\n });\n\n if (response?.data.status.toLowerCase() === 'ok') {\n return 'ok';\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n const renderContent = () => {\n return (\n
    \n
    \n
    \n {Lang?.areYouSureYouWantToChangeTheRate}?\n
    \n
    \n changeRate()}\n className=\"ok-button\"\n >\n OK\n \n handleModalClose()}\n className=\"cancel-button\"\n >\n {Lang?.cancel}\n \n
    \n
    \n
    \n );\n };\n\n return (\n \n );\n};\nAreYouSureModal.propTypes = {\n width: PropTypes.number,\n};\n\nexport default AreYouSureModal;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Modal } from 'components/common/modal';\n\nimport { closeModal } from 'features/modalSlice';\n\nimport './ReviewsModal.css';\nimport {\n applyImportantStyles,\n isMobileDeviceRequest,\n // makeStatsRequestThrottled,\n stripHTMLTags,\n} from 'lib';\nimport { Dropdown } from 'components/common/dropdown';\nimport {\n getBookingWidgetReviews,\n resetReviews,\n setReviews,\n setSortByScoreOptions,\n} from '../../features/ReviewsSlice';\nimport axios from 'axios';\nimport { apiConfig } from 'config';\nimport { toast } from 'react-toastify';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { BarsLoadingIndicator } from 'components/common/barsLoadingIndicator';\nimport { NoResults } from 'components/common/noResults';\nimport {\n FaBed,\n FaBitbucket,\n FaBuilding,\n FaCloudSun,\n FaFilter,\n FaGlobeEurope,\n FaHandHoldingUsd,\n FaLocationArrow,\n FaMedal,\n FaUsers,\n FaWifi,\n} from 'react-icons/fa';\n// import { openDrawer } from 'features/drawersSlice';\nimport { Collapsible } from 'components/common/collapsible';\nimport { ReadMore } from 'components/common/readMore';\n// import { CLICK_ACTIONS } from '../../constants';\n// import { useOpenOldWidget } from 'hooks';\nimport { Stars } from 'components/common/stars';\nimport { MdChatBubbleOutline, MdFilterList } from 'react-icons/md';\nimport { BsCheck2All } from 'react-icons/bs';\nimport { BiCommentAdd } from 'react-icons/bi';\nimport { CSSTransition } from 'react-transition-group';\nconst ReviewsModal = () => {\n const dispatch = useDispatch();\n\n const colors = useSelector(\n (state) => state.miniBookingWidget?.data?.colors\n );\n const isMobileDevice = isMobileDeviceRequest();\n const reviewsUrl =\n useSelector((state) => state.miniBookingWidget?.data?.commentsUrl) ||\n '';\n const isOpen = useSelector((state) => state.modal.isReviewsModalOpen);\n const {\n reviews,\n channelScores,\n totalReviewsText,\n guestScore,\n guestScoreValueText,\n channelExtras,\n totalReviews,\n } = useSelector((state) => state.reviews) || {};\n\n const handleModalClose = useCallback(() => {\n dispatch(closeModal({ modalId: 'ReviewsModal' }));\n });\n const {\n country,\n noResultsFound,\n networkError,\n noReviews,\n from,\n channels,\n // bookNow,\n categories,\n guestReviews,\n filters,\n orderCommentsBy,\n reviewScore,\n seasons,\n more,\n less,\n averageRatingScore,\n totalNumberOfReviews,\n allSources,\n } = useSelector((state) => state.miniBookingWidget?.data?.Lang) || {};\n const userProvidedData = useSelector((state) => state.user);\n const propertyID = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyID\n );\n // const clickAction = useSelector(\n // (state) => state.miniBookingWidget?.data?.Behavior\n // );\n // const ourPrice = useSelector(\n // (state) => state.miniBookingWidget?.data?.ourPrice\n // );\n const [reviewsPage, setReviewsPage] = useState(1);\n const [sortReviewsBy, setSortReviewsBy] = useState('');\n const [selectedReviewsCountry, setSelectedReviewsCountry] = useState('');\n const [selectedReviewsScore, setSelectedReviewsScore] = useState('');\n const [selectedReviewsSeason, setSelectedReviewsSeason] = useState('');\n const [hasMore, setHasMore] = useState(true);\n const [fullReviewsRefresh, setFullReviewsRefresh] = useState(false);\n const [activeChannel, setActiveChannel] = useState('all');\n const [filterChannelID, setFilterChannelID] = useState(-1);\n const [isFiltersOpen, setIsFiltersOpen] = useState(false);\n const showCommentsByCountryOptions = useSelector(\n (state) => state.reviews?.showCommentsByCountryOptions\n );\n const sortByScoreOptions = useSelector(\n (state) => state.reviews?.sortByScoreOptions\n );\n const sortBySeasonOptions = useSelector(\n (state) => state.reviews?.sortBySeasonOptions\n );\n const sortByCommentsOptions = useSelector(\n (state) => state.reviews?.sortByCommentsOptions\n );\n const mobileClass = isMobileDevice ? 'reviews-modal-mobile' : '';\n const getMoreReviews = async (\n countryCode,\n sortBy,\n page,\n sortByScore,\n sortBySeason,\n filterByChannel\n ) => {\n try {\n const response = await axios.get(apiConfig.moreReviewsUrl, {\n params: {\n PropertyID: propertyID,\n lang: userProvidedData.language,\n Country: countryCode || selectedReviewsCountry,\n Sort: sortBy || sortReviewsBy,\n Page: page || reviewsPage + 1,\n SortScore: sortByScore || selectedReviewsScore,\n SortSeason: sortBySeason || selectedReviewsSeason,\n ChannelID: filterByChannel || filterChannelID,\n },\n });\n\n const reviews = response.data?.channelComments || [];\n\n dispatch(setReviews({ reviews: reviews || [] }));\n dispatch(\n setSortByScoreOptions({\n sortByScoreOptions: response.data?.sortByScoreOptions || [],\n })\n );\n\n if (!page) {\n setReviewsPage(reviewsPage + 1);\n }\n\n if (reviews.length === 0) {\n setHasMore(false);\n }\n } catch (error) {\n toast.error(networkError, {\n autoClose: true,\n theme: 'colored',\n });\n }\n\n if (countryCode) {\n setSelectedReviewsCountry(countryCode);\n }\n\n if (sortBy) {\n setSortReviewsBy(sortBy);\n }\n\n if (sortByScore) {\n setSelectedReviewsScore(sortByScore);\n }\n\n if (sortBySeason) {\n setSelectedReviewsSeason(sortBySeason);\n }\n setFullReviewsRefresh(false);\n };\n const noReviewsAvailable = !reviews || reviews?.length === 0;\n useEffect(() => {\n if (reviewsUrl) {\n dispatch(getBookingWidgetReviews({ reviewsUrl }));\n }\n\n // TODO: DON'T KNOW IF THIS IS NECESSARY\n // return () => {\n // cleanup;\n // };\n }, [reviewsUrl]);\n\n const handleChannelFilterClick = (channelID, channelName) => {\n if (activeChannel === channelName) return;\n setActiveChannel(channelName);\n setFilterChannelID(channelID);\n setFullReviewsRefresh(true);\n dispatch(resetReviews());\n getMoreReviews('', '', 1, '', '', channelID);\n };\n\n // const { clickHandler: openOldWidget } = useOpenOldWidget();\n // const handleBookNowClick = useCallback(() => {\n // handleModalClose();\n // if (\n // CLICK_ACTIONS.OPEN_PLUGIN ||\n // clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN\n // ) {\n // if (clickAction === CLICK_ACTIONS.OPEN_BIG_PLUGIN) {\n // dispatch(openDrawer({ drawerId: 'BigBookingWidgetDrawer' }));\n // if (!document.body.classList.contains('ab-no-overflow')) {\n // document.body.classList.add('ab-no-overflow');\n // }\n // } else if (clickAction === CLICK_ACTIONS.LINK) {\n // window.open(ourPrice?.url);\n // } else {\n // openOldWidget(clickAction);\n // }\n // } else {\n // window.open(ourPrice?.url);\n // }\n\n // makeStatsRequestThrottled(\n // WIDGET_STATS_SETTINGS.actions.click,\n // propertyID\n // );\n // });\n const renderContent = () => {\n return !isMobileDevice ? (\n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n {guestScore}\n
    \n
    \n
    \n
    \n {averageRatingScore}\n
    \n \n
    \n
    \n
    \n
    \n {categories}\n
    \n
    \n
    \n {channelExtras?.map(\n (channelExtra, index) => (\n \n
    \n {channelExtra.categoryAlias ===\n 'Cleanliness' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Comfort' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Facilities' ? (\n \n ) : channelExtra.categoryAlias ===\n 'FreeWifi' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Location' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Staff' ? (\n \n ) : channelExtra.categoryAlias ===\n 'ValueForMoney' ? (\n \n ) : (\n ''\n )}\n
    \n
    \n
    \n {\n channelExtra.categoryName\n }\n
    \n \n {\n channelExtra.categoryScore\n }\n \n
    \n
    \n )\n )}\n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n {totalReviews}\n
    \n
    \n
    \n {totalNumberOfReviews}\n
    \n
    \n
    \n
    \n {channels}\n
    \n
    \n
    \n {channelScores.map((channel, index) => (\n \n \n
    \n
    \n {channel.channelName}\n
    \n
    \n {channel.channelScore}\n {\n channel.channelScoreOutOf\n }\n
    \n
    \n
    \n ))}\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n handleChannelFilterClick(\n -1,\n 'all'\n )\n }\n >\n \n {allSources}\n
    \n {channelScores?.map(\n (channel, index) => (\n
    \n \n handleChannelFilterClick(\n channel.channelID,\n channel.channelName\n )\n }\n >\n \n \n \n
    \n
    \n \n
    \n {\n channel.channelScore\n }\n
    \n
    \n
    \n \n
    \n {\n channel.channelReviews\n }\n
    \n
    \n
    \n )\n )}\n
    \n
    \n \n setIsFiltersOpen(!isFiltersOpen)\n }\n >\n
    \n \n
    \n {filters}\n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n {country}\n \n
    \n {\n const countryCode =\n option.dropdownValue;\n setFullReviewsRefresh(\n true\n );\n dispatch(\n resetReviews()\n );\n getMoreReviews(\n countryCode,\n '',\n 1,\n '',\n ''\n );\n }}\n options={\n showCommentsByCountryOptions\n }\n searchable\n value={\n selectedReviewsCountry\n }\n variant=\"outlined\"\n width=\"140px\"\n />\n
    \n
    \n
    \n \n \n \n \n {orderCommentsBy}\n \n
    \n {\n const sortBy =\n option.dropdownValue;\n setFullReviewsRefresh(\n true\n );\n dispatch(\n resetReviews()\n );\n getMoreReviews(\n '',\n sortBy,\n 1,\n '',\n ''\n );\n }}\n options={\n sortByCommentsOptions\n }\n searchable\n value={sortReviewsBy}\n variant=\"outlined\"\n width=\"140px\"\n />\n
    \n
    \n
    \n \n \n \n \n {reviewScore}\n \n
    \n {\n const sortByScore =\n option.dropdownValue;\n setFullReviewsRefresh(\n true\n );\n dispatch(\n resetReviews()\n );\n getMoreReviews(\n '',\n '',\n 1,\n sortByScore,\n ''\n );\n }}\n options={\n sortByScoreOptions\n }\n searchable\n value={\n selectedReviewsScore\n }\n variant=\"outlined\"\n width=\"140px\"\n />\n
    \n
    \n
    \n \n \n \n \n {seasons}\n \n
    \n {\n const sortBySeason =\n option.dropdownValue;\n setFullReviewsRefresh(\n true\n );\n dispatch(\n resetReviews()\n );\n getMoreReviews(\n '',\n '',\n 1,\n '',\n sortBySeason\n );\n }}\n options={\n sortBySeasonOptions\n }\n searchable\n value={\n selectedReviewsSeason\n }\n variant=\"outlined\"\n width=\"140px\"\n />\n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n {guestReviews}\n
    \n
    \n \n
    \n \n \n \n
    \n \n \n {/*
    \n \n {\n applyImportantStyles(el, {\n display: 'unset',\n float: 'unset',\n });\n }}\n />\n \n
    */}\n \n ) : (\n
    \n
    \n
    \n
    \n
    \n
    \n {guestScore}\n
    \n
    \n
    \n
    \n {guestScoreValueText}\n
    \n
    \n {from} {totalReviewsText}\n
    \n
    \n
    \n
    \n
    \n
    \n {' '}\n
    \n \n \n \n \n
    \n
    \n {channelScores.map(\n (channel, index) => (\n \n \n
    \n
    \n {\n channel.channelName\n }\n
    \n
    \n {\n channel.channelScore\n }\n {\n channel.channelScoreOutOf\n }\n
    \n
    \n
    \n )\n )}\n
    \n
    \n \n \n
    \n
    \n {channelExtras?.map(\n (channelExtra, index) => (\n \n
    \n {channelExtra.categoryAlias ===\n 'Cleanliness' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Comfort' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Facilities' ? (\n \n ) : channelExtra.categoryAlias ===\n 'FreeWifi' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Location' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Staff' ? (\n \n ) : channelExtra.categoryAlias ===\n 'ValueForMoney' ? (\n \n ) : (\n ''\n )}\n
    \n
    \n
    \n {\n channelExtra.categoryName\n }\n
    \n \n {\n channelExtra.categoryScore\n }\n \n
    \n
    \n )\n )}\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n {country}\n \n
    \n {\n const countryCode =\n option.dropdownValue;\n setFullReviewsRefresh(\n true\n );\n dispatch(\n resetReviews()\n );\n getMoreReviews(\n countryCode,\n '',\n 1,\n '',\n ''\n );\n }}\n options={\n showCommentsByCountryOptions\n }\n searchable\n value={\n selectedReviewsCountry\n }\n variant=\"outlined\"\n width=\"140px\"\n />\n
    \n
    \n
    \n \n \n \n \n {\n orderCommentsBy\n }\n \n
    \n {\n const sortBy =\n option.dropdownValue;\n setFullReviewsRefresh(\n true\n );\n dispatch(\n resetReviews()\n );\n getMoreReviews(\n '',\n sortBy,\n 1,\n '',\n ''\n );\n }}\n options={\n sortByCommentsOptions\n }\n searchable\n value={\n sortReviewsBy\n }\n variant=\"outlined\"\n width=\"140px\"\n />\n
    \n
    \n
    \n \n \n \n \n {reviewScore}\n \n
    \n {\n const sortByScore =\n option.dropdownValue;\n setFullReviewsRefresh(\n true\n );\n dispatch(\n resetReviews()\n );\n getMoreReviews(\n '',\n '',\n 1,\n sortByScore,\n ''\n );\n }}\n options={\n sortByScoreOptions\n }\n searchable\n value={\n selectedReviewsScore\n }\n variant=\"outlined\"\n width=\"140px\"\n />\n
    \n
    \n
    \n \n \n \n \n {seasons}\n \n
    \n {\n const sortBySeason =\n option.dropdownValue;\n setFullReviewsRefresh(\n true\n );\n dispatch(\n resetReviews()\n );\n getMoreReviews(\n '',\n '',\n 1,\n '',\n sortBySeason\n );\n }}\n options={\n sortBySeasonOptions\n }\n searchable\n value={\n selectedReviewsSeason\n }\n variant=\"outlined\"\n width=\"140px\"\n />\n
    \n
    \n
    \n
    \n \n
    \n \n \n \n
    \n
    \n
    \n {guestReviews}\n
    \n
    \n \n
    \n
    \n \n \n \n \n \n
    \n {/* \n {bookNow}\n */}\n
    \n \n {\n applyImportantStyles(el, {\n display: 'unset',\n float: 'unset',\n });\n }}\n />\n \n
    \n
    \n \n );\n };\n\n return (\n <>\n \n \n );\n};\n\nexport default ReviewsModal;\n","import { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport BigBookingWidgetHeader from './BigBookingWidgetHeader';\nimport { BookingWidgetMap } from 'components/bookingWidgetMap';\nimport { CancellationAndPaymentPolicyModal } from 'components/cancellationAndPaymentPolicyModal';\nimport { ContactUsModal } from 'components/contactUsModal';\nimport * as constants from './../../constants';\nimport { Click2CallModal } from 'components/click2CallModal';\nimport { ShareHotelModal } from 'components/shareHotelModal';\nimport { Drawer } from '../common/drawer';\nimport { Multiproperty } from 'features/multiproperty';\nimport { RoomDetails } from '../roomDetails';\nimport { PropertyDetails } from 'features/MiniBookingWidget/propertyDetails';\nimport { SidebarMenu } from '../sidebarMenu';\nimport { TrackPricesModal } from 'components/trackPricesModal';\nimport { useGetBookingData } from 'hooks';\n\nimport { closeDrawer, openDrawer } from '../../features/drawersSlice';\n\nimport { setSelectedRoom } from '../../features/roomsSlice';\nimport { setSelectedPropertyId } from 'features/multiproperty/MultipropertySlice';\nimport './BigBookingWidgetDrawer.css';\nimport './Styles.css'; // TODO: THIS IS JUST TEMPORARY (I HOPE SO)\nimport { BookingWidgetForm } from 'components/bookingWidgetForm';\nimport { TermsAndConditionsModal } from 'components/termsAndConditionsModal';\nimport { OfferModal } from 'components/offerModal';\nimport { CartForm } from 'components/cartForm';\nimport { AreYouSureModal } from 'components/areYouSureModal';\nimport { ReviewsModal } from 'components/reviewsModal';\n\nconst BigBookingWidgetDrawer = ({ anchor, propertyType, widgetVariant }) => {\n const { getBookingData } = useGetBookingData();\n const dispatch = useDispatch();\n\n const selectedPropertyId = useSelector(\n (state) => state.multiproperty?.selectedPropertyId\n );\n\n const multipropertyPropeties =\n useSelector((state) => state.multiproperty.multipropertyProperties) ||\n [];\n\n const markers = useSelector((state) => state.multiproperty.markers) || [];\n\n const selectedProperty = multipropertyPropeties.find((multiproperty) => {\n return multiproperty.propertyID === selectedPropertyId;\n });\n\n const data = useSelector((state) => state.miniBookingWidget?.data);\n const sortByClick2Call = data?.click2CallDropDowns;\n\n const isOpen = useSelector(\n (state) => state.drawers.isBigBookingWidgetDrawerOpen\n );\n\n const showOffer = useSelector(\n (state) => state.miniBookingWidget?.data?.enableWidgetOffers\n );\n\n const isMapOpen = useSelector((state) => state.drawers.isMapDrawerOpen);\n\n const showMap = useCallback(() => {\n dispatch(openDrawer({ drawerId: 'MapDrawer' }));\n }, []);\n\n const closeMap = useCallback(() => {\n dispatch(closeDrawer({ drawerId: 'MapDrawer' }));\n }, []);\n\n const menuItems = useSelector(\n (state) => state.miniBookingWidget?.data?.pluginMenus\n );\n\n const {\n isTrackPricesModalOpen,\n isCancellationAndPaymentPolicyModalOpen,\n isContactUsModalOpen,\n isReviewsModalOpen,\n isOfferModalOpen,\n isClick2CallModalOpen,\n isShareHotelModalOpen,\n isTermsAndConditionsModalOpen,\n isAreYouSureModalOpen,\n } = useSelector((state) => state.modal);\n\n const selectedRoomIndex = useSelector(\n (state) => state.rooms.selectedRoomIndex\n );\n\n const selectedRoomFormIndex = useSelector(\n (state) => state.roomForm.selectedRoomFormIndex\n );\n\n const isCartOpen = useSelector((state) => state.cart?.open);\n\n // TODO: DON'T KNOW IF THIS IS IDEAL, MAYBE USE ENVIRONMENT VARIABLE\n const mapboxAccessToken = useSelector(\n (state) => state.miniBookingWidget?.data?.mapboxAccessToken\n );\n const enableMap =\n useSelector((state) => state.miniBookingWidget?.data?.showMap) &&\n Boolean(mapboxAccessToken);\n\n const handleClickOutside = useCallback(() => {\n // If track prices modal is open do not close drawer\n if (\n isTrackPricesModalOpen ||\n isCancellationAndPaymentPolicyModalOpen ||\n isContactUsModalOpen ||\n isReviewsModalOpen ||\n isClick2CallModalOpen ||\n isShareHotelModalOpen ||\n isTermsAndConditionsModalOpen ||\n isOfferModalOpen ||\n isAreYouSureModalOpen\n ) {\n return;\n }\n\n dispatch(\n widgetVariant !== 'openBigDrawer' &&\n closeDrawer({ drawerId: 'BigBookingWidgetDrawer' })\n );\n dispatch(\n setSelectedRoom({\n selectedRoomIndex: null,\n })\n );\n closeMap();\n }, [\n dispatch,\n isTrackPricesModalOpen,\n isCancellationAndPaymentPolicyModalOpen,\n isContactUsModalOpen,\n isReviewsModalOpen,\n isOfferModalOpen,\n isClick2CallModalOpen,\n isShareHotelModalOpen,\n isTermsAndConditionsModalOpen,\n isAreYouSureModalOpen,\n ]);\n\n const handleSidebarMenuBtnClick = useCallback(() => {\n dispatch(closeDrawer({ drawerId: 'BigBookingWidgetDrawer' }));\n }, [dispatch]);\n\n const closeProperyDetails = useCallback(() => {\n dispatch(setSelectedPropertyId({ selectedPropertyId: null }));\n getBookingData();\n }, [setSelectedPropertyId, getBookingData]);\n\n const openPropertyDetails = useCallback(\n (propertyId, parentPropertyId) => {\n dispatch(setSelectedPropertyId({ selectedPropertyId: propertyId }));\n getBookingData({\n propertyId,\n parentPropertyId,\n });\n },\n [setSelectedPropertyId, getBookingData]\n );\n\n return (\n
    \n \n <>\n \n
    \n {/* HEADER */}\n \n\n {/* MAIN CONTENT */}\n {propertyType === constants.MULTIPROPERTY && (\n \n )}\n\n {/* Map */}\n {!!mapboxAccessToken && (\n \n \n \n )}\n\n \n \n \n\n {/* Room Details */}\n \n \n \n \n \n \n \n \n \n
    \n \n \n {sortByClick2Call?.length > 0 && }\n\n \n \n \n \n \n \n \n {showOffer && }\n
    \n );\n};\n\nBigBookingWidgetDrawer.propTypes = {\n anchor: PropTypes.oneOf(['left', 'right']),\n propertyType: PropTypes.string,\n widgetVariant: PropTypes.oneOf([\n constants.REGULAR,\n constants.MULTIPROPERTY,\n constants.SMALL,\n ]),\n};\n\nexport default BigBookingWidgetDrawer;\n","import { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { ReadMore } from 'components/common/readMore';\nimport { stripHTMLTags } from '../../lib';\nimport { MdFreeBreakfast } from 'react-icons/md';\nimport { Channel } from 'components/channel';\nimport { Stars } from 'components/common/stars';\nimport { useGetBookingData } from 'hooks';\n\nconst MobilePropertyCard = ({\n Lang = {},\n property = {},\n openPropertyDetails,\n}) => {\n const { currencySymbol } = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice\n );\n\n const { getBookingData } = useGetBookingData();\n\n const handlePropertyClick = () => {\n openPropertyDetails(property?.propertyID);\n getBookingData({\n propertyId: property?.propertyID,\n parentPropertyId: property?.parentPropertyID,\n });\n };\n\n return (\n
    \n
    \n
    \n {property.ourPrice.text}\n
    \n \n
    \n
    \n
    \n \n
    \n
    \n {property.propertyName}\n
    \n \n
    \n \n
    \n \n {property.scoreRating}{' '}\n {property.totalScoreDecimal}\n \n
    \n \n {property?.ariaLocation}\n \n
    \n \n {stripHTMLTags(\n property.propertyDescription\n )}\n \n
    \n
    \n
    \n
    \n {property.ourPrice?.hasBreakfast ? (\n <>\n
    \n
    \n \n \n {Lang?.breakfastText}\n \n
    \n
    \n \n ) : (\n <>\n )}\n
    \n {property.availableRooms > 0 && (\n
    \n {Lang?.only} {property.availableRooms}{' '}\n {Lang?.roomsLeft}\n
    \n )}\n
    \n
    \n
    \n \n {property.ourPrice?.loyaltyprice &&\n property.ourPrice?.loyaltyprice !== '0' ? (\n <>\n \n {property.ourPrice?.loyaltyprice}{' '}\n {currencySymbol}\n
    \n \n ) : (\n <>\n \n {property.ourPrice?.price}{' '}\n {currencySymbol}\n \n \n )}\n {property.propertySite && (\n \n {Lang?.officialSite}\n \n )}\n \n
    \n \n
    \n
    \n {Lang?.bookNowText}\n
    \n
    \n \n
    \n \n \n \n
    \n
    \n {property.channels.length > 0 && (\n
    \n {property.channels.map((channel, index) => {\n let styles = {};\n if (index >= 3) {\n styles = {\n marginTop: '7px',\n };\n }\n return (\n \n );\n })}\n
    \n )}\n
    \n
    \n \n );\n};\n\nMobilePropertyCard.propTypes = {\n property: PropTypes.object,\n Lang: PropTypes.object,\n openPropertyDetails: PropTypes.func,\n};\n\nexport default MobilePropertyCard;\n","import { Skeleton } from 'components/common/skeleton';\r\n\r\nconst MobilePropertyCardSkeleton = () => {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default MobilePropertyCardSkeleton;\r\n","import { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport * as constants from './../../constants';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { FaArrowRight, FaStream, FaUsers } from 'react-icons/fa';\nimport { openDrawer } from '../../features/drawersSlice';\nimport {\n setMobileSearchOptions,\n setOpenFilters,\n setMobileDetailsOpen,\n} from 'features/multiproperty/MultipropertySlice';\nimport { formatDate } from 'lib';\nimport { dateFormatMobileStr } from './../../constants';\nimport { setCalendarOpen } from 'features/userSlice';\n\nconst MobileHeaderOptions = ({ propertyType }) => {\n const dispatch = useDispatch();\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const isMobileFiltersOpen = useSelector(\n (state) => state.multiproperty?.isMobileFiltersOpen\n );\n const isMobileSearchOptionsOpen = useSelector(\n (state) => state.multiproperty?.isMobileSearchOptionsOpen\n );\n const isMobileDetailsOpen = useSelector(\n (state) => state.multiproperty?.isMobileDetailsOpen\n );\n\n const adults = useSelector((state) => state.user?.adults);\n\n const isOpen = useSelector((state) => state.user?.isCalendarOpen);\n const setIsOpen = (isOpen) => {\n dispatch(setCalendarOpen({ isCalendarOpen: isOpen }));\n };\n const userCountryCode =\n useSelector((state) => state.user?.language) || 'en-US';\n const tempCheckInDate = useSelector(\n (state) => state.user?.checkInDay?.date\n );\n const tempCheckOutDate = useSelector(\n (state) => state.user?.checkOutDay?.date\n );\n\n const showMap = useCallback(() => {\n dispatch(openDrawer({ drawerId: 'MapDrawer' }));\n }, []);\n\n // const showPropertySidebar = useCallback(() => {\n // dispatch(openDrawer({ drawerId: 'PropertySidebarDrawer' }));\n // }, []);\n\n const selectedPropertyId = useSelector(\n (state) => state.multiproperty?.selectedPropertyId\n );\n\n return (\n
    \n
    \n {propertyType === constants.SINGLE_PROPRETY ||\n !!selectedPropertyId ? (\n \n dispatch(\n setMobileDetailsOpen({\n isMobileDetailsOpen: !isMobileDetailsOpen,\n })\n )\n }\n >\n {Lang?.details}\n
    \n ) : (\n
    \n {Lang?.map}\n
    \n )}\n\n setIsOpen(!isOpen)}\n >\n \n {formatDate(\n new Date(tempCheckInDate),\n dateFormatMobileStr,\n userCountryCode\n )}\n \n \n \n \n \n {formatDate(\n new Date(tempCheckOutDate),\n dateFormatMobileStr,\n userCountryCode\n )}\n \n
    \n\n \n dispatch(\n setMobileSearchOptions({\n isMobileSearchOptionsOpen:\n !isMobileSearchOptionsOpen,\n })\n )\n }\n >\n \n {' '}\n {adults}\n \n \n dispatch(\n setOpenFilters({\n isMobileFiltersOpen: !isMobileFiltersOpen,\n })\n )\n }\n >\n \n {Lang?.filters}\n \n \n \n );\n};\n\nMobileHeaderOptions.propTypes = {\n propertyType: PropTypes.string,\n};\n\nexport default MobileHeaderOptions;\n","import * as RadioGroup from '@radix-ui/react-radio-group';\nimport PropTypes from 'prop-types';\nimport './RadioButtonRatesGroup.css';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setTempRate } from 'features/cart/cartSlice';\nimport { openModal } from 'features/modalSlice';\n\nconst RadioButtonRatesGroup = ({\n setSelectedRate,\n defaultValue = '',\n rates = {},\n defaultRate = {},\n currencySymbol = '',\n outerClass = '',\n wrapperClass = '',\n rightLabelClass = '',\n}) => {\n const hasCart = useSelector(\n (state) => state.miniBookingWidget?.data?.hasCart\n );\n const isAddingRate = useSelector((state) => state.cart?.isAddingRate);\n\n const cartItems = useSelector((state) => state.cart?.cartItems);\n const dispatch = useDispatch();\n const onValueChange = (rateIndex) => {\n if (hasCart) {\n if (isAddingRate) {\n return;\n }\n if (cartItems.some((item) => rates[rateIndex].roomTypeID)) {\n if (\n !cartItems.some(\n (item) =>\n item.rateID === rates[rateIndex].rateID &&\n rates[rateIndex].roomTypeID\n )\n ) {\n dispatch(\n setTempRate({\n tempRate: rates[rateIndex].rateID,\n roomTypeID: rates[rateIndex].roomTypeID,\n })\n );\n dispatch(\n openModal({\n modalId: 'AreYouSureModal',\n })\n );\n }\n } else {\n setSelectedRate(rates[rateIndex]);\n }\n } else {\n setSelectedRate(rates[rateIndex]);\n }\n };\n\n return (\n
    \n \n {/* Do not show the first rate as it is the one that is displayed by default */}\n {rates.map((rate, index) => {\n let rightLabelText = `${rate.pricing.price} ${currencySymbol}`;\n if (rate.pricing.memberPrice) {\n rightLabelText = `${rate.pricing.memberPrice} ${currencySymbol}`;\n }\n const isAvailable = rate?.availableRooms?.length > 0;\n // const priceDiff =\n // +rate.pricing.price - +defaultRate.pricing.price;\n // if (rate.pricing.price && defaultRate.pricing.price) {\n // rightLabelText = `+ ${priceDiff} ${currencySymbol}`;\n // }\n\n const buttonID = 'r' + index;\n return (\n \n
    \n
    \n {rate.rate}\n \n
    \n {rightLabelText}\n
    \n \n \n );\n })}\n \n \n );\n};\n\nRadioButtonRatesGroup.propTypes = {\n setSelectedRate: PropTypes.func,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n currencySymbol: PropTypes.string,\n outerClass: PropTypes.string,\n wrapperClass: PropTypes.string,\n rightLabelClass: PropTypes.string,\n rates: PropTypes.object,\n defaultRate: PropTypes.object,\n};\n\nexport default RadioButtonRatesGroup;\n","import { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport { MdFreeBreakfast, MdKeyboardArrowDown } from 'react-icons/md';\n\nimport { BookButton } from 'components/bookButton';\n\nimport { setSelectedRoom } from '../../features/roomsSlice';\n\nimport { RadioButtonRatesGroup } from 'components/radioButtonRatesGroup';\nimport {\n setSelectedFormRoom,\n setSelectedRateID,\n setSelectedRoomForm,\n} from 'features/roomBookingFormSlice';\nimport {\n addCartItem,\n setAddingRate,\n setCartOpenState,\n setSmallCartOpenState,\n setTempRate,\n} from 'features/cart/cartSlice';\nimport { openModal } from 'features/modalSlice';\nimport axios from 'axios';\nimport { toast } from 'react-toastify';\nimport { makeStatsRequestThrottled } from 'lib';\nimport { WIDGET_STATS_SETTINGS, apiConfig } from 'config';\n\nconst MobileRoom = ({ room = {}, index, isBestRate, property }) => {\n const dispatch = useDispatch();\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const roomRef = useRef(null);\n const { currencySymbol } = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice\n );\n\n let defaultRate;\n\n const [selectedRate, setSelectedRate] = useState(() => {\n if (Array.isArray(room.rates) && room.rates.length > 0) {\n return room.rates[0];\n }\n return {};\n });\n\n if (Array.isArray(room.rates) && room.rates.length > 0) {\n defaultRate = room.rates[0];\n }\n\n const openRoomDetails = (roomIndex) => {\n dispatch(setSelectedRoom({ selectedRoomIndex: roomIndex }));\n };\n\n const isDirect = useSelector(\n (state) => state.miniBookingWidget?.data?.bookDirectly\n );\n const propCode = useSelector(\n (state) => state.miniBookingWidget?.data?.propCode\n );\n const propertyID = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyID\n );\n const hasCart = useSelector(\n (state) => state.miniBookingWidget?.data?.hasCart\n );\n const cartItems = useSelector((state) => state.cart?.cartItems);\n const searchOptions = useSelector((state) => state.user);\n const cartID = useSelector(\n (state) => state.miniBookingWidget?.data?.cartID\n );\n let noRedirect = false;\n if (hasCart || isDirect) {\n noRedirect = true;\n }\n const isAddingRate = useSelector((state) => state.cart?.isAddingRate);\n\n const thisRoomCartItems = cartItems.filter(\n (item) => item.roomTypeID === room.roomTypeID\n );\n\n const openRoomBookingForm = async (roomIndex, rateID, room) => {\n if (hasCart) {\n if (isAddingRate) {\n return;\n }\n if (room) {\n const { name, type, rates, photos, roomTypeID } = room;\n const roomName = name;\n const roomType = type;\n const price = rates.find((rate) => rate.rateID === rateID)\n .pricing?.price;\n const prePayPrice = rates.find((rate) => rate.rateID === rateID)\n .pricing?.prePayPrice;\n const roomPhoto = photos?.[0]?.large;\n const rateName = rates.find(\n (rate) => rate.rateID === rateID\n ).name;\n if (cartItems.some((item) => item.roomTypeID === roomTypeID)) {\n if (cartItems.some((item) => item.rateID === rateID)) {\n dispatch(setCartOpenState(true));\n } else {\n dispatch(\n setTempRate({\n tempRate: rateID,\n roomTypeID: roomTypeID,\n })\n );\n dispatch(\n openModal({\n modalId: 'AreYouSureModal',\n })\n );\n }\n } else {\n if (!cartItems.some((item) => item.rateID === rateID)) {\n const cartItem = {\n rateID: rateID,\n propCode,\n roomName,\n roomType,\n price,\n roomPhoto,\n roomTypeID,\n quantity: searchOptions?.numberOfRooms,\n adults: searchOptions?.adults,\n children: searchOptions?.children,\n checkin: searchOptions?.checkInDay.date,\n checkout: searchOptions?.checkOutDay.date,\n cartID,\n rateName,\n isCompleted: false,\n totalPrice:\n Number(price) *\n Number(searchOptions?.numberOfRooms),\n extras: [],\n prePayPrice,\n };\n dispatch(setAddingRate(true));\n const response = await addToCartBack(cartItem);\n if (response?.status === 'ok') {\n cartItem.ID = response.ID;\n dispatch(setSmallCartOpenState(true));\n dispatch(addCartItem(cartItem));\n }\n dispatch(setAddingRate(false));\n } else {\n dispatch(setCartOpenState(true));\n }\n }\n }\n } else if (isDirect) {\n dispatch(setSelectedRoomForm({ selectedRoomFormIndex: roomIndex }));\n dispatch(setSelectedRateID({ selectedRateID: rateID }));\n dispatch(setSelectedFormRoom({ room: room }));\n } else {\n makeStatsRequestThrottled(\n WIDGET_STATS_SETTINGS.actions.booknow,\n propertyID\n );\n }\n };\n\n const addToCartBack = async (cartItem) => {\n try {\n const response = await axios.post(apiConfig?.addToCartBack, {\n ...cartItem,\n });\n\n if (response?.data.status.toLowerCase() === 'ok') {\n return response?.data;\n } else {\n toast.error(Lang?.somethingWentWrong, {\n autoClose: true,\n theme: 'colored',\n PlacementType: 'top-left',\n });\n return 'error';\n }\n } catch (error) {\n toast.error(Lang?.networkError, {\n autoClose: true,\n theme: 'colored',\n });\n return 'error';\n }\n };\n\n useEffect(() => {\n if (thisRoomCartItems && thisRoomCartItems.length > 0) {\n const cartSelectedRateID = thisRoomCartItems[0].rateID;\n const cartSelectedRate = room.rates.find(\n (rate) => rate.rateID === cartSelectedRateID\n );\n setSelectedRate(cartSelectedRate);\n }\n }, [thisRoomCartItems]);\n\n const BestPriceText =\n property?.ourPrice?.text ||\n useSelector((state) => state.miniBookingWidget?.data?.ourPrice.text);\n\n if (!defaultRate) {\n return null;\n }\n\n return (\n <>\n
    \n
    \n
    \n {BestPriceText}\n
    \n openRoomDetails(index)}\n >\n
    \n {/* {room?.photos?.length > 0 && (\n
    \n +{room?.photos?.length} {room.photoText}\n
    \n )} */}\n
    \n
    \n
    \n
    \n openRoomDetails(index)}\n >\n
    \n {room?.name}\n
    \n {room?.roomAvail > 0 &&\n (defaultRate.pricing?.memberPrice ? (\n \n {\n selectedRate?.pricing\n .memberPrice\n }{' '}\n {currencySymbol}\n \n {\n selectedRate?.pricing\n ?.price\n }{' '}\n {currencySymbol}\n \n
    \n ) : (\n \n {selectedRate?.pricing?.price}{' '}\n {currencySymbol}\n
    \n ))}\n
    \n\n
    \n openRoomDetails(index)}\n >\n
    \n {property?.ourPrice\n ?.hasBreakfast ? (\n <>\n {selectedRate?.hasBreakfast && (\n
    \n
    \n \n \n {\n Lang.breakfastText\n }\n \n
    \n
    \n )}\n \n ) : (\n <>\n )}\n
    \n {selectedRate?.hasMinStay && (\n \n Min-Stay\n \n )}\n
    \n {room?.remainingText}\n
    \n {selectedRate?.pricing?.savePrice > 0 &&\n room?.roomAvail > 0 && (\n
    \n
    \n {\n selectedRate\n ?.pricing\n .saveText\n }{' '}\n \n {\n selectedRate\n ?.pricing\n .savePrice\n }{' '}\n {currencySymbol}\n \n
    \n
    \n )}\n\n {selectedRate?.cancelationPolicy &&\n room?.roomAvail > 0 && (\n
    \n
    \n {\n selectedRate.cancelationPolicyType\n }\n {selectedRate?.freeCancelationText && (\n
    \n {\n selectedRate.freeCancelationText\n }\n
    \n )}\n
    \n
    \n )}\n
    \n\n {room?.roomAvail > 0 ? (\n
    \n \n openRoomBookingForm(\n index,\n defaultRate?.rateID,\n room\n )\n }\n isDirect={isDirect}\n noRedirect={noRedirect}\n isLoading={isAddingRate}\n />\n \n openRoomBookingForm(\n index,\n defaultRate?.rateID,\n room\n )\n }\n isDirect={isDirect}\n noRedirect={noRedirect}\n isLoading={isAddingRate}\n />\n
    \n ) : (\n {Lang.soldOut}\n )}\n \n \n \n {room?.rates?.length > 1 && (\n
    \n
    \n {\n if (roomRef.current) {\n roomRef.current.classList.add(\n 'expanded'\n );\n }\n }}\n >\n \n \n \n {room.seeMoreOffers}\n \n {room?.seeMoreOffersPrice}\n \n
    \n {\n if (roomRef.current) {\n roomRef.current.classList.remove(\n 'expanded'\n );\n }\n }}\n >\n \n \n \n {room.seeLessOffers}\n
    \n \n \n )}\n \n \n {room?.rates?.length > 1 && (\n
    \n \n
    \n )}\n \n \n );\n};\n\nMobileRoom.propTypes = {\n room: PropTypes.object,\n property: PropTypes.object,\n index: PropTypes.number,\n isBestRate: PropTypes.bool,\n};\n\nexport default MobileRoom;\n","import { Skeleton } from 'components/common/skeleton';\r\n\r\nimport './SkeletonMobileRoom.css';\r\nconst SkeletonMobileRoom = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SkeletonMobileRoom;\r\n","import { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { getBookingWidgetRoomData } from 'features/roomsSlice';\nimport { MobileHeaderOptions } from 'components/mobileHeaderOptions';\nimport { MobileRoom, SkeletonMobileRoom } from 'components/mobileRoom';\nimport { useGetBookingData, useScrollToTop } from 'hooks';\nimport './MobilePropertyDetails.css';\nimport { LowestRatesSlider } from 'components/lowestRatesSlider';\nimport { differenceInDays } from 'date-fns';\nimport { flatten } from 'lodash';\nimport { setCheckInDay, setCheckOutDay } from 'features/userSlice';\n\nconst MobilePropertyDetails = ({\n closeProperyDetails,\n property = {},\n showHeader,\n openPropertyDetails,\n anchor,\n}) => {\n const dispatch = useDispatch();\n const data = useSelector((state) => state.miniBookingWidget?.data);\n\n const isFetchingPrices = useSelector(\n (state) => state.miniBookingWidget.isFetching\n );\n const isFetchingRooms = useSelector((state) => state.rooms?.isFetching);\n const roomTypes = useSelector((state) => state.rooms.roomTypes);\n const ref = useScrollToTop([isFetchingPrices, isFetchingRooms]);\n\n const roomsUrl = data?.bigPlugin?.allRoomsUrl;\n\n const propertyType = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyType\n );\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const isCartOpen = useSelector((state) => state.cart?.open);\n useEffect(() => {\n if (roomsUrl) {\n dispatch(getBookingWidgetRoomData({ roomsUrl }));\n }\n }, [roomsUrl, isCartOpen]);\n\n const userCountryCode =\n useSelector((state) => state.user?.language) || 'en-US';\n const calendar = useSelector(\n (state) => state.miniBookingWidget?.data?.futureDates\n );\n const { getBookingData } = useGetBookingData();\n const onClick = (day) => {\n let checkOutDate = new Date(day?.date);\n const els = document.querySelectorAll('.ab-daily-lowest-rate');\n for (const element of els) {\n element.classList.remove('ab-day-selected');\n }\n const thisEl = document.querySelectorAll(`[data-date=\"${day?.date}\"]`);\n thisEl[0].classList.add('ab-day-selected');\n checkOutDate = checkOutDate.setDate(\n checkOutDate.getDate() + day?.min_stay\n );\n checkOutDate = new Date(checkOutDate);\n const dateString = checkOutDate\n .toLocaleDateString('en-GB', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n })\n .split('/')\n .reverse()\n .join('-');\n\n const checkOutMonth = checkOutDate.getMonth() + 1;\n const checkOutMontObj = calendar.find((month) => {\n return month.fd_Month === checkOutMonth;\n });\n\n if (!checkOutMontObj) {\n console.error('Month not found');\n return false;\n }\n const checkOuDayObj = checkOutMontObj?.fd_JsonResult?.data?.days.find(\n (day) => {\n return day.date === dateString;\n }\n );\n if (!checkOuDayObj) {\n console.error('Day not found');\n return false;\n }\n dispatch(setCheckInDay({ day: day }));\n\n dispatch(setCheckOutDay({ day: checkOuDayObj }));\n getBookingData({\n checkInDate: day?.date,\n checkOutDate: checkOuDayObj?.date,\n });\n return false;\n };\n const initialDate = useSelector((state) => state.user?.initialDate);\n const [lowestRateDays, lowestRateNextDays, lowestRateMonthIndexes] =\n useMemo(() => {\n const filteredNextDays = [];\n const filteredMonthIndexes = [];\n const monthsToDisplay = calendar?.slice(0, 2);\n const filteredDays = monthsToDisplay.map((month, monthIndex) => {\n return month?.fd_JsonResult?.data?.days?.filter(\n (day, dayIndex, daysArr) => {\n const today = new Date(initialDate);\n const thisDay = new Date(day?.date);\n if (differenceInDays(thisDay, today) >= 0) {\n const nextDay = daysArr[dayIndex + 1];\n filteredMonthIndexes.push(monthIndex);\n filteredNextDays.push(nextDay);\n return day;\n }\n return false;\n }\n );\n });\n\n return [\n flatten(filteredDays),\n filteredNextDays,\n filteredMonthIndexes,\n ];\n }, [calendar]);\n\n return (\n <>\n
    \n
    \n
    \n
    \n \n\n
    \n
    \n \n
    \n {(isFetchingRooms || isFetchingPrices) && (\n <>\n \n \n \n \n )}\n {!isFetchingRooms &&\n !isFetchingPrices &&\n roomTypes.map((room, index) => {\n return (\n \n );\n })}\n
    \n
    \n
    \n
    \n
    \n
    \n \n );\n};\n\nMobilePropertyDetails.propTypes = {\n closeProperyDetails: PropTypes.func,\n property: PropTypes.shape({\n propertyName: PropTypes.string,\n }),\n showHeader: PropTypes.bool,\n openPropertyDetails: PropTypes.func,\n anchor: PropTypes.oneOf(['left', 'right']),\n};\n\nexport default MobilePropertyDetails;\n","import { useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport './MobileBookingDropdown.css';\nimport RoomsAdultsSearch from 'components/roomsAdultsSearch/RoomsAdultsSearch';\n\nconst MobileBookingDropdown = ({ Lang = {} }) => {\n const bookingDropdownRef = useRef(null);\n\n return (\n
    \n \n \n
    \n \n );\n};\nMobileBookingDropdown.propTypes = {\n Lang: PropTypes.object,\n};\nexport default MobileBookingDropdown;\n","import { CartItem } from 'components/cartItem';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport './CartItemsMobile.css';\nimport { FaArrowDown } from 'react-icons/fa';\nimport { setCartMobileOpen } from 'features/cart/cartSlice';\n\nconst CartItemsMobile = ({ hasCartExtras, extraClass }) => {\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n const items = useSelector((state) => state.cart?.cartItems);\n const currency = useSelector((state) => state.user?.currency);\n const finalPrices = useSelector((state) => state.cart?.finalPrices);\n const firstIncompleteIndex = items.findIndex((item) => !item.isCompleted);\n const currentStep = useSelector((state) => state.cart?.currentStep);\n const dispatch = useDispatch();\n const isCartMobileOpen = useSelector(\n (state) => state.cart?.isCartMobileOpen\n );\n const onClick = (open) => {\n dispatch(setCartMobileOpen(open));\n };\n return (\n
    \n onClick(!isCartMobileOpen)}\n >\n
    {Lang?.yourStaySummary}
    \n
    \n \n
    \n
    \n
    \n
    \n {items?.map((item, index) => {\n let selected = index === firstIncompleteIndex;\n if (\n (currentStep === 2 || currentStep === 3) &&\n index === 0\n ) {\n selected = true;\n }\n return (\n \n );\n })}\n {(currentStep === 2 || currentStep === 3) && (\n
    \n \n \n \n \n \n

    \n {currency}  \n {finalPrices?.totalPayment}\n \n {finalPrices?.cartPolicy}\n \n

    \n \n
    \n\n {/* {finalPrices?.totalPayment !==\n finalPrices?.paymentAmount && (\n \n \n \n

    \n {currency}  \n {finalPrices?.paymentAmount}\n

    \n \n
    \n )} */}\n \n
    \n {Lang?.total}\n
    \n {Lang?.paymentAmount}\n
    \n
    \n )}\n
    \n
    \n \n );\n};\n\nCartItemsMobile.propTypes = {\n hasCartExtras: PropTypes.bool,\n extraClass: PropTypes.string,\n};\n\nexport default CartItemsMobile;\n","import { useCallback, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\n\n// import BigBookingWidgetHeader from './BigBookingWidgetHeader';\nimport { BookingCalendar } from 'components/bookingCalendar';\nimport { ContactUsModal } from 'components/contactUsModal';\nimport * as constants from './../../constants';\nimport { Click2CallModal } from 'components/click2CallModal';\nimport { ShareHotelModal } from 'components/shareHotelModal';\nimport { Drawer } from '../common/drawer';\n// import { Multiproperty } from 'features/multiproperty';\n// import { RoomDetails } from '../roomDetails';\n// import { PropertyDetails } from 'features/MiniBookingWidget/propertyDetails';\n// import { SidebarMenu } from '../sidebarMenu';\nimport { TrackPricesModal } from 'components/trackPricesModal';\nimport { useGetBookingData, useScrollToTop, useWindowSize } from 'hooks';\n\nimport { closeDrawer } from '../../features/drawersSlice';\nimport { Picker } from 'components/picker';\nimport { getLanguageCode } from 'lib';\nimport { setCalendarOpen, setCurrency, setLanguage } from 'features/userSlice';\nimport {\n MobilePropertyCard,\n MobilePropertyCardSkeleton,\n} from 'components/mobilePropertyCard';\nimport { MultipropertyFilters } from 'components/multipropertyFilters';\nimport {\n setMobileSearchOptions,\n setOpenFilters,\n setSelectedPropertyId,\n setMobileDetailsOpen,\n} from 'features/multiproperty/MultipropertySlice';\nimport { MobilePropertyDetails } from 'components/mobilePropertyDetails';\nimport { BookingHeader } from 'components/bookingHeader';\nimport { MobileHeaderOptions } from 'components/mobileHeaderOptions';\nimport { Dropdown } from 'components/common/dropdown';\nimport { MobileBookingDropdown } from 'components/mobileBookingDropdown';\nimport { BookingWidgetMap } from 'components/bookingWidgetMap';\nimport { SinglePropertySidebar } from 'components/singlePropertySidebar';\nimport { BookingWidgetForm } from 'components/bookingWidgetForm';\nimport {\n setSelectedFormRoom,\n setSelectedRateID,\n setSelectedRoomForm,\n} from 'features/roomBookingFormSlice';\nimport { RoomDetails } from 'components/roomDetails';\nimport { setSelectedRoom } from 'features/roomsSlice';\nimport { Cart } from 'features/cart';\nimport { CartForm } from 'components/cartForm';\nimport { setCartOpenState } from 'features/cart/cartSlice';\nimport { CartItemsMobile } from 'components/cartItemsMobile';\n// import './BigBookingWidgetDrawer.css';\n// import './Styles.css'; // TODO: THIS IS JUST TEMPORARY (I HOPE SO)\n\nconst MobileMultipropertyDrawer = ({ anchor, propertyType, widgetVariant }) => {\n const { getBookingData } = useGetBookingData();\n const dispatch = useDispatch();\n\n const filteredProperties = useSelector(\n (state) => state.multiproperty.filteredProperties\n );\n const hasCart = useSelector(\n (state) => state.miniBookingWidget?.data?.hasCart\n );\n const multipropertyPropeties =\n useSelector((state) => state.multiproperty.multipropertyProperties) ||\n [];\n\n const data = useSelector((state) => state.miniBookingWidget?.data);\n const selectedRoomFormIndex = useSelector(\n (state) => state.roomForm.selectedRoomFormIndex\n );\n const selectedRoomIndex = useSelector(\n (state) => state.rooms.selectedRoomIndex\n );\n const sortByText = data?.bigPlugin?.sortByText;\n\n const Lang = useSelector((state) => state.miniBookingWidget?.data?.Lang);\n\n const sortByClick2Call = data?.click2CallDropDowns;\n\n const mapboxAccessToken = useSelector(\n (state) => state.miniBookingWidget?.data?.mapboxAccessToken\n );\n\n const countries =\n useSelector(\n (state) => state.miniBookingWidget?.data?.pluginCountries\n ) || [];\n const currencies =\n useSelector((state) => state.miniBookingWidget?.data?.pluginCurrency) ||\n [];\n\n const countryCode = getLanguageCode();\n\n const selectedCurrency = currencies.find((currency) => {\n return currency.currencySelected === 'selected';\n });\n const selectedCountry = countries.find((country) => {\n return country.countryCode === countryCode;\n });\n\n const isOpen = useSelector(\n (state) => state.drawers.isMobileMultipropertyDrawerOpen\n );\n const isFetchingPrices = useSelector(\n (state) => state?.miniBookingWidget?.isFetching\n );\n const isFetchingProperties =\n useSelector((state) => state.multiproperty?.isFetching) ||\n isFetchingPrices;\n\n const ref = useScrollToTop([isFetchingProperties]);\n\n const isCalendarOpen = useSelector((state) => state.user?.isCalendarOpen);\n\n const setIsCalendarOpen = useCallback((isOpen) => {\n dispatch(setCalendarOpen({ isCalendarOpen: isOpen }));\n }, []);\n\n const isMapOpen = useSelector((state) => state.drawers.isMapDrawerOpen);\n const markers = useSelector((state) => state.multiproperty.markers) || [];\n const [currentMonthIndex, setCurrentMonthIndex] = useState(0);\n\n const {\n isTrackPricesModalOpen,\n isCancellationAndPaymentPolicyModalOpen,\n isContactUsModalOpen,\n isClick2CallModalOpen,\n isShareHotelModalOpen,\n isTermsAndConditionsModalOpen,\n } = useSelector((state) => state.modal);\n\n const isMobileFiltersOpen = useSelector(\n (state) => state.multiproperty?.isMobileFiltersOpen\n );\n\n const isMobileDetailsOpen = useSelector(\n (state) => state.multiproperty?.isMobileDetailsOpen\n );\n\n const closeMap = useCallback(() => {\n dispatch(closeDrawer({ drawerId: 'MapDrawer' }));\n }, []);\n\n const isMobileSearchOptionsOpen = useSelector(\n (state) => state.multiproperty?.isMobileSearchOptionsOpen\n );\n const isCartOpen = useSelector((state) => state.cart?.open);\n const handleCurrencyChange = (currencyCode) => {\n dispatch(setCurrency({ currency: currencyCode }));\n getBookingData({ currency: currencyCode });\n };\n\n const handleLanguageChange = async (countryCode) => {\n await dispatch(setLanguage({ language: countryCode }));\n getBookingData({ language: countryCode });\n };\n\n const closeSelectedRoomForm = () => {\n dispatch(setSelectedRoomForm({ selectedRoomFormIndex: null }));\n dispatch(setSelectedRateID({ selectedRateID: null }));\n dispatch(setSelectedFormRoom({ room: {} }));\n };\n\n const closeProperyDetails = useCallback(() => {\n dispatch(setSelectedPropertyId({ selectedPropertyId: null }));\n getBookingData();\n }, [setSelectedPropertyId, getBookingData]);\n\n const openPropertyDetails = useCallback(\n (propertyId, parentPropertyId) => {\n dispatch(setSelectedPropertyId({ selectedPropertyId: propertyId }));\n getBookingData({\n propertyId,\n parentPropertyId,\n });\n },\n [setSelectedPropertyId, getBookingData]\n );\n\n const selectedPropertyId = useSelector(\n (state) => state.multiproperty?.selectedPropertyId\n );\n\n const isCartMobileOpen = useSelector(\n (state) => state.cart?.isCartMobileOpen\n );\n\n const selectedProperty = multipropertyPropeties.find((multiproperty) => {\n return multiproperty.propertyID === selectedPropertyId;\n });\n\n const propertiesDropdown = multipropertyPropeties?.map((property) => {\n let option = {};\n\n if (selectedPropertyId === property.propertyID) {\n option = {\n dropdownText: property.propertyName,\n dropdownValue: property.propertyID,\n dropdownSelected: true,\n };\n } else {\n option = {\n dropdownText: property.propertyName,\n dropdownValue: property.propertyID,\n dropdownSelected: false,\n };\n }\n return option;\n });\n\n const windowSize = useWindowSize();\n\n const handleClickOutside = useCallback(() => {\n // If track prices modal is open do not close drawer\n if (\n isTrackPricesModalOpen ||\n isCancellationAndPaymentPolicyModalOpen ||\n isContactUsModalOpen ||\n isClick2CallModalOpen ||\n isShareHotelModalOpen ||\n isTermsAndConditionsModalOpen\n ) {\n return;\n }\n\n if (isMobileFiltersOpen) {\n dispatch(\n setOpenFilters({\n isMobileFiltersOpen: !isMobileFiltersOpen,\n })\n );\n } else if (isMobileDetailsOpen) {\n dispatch(\n setMobileDetailsOpen({\n isMobileDetailsOpen: !isMobileDetailsOpen,\n })\n );\n } else if (isMobileSearchOptionsOpen) {\n dispatch(\n setMobileSearchOptions({\n isMobileSearchOptionsOpen: !isMobileSearchOptionsOpen,\n })\n );\n } else if (selectedPropertyId) {\n closeProperyDetails();\n } else if (selectedRoomFormIndex !== null) {\n closeSelectedRoomForm();\n } else if (selectedRoomIndex !== null) {\n dispatch(\n setSelectedRoom({\n selectedRoomIndex: null,\n })\n );\n } else if (isCartOpen) {\n dispatch(setCartOpenState(false));\n } else {\n dispatch(closeDrawer({ drawerId: 'MobileMultipropertyDrawer' }));\n if (document.body.classList.contains('ab-no-overflow')) {\n document.body.classList.remove('ab-no-overflow');\n }\n }\n }, [\n dispatch,\n isTrackPricesModalOpen,\n isCancellationAndPaymentPolicyModalOpen,\n isContactUsModalOpen,\n isClick2CallModalOpen,\n isShareHotelModalOpen,\n isMobileFiltersOpen,\n isMobileSearchOptionsOpen,\n selectedPropertyId,\n isMobileDetailsOpen,\n isTermsAndConditionsModalOpen,\n selectedRoomFormIndex,\n selectedRoomIndex,\n ]);\n\n useEffect(() => {\n // Set initial values\n dispatch(setCurrency({ currency: selectedCurrency?.currencyCode }));\n dispatch(setLanguage({ language: selectedCountry?.countryCode }));\n }, []);\n\n return (\n
    \n \n <>\n \n \n \n\n \n <>\n setIsCalendarOpen(false)}\n />\n \n \n \n\n \n \n \n\n {/* Room Details */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n <>\n \n \n \n {/* single property sidebar */}\n \n \n \n\n {/* Map */}\n {!!mapboxAccessToken && (\n \n \n \n )}\n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n
    \n {selectedPropertyId ? (\n <>\n
    \n {\n const propertyId =\n option.dropdownValue;\n const parentPropertyId =\n selectedProperty?.parentPropertyID;\n if (\n selectedPropertyId !==\n option.dropdownValue\n ) {\n openPropertyDetails(\n propertyId,\n parentPropertyId\n );\n }\n }}\n options={\n propertiesDropdown ||\n []\n }\n extraClass=\"ab-properties-dropdown\"\n />\n
    \n \n ) : (\n
    \n {\n data?.multiPropertyParentName\n }\n
    \n )}\n\n
    \n
    \n \n \n {hasCart && (\n \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n\n
    \n {isMobileSearchOptionsOpen && (\n
    \n )}\n
    \n \n\n
    \n {Lang?.multipropertyAppearText}\n
    \n\n \n {isFetchingProperties ? (\n <>\n \n \n \n \n ) : (\n (filteredProperties !== null\n ? filteredProperties\n : multipropertyPropeties\n ).map((property, index) => {\n return (\n \n );\n })\n )}\n
    \n
    \n
    \n \n \n \n \n {sortByClick2Call?.length > 0 && }\n\n \n \n \n \n );\n};\n\nMobileMultipropertyDrawer.propTypes = {\n anchor: PropTypes.oneOf(['left', 'right']),\n propertyType: PropTypes.string,\n widgetVariant: PropTypes.oneOf([\n constants.REGULAR,\n constants.MULTIPROPERTY,\n constants.SMALL,\n ]),\n};\n\nexport default MobileMultipropertyDrawer;\n","import { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport axios from 'axios';\n\nimport { ToastContainer } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n\nimport './App.css';\nimport './Utils.css';\n\nimport * as constants from './constants';\nimport {\n MobileBookingWidget,\n DesktopBookingWidget,\n DesktopHorizontalBookingWidget,\n // MultiPropertyBookingWidget,\n} from './components/bookingWidget';\nimport { MultipropertyCarouselWidget } from './components/multipropertyCarouselWidget';\nimport {\n displayNotifications,\n checkWidgetIntervalsToDelete,\n saveWidgetStateToLS,\n isMobileDeviceRequest,\n} from './lib';\n\nimport {\n getMiniBookingWidgetData,\n hide,\n minimize,\n resetNotificationsAvailable,\n setPrice,\n toggle,\n} from './features/MiniBookingWidget/MiniBookingWidgetSlice';\nimport { openModal } from './features/modalSlice';\nimport { getAvailableFutureDates } from 'features/noAvailablePrices/NoAvailablePricesSlice';\n\nimport { ratestrip } from './interface';\nimport Offers from './components/offers/Offers';\nimport { BigBookingWidgetDrawer } from './components/bigBookingWidgetDrawer';\nimport { RetargetingOffers } from 'components/offers';\nimport { MobileMultipropertyDrawer } from 'components/mobileMultipropertyDrawer';\nimport { useOpenBigWidget, useInitCalendar, useLiveVisitors } from 'hooks';\nimport useSetCart from 'hooks/useSetCart';\n\nfunction App() {\n const [showWidget, setShowWidget] = useState(true);\n\n useOpenBigWidget();\n useInitCalendar();\n useLiveVisitors();\n useSetCart();\n\n const widgetVariant = useSelector(\n (state) => state.miniBookingWidget?.data?.smallWidget\n );\n\n const propertyType = useSelector(\n (state) => state.miniBookingWidget?.data?.propertyType\n );\n\n const notificationsAvailable = useSelector(\n (state) => state.miniBookingWidget.notificationsAvailable\n );\n const notificationsUrl = useSelector(\n (state) => state.miniBookingWidget?.data?.notificationsUrl\n );\n\n const ourOffers =\n useSelector((state) => state.miniBookingWidget?.data?.ourOffers) || [];\n\n const retargetingOffers =\n useSelector((state) => state.miniBookingWidget?.preRetars) || [];\n const popUpNewOffers =\n useSelector((state) => state.miniBookingWidget?.popUpNewList) || [];\n const isOpen = useSelector((state) => state.miniBookingWidget.open);\n // Get reviews drawer anchor\n const widgetPosition = useSelector(\n (state) => state.miniBookingWidget?.widgetPosition\n );\n const drawerAnchor = widgetPosition?.position?.split('-')[1] || 'right';\n const mobileRequest = isMobileDeviceRequest();\n let toastPosition =\n widgetPosition?.position?.split('-')[1] === 'right'\n ? 'bottom-left'\n : 'bottom-right';\n let tostZIndex = 1;\n if (mobileRequest) {\n toastPosition = 'top-left';\n tostZIndex = 'calc(var(--max-z-index) - 2)';\n }\n\n const getFutureDates = useSelector(\n (state) => state.miniBookingWidget?.data?.getFutureDates\n );\n const futureDatesUrl =\n useSelector((state) => state.miniBookingWidget?.data?.futureDatesUrl) ||\n '';\n\n const dispatch = useDispatch();\n\n const toggleWidget = () => {\n dispatch(toggle());\n };\n\n /*********************************************\n *\n * Public interface\n *\n *********************************************/\n\n ratestrip.minimize = () => {\n dispatch(minimize());\n };\n\n ratestrip.hide = () => {\n dispatch(hide());\n };\n\n ratestrip.show = (params = {}) => {\n let {\n adults,\n checkin,\n checkout,\n localeLanguage,\n currency,\n nights,\n rooms,\n children,\n infants,\n voucher,\n price,\n smartGuest,\n keepState,\n bookingEngine,\n } = params;\n\n let newPrice;\n if (price && typeof price === 'string') {\n price = parseFloat(price);\n }\n\n if (smartGuest && typeof smartGuest === 'string') {\n smartGuest = parseFloat(smartGuest);\n }\n\n if (smartGuest === 0) {\n newPrice = price;\n } else if (price === 0) {\n newPrice = smartGuest;\n } else {\n newPrice = [price, smartGuest][price < smartGuest ? 0 : 1];\n }\n\n if (bookingEngine === undefined) {\n bookingEngine = 1;\n }\n\n if (newPrice) {\n dispatch(setPrice({ price: newPrice }));\n }\n\n dispatch(\n getMiniBookingWidgetData({\n adults,\n checkin,\n checkout,\n localeLanguage,\n currency,\n nights,\n rooms,\n children,\n infants,\n voucher,\n price,\n smartGuest,\n bookingEngine,\n keepState,\n })\n );\n };\n\n ratestrip.showOffers = () => {\n if (ourOffers?.offersList?.length > 0) {\n dispatch(openModal({ modalId: 'OffersModal' }));\n }\n };\n\n /*********************************************\n *\n * Public interface END\n *\n *********************************************/\n // Notifications should be displayed only once\n const notificationsShown = useRef(false);\n\n useEffect(async () => {\n try {\n if (notificationsAvailable && !notificationsShown.current) {\n const response = await axios.get(notificationsUrl);\n\n if (response && response.data) {\n const notifications = response.data.notifications || [];\n displayNotifications(notifications);\n dispatch(resetNotificationsAvailable());\n notificationsShown.current = true;\n }\n }\n } catch (error) {}\n }, [notificationsAvailable]);\n\n // Get available future dates\n useEffect(() => {\n if (getFutureDates && futureDatesUrl) {\n dispatch(getAvailableFutureDates(futureDatesUrl));\n }\n }, [futureDatesUrl]);\n\n useEffect(() => {\n // Set isOpen in ls everytime when isOpen Changes\n\n // If 'isOpen' is not set to either 'true' or 'false' that means that\n // the initial request has not been made yet and 'isOpen' has its initial value.\n // So there is no need to save 'isOpen' to LS if its value is not set yet.\n if (isOpen !== null) {\n saveWidgetStateToLS({ isOpen });\n }\n }, [isOpen]);\n\n const intervalOptionIsDismissed = {\n intervalKey: 'isDismissed',\n intervalTimestampKey: 'lastIsDismissedTimestamp',\n };\n\n const intervalOptionIsOpen = {\n intervalKey: 'isOpen',\n intervalTimestampKey: 'lastMultipropertyCloseTimestamp',\n };\n\n // Load widget data\n useEffect(() => {\n if (\n widgetVariant === constants.MULTIPROPERTY ||\n widgetVariant === constants.SMALL_MULTIPROPERTY\n ) {\n checkWidgetIntervalsToDelete(intervalOptionIsOpen);\n checkWidgetIntervalsToDelete(intervalOptionIsDismissed);\n }\n dispatch(getMiniBookingWidgetData());\n }, []);\n\n // Some type of custom routing\n const routes = {\n [constants.SMALL]: (\n <>\n \n \n \n ),\n [constants.MULTIPROPERTY]: (\n \n // to multipropertywidget to palio prin to carousel\n // \n ),\n [constants.MOBILE_MULTIPROPERTY]: (\n <>\n \n\n \n \n ),\n [constants.REGULAR]: (\n \n ),\n [constants.HORIZONTAL]: (\n \n ),\n };\n\n return (\n <>\n
    \n {showWidget && routes[widgetVariant]}\n
    \n {showWidget && }\n \n\n {/* */}\n \n\n \n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(\r\n ({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n }\r\n );\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { configureStore } from '@reduxjs/toolkit';\nimport { miniBookingWidgetSlice } from './../features/MiniBookingWidget/MiniBookingWidgetSlice';\nimport { bookingWidgetReviewsSlice } from './../features/ReviewsSlice';\nimport { bookingWidgetRoomsSlice } from 'features/roomsSlice';\nimport { bookingWidgetMultipropertySlice } from 'features/multiproperty/MultipropertySlice';\nimport { modalSlice } from './../features/modalSlice';\nimport { drawersSlice } from './../features/drawersSlice';\nimport { userSlice } from 'features/userSlice';\nimport { noAvailablePricesSlice } from 'features/noAvailablePrices/NoAvailablePricesSlice';\nimport { bookingWidgetRoomFormSlice } from 'features/roomBookingFormSlice';\nimport { cartSlice } from 'features/cart/cartSlice';\n\nexport default configureStore({\n reducer: {\n miniBookingWidget: miniBookingWidgetSlice.reducer,\n reviews: bookingWidgetReviewsSlice.reducer,\n rooms: bookingWidgetRoomsSlice.reducer,\n multiproperty: bookingWidgetMultipropertySlice.reducer,\n cart: cartSlice.reducer,\n modal: modalSlice.reducer,\n drawers: drawersSlice.reducer,\n user: userSlice.reducer,\n noAvailablePrices: noAvailablePricesSlice.reducer,\n roomForm: bookingWidgetRoomFormSlice.reducer,\n },\n});\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nimport store from './app/store';\r\nimport { ratestrip } from './interface';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('abouthotelier-root')\r\n);\r\n\r\n// Public interface\r\nwindow.ratestrip = ratestrip;\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}