{"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","existingItemIndex","item","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","dataPropertyName","propertyName","reviews","dataTotalScore","guestScore","dataTotalReviews","showScoresComments","showScoreAndReviews","desktopWidgetStyles","showLowestPriceMessage","secondaryBackgroundColor","isLink","screen","renderActionBtns","ourLowestPrice","borderTopStyle","directPrice","bookNowText","paddingLeft","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","calendarAdults","available","minPrice","selectDates","lowestMonthlyRate","BookingPopoverCalendar","isOpenCalendarModal","bookingCalendarRef","contactUs","Picker","pickedValue","setPickedValue","pickerRef","ariaLabel","handleTiggerBtnClick","renderedItems","numberOfItems","numberOfItemsInCol","actualNumberOfItemsInCol","cols","col","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","reviewsText","totalReviewsText","guestScoreText","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","roomType","photos","roomPhoto","large","prePayPrice","isRoomTypeInCart","isRateInCart","existingItem","updatedCartItem","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","roomsCount","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","PaymentGatewayID","paymentMethodsCard","paymentMethodsBank","isMountedRef","cValidation","pleaseCheckYourCardDetails","newCartID","formattedValue","MM","YY","expDateFormatter","cNo","cName","cExp","cCV","handleOptionClick","payWith","creditCard","bankTransfer","selectACardOption","selectABankOption","pMethod","PaymentName","PaymentDescription","PaymentImg","PaymentExtra","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.12cbd31c.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 // 'https://devhotelmanager.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 const existingItemIndex = state.cartItems.findIndex(\n (item) =>\n item.rateID === payload.rateID &&\n item.roomTypeID === payload.roomTypeID\n );\n\n if (existingItemIndex !== -1) {\n state.cartItems[existingItemIndex] = {\n ...state.cartItems[existingItemIndex],\n ...payload,\n };\n } else {\n state.cartItems.push(payload);\n }\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 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';\nimport { useSelector } from 'react-redux';\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 const rooms = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice?.rooms || 1\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 >\n {rooms > 1 && `${rooms} x `}\n {`${price}${currencySymbol}`}\n \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\n noPricesMessage,\n propertyName: dataPropertyName,\n } = data;\n\n const { guestScore: dataTotalScore, totalReviews: dataTotalReviews } =\n useSelector((state) => state.reviews) || {};\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 {Lang?.reviews}\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 // Ensure at least 6 rows\n while (rows.length < 6) {\n rows.push(\n \n {Array(7).fill()}\n \n );\n }\n\n return rows?.map((row, index) => (\n {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 const rooms = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice?.rooms || 1\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 && room) {\n const {\n name: roomName,\n type: roomType,\n rates,\n photos,\n roomTypeID,\n } = room;\n const roomPhoto = photos?.[0]?.large;\n\n const selectedRate = rates.find((rate) => rate.rateID === rateID);\n if (!selectedRate) return;\n\n const { pricing, name: rateName } = selectedRate;\n const price = pricing?.price;\n const prePayPrice = pricing?.prePayPrice;\n\n const isRoomTypeInCart = cartItems.some(\n (item) => item.roomTypeID === roomTypeID\n );\n const isRateInCart = cartItems.some(\n (item) => item.rateID === rateID\n );\n\n if (isRoomTypeInCart) {\n const existingItem = cartItems.find(\n (item) =>\n item.roomTypeID === roomTypeID && item.rateID === rateID\n );\n\n // If the rate is in the cart, compare the necessary fields\n if (isRateInCart) {\n if (\n existingItem &&\n (existingItem.quantity !==\n searchOptions?.numberOfRooms ||\n existingItem.adults !== searchOptions?.adults ||\n existingItem.children !== searchOptions?.children ||\n existingItem.price !== price)\n ) {\n // Replace the existing rate with the selected rate\n const updatedCartItem = {\n ...existingItem,\n rateID,\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 rateName,\n totalPrice:\n Number(price) *\n Number(searchOptions?.numberOfRooms),\n prePayPrice,\n };\n\n dispatch(addCartItem(updatedCartItem));\n dispatch(setCartOpenState(true));\n } else {\n dispatch(setCartOpenState(true));\n }\n } else {\n // Handle case where the rate is not in the cart\n dispatch(setTempRate({ tempRate: rateID, roomTypeID }));\n dispatch(openModal({ modalId: 'AreYouSureModal' }));\n }\n } else {\n // Handle case where the room type is not in the cart\n if (!isRateInCart) {\n const cartItem = {\n 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\n dispatch(setAddingRate(true));\n\n try {\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 } finally {\n dispatch(setAddingRate(false));\n }\n } else {\n dispatch(setCartOpenState(true));\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 {rooms > 1 && `${rooms} x `}\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 {rooms > 1 && `${rooms} x `}{' '}\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 {rooms > 1 && `${rooms} x `}\n {\n defaultRate?.pricing.memberPrice\n }{' '}\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 {rooms > 1 && `${rooms} x `}\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 const roomsCount = useSelector(\n (state) => state.miniBookingWidget?.data?.ourPrice?.rooms || 1\n );\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 {roomsCount > 1 && `${roomsCount} x `}\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 {roomsCount > 1 && `${roomsCount} x `}\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 useEffect(() => {\n if (cardMethods.length === 1) {\n setSelectedCardOption(cardMethods[0].PaymentGatewayID);\n }\n }, [cardMethods]);\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 cardMethods?.length >\n 1 ? (\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 )\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 IBAN\n -{' '}\n \n \n {\n pMethod?.PaymentExtra\n }\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 FaMoon,\n FaTree,\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 {\n MdCallEnd,\n MdChatBubbleOutline,\n MdFilterList,\n MdMyLocation,\n MdRoomService,\n} 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 'Property conditions & facilities' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Property conditions & facilities' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Free Wifi' ? (\n \n ) : channelExtra.categoryAlias ===\n 'FreeWifi' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Location' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Staff' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Staff & service' ? (\n \n ) : channelExtra.categoryAlias ===\n 'ValueForMoney' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Value for money' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Value' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Eco-friendliness' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Rooms' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Check-in\"' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Sleep Quality' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Service' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Accuracy' ? (\n \n ) : channelExtra.categoryAlias ===\n 'Communication' ? (\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":""}