{"version":3,"sources":["config/configs.tsx","config/constants/index.ts","components/footer/index.tsx","components/header/index.tsx","components/button/index.tsx","assets/images/icons/icon-ticket-button.svg","components/number-input/index.tsx","components/ImgWithFallback/index.tsx","assets/images/icons/dropdown-large.svg","assets/images/icons/icon-checked.svg","assets/images/icons/icon-close.svg","assets/images/icons/icon-arrow-lt.svg","assets/images/icons/icon-arrow-rt.svg","components/date-picker/index.tsx","components/carousel/index.tsx","components/carousel/useCarousel.tsx","contexts/viewport-context.tsx","hooks/use-viewport.ts","components/carousel-timeslots/useCaruselTimeslots.tsx","lib/utils.ts","components/carousel-timeslots/index.tsx","containers/ticket/offer.tsx","lib/api/ticket.ts","lib/api/bookings.ts","lib/api/index.ts","assets/images/icons/icon-refresh.svg","lib/api/availability.ts","types/ticket.ts","hooks/use-offer.ts","containers/ticket/index.tsx","components/input/index.tsx","components/select-rs/index.tsx","components/payment/index.tsx","components/accordeon/index.tsx","lib/api/cities.tsx","containers/checkout/index.tsx","assets/images/icons/icon-info.svg","assets/images/icons/icon-download.svg","assets/images/icons/icon-ticket-active.svg","assets/images/icons/icon-accept.svg","assets/images/icons/icon-phone.svg","assets/images/icons/icon-email.svg","assets/images/contact-avatar-ru.png","containers/confirm/index.tsx","assets/images/contact-avatar.png","containers/router/layout.tsx","containers/router/embedded-layout.tsx","containers/router/scroll-to-top.tsx","containers/router/index.tsx","app.tsx","locale/en/index.ts","locale/ru/index.ts","i18n/index.ts","index.tsx"],"names":["configs","agencyKey","apiUrl","stage","tourId","appName","supportPhoneNumber","supportEmail","mainSite","pixelID","googleAnalyticsID","googleAdsID","googleConversionActionID","showPhone","rubPayPageUrl","language","currency","seoTitle","seoDescription","inspectletID","yandexMetricID","hostname","getHostname","window","location","startsWith","slice","config","console","error","routes","yandexConversionActionID","agencyGuid","emptyDate","Date","Footer","assetsUrl","_jsx","id","children","_jsxs","className","href","FontAwesomeIcon","icon","faPhone","substring","target","rel","faEnvelopeOpen","src","alt","logoUrl","Header","onClick","backClick","document","dispatchEvent","CustomEvent","bubbles","faArrowAltCircleLeft","Link","to","faWhatsapp","_Fragment","Button","_path","_rect","_rect2","_rect3","props","buttonClass","fullWidth","color","size","customClassName","type","submit","disabled","load","active","undefined","onClickHandler","label","iconLeft","iconRight","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","SvgIconTicketButton","_ref","svgRef","title","titleId","style","transform","xmlns","width","height","viewBox","ref","d","fill","ForwardRef","NumberInput","tooltip","price","delPrice","minValue","maxValue","count","onChange","counterChangeHandler","newValue","ReactTooltip","place","effect","multiline","toFixed","value","ImgWithFallback","data","source","fallback","useMemo","reduce","prev","item","_item$sizes$find","sizes","find","_item$sizes$find2","srcSet","SvgDropdownLarge","SvgIconChecked","_g","SvgIconClose","x","y","enableBackground","xmlSpace","SvgIconArrowLt","SvgIconArrowRt","registerLocale","ru","years","start","getYear","end","Array","from","Math","abs","_","i","range","months","keys","map","index","format","setMonth","locale","en","DatePickerComponent","isLoading","datePickerRef","useRef","CustomInput","forwardRef","DayPicker","withPortal","customInput","render","calendarContainer","CalendarContainer","Spin","spinning","indicator","LoadingOutlined","fontSize","spin","fullscreen","_datePickerRef$curren","current","setOpen","position","renderCustomHeader","_ref2","date","changeYear","changeMonth","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","IconArrowLeft","getFullYear","_ref3","parseInt","option","getMonth","_ref4","indexOf","IconArrowRight","Carousel","_carouselItems2","carouselItems","selectedDate","excludeDates","isExternalTour","fetchAvailability","disableAnimation","setDisableAnimation","useState","setIsLoading","buttonNextRef","handleChangeDate","useCallback","currentSlide","currentPosition","findIndex","isEqual","startOfDay","useLayoutEffect","setTimeout","ButtonNext","state","visibleSlides","totalSlides","IconDropdownLarge","CarouselProvider","naturalSlideWidth","naturalSlideHeight","step","ButtonBack","Slider","carouselItem","selectedCurrentDate","Slide","isEnable","IconChecked","IconClose","selected","minDate","onMonthChange","async","startOfMonth","val","addMonths","onCalendarOpen","_carouselItems","openToDate","useCarousel","availabilities","utcOffset","timeSlots","prices","acc","availability","availabilityItem","some","timeSlot","timeSlotId","left","leftAdultsTickets","isMinimumAdvancedBooking","localDate","valueOf","getTimezoneOffset","addMinutes","startTime","minimumAdvancedBooking","push","Boolean","viewportContext","React","createContext","innerWidth","innerHeight","ViewportProvider","setWidth","setHeight","handleWindowResize","useEffect","addEventListener","removeEventListener","Provider","useViewport","useContext","useCarouselTimeSlot","currentAvailabilities","filter","isAnyTime","currentAvailability","forEach","availabilityStartDate","availabilityEndDate","endTime","row","Number","getHours","getMinutes","formatDate","hours24","hours12","minutes","ampm","toString","padStart","getGoogleTrackingCode","googleTag","getDates","startDate","stopDate","limit","dateArray","currentDate","addDays","deepReplaceDateToString","object","isValid","formatISO","representation","p","newObject","isArray","CarouselTimeSlot","currentTimeSlot","isPerTrip","useTranslation","_carouselItem$availab2","_carouselItem$timeSlo","selectedTimeSlot","_carouselItem$availab","time","Offer","_editOfferObj$offer","_editOfferObj$offer2","_offer$heroImage","_offer$heroImage2","_offer$heroImage3","_editOfferObj$offer3","_editOfferObj$selecte","_editOfferObj$selecte2","_editOfferObj$selecte3","_editOfferObj$offer4","_offer$timeSlots","_editOfferObj$timeSlo2","_editOfferObj$timeSlo3","_editOfferObj$offer5","_editOfferObj$offer6","_editOfferObj$offer7","_editOfferObj$selecte4","_editOfferObj$selecte5","_editOfferObj$offer8","_editOfferObj$ticketS","_editOfferObj$ticketS2","_editOfferObj$offer9","_editOfferObj$offer10","_editOfferObj$timeSlo4","_editOfferObj$timeSlo5","_editOfferObj$timeSlo6","_editOfferObj$timeSlo7","_timeSlotsCarouselIte","_timeSlotsCarouselIte2","_editOfferObj$timeSlo8","_editOfferObj$availab","_editOfferObj$offer11","_editOfferObj$offer12","editOfferObj","offer","isSelected","selectHandler","heroImage","handleCheckoutBtn","loader","loaderTimeSlot","handleChangePeopleCount","selectTimeSlot","selectDate","dateStart","dateEnd","dates","setDates","priceFromAdult","priceFromChild","pricePerTrip","firstPrice","pricingPeriods","pricePerAdult","pricePerChild","adultAgeToolTip","childAgeToolTip","infantAgeToolTip","childrenAllowed","age","childAge","infantAge","total","selectedPrice","adultCount","childCount","cur","_editOfferObj$timeSlo","endDate","newDates","concat","isExternal","timeSlotsCarouselItems","offerRef","onSelectHandler","boundingClientRect","getBoundingClientRect","log","scrollBy","top","behavior","caption","name","IconTicketButton","dangerouslySetInnerHTML","__html","description","infantsAllowed","infantCount","Trans","i18nKey","bookingType","ticketStock","validUntil","ticket","getTickets","fetchRequest","get","currencyCode","Error","getHotels","countryId","getPickUp","pickUpTimeId","hotelId","getOffersPrices","offerId","ids","AgencyGuid","getOffersPricesRange","getTicketStock","bookings","withPaymentIntent","post","request","getBooking","bookingId","getFee","amount","createBooking","convertCurrency","fromCode","toCode","fetchWithTokenRequest","url","paramsData","params","headers","response","fetch","ok","status","clone","json","warn","text","resp","toast","path","options","seriailizeOptions","arrayFormat","queryString","stringify","method","body","JSON","Accept","file","put","delete","SvgIconRefresh","availabilityApi","getByTimeSlots","dateFrom","addYears","getByOffer","BookingTypeEnum","emptyOfferObj","ticketName","getPrice","isWithinInterval","handleEventHeaderClick","Ticket","setTicket","setAvailabilities","setLoader","setLoaderTimeSlot","history","useHistory","useLocation","Id","URLSearchParams","search","ticketApi","fetchData","disableLoading","prevState","selectOffer","clear","useOffer","tour","setEditOfferObj","flushSync","_data$offer","getAvailability","slot","notOldCheck","_tour$offers","offers","result","faq","cancellationPolicy","newAvailability","maxNumOfPeople","leftChildrenTickets","field","_editOfferObj$availab2","_editOfferObj$availab3","_editOfferObj$availab4","totalPeople","_editOfferObj$ticketS3","adultTicketsLeft","childTicketsLeft","_prev$offer","_prev$offer2","_prev$offer3","_prev$timeSlot","IconRefresh","sort","a","b","_a$prices$","_a$prices$2","_b$prices$","_b$prices$2","_a$prices$0$pricePerT","_a$prices$4","_b$prices$0$pricePerT","_b$prices$4","aHasPricePerTrip","bHasPricePerTrip","_a$prices$0$pricePerA","_a$prices$3","_b$prices$0$pricePerA","_b$prices$3","Infinity","Input","mask","MaskedInput","placeholderChar","placeholder","guide","renderProps","customStyles","container","provided","marginBottom","input","padding","marginLeft","indicatorSeparator","provider","display","singleValue","SelectRS","control","borderColor","Select","theme","borderRadius","colors","primary25","primary","styles","Payment","ticketType","succeeded","setSucceeded","setError","processing","setProcessing","setDisabled","paymentRequest","setPaymentRequest","isShowAppleGooglePayFailed","setIsShowAppleGooglePayFailed","stripe","useStripe","elements","useElements","getPaymentIntent","requestStr","oldPayment","localStorage","getItem","split","parse","payment","bookingApi","setItem","handlePaymentMethodReceived","paymentIntent","booking","payload","confirmCardPayment","clientSecret","payment_method","paymentMethod","handleActions","complete","guid","on","ev","off","pr","country","floor","requestPayerName","requestPayerEmail","canMakePayment","then","handleChange","event","empty","message","onSubmit","preventDefault","cardElement","getElement","CardNumberElement","card","cardStyle","showIcon","CardExpiryElement","CardCvcElement","Loader","role","PaymentRequestButtonElement","memo","base","border","fontSmoothing","lineHeight","invalid","iconColor","Accordeon","items","setActive","citiesApi","getCities","initialCheckout","validateEmail","email","String","toLowerCase","match","Checkout","_checkout$selectedPri7","_checkout$selectedPri8","_checkout$selectedPri9","_checkout$selectedPri10","_checkout$selectedPri11","_checkout$selectedPri12","_checkout$offer2","_checkout$offer4","_checkout$offer5","_checkout$offer7","_checkout$offer8","_checkout$hotel3","_checkout$offer10","_checkout$offer11","_checkout$offer12","_checkout$offer13","_checkout$offer14","_checkout$offer15","_checkout$offer16","_checkout$ticketStock","_checkout$ticketStock2","_checkout$offer17","_checkout$offer18","_checkout$cancellatio","hotels","setHotels","checkout","setCheckout","filterSelect","setFilterSelect","stripePromise","setStripePromise","isFormValid","setIsFormValid","userEmail","userPhone","guestName","hotel","cities","setCities","aedAmount","setAedAmount","Fee","setFee","processingSbp","setProcessingSbp","processingCard","setProcessingCard","paymentType","setPaymentType","filteredHotel","amountUsd","_checkout$selectedPri","_checkout$selectedPri2","_checkout$selectedPri3","_checkout$selectedPri4","_checkout$selectedPri5","_checkout$selectedPri6","pricePerAdultUsd","pricePerChildUsd","pricePerTripUsd","bookingRequest","_checkout$timeSlot","_checkout$hotel","_checkout$offer","_checkout$timeSlot2","_checkout$timeSlot3","adults","infants","roomNumber","userRoomNumber","phone","totalCost","totalCostUsd","ticketOnClickHandler","_stripePromise","loadStripe","process","activeElement","HTMLElement","blur","scrollTo","isDirectReporting","cityName","replace","round","fee","MasterCard","Visa","ModuleBank","setFieldCheckoutHandler","newState","_checkout$offer3","cityId","_checkout$timeSlot4","_checkout$hotel2","_checkout$timeSlot5","createRubBookingFromSbp","host","createRubBookingFromCard","methods","methodsArray","_checkout$offer6","Elements","onInputChange","city","_checkout$offer9","includes","join","PhoneInput","enableAreaCodes","inputProps","required","countryCode","pickUpTime","timeShiftStart","timeShiftEnd","hours","number","titles","percents","declOfNum","Fragment","faqList","getFaq","timeFormat","entry","question","answer","_path2","_path3","SvgIconInfo","SvgIconDownload","SvgIconTicketActive","_path4","_path5","_path6","_path7","_path8","_path9","_path10","SvgIconAccept","SvgIconPhone","SvgIconEmail","Confirm","_booking$numChildren","useParams","setBooking","isSucceeded","isFailed","setFailed","retryFailed","setRetryFailed","setLoading","bookingStatus","isExternalBookingFailed","isLoadingRef","paymentErrorMessage","isCancelled","countRef","Promise","resolve","checkBookingStatus","Helmet","conversionValue","googleConversion","recordFBConversion","recordYandexConversion","tip","ticketsValidUntil","hotelName","pickUpTimeStart","pickUpTimeEnd","offerName","numChildren","numInfants","numAdults","paymentCurrency","IconInfo","voucherUrl","IconDownload","ticketsUrl","IconTicketActive","invoiceUrl","IconAccept","ContactAvatarRu","IconPhone","IconEmail","Layout","Switch","Route","exact","component","EmbeddedLayout","withRouter","unlisten","listen","Routes","Router","ScrollToTop","ToastContainer","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","App","i18n","changeLanguage","content","translation","adult","child","infant","select","perCar","moreInfo","adultToolTip","childToolTip","pricePerVehicle","selectTime","ticketInformation","checkAvailability","generalAdmission","openDated","guest","selectHotel","enterYourName","enterYourRoom","enterYourEmail","selectMobile","bookingSummary","tourDate","selectHotelFirst","numberOfPeopleLabel","cancellationPolicyLabel","clock1","clock2","clock3","orMore","returns","perPerson","completeGuestDetails","invalidHotel","hotelNotListed","nonRefundable","noTimeSlots","cardNumber","expirationDate","cvc","bookNow","bookNowSbp","bookNowCard","purchaseAgreement","masterCardAndVisa","masterCardAndVisaDescription","paymentProcessing","ruCardPaymentTitle","ruCardPaymentDescription","personalInfo","payInAed","confirm","paymentFailed","paymentHookError","tourName","mobileNumber","ticketInfo","downloadVoucher","downloadTickets","downloadInvoice","information","reservationTeamContacts","questions","contact","pleaseWait","title1","body1","title2","body2","cancellationPolicy48","cancellationPolicy24","title3","body3","title4","body4","adultTooltip","childTooltip","infantTooltip","use","initReactI18next","init","resources","translationEn","translationRu","lng","fallbackLng","interpolation","escapeValue","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.e658f430.chunk.js","sourcesContent":["// config.tsx\r\n\r\ninterface Config {\r\n agencyKey: string;\r\n apiUrl: string;\r\n stage: string;\r\n tourId: string;\r\n appName: string;\r\n supportPhoneNumber: string;\r\n supportEmail: string;\r\n mainSite: string;\r\n pixelID?: string;\r\n googleAdsID?: string;\r\n googleAnalyticsID?: string;\r\n googleConversionActionID?: string;\r\n yandexMetricID?: string;\r\n yandexConversionActionID?: string,\r\n inspectletID?: string,\r\n showPhone: boolean;\r\n rubPayPageUrl?: string;\r\n language: string;\r\n currency: string;\r\n seoTitle: string;\r\n seoDescription: string;\r\n}\r\n\r\nconst configs: { [hostname: string]: Config } = {\r\n 'default': {\r\n agencyKey: 'a46-11b4fb85-57ee-4efa-a9af-d2ea7aad5952',\r\n apiUrl: 'https://testapi.traveldesk.me/api',\r\n stage: 'development',\r\n tourId: '5',\r\n appName: 'book-dhowcruise',\r\n supportPhoneNumber: '+971528996310',\r\n supportEmail: 'dhowcruise@absea.ae',\r\n mainSite: 'https://dhowcruise.net/',\r\n pixelID: '625591339562741',\r\n googleAnalyticsID: 'UA-30174420-6',\r\n googleAdsID: 'AW-976860031',\r\n googleConversionActionID: 'AW-976860031/cEaaCIiLs8IDEP_m5tED',\r\n showPhone: true,\r\n rubPayPageUrl: 'https://traveldesk-microsites-dev.azurewebsites.net/pay-page',\r\n language: 'ru',\r\n currency: 'USD',\r\n seoTitle: 'Book Seats onboard Alexandra Dhow Cruise',\r\n seoDescription: 'Book online directly from the official website of Alexandra Floating Restaurant in Dubai Marina.'\r\n },\r\n 'book.dhowcruise.net': {\r\n agencyKey: 'a46-11b4fb85-57ee-4efa-a9af-d2ea7aad5952',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '5',\r\n appName: 'book-dhowcruise',\r\n supportPhoneNumber: '+971528996310',\r\n supportEmail: 'dhowcruise@absea.ae',\r\n mainSite: 'https://dhowcruise.net/',\r\n pixelID: '431582482989370',\r\n googleAdsID: 'AW-976860031',\r\n googleAnalyticsID: 'UA-30174420-6',\r\n googleConversionActionID: 'AW-976860031/cEaaCIiLs8IDEP_m5tED',\r\n showPhone: true,\r\n language: 'en', // Default to 'en' if not specified\r\n currency: 'AED', // Default to 'AED' if not specified\r\n seoTitle: 'Book Seats onboard Alexandra Dhow Cruise',\r\n seoDescription: 'Book online directly from the official website of Alexandra Floating Restaurant in Dubai Marina.'\r\n },\r\n 'book.miraclegarden.ae': {\r\n agencyKey: 'a535-b2079733-47f0-4124-9167-0bff40556318',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '185',\r\n appName: 'book-miraclegarden',\r\n supportPhoneNumber: '+971528996306',\r\n supportEmail: 'support@traveldesk.me',\r\n mainSite: 'https://miraclegarden.ae/',\r\n pixelID: '945862483204921',\r\n googleAdsID: 'AW-16954071693',\r\n googleConversionActionID: 'AW-16954071693/NW3_CIfKn7AaEI21qpQ_',\r\n showPhone: false,\r\n rubPayPageUrl: '',\r\n language: 'en',\r\n currency: 'AED',\r\n seoTitle: 'Dubai Miracle Garden Tickets',\r\n seoDescription: 'Buy Dubai Miracle Garden Tickets Online'\r\n },\r\n 'book.imgtickets.ae': {\r\n agencyKey: 'a557-c347f720-b665-4aaa-8929-1aa5b224d5b7',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '67',\r\n appName: 'book-imgtickets',\r\n supportPhoneNumber: '+971528996306',\r\n supportEmail: 'support@traveldesk.me',\r\n mainSite: 'https://imgtickets.ae/',\r\n pixelID: '945862483204921',\r\n googleAdsID: 'AW-16954071693',\r\n googleConversionActionID: 'AW-16954071693/NW3_CIfKn7AaEI21qpQ_',\r\n showPhone: false,\r\n rubPayPageUrl: '',\r\n language: 'en',\r\n currency: 'AED',\r\n seoTitle: 'IMG Worlds Of Adventure Theme Park Tickets',\r\n seoDescription: 'Buy IMG Worlds Of Adventure Theme Park Tickets Online'\r\n },\r\n 'book.alexandra.ae': {\r\n agencyKey: 'a541-c6d6447e-4d97-47f8-9897-d148157241fb',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '235',\r\n appName: 'book-alexandra',\r\n supportPhoneNumber: '+971528996310',\r\n supportEmail: 'alexandra@absea.ae',\r\n mainSite: 'https://alexandra.ae/',\r\n pixelID: '625591339562741',\r\n googleAdsID: 'AW-16954071693',\r\n googleConversionActionID: 'AW-16954071693/NW3_CIfKn7AaEI21qpQ_',\r\n inspectletID: '2146822060',\r\n showPhone: true,\r\n rubPayPageUrl: '',\r\n language: 'en',\r\n currency: 'AED',\r\n seoTitle: 'Book Seats onboard Alexandra Sea Lounge',\r\n seoDescription: 'Book online directly from the official website of Alexandra Sea Lounge in Dubai Marina.'\r\n },\r\n 'book.gardenglow.ae': {\r\n agencyKey: 'a571-80595d7e-8ad9-4823-82f3-b63645f0e61c',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '176',\r\n appName: 'book-gardenglow',\r\n supportPhoneNumber: '+971528996306',\r\n supportEmail: 'support@traveldesk.me',\r\n mainSite: 'https://gardenglow.ae/',\r\n pixelID: '945862483204921',\r\n googleAdsID: 'AW-976860031',\r\n googleConversionActionID: 'AW-976860031/IH6LCKqn8f8YEP_m5tED',\r\n showPhone: false,\r\n rubPayPageUrl: '',\r\n language: 'en',\r\n currency: 'AED',\r\n seoTitle: 'Garden Glow Tickets',\r\n seoDescription: 'Buy Garden Glow Tickets Online'\r\n },\r\n 'book.dubaisafari.ru': {\r\n agencyKey: 'a765-2442ce66-e09e-4a74-9a34-1601c6b90c4a',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '86',\r\n appName: 'book-dubaisafariru',\r\n supportPhoneNumber: '+971528996301',\r\n supportEmail: 'support@traveldesk.me',\r\n mainSite: 'https://dubaisafari.ru',\r\n pixelID: '945862483204921',\r\n googleAdsID: 'AW-976860031',\r\n googleConversionActionID: 'AW-976860031/lP5tCN7D34YZEP_m5tED',\r\n showPhone: false,\r\n rubPayPageUrl: 'https://dubaitickets.ru/pay-page',\r\n language: 'ru', // Assuming language 'ru' for .ru domain\r\n currency: 'USD', // Assuming USD if not specified\r\n seoTitle: 'Забронируйте сафари по пустыне в Дубае.',\r\n seoDescription: 'Сафари по пустыне в Дубае // Катание по дюнам, живая барбекю и шоу'\r\n },\r\n 'book.dubaisafari.vip': {\r\n agencyKey: 'a643-0471b682-5893-4769-a3fc-91a7fb287d6e',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '159',\r\n appName: 'book-dubaisafari',\r\n supportPhoneNumber: '+971528996306',\r\n supportEmail: 'support@traveldesk.me',\r\n mainSite: 'https://dubaisafari.vip',\r\n pixelID: '945862483204921',\r\n googleAdsID: 'AW-16954071693',\r\n googleConversionActionID: 'AW-16954071693/NW3_CIfKn7AaEI21qpQ_',\r\n showPhone: true,\r\n rubPayPageUrl: '',\r\n language: 'en',\r\n currency: 'AED',\r\n seoTitle: 'VIP Desert Safari in Dubai',\r\n seoDescription: 'Desert Safari in Dubai // Dune Bashing, Live BBQ & Live Show'\r\n },\r\n 'book.balloonflight.ae': {\r\n agencyKey: 'a559-5c96fe56-97c9-4fd9-9936-0cad168551c3',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '74',\r\n appName: 'book-balloonflight',\r\n supportPhoneNumber: '+971528996306',\r\n supportEmail: 'support@traveldesk.me',\r\n mainSite: 'https://balloonflight.ae',\r\n pixelID: '945862483204921',\r\n googleAdsID: 'AW-16954071693',\r\n googleConversionActionID: 'AW-16954071693/NW3_CIfKn7AaEI21qpQ_',\r\n showPhone: true,\r\n rubPayPageUrl: '',\r\n language: 'en',\r\n currency: 'AED',\r\n seoTitle: 'Hot Air Balloon Ride Tickets',\r\n seoDescription: 'Hot Air Balloon Ride Tickets - Soar Above the Desert'\r\n },\r\n 'book.helicopterflight.ae': {\r\n agencyKey: 'a586-54f8f2aa-cacf-4849-bf69-9ca3e6fead31',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '76',\r\n appName: 'book-helicopterflight',\r\n supportPhoneNumber: '+971528996306',\r\n supportEmail: 'support@traveldesk.me',\r\n mainSite: 'https://helicopterflight.ae',\r\n pixelID: '945862483204921',\r\n googleAdsID: 'AW-16954071693',\r\n googleConversionActionID: 'AW-16954071693/NW3_CIfKn7AaEI21qpQ_',\r\n showPhone: true,\r\n rubPayPageUrl: '',\r\n language: 'en',\r\n currency: 'AED',\r\n seoTitle: 'Book Helicopter Flight In Dubai',\r\n seoDescription: \"Helicopter Flight Palm Jumeirah - A Bird's Eye View of Dubai\"\r\n },\r\n 'book.dubaihelicopter.ru': {\r\n agencyKey: 'a933-55adb242-1d30-4f23-a8f5-22da24a0db14',\r\n apiUrl: 'https://api.traveldesk.me/api',\r\n stage: 'production',\r\n tourId: '46',\r\n appName: 'book-dubaihelicopterru',\r\n supportPhoneNumber: '+971528996301',\r\n supportEmail: 'support@traveldesk.me',\r\n mainSite: 'https://dubaihelicopter.ru',\r\n pixelID: '945862483204921',\r\n inspectletID: '557849702',\r\n yandexMetricID: '98657358',\r\n googleAdsID: 'AW-16954071693',\r\n googleConversionActionID: 'AW-16954071693/NW3_CIfKn7AaEI21qpQ_',\r\n showPhone: true,\r\n rubPayPageUrl: 'https://dubaitickets.ru/pay-page',\r\n language: 'ru',\r\n currency: 'USD',\r\n seoTitle: 'Полет на Вертолете В Дубае',\r\n seoDescription: 'Полёт на вертолёте над Пальмой Джумейра – Вид на Дубай с высоты птичьего полёта'\r\n },\r\n};\r\n \r\n export default configs;\r\n ","import configs from '../configs';\r\n\r\nconst getHostname = () => {\r\n let hostname = window.location.hostname;\r\n if (hostname.startsWith('www.')) {\r\n hostname = hostname.slice(4);\r\n }\r\n return hostname;\r\n};\r\n\r\nconst hostname = getHostname();\r\n\r\nconst config = configs[hostname]|| configs['default'];\r\n\r\nif (!config) {\r\n console.error(`No configuration found for hostname: ${hostname}`);\r\n // You might want to redirect to an error page or use a default configuration\r\n}\r\n\r\nexport const routes = {\r\n main: '/',\r\n ticket: '/',\r\n embeddedTicket: '/embedded',\r\n tour: '/tour',\r\n checkout: '/checkout',\r\n embeddedCheckout: '/embedded/checkout',\r\n confirm: '/confirm',\r\n};\r\n\r\nexport const stripePubKey = process.env.REACT_APP_STRIPE_PUB_KEY || '';\r\n\r\nexport const appName = config?.appName || '';\r\n\r\nexport const supportPhoneNumber = config?.supportPhoneNumber || '';\r\n\r\nexport const supportEmail = config?.supportEmail || '';\r\n\r\nexport const mainSite = config?.mainSite || '';\r\n\r\nexport const pixelID = config?.pixelID;\r\n\r\nexport const googleAdsID = config?.googleAdsID;\r\n\r\nexport const googleAnalyticsID = config?.googleAnalyticsID;\r\n\r\nexport const googleConversionActionID = config?.googleConversionActionID;\r\n\r\nexport const yandexMetricID = config?.yandexMetricID;\r\n\r\nexport const yandexConversionActionID = config?.yandexConversionActionID;\r\n\r\nexport const inspectletID = config?.inspectletID;\r\n\r\nexport const agencyGuid = config?.agencyKey || '';\r\n\r\nexport const apiUrl = config?.apiUrl || '';\r\n\r\nexport const tourId = config?.tourId || '';\r\n\r\nexport const showPhone = config?.showPhone || false;\r\n\r\nexport const emptyDate = new Date(2020, 1, 1, 0, 0, 0);\r\n\r\nexport const language = config?.language || 'en';\r\n\r\nexport const rubPayPageUrl = config?.rubPayPageUrl;\r\n\r\nexport const currency = config?.currency || 'AED';\r\n\r\nexport const seoTitle = config?.seoTitle || '';\r\n\r\nexport const seoDescription = config?.seoDescription || '';\r\n","import { faPhone } from \"@fortawesome/fontawesome-free-solid\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { faWhatsapp } from \"@fortawesome/free-brands-svg-icons\";\r\nimport { faEnvelopeOpen } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { supportPhoneNumber, supportEmail, showPhone, rubPayPageUrl } from '../../config/constants';\r\nimport { Link } from \"react-router-dom\";\r\nimport {routes } from \"../../config/constants\";\r\n\r\nconst Footer = () => {\r\n const assetsUrl=\"https://traveldeskuae.blob.core.windows.net/assets\"\r\n return (\r\n \r\n );\r\n }\r\n export default Footer","// src/components/Header/Header.tsx\r\n\r\nimport React from 'react';\r\nimport { appName, supportPhoneNumber, supportEmail, showPhone, routes } from '../../config/constants';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { faPhone } from '@fortawesome/fontawesome-free-solid';\r\nimport { faArrowAltCircleLeft, faEnvelopeOpen } from '@fortawesome/free-regular-svg-icons';\r\nimport { faWhatsapp } from '@fortawesome/free-brands-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\nconst logoUrl = `/logos/${appName}/logo.png`;\r\n\r\nconst Header = () => {\r\n const backClick = () => {\r\n document.dispatchEvent(new CustomEvent('eventHeaderClick', { bubbles: true }));\r\n };\r\n\r\n return (\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 {showPhone && (\r\n \r\n \r\n \r\n )}\r\n {showPhone && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\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 Header;\r\n","import { ReactNode } from 'react';\r\n\r\nexport type ButtonProps = {\r\n color?: 'blue' | 'dark-blue' | 'orange' | 'green' | 'gray';\r\n size?: 'small' | 'medium' | 'large';\r\n label?: string;\r\n disabled?: boolean;\r\n load?: boolean;\r\n iconRight?: () => ReactNode;\r\n iconLeft?: () => ReactNode;\r\n active?: boolean;\r\n onClickHandler?: () => void;\r\n submit?: boolean;\r\n fullWidth?: boolean;\r\n customClassName?: string;\r\n};\r\n\r\nconst Button: React.FC = (props) => {\r\n let buttonClass = 'button';\r\n buttonClass = props.fullWidth ? `${buttonClass} button_fullWidth` : buttonClass;\r\n switch (props.color) {\r\n case 'blue':\r\n buttonClass = `${buttonClass} button_blue`;\r\n break;\r\n case 'dark-blue':\r\n buttonClass = `${buttonClass} button_dark-blue`;\r\n break;\r\n case 'orange':\r\n buttonClass = `${buttonClass} button_orange`;\r\n break;\r\n case 'green':\r\n buttonClass = `${buttonClass} button_green`;\r\n break;\r\n case 'gray':\r\n buttonClass = `${buttonClass} button_gray`;\r\n break;\r\n }\r\n switch (props.size) {\r\n case 'small':\r\n buttonClass = `${buttonClass} button_small`;\r\n break;\r\n case 'medium':\r\n buttonClass = `${buttonClass} button_medium`;\r\n break;\r\n case 'large':\r\n buttonClass = `${buttonClass} button_large`;\r\n break;\r\n }\r\n\r\n if (props.customClassName) buttonClass = `${buttonClass} ${props.customClassName}`;\r\n\r\n return (\r\n \r\n {/*{props.load && }*/}\r\n \r\n {!props.load && (\r\n <>\r\n {props.iconLeft ? {props.iconLeft()} : null}\r\n {props.label}\r\n {props.iconRight && {props.iconRight()}}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","var _path, _rect, _rect2, _rect3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconTicketButton(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n style: {\n transform: \"translateY(3px)\"\n },\n id: \"icon-ticket-button\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 17.695,\n height: 17.696,\n viewBox: \"0 0 17.695 17.696\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_32\",\n \"data-name\": \"Path 32\",\n d: \"M15.507,4.431,15.14,4.8A1.586,1.586,0,0,1,12.9,2.555l.367-.367L11.076,0,0,11.076l2.189,2.189.367-.367A1.586,1.586,0,0,1,4.8,15.14l-.367.367L6.62,17.7,17.7,6.62ZM5.862,15.471a2.624,2.624,0,0,0-3.637-3.637l-.758-.758,9.609-9.609.758.758a2.624,2.624,0,0,0,3.637,3.637l.758.758L6.62,16.229Z\",\n fill: \"#fff\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_39\",\n \"data-name\": \"Rectangle 39\",\n width: 1.037,\n height: 1.041,\n transform: \"translate(9.599 7.36) rotate(-45)\",\n fill: \"#fff\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_40\",\n \"data-name\": \"Rectangle 40\",\n width: 1.037,\n height: 1.041,\n transform: \"translate(8.127 5.887) rotate(-45)\",\n fill: \"#fff\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_41\",\n \"data-name\": \"Rectangle 41\",\n width: 1.037,\n height: 1.041,\n transform: \"translate(11.072 8.833) rotate(-45)\",\n fill: \"#fff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconTicketButton);\nexport default __webpack_public_path__ + \"static/media/icon-ticket-button.aa960af2.svg\";\nexport { ForwardRef as ReactComponent };","import ReactTooltip from 'react-tooltip';\r\nimport { currency } from '../../config/constants';\r\n\r\ntype NumberInputProps = {\r\n label: string;\r\n tooltip?: string;\r\n price?: number;\r\n delPrice?: number;\r\n count?: number;\r\n minValue?: number;\r\n maxValue?: number;\r\n onChange: (value: number) => void;\r\n};\r\n\r\nconst NumberInput = ({\r\n label,\r\n tooltip,\r\n price,\r\n delPrice,\r\n minValue = 0,\r\n maxValue = 15,\r\n count = 0,\r\n onChange\r\n}: NumberInputProps) => {\r\n const counterChangeHandler = (newValue: number) => {\r\n if (newValue >= minValue && newValue <= maxValue) {\r\n onChange(newValue);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {label}\r\n \r\n i\r\n \r\n \r\n {tooltip}\r\n \r\n
\r\n {currency} {(price || 0).toFixed(0)} {delPrice && {currency} {delPrice}}\r\n
\r\n
\r\n \r\n -\r\n \r\n \r\n \r\n +\r\n \r\n
\r\n
{(count * (price || 0)).toFixed(0)} {currency}
\r\n
\r\n );\r\n};\r\n\r\nexport default NumberInput;","import { SrcSetType } from '../../types/ticket';\r\nimport { useMemo } from 'react';\r\n\r\ntype ImgWithFallbackProps = {\r\n data: SrcSetType[];\r\n alt: string;\r\n};\r\n\r\nconst ImgWithFallback = ({ data, alt, ...props }: ImgWithFallbackProps) => {\r\n // const { width } = useViewport();\r\n const { source, fallback } = useMemo(\r\n () =>\r\n data.reduce(\r\n (prev, item) => {\r\n if (item.type === 'image/webp') {\r\n // prev.source = item.sizes.reduce(\r\n // (prevSize, size) => (size.width <= width && size.width > prevSize.width ? size : prevSize),\r\n // { width: 0, src: '' }\r\n // ).src;\r\n prev.source = item.sizes.find((size) => size.width === 320)?.src || ''; // Get S size always\r\n } else if (item.type === 'image/jpg') {\r\n // prev.fallback = item.sizes.reduce(\r\n // (prevSize, size) => (size.width <= width && size.width > prevSize.width ? size : prevSize),\r\n // { width: 0, src: '' }\r\n // ).src;\r\n prev.fallback = item.sizes.find((size) => size.width === 320)?.src || ''; // Get S size always\r\n }\r\n return prev;\r\n },\r\n { source: '', fallback: '' }\r\n ),\r\n [data]\r\n );\r\n return (\r\n \r\n \r\n {alt}\r\n \r\n );\r\n};\r\n\r\nexport default ImgWithFallback;\r\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgDropdownLarge(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 14.751,\n height: 8.409,\n viewBox: \"0 0 14.751 8.409\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_33\",\n \"data-name\": \"Path 33\",\n d: \"M105.245,8.106,98.9,14.448a1.033,1.033,0,0,1-1.461-1.461l5.612-5.612L97.441,1.763A1.033,1.033,0,0,1,98.9.3l6.343,6.343a1.033,1.033,0,0,1,0,1.461Z\",\n transform: \"translate(14.751 -97.138) rotate(90)\",\n fill: \"#1b214a\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDropdownLarge);\nexport default __webpack_public_path__ + \"static/media/dropdown-large.8c12ab04.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconChecked(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20.172,\n height: 15.517,\n viewBox: \"0 0 20.172 15.517\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"icon-checked\",\n d: \"M.233,11.534a.75.75,0,0,1,0-1.086L1.319,9.362a.75.75,0,0,1,1.086,0l.078.078L6.75,14.017a.375.375,0,0,0,.543,0l10.4-10.784h.078a.75.75,0,0,1,1.086,0l1.086,1.086a.75.75,0,0,1,0,1.086h0L7.526,18.284a.75.75,0,0,1-1.086,0L.388,11.767l-.155-.233Z\",\n transform: \"translate(0 -3)\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconChecked);\nexport default __webpack_public_path__ + \"static/media/icon-checked.05343fcc.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconClose(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 1000 1000\",\n enableBackground: \"new 0 0 1000 1000\",\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M638.6,500l322.7-322.7c38.3-38.3,38.3-100.3,0-138.6C923,0.4,861,0.4,822.7,38.7L500,361.4L177.3,38.7C139,0.4,77,0.4,38.7,38.7C0.4,77,0.4,139,38.7,177.3L361.4,500L38.7,822.7C0.4,861,0.4,923,38.7,961.3C57.9,980.4,82.9,990,108,990s50.1-9.6,69.3-28.7L500,638.6l322.7,322.7c19.1,19.1,44.2,28.7,69.3,28.7c25.1,0,50.1-9.6,69.3-28.7c38.3-38.3,38.3-100.3,0-138.6L638.6,500z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconClose);\nexport default __webpack_public_path__ + \"static/media/icon-close.b864ffaa.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconArrowLt(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 13.132,\n height: 9.037,\n viewBox: \"0 0 13.132 9.037\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"icon-arrow-lt\",\n d: \"M12.953,46,9.045,42.1a.611.611,0,1,0-.864.864l2.865,2.865H.611a.611.611,0,0,0,0,1.221H11.047L8.182,49.911a.611.611,0,0,0,.864.864l3.908-3.908A.611.611,0,0,0,12.953,46Z\",\n transform: \"translate(13.132 50.953) rotate(180)\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconArrowLt);\nexport default __webpack_public_path__ + \"static/media/icon-arrow-lt.74a17664.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconArrowRt(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 13.132,\n height: 9.037,\n viewBox: \"0 0 13.132 9.037\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"icon-arrow-rt\",\n d: \"M12.953,46,9.045,42.1a.611.611,0,1,0-.864.864l2.865,2.865H.611a.611.611,0,0,0,0,1.221H11.047L8.182,49.911a.611.611,0,0,0,.864.864l3.908-3.908A.611.611,0,0,0,12.953,46Z\",\n transform: \"translate(0 -41.916)\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconArrowRt);\nexport default __webpack_public_path__ + \"static/media/icon-arrow-rt.7dcc4628.svg\";\nexport { ForwardRef as ReactComponent };","import DayPicker, { CalendarContainer, ReactDatePickerProps, registerLocale } from 'react-datepicker';\r\nimport { getMonth, getYear } from 'date-fns';\r\nimport ru from \"date-fns/locale/ru\";\r\nimport { ReactComponent as IconArrowLeft } from '../../assets/images/icons/icon-arrow-lt.svg';\r\nimport { ReactComponent as IconArrowRight } from '../../assets/images/icons/icon-arrow-rt.svg';\r\nimport * as React from 'react';\r\nimport { forwardRef, useRef } from 'react';\r\nimport { language } from '../../config/constants';\r\nimport { format } from 'date-fns';\r\nimport en from 'date-fns/locale/en-US';\r\nimport { Spin } from 'antd';\r\nimport { LoadingOutlined } from '@ant-design/icons';\r\n\r\n// @ts-ignore\r\nif(language === 'ru')\r\n registerLocale('ru', ru);\r\n\r\nconst range = (start: number, end: number) => Array.from(Array(Math.abs(end - start) + 1), (_, i) => start + i);\r\n\r\nconst years = range(getYear(new Date()), getYear(new Date()) + 2);\r\n// @ts-ignore\r\nconst months = Array.from(Array(12).keys()).map(index => format(new Date('01/01/2020').setMonth(index), 'LLLL', {locale: language === 'ru' ? ru : en}))\r\n\r\nconst DatePickerComponent = ({\r\n isLoading,\r\n ...props\r\n }: ReactDatePickerProps & { render?: React.ReactNode | undefined, isLoading?: boolean }) => {\r\n const datePickerRef = useRef(null);\r\n\r\n const CustomInput = forwardRef((props: React.HTMLProps, ref: React.Ref) => (\r\n \r\n ));\r\n\r\n const CustomContainer = (props: {\r\n className?: string | undefined;\r\n children?: React.ReactNode | undefined;\r\n showPopperArrow?: boolean | undefined;\r\n arrowProps?: { [propName: string]: any } | undefined;\r\n }) => {\r\n return (\r\n \r\n {isLoading && } fullscreen />}\r\n\r\n {\r\n // @ts-ignore\r\n datePickerRef.current?.setOpen(false);\r\n }}\r\n >\r\n
{props.children}
\r\n
\r\n );\r\n };\r\n return (\r\n }\r\n calendarContainer={CustomContainer}\r\n renderCustomHeader={({\r\n date,\r\n changeYear,\r\n changeMonth,\r\n decreaseMonth,\r\n increaseMonth,\r\n prevMonthButtonDisabled,\r\n nextMonthButtonDisabled\r\n }) => (\r\n
\r\n \r\n
\r\n changeYear(parseInt(value))}\r\n >\r\n {years.map((option) => (\r\n \r\n ))}\r\n \r\n changeMonth(months.indexOf(value))}\r\n >\r\n {months.map((option) => (\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 DatePickerComponent;\r\n","import { ButtonBack, ButtonNext, CarouselProvider, Slide, Slider } from 'pure-react-carousel';\r\nimport { ReactComponent as IconDropdownLarge } from '../../assets/images/icons/dropdown-large.svg';\r\nimport isEqual from 'date-fns/isEqual';\r\nimport { addMonths, startOfDay, startOfMonth } from 'date-fns';\r\nimport format from 'date-fns/format';\r\nimport { ReactComponent as IconChecked } from '../../assets/images/icons/icon-checked.svg';\r\nimport { ReactComponent as IconClose } from '../../assets/images/icons/icon-close.svg';\r\nimport DatePickerComponent from '../date-picker';\r\nimport * as React from 'react';\r\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\r\nimport { language } from '../../config/constants';\r\nimport ru from \"date-fns/locale/ru\";\r\nimport en from \"date-fns/locale/en-US\";\r\n\r\n\r\ntype CarouselProps = {\r\n carouselItems: { date: Date; isExternalTour: boolean; isEnable: boolean }[];\r\n selectedDate?: Date;\r\n onChange: (date: Date) => void;\r\n excludeDates: Date[];\r\n isExternalTour: boolean;\r\n fetchAvailability: (date: Date, to: Date) => Promise;\r\n};\r\n\r\nconst Carousel = ({ carouselItems, selectedDate, excludeDates, onChange, isExternalTour,\r\n fetchAvailability, }: CarouselProps) => {\r\n const [disableAnimation, setDisableAnimation] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n\r\n const buttonNextRef = useRef(null);\r\n\r\n const handleChangeDate = useCallback(\r\n (value) => {\r\n onChange(value);\r\n },\r\n [onChange]\r\n );\r\n\r\n const currentSlide = useMemo(() => {\r\n if (!selectedDate) {\r\n return 0;\r\n }\r\n const currentPosition =\r\n selectedDate &&\r\n carouselItems.findIndex((item) => isEqual(startOfDay(new Date(item.date)), startOfDay(selectedDate)));\r\n\r\n if ((currentPosition || currentPosition === 0) && currentPosition >= 0) {\r\n return currentPosition < 1\r\n ? currentPosition\r\n : currentPosition < carouselItems.length - 2 || currentPosition < carouselItems.length - 1\r\n ? currentPosition - 1\r\n : currentPosition - 2;\r\n }\r\n return carouselItems.length - 3;\r\n }, [selectedDate, carouselItems]);\r\n\r\n useLayoutEffect(() => {\r\n setTimeout(() => setDisableAnimation(false), 0);\r\n setDisableAnimation(true);\r\n }, [carouselItems]);\r\n\r\n const CustomInput = forwardRef((props: React.HTMLProps, ref: React.Ref) => (\r\n {\r\n if (\r\n buttonNextRef.current &&\r\n // @ts-ignore\r\n buttonNextRef.current.state.currentSlide + buttonNextRef.current.state.visibleSlides >=\r\n // @ts-ignore\r\n buttonNextRef.current.state.totalSlides\r\n ) {\r\n if (props.onClick) {\r\n // @ts-ignore\r\n props.onClick();\r\n }\r\n }\r\n }}\r\n className='carousel__button carousel__button_next'\r\n >\r\n \r\n \r\n ));\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {carouselItems.map((carouselItem, index) => {\r\n const selectedCurrentDate = selectedDate && isEqual(startOfDay(carouselItem.date), startOfDay(selectedDate));\r\n // @ts-ignore\r\n return (\r\n (carouselItem.isEnable || carouselItem.isExternalTour) && onChange(carouselItem.date)}>\r\n \r\n\r\n \r\n {format(carouselItem.date,\r\n 'iii',\r\n // @ts-ignore\r\n {locale: language === 'ru' ? ru : en})}\r\n {\r\n format(carouselItem.date,\r\n 'd MMM',\r\n // @ts-ignore\r\n {locale: language === 'ru' ? ru : en})}\r\n {!carouselItem.isExternalTour &&\r\n <>{carouselItem.isEnable ? :\r\n }}\r\n \r\n \r\n );\r\n })}\r\n \r\n }\r\n selected={selectedDate}\r\n isLoading={isLoading}\r\n value={selectedDate && format(selectedDate, 'dd.MM.yyyy')}\r\n onChange={handleChangeDate}\r\n excludeDates={excludeDates}\r\n minDate={new Date()}\r\n onMonthChange={async (val) => {\r\n setIsLoading(true);\r\n const start = startOfMonth(val);\r\n !isExternalTour && (await fetchAvailability(start, addMonths(start, 1)));\r\n setIsLoading(false);\r\n }}\r\n onCalendarOpen={async () => {\r\n setIsLoading(true);\r\n const start = carouselItems[carouselItems.length - 1]?.date;\r\n !isExternalTour && (await fetchAvailability(start, addMonths(start, 1)));\r\n setIsLoading(false);\r\n }}\r\n openToDate={carouselItems[carouselItems.length - 1]?.date}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default Carousel;\r\n","import {useMemo} from 'react';\r\nimport isEqual from 'date-fns/isEqual';\r\nimport {startOfDay} from 'date-fns';\r\nimport addMinutes from 'date-fns/addMinutes';\r\nimport { Availability } from '../../types/availability';\r\nimport { PriceType, TimeSlotType } from '../../types/ticket';\r\n\r\nconst useCarousel = (availabilities: Availability[], utcOffset: number, timeSlots?: TimeSlotType[], prices?: Date[], isExternalTour?: boolean) => {\r\n const carouselItems = useMemo(() => {\r\n return (\r\n prices?.reduce((acc: { date: Date; isEnable: boolean; isExternalTour: boolean; availability?: Availability }[], item) => {\r\n const date = new Date(item);\r\n const availability = availabilities.find(\r\n (availabilityItem) =>\r\n timeSlots?.some(timeSlot => timeSlot?.id === availabilityItem.timeSlotId) && (availabilityItem.left || availabilityItem.leftAdultsTickets) &&\r\n isEqual(startOfDay(date), startOfDay(new Date(availabilityItem.date)))\r\n );\r\n let isMinimumAdvancedBooking = true;\r\n if (timeSlots) {\r\n const localDate = new Date(date.valueOf() + utcOffset * 60 * 60 * 1000);\r\n isMinimumAdvancedBooking = timeSlots?.some(timeSlot => new Date((new Date()).valueOf() + utcOffset * 60 * 60 * 1000 + date.getTimezoneOffset() * 60 * 1000) < addMinutes(localDate, timeSlot.startTime - (timeSlot.minimumAdvancedBooking * 60)));\r\n }\r\n const isEnable = !!availability && isMinimumAdvancedBooking && (availability.left > 0 || (availability.leftAdultsTickets && availability.leftAdultsTickets > 0));\r\n acc.push({\r\n date: date,\r\n isEnable: Boolean(isEnable),\r\n availability: availability,\r\n isExternalTour: !!isExternalTour\r\n });\r\n return acc;\r\n }, []) || []\r\n );\r\n }, [timeSlots, prices, availabilities, utcOffset, isExternalTour]);\r\n\r\n return {\r\n carouselItems\r\n };\r\n};\r\n\r\nexport default useCarousel;","import React from 'react';\r\n\r\nexport const viewportContext = React.createContext({ width: window.innerWidth, height: window.innerHeight });\r\n\r\nconst ViewportProvider = ({ ...props }) => {\r\n const [width, setWidth] = React.useState(window.innerWidth);\r\n const [height, setHeight] = React.useState(window.innerHeight);\r\n const handleWindowResize = () => {\r\n setWidth(window.innerWidth);\r\n setHeight(window.innerHeight);\r\n };\r\n\r\n React.useEffect(() => {\r\n window.addEventListener('resize', handleWindowResize);\r\n return () => window.removeEventListener('resize', handleWindowResize);\r\n }, []);\r\n\r\n return {props.children};\r\n};\r\n\r\nexport default ViewportProvider;\r\n","import React from 'react';\r\nimport { viewportContext } from '../contexts/viewport-context';\r\n\r\nconst useViewport = () => {\r\n const { width, height } = React.useContext(viewportContext);\r\n return { width, height };\r\n};\r\n\r\nexport default useViewport;\r\n","import { useMemo } from 'react';\r\nimport isEqual from 'date-fns/isEqual';\r\nimport { addMinutes, startOfDay } from 'date-fns';\r\nimport { TimeSlotType } from '../../types/ticket';\r\nimport { Availability } from '../../types/availability';\r\n\r\nconst useCarouselTimeSlot = (\r\n availabilities: Availability[],\r\n utcOffset: number,\r\n timeSlots?: TimeSlotType[],\r\n selectedDate?: Date\r\n) => {\r\n const timeSlotsCarouselItems = useMemo(() => {\r\n if (selectedDate) {\r\n const currentAvailabilities = availabilities.filter(\r\n (availability) => selectedDate && isEqual(startOfDay(new Date(availability.date)), startOfDay(selectedDate))\r\n );\r\n return timeSlots?.reduce((acc: { timeSlot: TimeSlotType; availability?: Availability }[], item) => {\r\n if (item.isAnyTime) {\r\n currentAvailabilities\r\n .filter((currentAvailability) => currentAvailability.timeSlotId === item.id && currentAvailability.left > 0)\r\n .forEach((currentAvailability) => {\r\n const availabilityStartDate = new Date(currentAvailability.startTime || '');\r\n const availabilityEndDate = new Date(currentAvailability.endTime || '');\r\n if (\r\n !acc.some(\r\n (row) =>\r\n selectedDate &&\r\n isEqual(availabilityStartDate, addMinutes(startOfDay(selectedDate), Number(row.timeSlot.startTime)))\r\n )\r\n ) {\r\n acc.push({\r\n timeSlot: {\r\n ...item,\r\n startTime: availabilityStartDate.getHours() * 60 + availabilityStartDate.getMinutes(),\r\n endTime: availabilityEndDate.getHours() * 60 + availabilityEndDate.getMinutes(),\r\n availability: currentAvailability\r\n },\r\n availability: currentAvailability\r\n });\r\n }\r\n });\r\n } else if (!acc.some((row) => row.timeSlot.startTime === item.startTime)) {\r\n const availability = currentAvailabilities.find(\r\n (availability) =>\r\n selectedDate &&\r\n availability.timeSlotId === item.id &&\r\n isEqual(\r\n new Date(availability.startTime || ''),\r\n addMinutes(startOfDay(selectedDate), Number(item.startTime))\r\n )\r\n );\r\n if(availability && availability.left > 0)\r\n acc.push({\r\n timeSlot: item,\r\n availability: availability\r\n });\r\n }\r\n return acc;\r\n }, []);\r\n } else return [];\r\n }, [selectedDate, timeSlots, availabilities]);\r\n\r\n return timeSlotsCarouselItems;\r\n};\r\n\r\nexport default useCarouselTimeSlot;\r\n","import format from 'date-fns/format';\r\nimport addMinutes from 'date-fns/addMinutes';\r\nimport {\r\n emptyDate,\r\n pixelID,\r\n googleConversionActionID,\r\n yandexMetricID,\r\n googleAdsID,\r\n googleAnalyticsID,\r\n} from '../config/constants';\r\nimport { addDays, formatISO, isValid, startOfDay } from 'date-fns';\r\n\r\nexport const timeFormat = (startTime: number, endTime: number) =>\r\n `${format(addMinutes(emptyDate, startTime), 'HH-mm')} - ${format(addMinutes(emptyDate, endTime), 'HH-mm')}`;\r\n\r\nexport const timeFormatFromTime = (time: number) => formatDate(addMinutes(emptyDate, time));\r\n\r\nexport const formatDate = (date: Date): string => {\r\n const hours24 = date.getHours();\r\n const hours12 = date.getHours() % 12 || 12;\r\n const minutes = date.getMinutes();\r\n const ampm = hours24 < 12 ? 'am' : 'pm';\r\n\r\n const hours12String = hours12.toString().padStart(2, '0');\r\n const minutesString = minutes.toString().padStart(2, '0');\r\n\r\n return `${hours12String}:${minutesString} ${ampm}`;\r\n};\r\n\r\nexport const declOfNum = (number: number, titles: string[]) => {\r\n const cases = [2, 0, 1, 1, 1, 2];\r\n return titles[number % 100 > 4 && number % 100 < 20 ? 2 : cases[number % 10 < 5 ? number % 10 : 5]];\r\n};\r\n\r\nexport function getGoogleAdsCode() {\r\n if (!googleAdsID) {\r\n return null;\r\n }\r\n return getGoogleTrackingCode(googleAdsID);\r\n}\r\n\r\nexport function getGoogleAnalyticsCode() {\r\n if (!googleAnalyticsID) {\r\n return null;\r\n }\r\n return getGoogleTrackingCode(googleAnalyticsID);\r\n}\r\n\r\nfunction getGoogleTrackingCode(googleTag: string) {\r\n return `window.dataLayer = window.dataLayer || [];\r\n function gtag(){window.dataLayer.push(arguments);}\r\n gtag('js', new Date());\r\n gtag('config', '${googleTag}');`;\r\n}\r\n\r\nexport function getFBTrackingCode() {\r\n if (!pixelID) {\r\n return null;\r\n }\r\n return `!function(f,b,e,v,n,t,s)\r\n {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\r\n n.callMethod.apply(n,arguments):n.queue.push(arguments)};\r\n if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\r\n n.queue=[];t=b.createElement(e);t.async=!0;\r\n t.src=v;s=b.getElementsByTagName(e)[0];\r\n s.parentNode.insertBefore(t,s)}(window, document,'script',\r\n 'https://connect.facebook.net/en_US/fbevents.js');\r\n fbq('init', '${pixelID}');\r\n fbq('track', 'PageView');`;\r\n}\r\n\r\nexport function getNoScriptFBTrackingCode() {\r\n if (!pixelID) {\r\n return null;\r\n }\r\n return ``;\r\n}\r\n\r\nexport function googleConversion(conversionValue?: string, bookingId?: string) {\r\n if (!googleAdsID || !googleConversionActionID) {\r\n return null;\r\n }\r\n return `window.gtag('event', 'conversion', {\r\n 'send_to': '${googleConversionActionID}',\r\n 'value': '${conversionValue}',\r\n 'currency': 'USD',\r\n 'transaction_id': '${bookingId}'\r\n })`;\r\n}\r\n\r\nexport function getYandexTrackingCode() {\r\n if (!yandexMetricID) {\r\n return null;\r\n }\r\n return `\r\n \r\n \r\n `;\r\n}\r\nexport function yandexConversion(conversionValue?: string) {\r\n if (!yandexMetricID) {\r\n return null;\r\n }\r\n return `ym(${yandexMetricID}, 'reachGoal','Purchase', {order_price: '${conversionValue}', currency: 'USD'});`;\r\n}\r\n\r\nexport function fbConversion(conversionValue?: string) {\r\n if (!pixelID) {\r\n return null;\r\n }\r\n return `fbq('track', 'Purchase', {\r\n value: ${conversionValue},\r\n currency: 'USD',\r\n });`;\r\n}\r\n\r\nexport const getDates = (startDate: Date, stopDate: Date, limit?: number): Date[] => {\r\n const dateArray = [];\r\n let currentDate = startDate;\r\n while (startOfDay(currentDate) <= startOfDay(stopDate) && (!limit || limit > dateArray.length)) {\r\n dateArray.push(new Date(currentDate));\r\n currentDate = addDays(currentDate, 1);\r\n }\r\n return dateArray;\r\n};\r\n\r\nexport const deepReplaceDateToString = (object: any) => {\r\n try {\r\n if (object instanceof Date) {\r\n if (isValid(object)) {\r\n return formatISO(object, { representation: 'date' });\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n let p;\r\n\r\n if (typeof object === 'object' && object !== null) {\r\n const newObject: typeof object = Array.isArray(object) ? [] : {};\r\n\r\n for (p in object) {\r\n newObject[p] = deepReplaceDateToString(object[p]);\r\n }\r\n\r\n return newObject;\r\n }\r\n } catch {}\r\n return object;\r\n};\r\n","import * as React from 'react';\r\nimport { TimeSlotType } from '../../types/ticket';\r\nimport { timeFormatFromTime } from '../../lib/utils';\r\nimport { Availability } from '../../types/availability';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\ntype CarouselProps = {\r\n carouselItems: { timeSlot: TimeSlotType; availability?: Availability }[];\r\n currentTimeSlot?: TimeSlotType;\r\n onChange: (timeSlot: TimeSlotType) => void;\r\n visibleSlides?: number;\r\n isPerTrip: boolean;\r\n};\r\n\r\nconst CarouselTimeSlot = ({ carouselItems, currentTimeSlot, onChange, isPerTrip }: CarouselProps) => {\r\n const [t] = useTranslation();\r\n\r\n return (\r\n
\r\n {carouselItems.map((carouselItem, index) => {\r\n const selectedTimeSlot =\r\n currentTimeSlot &&\r\n currentTimeSlot.id === carouselItem.timeSlot.id &&\r\n currentTimeSlot.startTime === carouselItem.timeSlot.startTime;\r\n return (\r\n \r\n carouselItem?.availability && carouselItem?.availability?.left > 0 && onChange(carouselItem.timeSlot)\r\n }\r\n >\r\n 0\r\n ? ' carousel__item_active'\r\n : ''\r\n } ${carouselItem?.availability && carouselItem.availability.left > 0 ? '' : ' carousel__item_disabled'}`}\r\n >\r\n {!isPerTrip && (\r\n \r\n {carouselItem.availability?.left} {t('ticket.left')}\r\n \r\n )}\r\n {timeFormatFromTime(carouselItem?.timeSlot?.startTime)}\r\n
\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default CarouselTimeSlot;\r\n","import Button from '../../components/button';\r\nimport { ReactComponent as IconTicketButton } from '../../assets/images/icons/icon-ticket-button.svg';\r\nimport NumberInput from '../../components/number-input';\r\nimport { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { CheckoutData, HeroImageType, OfferType, TimeSlotType } from '../../types/ticket';\r\nimport ImgWithFallback from '../../components/ImgWithFallback';\r\nimport format from 'date-fns/format';\r\nimport addMinutes from 'date-fns/addMinutes';\r\nimport { emptyDate, currency } from '../../config/constants';\r\nimport { Availability } from '../../types/availability';\r\nimport Carousel from '../../components/carousel';\r\nimport useCarousel from '../../components/carousel/useCarousel';\r\nimport { Trans, useTranslation } from 'react-i18next';\r\nimport useViewport from '../../hooks/use-viewport';\r\nimport useCarouselTimeSlot from '../../components/carousel-timeslots/useCaruselTimeslots';\r\nimport CarouselTimeSlot from '../../components/carousel-timeslots';\r\nimport { addDays, isEqual } from 'date-fns';\r\nimport { getDates } from '../../lib/utils';\r\n\r\n\r\ntype TicketProps = {\r\n offer: OfferType;\r\n heroImage: HeroImageType;\r\n isSelected: boolean;\r\n selectHandler: (value: number) => void;\r\n editOfferObj?: CheckoutData;\r\n handleCheckoutBtn: () => void;\r\n availabilities: Availability[];\r\n utcOffset: number;\r\n loader: boolean\r\n loaderTimeSlot: boolean\r\n handleChangePeopleCount: (value: any, name: \"adultCount\" | \"childCount\" | \"infantCount\") => void;\r\n selectDate: (date: Date) => void;\r\n selectTimeSlot: (slot: TimeSlotType) => void\r\n dateStart: Date | string;\r\n dateEnd: Date | string;\r\n fetchAvailability: (date: Date, to: Date) => Promise;\r\n};\r\n\r\nconst Offer = ({\r\n editOfferObj,\r\n offer,\r\n isSelected,\r\n selectHandler,\r\n heroImage,\r\n handleCheckoutBtn,\r\n availabilities,\r\n utcOffset,\r\n loader,\r\n loaderTimeSlot,\r\n handleChangePeopleCount,\r\n selectTimeSlot,\r\n selectDate,\r\n dateStart, dateEnd,fetchAvailability\r\n }: TicketProps) => {\r\n\r\n const [t] = useTranslation();\r\n const startDate = new Date(dateStart) < new Date() ? new Date() : new Date(dateStart);\r\n\r\n\r\n const [dates, setDates] = useState(getDates(startDate, new Date(dateEnd), 10));\r\n\r\n\r\n const { priceFromAdult, priceFromChild, pricePerTrip } = useMemo(() => {\r\n // Get the first price entry from the offer's prices array.\r\n const firstPrice = offer.pricingPeriods[0] || { pricePerAdult: 0, pricePerChild: 0, pricePerTrip: 0 };\r\n\r\n // Return the prices directly from the first entry.\r\n return {\r\n priceFromAdult: firstPrice.pricePerAdult,\r\n priceFromChild: firstPrice.pricePerChild,\r\n pricePerTrip: firstPrice.pricePerTrip\r\n };\r\n}, [offer]);\r\n\r\n\r\n\r\n const { adultAgeToolTip, childAgeToolTip, infantAgeToolTip } = useMemo(() => {\r\n // Check if children are allowed and set adultAgeToolTip accordingly\r\n const adultToolTip = offer.childrenAllowed\r\n ? t('ticket.adultToolTip', {age: offer.childAge})\r\n : t('ticket.adultToolTip', {age: offer.infantAge});\r\n\r\n // Set tooltips for child and infant\r\n const childToolTip = t('ticket.childToolTip', {age: offer.childAge});\r\n const infantToolTip = t('ticket.childToolTip', {age: offer.infantAge});\r\n\r\n return { adultAgeToolTip: adultToolTip, childAgeToolTip: childToolTip, infantAgeToolTip: infantToolTip };\r\n }, [offer]);\r\n\r\n\r\n const total = useMemo(\r\n () => {\r\n const price = (editOfferObj && editOfferObj.selectedPrice) || (offer.pricingPeriods.length && offer.pricingPeriods[0]);\r\n return editOfferObj && price\r\n ? (\r\n editOfferObj.adultCount * price.pricePerAdult +\r\n editOfferObj.childCount * price.pricePerChild +\r\n price.pricePerTrip\r\n ).toFixed(0)\r\n : 0;\r\n },\r\n [editOfferObj, offer.prices]\r\n );\r\n\r\n const excludeDates = useMemo(\r\n () =>\r\n availabilities.reduce((prev: Date[], cur) => {\r\n if (editOfferObj?.timeSlot?.id === cur.timeSlotId && cur.left < 1) {\r\n prev.push(new Date(cur.date));\r\n }\r\n return prev;\r\n }, []),\r\n [availabilities, editOfferObj?.timeSlot]\r\n );\r\n\r\n useEffect(() => {\r\n if (\r\n editOfferObj?.selectedDate &&\r\n !dates.some((date) => editOfferObj.selectedDate && isEqual(date, editOfferObj.selectedDate))\r\n ) {\r\n const startDate = addDays(dates[dates.length - 1], 1);\r\n const endDate = addDays(editOfferObj.selectedDate, 7);\r\n const newDates = getDates(startDate, endDate);\r\n setDates((prev) => prev.concat(newDates));\r\n }\r\n }, [selectDate]);\r\n\r\n const { carouselItems } = useCarousel(availabilities,\r\n utcOffset,\r\n editOfferObj?.offer?.timeSlots,\r\n dates,\r\n editOfferObj?.offer?.isExternal);\r\n\r\n const timeSlotsCarouselItems = useCarouselTimeSlot(\r\n availabilities,\r\n utcOffset,\r\n offer?.timeSlots,\r\n editOfferObj?.selectedDate\r\n );\r\n\r\n const { width } = useViewport();\r\n\r\n const offerRef = useRef(null);\r\n\r\n const onSelectHandler = () => {\r\n selectHandler(offer.id);\r\n setTimeout(() => {\r\n\r\n if (offerRef && offerRef.current) {\r\n // @ts-ignore\r\n const boundingClientRect = offerRef.current.getBoundingClientRect();\r\n console.log(boundingClientRect);\r\n window && window.scrollBy({\r\n top: boundingClientRect.top - (width > 760 ? 140 : 80),\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n }, 0);\r\n };\r\n \r\n\r\n return (\r\n
\r\n
\r\n
\r\n {(offer.heroImage?.srcSet || heroImage?.srcSet) && }\r\n
\r\n
\r\n

{offer.name}

\r\n
\r\n
\r\n
\r\n {!priceFromChild && !pricePerTrip && (\r\n
\r\n
\r\n {priceFromAdult.toFixed(0)}\r\n  {currency}\r\n
\r\n {t('checkout.perPerson')}\r\n
\r\n )}\r\n {!!priceFromChild && (\r\n
\r\n
\r\n {priceFromAdult.toFixed(0)}\r\n  {currency}\r\n
\r\n {t('adult')}\r\n
\r\n )}\r\n {!!priceFromChild && (\r\n
\r\n
\r\n {priceFromChild.toFixed(0)}\r\n  {currency}\r\n
\r\n {t('ticket.child')}\r\n
\r\n )}\r\n {!!pricePerTrip && (\r\n
\r\n
\r\n {pricePerTrip.toFixed(0)}\r\n  {currency}\r\n
\r\n {t('ticket.perCar')}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n }\r\n label={isSelected ? t('ticket.selected') : t('ticket.moreInfo')}\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
{t('ticket.ticketInformation')}
\r\n\r\n
\r\n
\r\n
\r\n
{t('ticket.checkAvailability')}
\r\n {!offer.childrenAllowed && (\r\n handleChangePeopleCount(value, 'adultCount')}\r\n minValue={1}\r\n />\r\n )}\r\n {offer.childrenAllowed && (\r\n handleChangePeopleCount(value, 'adultCount')}\r\n minValue={1}\r\n />\r\n )}\r\n {offer.childrenAllowed && (\r\n handleChangePeopleCount(value, 'childCount')}\r\n minValue={0}\r\n />\r\n )}\r\n {offer.infantsAllowed && (\r\n handleChangePeopleCount(value, 'infantCount')}\r\n minValue={0}\r\n />\r\n )}\r\n {editOfferObj?.selectedPrice && editOfferObj.selectedPrice.pricePerTrip > 0 && (\r\n
\r\n
\r\n \r\n Price per Vehicle * Max 6 people\r\n \r\n
\r\n {editOfferObj.selectedPrice.pricePerTrip || pricePerTrip} {currency}\r\n
\r\n
\r\n )}\r\n\r\n {editOfferObj?.offer?.bookingType !== 2 && (\r\n
\r\n
\r\n {offer?.timeSlots?.length === 1 && !offer?.timeSlots[0].isAnyTime ? (\r\n <>\r\n
{t('ticket.time')}
\r\n
{`${format(\r\n addMinutes(emptyDate, editOfferObj?.timeSlot?.startTime || 0),\r\n 'HH-mm'\r\n )} - ${format(addMinutes(emptyDate, editOfferObj?.timeSlot?.endTime || 0), 'HH-mm')}`}
\r\n \r\n ) : (\r\n <>{t('ticket.selectTime')}:\r\n )}\r\n
\r\n
\r\n )}\r\n {loader ?
Loading...
:\r\n <>\r\n {editOfferObj?.offer?.bookingType !== 2 && (\r\n \r\n )}\r\n {loaderTimeSlot ?
Loading...
:\r\n !!editOfferObj?.offer?.isExternal && !!editOfferObj?.selectedDate && timeSlotsCarouselItems?.length === 0 ?\r\n
{t('checkout.noTimeSlots')}
\r\n : !!timeSlotsCarouselItems?.length &&\r\n (timeSlotsCarouselItems?.length > 1 || timeSlotsCarouselItems[0].timeSlot.isAnyTime) &&\r\n editOfferObj?.selectedDate && (\r\n
\r\n
{t('ticket.selectTime')}
\r\n 0\r\n }\r\n />\r\n
\r\n )}\r\n {editOfferObj?.offer?.bookingType === 2 &&\r\n editOfferObj?.ticketStock?.validUntil && (\r\n {t('ticket.openDated', {date: format(\r\n new Date(editOfferObj?.ticketStock?.validUntil) || new Date(),\r\n 'dd.MM.yyyy'\r\n )})}\r\n )}\r\n
\r\n
\r\n \r\n Total\r\n \r\n
\r\n
{total} {currency}
\r\n
\r\n }\r\n
\r\n
\r\n {editOfferObj?.offer?.bookingType !== 2 && (\r\n \r\n )}\r\n {editOfferObj?.offer?.bookingType === 2 && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Offer;\r\n","import { fetchRequest } from './index';\r\nimport { agencyGuid, apiUrl } from '../../config/constants';\r\nimport { PickUpTime, PriceType, TicketType, TicketStock } from '../../types/ticket';\r\nimport { Hotel } from '../../types/hotel';\r\nimport format from 'date-fns/format';\r\nimport { addDays } from 'date-fns';\r\n\r\nconst getTickets = async (currency: string, tourId: string): Promise => {\r\n const ticket = await fetchRequest.get(`${apiUrl}/widgets/tour/${tourId}`, { currencyCode: currency, agencyGuid: agencyGuid });\r\n if (ticket) return ticket;\r\n throw new Error('Не удалось получить данные');\r\n};\r\n\r\nconst getHotels = async (countryId: number): Promise =>\r\n await fetchRequest.get(`${apiUrl}/hotels/listbase`, { countryId: countryId });\r\n\r\nconst getOffersPrices = async (offerId: number, from: Date, currency: string): Promise =>\r\n await fetchRequest.get(`${apiUrl}/widgets/offersPrices`, {\r\n ids: offerId,\r\n from: format(addDays(from, -7), 'yyyy-MM-dd'),\r\n to: format(addDays(from, 7), 'yyyy-MM-dd'),\r\n currencyCode: currency,\r\n AgencyGuid: agencyGuid\r\n });\r\nconst getOffersPricesRange = async (offerId: number, from: Date, to: Date, currency: string): Promise =>\r\n await fetchRequest.get(`${apiUrl}/widgets/offersPrices`, {\r\n ids: offerId,\r\n from: format(addDays(from, 0), 'yyyy-MM-dd'),\r\n to: format(addDays(to, 7), 'yyyy-MM-dd'),\r\n currencyCode: currency,\r\n AgencyGuid: agencyGuid\r\n});\r\n\r\n\r\nconst getPickUp = async (pickUpTimeId?: number, hotelId?: number, startTime?: number): Promise =>\r\n await fetchRequest.get(`${apiUrl}/pickuptimes/value`, {\r\n pickUpTimeId: pickUpTimeId,\r\n hotelId: hotelId,\r\n startTime: startTime\r\n });\r\nconst getTicketStock = async (offerId: number): Promise =>\r\n await fetchRequest.get(`${apiUrl}/tickets/foroffer/${offerId}`, { agencyGuid: agencyGuid });\r\nconst ticket = {\r\n getTickets,\r\n getHotels,\r\n getPickUp,\r\n getOffersPrices,\r\n getOffersPricesRange,\r\n getTicketStock\r\n};\r\n\r\nexport default ticket;\r\n","import { agencyGuid, apiUrl } from '../../config/constants';\r\nimport { fetchRequest } from './index';\r\nimport { Booking, BookingRequest, Fee, PaymentIntent } from '../../types/booking';\r\n\r\nconst withPaymentIntent = async (\r\n request: BookingRequest\r\n): Promise<{ booking: Booking; paymentIntent: PaymentIntent }> =>\r\n await fetchRequest.post(`${apiUrl}/bookings/withpaymentintent?AgencyGuid=${agencyGuid}`, request);\r\n\r\nconst getBooking = async (bookingId: string): Promise =>\r\n await fetchRequest.get(`${apiUrl}/bookings/${bookingId}`);\r\nconst getFee = async (amount: number, currency: string): Promise =>\r\n (await fetchRequest.get(`${apiUrl}/bookings/calculaterubpaymentamount?amount=${amount}¤cy=${currency}`)).data;\r\nconst convertCurrency = async (amount: number, fromCode: string, toCode: string): Promise =>\r\n (await fetchRequest.get(`${apiUrl}/currencies/convertcurrency?amount=${amount}&fromCode=${fromCode}&toCode=${toCode}`));\r\nconst createBooking = async (request: BookingRequest): Promise => {\r\n console.log(request);\r\n return await fetchRequest.post(`${apiUrl}/bookings`, request);\r\n}\r\n\r\nconst bookings = {\r\n withPaymentIntent,\r\n getBooking,\r\n getFee,\r\n createBooking,\r\n convertCurrency\r\n};\r\nexport default bookings;\r\n","import queryString from 'query-string';\r\nimport { toast } from 'react-toastify';\r\nimport { deepReplaceDateToString } from '../utils';\r\n\r\n/**\r\n * Основной метод, который отсылает запросы\r\n * @param url - ручка\r\n * @param paramsData - данные запроса\r\n */\r\nexport async function fetchWithTokenRequest(url: string, paramsData: any): Promise {\r\n const { ...params } = paramsData;\r\n\r\n let headers = {\r\n ...params.headers\r\n };\r\n\r\n const response = await window.fetch(url, {\r\n ...params,\r\n headers\r\n });\r\n if (response.ok) {\r\n if (response.status === 204) {\r\n return null;\r\n }\r\n try {\r\n // Если в body лежит не json, то при response.text() мы получим ошибку, поэтому на свякий случай клонируем ответ сервера\r\n return await response.clone().json();\r\n } catch {\r\n console.warn('Cannot parse response as json');\r\n return await response.text();\r\n }\r\n } else {\r\n if (response.status === 503) {\r\n throw new Error('Server is under maintenance');\r\n } else if (response.status >= 400) {\r\n const resp = await response.text();\r\n toast.error(resp);\r\n } else {\r\n toast.error('Error');\r\n }\r\n }\r\n}\r\n\r\nexport class fetchRequest {\r\n static async get(\r\n path: string,\r\n data?: any,\r\n options: any = {},\r\n seriailizeOptions: queryString.StringifyOptions = { arrayFormat: 'bracket' }\r\n ) {\r\n return await fetchWithTokenRequest(\r\n `${path}${data ? `?${queryString.stringify(data, seriailizeOptions)}` : ''}`,\r\n options\r\n );\r\n }\r\n\r\n static async post(path: string, data?: any, options: any = {}) {\r\n return await fetchWithTokenRequest(path, {\r\n method: 'POST',\r\n body: JSON.stringify(deepReplaceDateToString(data)),\r\n ...options,\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n ...options.headers\r\n }\r\n });\r\n }\r\n\r\n static async file(path: string, data?: any, options: any = {}) {\r\n return await fetchWithTokenRequest(path, {\r\n method: 'POST',\r\n body: data,\r\n ...options\r\n });\r\n }\r\n\r\n static async put(path: string, data: any, options: any = {}) {\r\n return await fetchWithTokenRequest(path, {\r\n method: 'PUT',\r\n body: JSON.stringify(data),\r\n ...options,\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n ...options.headers\r\n }\r\n });\r\n }\r\n\r\n static async delete(path: string, options: any = {}) {\r\n return await fetchWithTokenRequest(path, {\r\n method: 'DELETE',\r\n ...options\r\n });\r\n }\r\n}\r\n\r\nexport { default as ticketApi } from './ticket';\r\nexport { default as bookingApi } from './bookings';\r\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconRefresh(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 13.799,\n height: 14.86,\n viewBox: \"0 0 13.799 14.86\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon-refresh\",\n transform: \"translate(1.061 6.899)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_6\",\n \"data-name\": \"Path 6\",\n d: \"M29.273,0a.531.531,0,0,0-.531.531V2.469A6.886,6.886,0,0,0,17.067,7.43a.531.531,0,1,0,1.061,0A5.838,5.838,0,0,1,28.272,3.489l-2.351.784a.531.531,0,1,0,.335,1.008L29.441,4.22a.531.531,0,0,0,.363-.505V.531A.531.531,0,0,0,29.273,0Z\",\n transform: \"translate(-18.128 -6.899)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_7\",\n \"data-name\": \"Path 7\",\n d: \"M63.4,221.867a.531.531,0,0,0-.531.531,5.838,5.838,0,0,1-10.144,3.941l2.351-.784a.531.531,0,1,0-.335-1.008l-3.184,1.061a.531.531,0,0,0-.363.505V229.3a.531.531,0,1,0,1.061,0v-1.939A6.886,6.886,0,0,0,63.935,222.4.531.531,0,0,0,63.4,221.867Z\",\n transform: \"translate(-51.198 -221.867)\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconRefresh);\nexport default __webpack_public_path__ + \"static/media/icon-refresh.c2845703.svg\";\nexport { ForwardRef as ReactComponent };","import { fetchRequest } from './index';\r\nimport { apiUrl } from '../../config/constants';\r\nimport { Availability } from '../../types/availability';\r\nimport { addYears, format } from 'date-fns';\r\n\r\nconst getByTimeSlots = async (timeSlotId: number[] | undefined, from: Date): Promise => {\r\n const dateFrom = from <= addYears(new Date(), 1) ? new Date() : from;\r\n return await fetchRequest.get(\r\n `${apiUrl}/availability/bytimeslots?from=${format(dateFrom, 'yyyy-MM-dd')}&to=${format(\r\n addYears(dateFrom, 1),\r\n 'yyyy-MM-dd'\r\n )}${timeSlotId?.reduce((prev, cur) => `${prev}&ids=${cur}`, '')}`\r\n );\r\n};\r\n\r\nconst getByOffer = async (offerId: number, from: Date, to: Date): Promise => {\r\n return await fetchRequest.get(\r\n `${apiUrl}/availability/ByOffer?from=${format(from, 'yyyy-MM-dd')}&to=${format(\r\n to, 'yyyy-MM-dd'\r\n )}&id=${offerId}`\r\n );\r\n};\r\n\r\nconst availabilityApi = {\r\n getByTimeSlots,\r\n getByOffer\r\n};\r\n\r\nexport default availabilityApi;\r\n","\r\nimport { Hotel } from './hotel';\r\nimport { Availability } from './availability';\r\n\r\nexport type TicketType = {\r\n id: number;\r\n name: string;\r\n heroImageId: number;\r\n heroImage: HeroImageType;\r\n offers: OfferType[];\r\n price: number;\r\n priceBeforeDiscount?: number;\r\n utcOffset: number;\r\n faq: string;\r\n cancellationPolicy?: CancellationPolicy[];\r\n url: string;\r\n photos: HeroImageType[];\r\n tourItinerary: string;\r\n seoContent: string;\r\n termsAndConditions: string;\r\n seoPageDescription: string;\r\n seoPageTitle: string;\r\n salesDescription: string;\r\n videoUrl: string;\r\n languageId: number;\r\n totalRating: number;\r\n totalRatingsCount: number;\r\n cityName: string;\r\n faqList: FaqType[];\r\n currency: string;\r\n isExternal: boolean\r\n};\r\n\r\nexport type FaqType = {\r\n answer: string;\r\n index: number;\r\n question: string;\r\n};\r\nexport type CheckoutData = {\r\n ticketName: string;\r\n offer: OfferType | undefined;\r\n selectedPrice?: PricingPeriods;\r\n selectedDate?: Date;\r\n adultCount: number;\r\n childCount: number;\r\n infantCount: number;\r\n timeSlot?: TimeSlotType;\r\n hotel?: Hotel;\r\n pickUpTime?: PickUpTime;\r\n guestName?: string;\r\n userEmail?: string;\r\n reconfirmUserEmail?: string;\r\n userRoomNumber?: string;\r\n userPhone?: string;\r\n remarks?: string;\r\n tourId?: number;\r\n tourUrl?: number;\r\n availability?: Availability;\r\n faq?: string;\r\n faqList?: FaqType[];\r\n cancellationPolicy?: CancellationPolicy[];\r\n ticketStock?: TicketStock;\r\n pickUpLocation?: string;\r\n};\r\n\r\nexport type TicketStock = {\r\n adultTicketsLeft: number;\r\n childTicketsLeft: number;\r\n isAdultTicketRequired: boolean;\r\n isChildTicketRequired: boolean;\r\n isSameTicketForAdultAndChild: boolean;\r\n offerId: number;\r\n validUntil: string | Date;\r\n};\r\n\r\nexport type HeroImageType = {\r\n id: number;\r\n caption: string;\r\n srcSet: SrcSetType[];\r\n};\r\n\r\nexport type SrcSetType = {\r\n type: 'image/webp' | 'image/jpg';\r\n sizes: ImageSizeType[];\r\n};\r\n\r\nexport type ImageSizeType = {\r\n height: number;\r\n width: number;\r\n src: string;\r\n};\r\n\r\nexport type OfferType = {\r\n id: number;\r\n bookingType: number;\r\n name: string;\r\n childAge: number;\r\n childrenAllowed: boolean;\r\n daysOffered: number;\r\n heroImage: HeroImageType;\r\n heroImageId: number | null;\r\n infantAge: number;\r\n infantsAllowed: boolean;\r\n isDirectReporting: boolean;\r\n maxNumOfPeople: number;\r\n minNumOfPeople: number;\r\n minimumAdvancedPayment: number | null;\r\n numberOfHours: number;\r\n privateType: number;\r\n prices: PriceType[];\r\n timeSlots: TimeSlotType[];\r\n description: string;\r\n cities: string[];\r\n isDirectCollection: boolean;\r\n isExternal: boolean\r\n pricingPeriods: PricingPeriods[];\r\n};\r\n\r\nexport type PricingPeriods = {\r\n id: number;\r\n currency: string;\r\n dateEnd: string | Date;\r\n dateStart: string | Date;\r\n isBookable: boolean;\r\n offerId: number;\r\n pricePerAdult: number;\r\n pricePerAdultUsd: number;\r\n pricePerChild: number;\r\n pricePerChildUsd: number;\r\n pricePerTrip: number;\r\n pricePerTripUsd: number;\r\n recPricePerAdult: number;\r\n recPricePerAdultUsd: number;\r\n recPricePerChild: number;\r\n recPricePerChildUsd: number;\r\n recPricePerTrip: number;\r\n recPricePerTripUsd: number;\r\n};\r\n\r\nexport const BookingTypeEnum = {\r\n OnRequest: 0,\r\n LiveBook: 1,\r\n TicketOnly: 2,\r\n};\r\n\r\nexport type PriceType = {\r\n date: string;\r\n isBookable: boolean;\r\n offerId: number;\r\n pricePerAdult: number;\r\n pricePerAdultUsd: number;\r\n pricePerChild: number;\r\n pricePerChildUsd: number;\r\n pricePerInfant?: number;\r\n pricePerInfantUsd?: number;\r\n pricePerTrip: number;\r\n pricePerTripUsd: number;\r\n};\r\n\r\nexport type TimeSlotType = {\r\n daysOffered: number;\r\n endTime: number;\r\n id: number;\r\n interval: number | null;\r\n isAnyTime: boolean;\r\n name: string;\r\n offerId: number;\r\n startTime: number;\r\n pickUpTimeId: number;\r\n minimumAdvancedBooking: number;\r\n availability?: Availability\r\n};\r\n\r\nexport type PickUpTime = {\r\n timeShiftStart: number;\r\n timeShiftEnd: number;\r\n};\r\n\r\nexport type CancellationPolicy = {\r\n hours: number,\r\n percents: number\r\n}\r\n","import { useState, useEffect} from \"react\";\r\nimport isEqual from \"date-fns/isEqual\";\r\nimport { isWithinInterval, startOfDay } from 'date-fns';\r\nimport { Availability } from '../types/availability';\r\nimport {\r\n BookingTypeEnum,\r\n CheckoutData,\r\n OfferType,\r\n PricingPeriods,\r\n TicketType,\r\n TimeSlotType\r\n} from '../types/ticket';\r\nimport { ticketApi } from '../lib/api';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { flushSync } from 'react-dom';\r\n\r\nexport const useOffer = (tour: TicketType | undefined, availabilities: Availability[], setLoader: (val: boolean) => void, setLoaderTimeSlot: (val: boolean) => void, currency: string, fetchAvailability: (offerId: number, date: Date | undefined, isExternal: boolean) => Promise) => {\r\n const [editOfferObj, setEditOfferObj] = useState(emptyOfferObj)\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (location.state && tour) {\r\n const data = location.state as CheckoutData;\r\n flushSync(() => {\r\n setEditOfferObj(data);\r\n })\r\n flushSync(() => {\r\n if(data?.offer?.id){\r\n selectOffer(data.offer.id, true)\r\n }\r\n });\r\n }\r\n // eslint-disable-next-line\r\n }, [location.state, tour]);\r\n\r\n const clear = () => setEditOfferObj(emptyOfferObj);\r\n\r\n\r\n const getAvailability = (timeSlots: TimeSlotType[], date?: Date) => availabilities.find(\r\n (item) =>\r\n timeSlots.some((slot) => slot.id === item.timeSlotId) && date &&\r\n isEqual(startOfDay(date), startOfDay(new Date(item.date)))\r\n );\r\n\r\n const selectOffer = async (id: number, notOldCheck?: boolean) => {\r\n if (id === editOfferObj?.offer?.id && !notOldCheck) {\r\n setEditOfferObj((prev) => ({...prev, offer: undefined}));\r\n } else {\r\n const offer = tour?.offers?.find((offer: OfferType) => offer.id === id);\r\n if (!offer) {\r\n return;\r\n }\r\n const result = {\r\n ...editOfferObj,\r\n ticketName: tour?.name || '',\r\n tourId: tour?.id,\r\n offer: offer,\r\n timeSlot: offer?.timeSlots[0],\r\n availability: offer?.timeSlots && !offer.isExternal ? getAvailability(offer.timeSlots, editOfferObj.selectedDate) : undefined,\r\n faq: tour?.faq,\r\n cancellationPolicy: tour?.cancellationPolicy,\r\n };\r\n\r\n setEditOfferObj(result);\r\n\r\n if (offer.isExternal) {\r\n result.selectedDate = undefined;\r\n }\r\n if (offer.id && offer.bookingType === BookingTypeEnum.TicketOnly) {\r\n setLoader(true)\r\n result.ticketStock = await ticketApi.getTicketStock(offer.id);\r\n setLoader(false)\r\n } else if (!offer.isExternal && !availabilities.some((item) => item.offerId === offer.id)) {\r\n availabilities = await fetchAvailability(offer.id, editOfferObj.selectedDate, offer.isExternal)\r\n }\r\n\r\n if (editOfferObj.selectedDate && (!result.availability || result.availability.left < 1)) {\r\n const newAvailability = availabilities.find(\r\n (item) => offer?.timeSlots.some((slot) => slot.id === item.timeSlotId) && item.left > 0\r\n );\r\n if (newAvailability) {\r\n result.availability = newAvailability;\r\n result.selectedDate = new Date(newAvailability.date);\r\n }\r\n }\r\n if (result.selectedDate) {\r\n result.selectedPrice = getPrice(offer.pricingPeriods, result.selectedDate)\r\n } else {\r\n result.selectedPrice = undefined;\r\n }\r\n\r\n if (offer?.bookingType === BookingTypeEnum.TicketOnly) {\r\n result.adultCount = 1;\r\n result.childCount = 0;\r\n result.infantCount = 0;\r\n result.selectedDate = new Date();\r\n result.selectedPrice = offer.pricingPeriods && offer.pricingPeriods[0];\r\n }\r\n\r\n if (\r\n editOfferObj.offer &&\r\n offer &&\r\n (editOfferObj.offer.maxNumOfPeople > offer.maxNumOfPeople ||\r\n (result.availability &&\r\n result.availability.left < result.adultCount + result.childCount + result.infantCount))\r\n ) {\r\n result.adultCount = 1;\r\n result.childCount = 0;\r\n result.infantCount = 0;\r\n }\r\n if (\r\n result.availability &&\r\n result.availability.leftAdultsTickets &&\r\n result.availability.leftAdultsTickets < result.adultCount\r\n ) {\r\n result.adultCount = 1;\r\n }\r\n if (\r\n result.availability &&\r\n result.availability.leftChildrenTickets &&\r\n result.availability.leftChildrenTickets < result.childCount\r\n ) {\r\n result.childCount = 0;\r\n }\r\n setEditOfferObj({ ...result })\r\n }\r\n }\r\n\r\n const selectDate = async (date: Date) => {\r\n setEditOfferObj((prev) => ({\r\n ...prev,\r\n selectedDate: date,\r\n }));\r\n if (editOfferObj.offer && date) {\r\n if (editOfferObj.offer.isExternal) {\r\n await fetchAvailability(editOfferObj.offer.id, date, true);\r\n }\r\n let price = getPrice(editOfferObj?.offer.pricingPeriods, date);\r\n\r\n setEditOfferObj((prev) => {\r\n const result = {\r\n ...prev,\r\n selectedDate: date,\r\n selectedPrice: price,\r\n availability:\r\n !prev.offer?.isExternal && prev.offer?.timeSlots ? getAvailability(prev.offer.timeSlots, date) : undefined,\r\n timeSlot: prev.offer?.isExternal && prev.timeSlot?.isAnyTime ? undefined : prev.timeSlot,\r\n }\r\n if (result.offer &&\r\n (result.availability &&\r\n result.availability.left < result.adultCount + result.childCount + result.infantCount)\r\n ) {\r\n result.adultCount = 1;\r\n result.childCount = 0;\r\n result.infantCount = 0;\r\n }\r\n if (\r\n result.availability &&\r\n result.availability.leftAdultsTickets &&\r\n result.availability.leftAdultsTickets < result.adultCount\r\n ) {\r\n result.adultCount = 1;\r\n }\r\n if (\r\n result.availability &&\r\n result.availability.leftChildrenTickets &&\r\n result.availability.leftChildrenTickets < result.childCount\r\n ) {\r\n result.childCount = 0;\r\n }\r\n return result\r\n });\r\n }\r\n };\r\n\r\n const selectTimeSlot = (slot: TimeSlotType) => {\r\n setEditOfferObj((prevState) => {\r\n if (slot && slot.availability) {\r\n const result = {...prevState, availability: slot.availability, timeSlot: slot};\r\n if (slot.availability.left < prevState.adultCount + prevState.childCount + prevState.infantCount) {\r\n result.adultCount = 1;\r\n result.childCount = 0;\r\n result.infantCount = 0;\r\n }\r\n if (slot.availability.leftAdultsTickets && slot.availability.leftAdultsTickets < prevState.adultCount) {\r\n result.adultCount = 1;\r\n }\r\n if (slot.availability.leftChildrenTickets && slot.availability.leftChildrenTickets < prevState.childCount) {\r\n result.childCount = 0;\r\n }\r\n if (slot.availability.left < 1) {\r\n console.error('slot.availability?.left < 1')\r\n // const newAvailability = availabilities.find(\r\n // (item) => prevState?.offer?.timeSlots.some((slot) => slot.id === item.timeSlotId) && item.left > 0\r\n // );\r\n // if (newAvailability) {\r\n // result.availability = newAvailability;\r\n // result.selectedDate = new Date(newAvailability.date);\r\n // result.selectedPrice = prevState?.offer?.prices.find(\r\n // (price) =>\r\n // result.selectedDate && isEqual(startOfDay(result.selectedDate), startOfDay(new Date(price.date)))\r\n // );\r\n // }\r\n }\r\n return result;\r\n }\r\n return prevState;\r\n }\r\n );\r\n }\r\n\r\n const handleChangePeopleCount = (value: number, field: 'adultCount' | 'childCount' | 'infantCount') => {\r\n if (editOfferObj && editOfferObj.offer?.bookingType !== BookingTypeEnum.TicketOnly) {\r\n const totalPeople =\r\n editOfferObj.adultCount +\r\n (editOfferObj?.offer?.childrenAllowed ? editOfferObj.childCount : 0) +\r\n (editOfferObj?.offer?.infantsAllowed ? editOfferObj.infantCount : 0);\r\n if (editOfferObj?.offer?.maxNumOfPeople && totalPeople >= editOfferObj?.offer?.maxNumOfPeople && editOfferObj[field] < value) {\r\n return;\r\n }\r\n\r\n if (\r\n editOfferObj.availability &&\r\n totalPeople >= editOfferObj.availability?.left &&\r\n editOfferObj[field] < value\r\n ) {\r\n return;\r\n }\r\n if (\r\n field === 'adultCount' &&\r\n editOfferObj.availability?.leftAdultsTickets &&\r\n value > editOfferObj.availability?.leftAdultsTickets &&\r\n editOfferObj[field] < value\r\n ) {\r\n return;\r\n }\r\n if (\r\n field === 'childCount' &&\r\n editOfferObj.availability?.leftChildrenTickets &&\r\n value > editOfferObj.availability.leftChildrenTickets &&\r\n editOfferObj[field] < value\r\n ) {\r\n return;\r\n }\r\n } else if (editOfferObj && editOfferObj.offer?.bookingType === BookingTypeEnum.TicketOnly) {\r\n if (\r\n field === 'adultCount' &&\r\n editOfferObj.ticketStock?.adultTicketsLeft &&\r\n value > editOfferObj.ticketStock?.adultTicketsLeft &&\r\n editOfferObj[field] < value\r\n ) {\r\n return;\r\n }\r\n if (\r\n field === 'childCount' &&\r\n editOfferObj.ticketStock?.childTicketsLeft &&\r\n value > editOfferObj.ticketStock.childTicketsLeft &&\r\n editOfferObj[field] < value\r\n ) {\r\n return;\r\n }\r\n }\r\n setEditOfferObj(prevState => ({...prevState, [field]: value}));\r\n };\r\n\r\n return {editOfferObj, selectOffer, handleChangePeopleCount, selectDate, selectTimeSlot, clear}\r\n}\r\n\r\nconst emptyOfferObj: CheckoutData = {\r\n offer: undefined,\r\n ticketName: '',\r\n adultCount: 1,\r\n childCount: 0,\r\n infantCount: 0,\r\n};\r\n\r\nconst getPrice = (prices: PricingPeriods[], date: Date) =>\r\n prices.find((price) => isWithinInterval(startOfDay(date), {\r\n start: startOfDay(new Date(price.dateStart)),\r\n end: startOfDay(new Date(price.dateEnd))\r\n }));\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport Offer from './offer';\r\nimport { ticketApi } from '../../lib/api';\r\nimport { TicketType } from '../../types/ticket';\r\nimport 'pure-react-carousel/dist/react-carousel.es.css';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { routes, mainSite, tourId, currency } from '../../config/constants';\r\nimport Button from '../../components/button';\r\nimport { ReactComponent as IconRefresh } from '../../assets/images/icons/icon-refresh.svg';\r\nimport { addMonths, startOfDay } from 'date-fns';\r\nimport { Availability } from '../../types/availability';\r\nimport availabilityApi from '../../lib/api/availability';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useOffer } from '../../hooks/use-offer';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nconst handleEventHeaderClick = () => {\r\n window.location.href = mainSite;\r\n};\r\n\r\n\r\nconst Ticket = () => {\r\n const [ticket, setTicket] = useState();\r\n const [availabilities, setAvailabilities] = useState([]);\r\n const [loader, setLoader] = useState(false);\r\n const [loaderTimeSlot, setLoaderTimeSlot] = useState(false);\r\n const history = useHistory();\r\n const [t] = useTranslation();\r\n const location = useLocation();\r\n const queryParams = new URLSearchParams(location.search);\r\n const Id = queryParams.get('tourId') || tourId || '';\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n const data = await ticketApi.getTickets(currency, Id);\r\n setTicket(data);\r\n };\r\n fetchData();\r\n document.addEventListener('eventHeaderClick', handleEventHeaderClick, false);\r\n return () => document.removeEventListener('eventHeaderClick', handleEventHeaderClick, false);\r\n }, []);\r\n\r\n const fetchAvailability = async (offerId: number, date: Date | undefined, isExternal: boolean, disableLoading?: boolean,): Promise =>\r\n {\r\n !disableLoading && (isExternal ? setLoaderTimeSlot(true) : setLoader(true));\r\n let data: Availability[] = [];\r\n try {\r\n if (offerId && ((isExternal && date) || !isExternal)) {\r\n data = await availabilityApi.getByOffer(\r\n offerId,\r\n isExternal && date ? startOfDay(date || new Date()) : startOfDay(date || new Date()) <= addMonths(new Date(), 1) ? new Date() : startOfDay(date || new Date()),\r\n isExternal && date ? startOfDay(date) : addMonths(startOfDay( date || new Date()), 1),\r\n );\r\n\r\n if (isExternal) {\r\n setAvailabilities(data.length ? data : [{\r\n date: date,\r\n left: 0,\r\n offerId: offerId,\r\n startTime: '',\r\n endTime: ''\r\n } as Availability])\r\n } else {\r\n setAvailabilities((prevState) => [...prevState, ...(data.map(item => ({...item, offerId})))]);\r\n }\r\n }\r\n } finally {\r\n isExternal ? setLoaderTimeSlot(false) : setLoader(false)\r\n }\r\n return data;\r\n }\r\n console.log(ticket);\r\n const {\r\n editOfferObj,\r\n selectOffer,\r\n handleChangePeopleCount,\r\n selectDate,\r\n selectTimeSlot,\r\n clear\r\n } = useOffer(ticket, availabilities, setLoader, setLoaderTimeSlot, currency, fetchAvailability)\r\n\r\n const handleCheckoutBtn = useCallback(() => {\r\n if(!editOfferObj.offer?.childrenAllowed){\r\n editOfferObj.childCount = 0;\r\n }\r\n if(!editOfferObj.offer?.infantsAllowed){\r\n editOfferObj.infantCount = 0;\r\n }\r\n history.push(routes.checkout, editOfferObj)\r\n }, [editOfferObj, history]);\r\n\r\n\r\n return (\r\n <>\r\n

{ticket?.name}

\r\n
\r\n
{t('ticket.select')}
\r\n
\r\n {editOfferObj.offer && (\r\n }\r\n />\r\n )}\r\n
\r\n
\r\n
\r\n {ticket?.offers\r\n .sort((a, b) => {\r\n // Determine if pricePerTrip is null or 0 for each offer\r\n const aHasPricePerTrip = a.prices[0]?.pricePerTrip != null && a.prices[0]?.pricePerTrip !== 0;\r\n const bHasPricePerTrip = b.prices[0]?.pricePerTrip != null && b.prices[0]?.pricePerTrip !== 0;\r\n\r\n // If both offers have different pricePerTrip availability\r\n if (aHasPricePerTrip !== bHasPricePerTrip) {\r\n // Offers with null or 0 pricePerTrip come first\r\n return aHasPricePerTrip ? 1 : -1;\r\n }\r\n\r\n // If both offers have pricePerTrip as null or 0, sort by pricePerAdult\r\n if (!aHasPricePerTrip && !bHasPricePerTrip) {\r\n const priceA = a.prices[0]?.pricePerAdult ?? Infinity;\r\n const priceB = b.prices[0]?.pricePerAdult ?? Infinity;\r\n return priceA - priceB;\r\n }\r\n\r\n // If both offers have valid pricePerTrip, sort by pricePerTrip\r\n const priceA = a.prices[0]?.pricePerTrip ?? Infinity;\r\n const priceB = b.prices[0]?.pricePerTrip ?? Infinity;\r\n return priceA - priceB;\r\n })\r\n .map((offer) => (\r\n {\r\n if (editOfferObj.offer) {\r\n const currentAvailabilities = availabilities.\r\n filter(availability => editOfferObj.offer && availability.offerId === editOfferObj.offer.id).\r\n sort((a, b) => new Date(a.date) > new Date(b.date) ? 1 : -1);\r\n if(new Date(currentAvailabilities[currentAvailabilities.length - 1].date) < to)\r\n {\r\n await fetchAvailability(\r\n editOfferObj.offer?.id,\r\n new Date(currentAvailabilities[currentAvailabilities.length - 1].date),\r\n editOfferObj.offer?.isExternal,\r\n true\r\n );\r\n }\r\n }}}\r\n />\r\n ))}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Ticket;\r\n","import React from 'react';\r\nimport MaskedInput from 'react-text-mask';\r\n\r\nexport type Props = React.DetailedHTMLProps, HTMLInputElement> & {\r\n mask?: Array;\r\n error?: boolean;\r\n};\r\n\r\nconst Input = (props: Props) =>\r\n props.mask ? (\r\n (\r\n \r\n )}\r\n />\r\n ) : (\r\n \r\n );\r\n\r\nexport default Input;\r\n","import Select, { StylesConfig } from 'react-select';\r\nimport { OptionTypeBase } from 'react-select/src/types';\r\nimport React from 'react';\r\nimport { Props } from 'react-select/src/Select';\r\n\r\nconst customStyles: StylesConfig = {\r\n // @ts-ignore\r\n container: (provided, state) => ({\r\n ...provided,\r\n marginBottom: 19\r\n }),\r\n // @ts-ignore\r\n input: (provided, state) => ({\r\n ...provided,\r\n height: '40px',\r\n padding: '8px 0 0',\r\n marginLeft: 12\r\n }),\r\n // @ts-ignore\r\n placeholder: (provided, state) => ({\r\n ...provided,\r\n marginLeft: 12\r\n }),\r\n // @ts-ignore\r\n indicatorSeparator: (provider, state) => ({\r\n ...provider,\r\n display: 'none'\r\n }),\r\n // @ts-ignore\r\n singleValue: (provided, state) => ({\r\n ...provided,\r\n marginLeft: 8\r\n })\r\n};\r\n\r\nconst SelectRS = (props: Props) => {\r\n if (props.error) {\r\n // @ts-ignore\r\n customStyles.control = (provided, state) => ({\r\n ...provided,\r\n borderColor: '#EC4210'\r\n });\r\n } else {\r\n // @ts-ignore\r\n customStyles.control = (provided, state) => ({\r\n ...provided,\r\n borderColor: '#A5A5A5'\r\n });\r\n }\r\n return (\r\n ({\r\n ...theme,\r\n borderRadius: 4,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#ffffff',\r\n primary: '#A5A5A5'\r\n }\r\n })}\r\n styles={customStyles}\r\n />\r\n );\r\n};\r\n\r\nexport default SelectRS;\r\n","import React, { memo, useCallback, useEffect, useState } from 'react';\r\nimport {\r\n CardCvcElement,\r\n CardExpiryElement,\r\n CardNumberElement,\r\n PaymentRequestButtonElement,\r\n useElements,\r\n useStripe\r\n} from '@stripe/react-stripe-js';\r\nimport Button from '../button';\r\nimport { bookingApi } from '../../lib/api';\r\nimport { BookingRequest } from '../../types/booking';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { routes } from '../../config/constants';\r\nimport Loader from 'react-loader-spinner';\r\nimport { PaymentRequest as PR, PaymentRequestPaymentMethodEvent } from '@stripe/stripe-js';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { currency } from '../../config/constants';\r\n\r\ntype Props = {\r\n request: BookingRequest;\r\n amount: number;\r\n ticketType: string;\r\n isValid: boolean;\r\n};\r\n\r\nconst Payment = ({ request, amount, ticketType, isValid }: Props) => {\r\n const [succeeded, setSucceeded] = useState(false);\r\n const [error, setError] = useState(null);\r\n const [processing, setProcessing] = useState(false);\r\n const [disabled, setDisabled] = useState(true);\r\n const [paymentRequest, setPaymentRequest] = useState(null);\r\n const [isShowAppleGooglePayFailed, setIsShowAppleGooglePayFailed] = useState(false);\r\n const stripe = useStripe();\r\n const elements = useElements();\r\n const history = useHistory();\r\n\r\n const [t] = useTranslation();\r\n\r\n const getPaymentIntent = useCallback(async () => {\r\n const requestStr = JSON.stringify(request);\r\n const oldPayment = window.localStorage.getItem('payment');\r\n if(oldPayment && oldPayment.split('|')[0] === requestStr){\r\n return JSON.parse(oldPayment.split('|')[1])\r\n }\r\n const payment = await bookingApi.withPaymentIntent(request);\r\n window.localStorage.setItem('payment', `${requestStr}|${JSON.stringify(payment)}`);\r\n return payment;\r\n }, [request])\r\n\r\n\r\n const handlePaymentMethodReceived = useCallback(\r\n async (e: PaymentRequestPaymentMethodEvent) => {\r\n const { paymentIntent, booking } = await getPaymentIntent();\r\n const payload = await stripe?.confirmCardPayment(\r\n paymentIntent.clientSecret,\r\n {\r\n payment_method: e.paymentMethod.id\r\n },\r\n {\r\n handleActions: false\r\n }\r\n );\r\n if (payload?.error) {\r\n e.complete('fail');\r\n return;\r\n } else {\r\n e.complete('success');\r\n history.push(`${routes.confirm}/${booking.guid}`);\r\n }\r\n },\r\n [history, stripe, getPaymentIntent]\r\n );\r\n\r\n useEffect(() => {\r\n console.log('paymentRequest.on');\r\n\r\n if (paymentRequest) {\r\n paymentRequest.on('paymentmethod', async (ev) => {\r\n await handlePaymentMethodReceived(ev);\r\n });\r\n return () => {\r\n console.log('paymentRequest.off');\r\n paymentRequest.off('paymentmethod');\r\n };\r\n }\r\n }, [handlePaymentMethodReceived, isValid, paymentRequest]);\r\n\r\n useEffect(() => {\r\n console.log('stripe.paymentRequest');\r\n if (stripe) {\r\n const pr = stripe.paymentRequest({\r\n country: 'AE',\r\n currency: 'aed',\r\n total: {\r\n label: ticketType,\r\n amount: Math.floor(amount * 100)\r\n },\r\n requestPayerName: true,\r\n requestPayerEmail: true\r\n });\r\n pr.canMakePayment().then((result) => {\r\n if (result) {\r\n setPaymentRequest(pr);\r\n }\r\n });\r\n }\r\n }, [amount, stripe, ticketType]);\r\n\r\n const handleChange = async (event: any) => {\r\n // Listen for changes in the CardElement\r\n // and display any errors as the customer types their card details\r\n setDisabled(event.empty);\r\n setError(event.error ? event.error.message : '');\r\n };\r\n\r\n const handleSubmit = async (ev: any) => {\r\n ev.preventDefault();\r\n if (!isValid) {\r\n return;\r\n }\r\n if (!stripe || !elements) {\r\n console.log('Stripe.js has not loaded yet. Make sure to disable form submission until Stripe.js has loaded.');\r\n return;\r\n }\r\n setProcessing(true);\r\n\r\n const payment = await getPaymentIntent();\r\n if (!payment) {\r\n setProcessing(false);\r\n return;\r\n }\r\n const cardElement = elements?.getElement(CardNumberElement);\r\n const payload = await stripe?.confirmCardPayment(payment.paymentIntent.clientSecret, {\r\n payment_method: {\r\n // @ts-ignore\r\n card: cardElement\r\n }\r\n });\r\n\r\n if (payload?.error) {\r\n setError(`Payment failed ${payload.error.message}`);\r\n setProcessing(false);\r\n } else {\r\n setError(null);\r\n setProcessing(false);\r\n setSucceeded(true);\r\n history.push(`${routes.confirm}/${payment.booking.guid}`);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n (processing ? : null)}\r\n label={t('payment.bookNow', {amount: amount, currency: 'AED'})}\r\n size='medium'\r\n color='blue'\r\n fullWidth\r\n />\r\n
\r\n {currency!='AED' && (\r\n {t('payment.payInAed', {currency: currency})}\r\n )}\r\n {/* Show any error that happens when processing the payment */}\r\n {error && (\r\n
\r\n {error}\r\n
\r\n )}\r\n {/* Show a success message upon completion */}\r\n

\r\n Payment succeeded, see the result in your\r\n Stripe dashboard. Refresh the page to pay again.\r\n

\r\n\r\n {paymentRequest && (\r\n
\r\n {/*@ts-ignore*/}\r\n\r\n {\r\n if (!isValid) {\r\n setIsShowAppleGooglePayFailed(true);\r\n e.preventDefault();\r\n }\r\n }}\r\n options={{ paymentRequest }}\r\n />\r\n\r\n {isShowAppleGooglePayFailed && !isValid && {t('payment.personalInfo')}}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default memo(Payment);\r\n\r\nconst cardStyle = {\r\n style: {\r\n base: {\r\n color: '#32325d',\r\n border: '1px',\r\n fontSmoothing: 'antialiased',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n '::placeholder': {\r\n color: '#848484'\r\n }\r\n },\r\n invalid: {\r\n color: '#fa755a',\r\n iconColor: '#fa755a'\r\n }\r\n }\r\n};\r\n","import React, { ReactElement, useState } from 'react';\r\n\r\nexport type AccordeonItemType = {\r\n title: string;\r\n body: string | (() => ReactElement);\r\n};\r\n\r\nexport type AccordeonProps = {\r\n items: AccordeonItemType[];\r\n};\r\n\r\nconst Accordeon = ({ items }: AccordeonProps) => {\r\n const [active, setActive] = useState(-1);\r\n return (\r\n
\r\n {items.map((item, index) => (\r\n
\r\n \r\n \r\n \r\n \r\n {item.title}\r\n
\r\n
\r\n

{typeof item.body === 'function' ? item.body() : item.body}

\r\n
\r\n
\r\n ))}\r\n \r\n );\r\n};\r\nexport default Accordeon;\r\n","import { fetchRequest } from './index';\r\nimport { apiUrl } from '../../config/constants';\r\nimport { City } from '../../types/city';\r\n\r\nconst getCities = async (countryId: number, language: string,): Promise =>\r\n await fetchRequest.get(`${apiUrl}/cities/options/${countryId}`, { language });\r\n\r\nconst citiesApi = {\r\n getCities\r\n};\r\n\r\nexport default citiesApi;","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport Input from '../../components/input';\r\nimport { currency, emptyDate, language, routes, rubPayPageUrl, stripePubKey, supportPhoneNumber } from '../../config/constants';\r\nimport { CheckoutData, FaqType } from '../../types/ticket';\r\nimport format from 'date-fns/format';\r\nimport addMinutes from 'date-fns/addMinutes';\r\nimport { bookingApi, ticketApi } from '../../lib/api';\r\nimport SelectRS from '../../components/select-rs';\r\nimport { Hotel } from '../../types/hotel';\r\nimport Payment from '../../components/payment';\r\nimport { Elements } from '@stripe/react-stripe-js';\r\nimport Accordeon, { AccordeonItemType } from '../../components/accordeon';\r\nimport { BookingRequest, Fee } from '../../types/booking';\r\nimport { loadStripe } from '@stripe/stripe-js/pure';\r\nimport stripeJs from '@stripe/stripe-js';\r\nimport PhoneInput from 'react-phone-input-2';\r\nimport { declOfNum, timeFormat } from '../../lib/utils';\r\nimport { useTranslation } from 'react-i18next';\r\nimport citiesApi from '../../lib/api/cities';\r\nimport { City } from '../../types/city';\r\nimport Button from '../../components/button';\r\nimport Loader from 'react-loader-spinner';\r\n\r\nconst initialCheckout = {\r\n ticketName: '',\r\n offer: undefined,\r\n selectedDate: new Date(),\r\n adultCount: 1,\r\n childCount: 0,\r\n infantCount: 0\r\n};\r\n\r\nconst validateEmail = (email: string) => String(email)\r\n .toLowerCase()\r\n .match(\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\r\nconst Checkout = () => {\r\n const location = useLocation();\r\n const history = useHistory();\r\n const [t] = useTranslation();\r\n\r\n // States\r\n const [hotels, setHotels] = useState<{ label: string, value: number, hotel: Hotel }[]>([]);\r\n const [checkout, setCheckout] = useState(initialCheckout);\r\n const [filterSelect, setFilterSelect] = useState('');\r\n const [stripePromise, setStripePromise] = useState | stripeJs.Stripe | null>();\r\n const [isFormValid, setIsFormValid] = useState({ userEmail: true, userPhone: true, guestName: true, hotel: true });\r\n const [cities, setCities] = useState();\r\n const [aedAmount, setAedAmount] = useState();\r\n const [Fee, setFee] = useState();\r\n const [processingSbp, setProcessingSbp] = useState(false);\r\n const [processingCard, setProcessingCard] = useState(false);\r\n const [paymentType, setPaymentType] = useState(rubPayPageUrl ? 0 : 1);\r\n const assetsUrl=\"https://traveldeskuae.blob.core.windows.net/assets\";\r\n\r\n // Memos\r\n const filteredHotel = useMemo(() => {\r\n return hotels.filter((item) => item.label.toLowerCase().startsWith(filterSelect));\r\n }, [hotels, filterSelect]);\r\n\r\n const { amount, amountUsd } = useMemo(\r\n () => ({\r\n amount: checkout.adultCount * (checkout.selectedPrice?.pricePerAdult || 0) +\r\n checkout.childCount * (checkout.selectedPrice?.pricePerChild || 0) +\r\n (checkout.selectedPrice?.pricePerTrip || 0),\r\n amountUsd: checkout.adultCount * (checkout.selectedPrice?.pricePerAdultUsd || 0) +\r\n checkout.childCount * (checkout.selectedPrice?.pricePerChildUsd || 0) +\r\n (checkout.selectedPrice?.pricePerTripUsd || 0)\r\n }),\r\n [checkout.adultCount, checkout.childCount, checkout.selectedPrice?.pricePerAdult, checkout.selectedPrice?.pricePerAdultUsd, checkout.selectedPrice?.pricePerChild, checkout.selectedPrice?.pricePerChildUsd, checkout.selectedPrice?.pricePerTrip, checkout.selectedPrice?.pricePerTripUsd]\r\n );\r\n\r\n const bookingRequest: BookingRequest = useMemo(\r\n () => ({\r\n adults: checkout.adultCount,\r\n children: checkout.childCount,\r\n date: checkout.selectedDate,\r\n endTime: checkout.timeSlot?.endTime,\r\n guestName: checkout.guestName || '',\r\n hotelId: checkout.hotel?.id,\r\n infants: checkout.infantCount,\r\n offerId: checkout.offer?.id,\r\n email: checkout.userEmail,\r\n paymentType: 1,\r\n roomNumber: checkout.userRoomNumber,\r\n startTime: checkout.timeSlot?.startTime,\r\n timeSlotId: checkout.timeSlot?.id,\r\n tourId: checkout.tourId,\r\n phone: checkout.userPhone,\r\n totalCost: aedAmount || 0,\r\n totalCostUsd: amountUsd,\r\n currency: 'aed'\r\n }),\r\n [checkout, amount, amountUsd, aedAmount]\r\n );\r\n\r\n const ticketOnClickHandler = useCallback(() => history.push(routes.ticket + \"?tourId=\" + checkout.tourId, checkout), [checkout, history]);\r\n\r\n // Effects\r\n useEffect(() => {\r\n const _stripePromise = loadStripe(stripePubKey);\r\n setStripePromise(_stripePromise);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (document.activeElement instanceof HTMLElement) {\r\n document.activeElement.blur();\r\n }\r\n window.scrollTo(0, 0);\r\n }, []);\r\n useEffect(() => {\r\n if (checkout.offer && !checkout.offer.isDirectReporting) {\r\n const fetchData = async () => {\r\n const data = await ticketApi.getHotels(50);\r\n setHotels(\r\n data.map((item) => ({\r\n label: `${item.name} (${item.cityName})`,\r\n value: item.id,\r\n hotel: item,\r\n }))\r\n );\r\n };\r\n fetchData();\r\n }\r\n if (!location.state) {\r\n history.replace(routes.ticket);\r\n }\r\n const data = location.state as CheckoutData;\r\n setCheckout(data);\r\n }, [checkout.offer, checkout.offer?.isDirectReporting, history, location.state]);\r\n\r\n useEffect(() => {\r\n const fetch = async () => {\r\n const data = await citiesApi.getCities(50, language);\r\n setCities(data);\r\n };\r\n fetch();\r\n }, []);\r\n useEffect(() => {\r\n const fetch = async () => {\r\n const data = await bookingApi.convertCurrency(amount, currency, 'aed');\r\n setAedAmount(Math.round(data));\r\n };\r\n if (amount > 0) {\r\n if (currency.toLowerCase()=='aed') {\r\n setAedAmount(amount);\r\n } else {\r\n fetch();\r\n }\r\n }\r\n }, [amount]);\r\n\r\n useEffect(() => {\r\n document.addEventListener(\r\n 'eventHeaderClick',\r\n () => {\r\n ticketOnClickHandler();\r\n },\r\n false\r\n );\r\n\r\n return () =>\r\n document.removeEventListener(\r\n 'eventHeaderClick',\r\n () => {\r\n ticketOnClickHandler();\r\n },\r\n false\r\n );\r\n }, [ticketOnClickHandler]);\r\n\r\n useEffect(() => {\r\n if(rubPayPageUrl && amount > 0) {\r\n (async () => {\r\n const fee = await bookingApi.getFee(amount, currency);\r\n setFee(fee)\r\n })()\r\n }\r\n }, [amount]);\r\n const MasterCard = () => (\r\n \r\n );\r\n const Visa = () => (\r\n \r\n );\r\nconst ModuleBank = () => (\r\n \r\n );\r\nconst Mir = () => (\r\n \r\n );\r\n // Callbacks\r\n const setFieldCheckoutHandler = useCallback((name: string, value: any) => {\r\n setCheckout((prev) => {\r\n if (prev) {\r\n let newState = { ...prev };\r\n // @ts-ignore\r\n newState[name] = value;\r\n return newState;\r\n }\r\n console.log('setFieldCheckoutHandler prev is null');\r\n return initialCheckout;\r\n });\r\n setIsFormValid((prev) => {\r\n let newState = { ...prev };\r\n if (name === 'userEmail') {\r\n // @ts-ignore\r\n newState[name] = !!validateEmail(value || '');\r\n } else if (name === 'hotel') {\r\n const hotel = hotels.find((item) => item.hotel === value);\r\n if (hotel) {\r\n newState[name] = checkout.offer?.cities.some((item) => Number(item) === hotel?.hotel.cityId) || false;\r\n } else {\r\n setFieldCheckoutHandler('pickUpLocation', value);\r\n newState[name] = !!value;\r\n }\r\n } else {\r\n // @ts-ignore\r\n newState[name] = !!value;\r\n }\r\n return newState;\r\n });\r\n\r\n }, [checkout.offer?.cities, hotels]);\r\n\r\n useEffect(() => {\r\n if (checkout.timeSlot && checkout.hotel) {\r\n const fetchData = async () => {\r\n const data = await ticketApi.getPickUp(\r\n checkout.timeSlot?.pickUpTimeId,\r\n checkout.hotel?.id,\r\n checkout.timeSlot?.startTime\r\n );\r\n setFieldCheckoutHandler('pickUpTime', data);\r\n };\r\n fetchData();\r\n }\r\n }, [checkout.hotel, checkout.timeSlot, setFieldCheckoutHandler]);\r\n\r\n const isValid = !!validateEmail(checkout.userEmail || '') && !!checkout.userPhone && !!checkout.guestName && (!!checkout.hotel || !!checkout.offer?.isDirectReporting);\r\n\r\n const createRubBookingFromSbp = async () => {\r\n if(Fee){\r\n setProcessingSbp(true)\r\n const booking = await bookingApi.createBooking({ ...bookingRequest, totalCost: Fee.amount, currency:'rub' })\r\n if(booking){\r\n window.location.href = `${rubPayPageUrl}/${booking.guid}?paytype=sbp&successurl=${window.location.host}/confirm/${booking.guid}`\r\n }\r\n setProcessingSbp(false)\r\n }\r\n }\r\n const createRubBookingFromCard = async () => {\r\n if(Fee){\r\n setProcessingCard(true)\r\n const booking = await bookingApi.createBooking({ ...bookingRequest, totalCost: Fee.amount, currency:'rub' })\r\n if(booking){\r\n window.location.href = `${rubPayPageUrl}/${booking.guid}?paytype=card&successurl=${window.location.host}/confirm/${booking.guid}`\r\n }\r\n setProcessingCard(false)\r\n }\r\n }\r\n const methods = useMemo(() => {\r\n const methodsArray = [];\r\n\r\n if (rubPayPageUrl && Fee && aedAmount) {\r\n methodsArray.push({\r\n name: t('payment.ruCardPaymentTitle'),\r\n type: 0,\r\n icon: [],\r\n description: t('payment.ruCardPaymentDescription'),\r\n render: (\r\n
\r\n
\r\n \r\n processingSbp ? : null\r\n }\r\n label={t('payment.bookNowSbp', { amount: Fee.totalCost.toFixed(2), currency: 'RUB' })}\r\n size=\"medium\"\r\n color=\"blue\"\r\n fullWidth\r\n />\r\n \r\n processingCard ? : null\r\n }\r\n label={t('payment.bookNowCard', {\r\n amount: ((Fee.totalCost || 0) + (Fee.totalCost || 0) * 0.02).toFixed(2),\r\n currency: 'RUB',\r\n })}\r\n size=\"medium\"\r\n color=\"blue\"\r\n fullWidth\r\n />\r\n
\r\n
\r\n ),\r\n });\r\n }\r\n\r\n if (aedAmount) {\r\n methodsArray.push({\r\n name: t('payment.masterCardAndVisa'),\r\n type: 1,\r\n icon: [, ],\r\n description: t('payment.masterCardAndVisaDescription'),\r\n render: (\r\n
\r\n {stripePromise && aedAmount && (\r\n \r\n \r\n \r\n )}\r\n
\r\n ),\r\n });\r\n }\r\n\r\n return methodsArray;\r\n }, [aedAmount, Fee, rubPayPageUrl, stripePromise, isValid, t, processingSbp, processingCard, bookingRequest, checkout.offer?.name ]);\r\n useEffect(() => {\r\n console.log('aedAmount updated:', aedAmount);\r\n console.log('methods array', methods.length);\r\n console.log('Fee updated:', Fee);\r\n console.log('checkout:', checkout);\r\n }, [aedAmount,methods,Fee, checkout]);\r\n return (\r\n <>\r\n
\r\n

{t('checkout.guest')}

\r\n
\r\n
\r\n {!checkout.offer?.isDirectReporting && (\r\n <>\r\n setFieldCheckoutHandler('hotel', value.hotel)}\r\n placeholder={t('checkout.selectHotel')}\r\n options={filteredHotel}\r\n onInputChange={setFilterSelect}\r\n error={!isFormValid.hotel}\r\n />\r\n {!isFormValid.hotel && (\r\n
\r\n {t('checkout.invalidHotel', {cities: cities?.filter(city => checkout.offer?.cities.includes(city.value)).map((city) => city.label)\r\n .join(', '), cityName: checkout.hotel?.cityName, supportPhoneNumber:supportPhoneNumber})}\r\n
\r\n )}\r\n \r\n )}\r\n\r\n
\r\n
\r\n setFieldCheckoutHandler('guestName', event.target.value)}\r\n value={checkout.guestName}\r\n placeholder={t('checkout.enterYourName')}\r\n error={!isFormValid.guestName}\r\n />\r\n
\r\n {!checkout.offer?.isDirectReporting && (\r\n
\r\n setFieldCheckoutHandler('userRoomNumber', event.target.value)}\r\n value={checkout.userRoomNumber}\r\n placeholder={t('checkout.enterYourRoom')}\r\n />\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n setFieldCheckoutHandler('userEmail', event.target.value)}\r\n value={checkout.userEmail}\r\n placeholder={t('checkout.enterYourEmail')}\r\n error={!isFormValid.userEmail}\r\n />\r\n
\r\n
\r\n setFieldCheckoutHandler('userPhone', event)}\r\n placeholder={t('checkout.selectMobile')}\r\n value={checkout.userPhone}\r\n inputProps={{\r\n name: 'userPhone',\r\n required: true\r\n }}\r\n isValid={(value, country) => {\r\n // @ts-ignore\r\n return isFormValid.userPhone || (value && value !== country.countryCode);\r\n }}\r\n />\r\n
\r\n
\r\n {!checkout.offer?.isDirectReporting && (\r\n \r\n {t('checkout.hotelNotListed', {supportPhoneNumber:supportPhoneNumber})}\r\n \r\n )}\r\n \r\n
\r\n\r\n

{t('checkout.bookingSummary')}

\r\n
\r\n
    \r\n {checkout.offer?.bookingType !== 2 && (\r\n
  • \r\n {t('checkout.tourDate')}\r\n {`${format(checkout.selectedDate || new Date(), 'dd.MM.yyyy')} (${\r\n checkout.timeSlot && timeFormat(checkout.timeSlot.startTime, checkout.timeSlot.endTime)\r\n })`}\r\n
  • \r\n )}\r\n {!checkout.offer?.isDirectReporting && checkout.hotel && (\r\n
  • \r\n {t('checkout.pickUpTime')}\r\n {checkout.pickUpTime\r\n ? `${format(addMinutes(emptyDate, checkout.pickUpTime.timeShiftStart), 'HH-mm')} - ${format(\r\n addMinutes(emptyDate, checkout.pickUpTime.timeShiftEnd),\r\n 'HH-mm'\r\n )}`\r\n : t('checkout.selectHotelFirst')}\r\n
  • \r\n )}\r\n
  • \r\n {t('checkout.ticketType')}\r\n {checkout.offer?.name}\r\n
  • \r\n {checkout.offer?.bookingType === 2 &&\r\n checkout?.ticketStock?.validUntil && (\r\n
  • \r\n {t('checkout.validUntil')}\r\n {format(new Date(checkout.ticketStock?.validUntil), 'dd.MM.yyyy')}\r\n
  • \r\n )}\r\n {\r\n !checkout.offer?.childrenAllowed &&\r\n
  • \r\n {t('checkout.numberOfPeopleLabel')}\r\n {checkout.adultCount}\r\n
  • \r\n }\r\n {\r\n checkout.offer?.childrenAllowed &&\r\n
  • \r\n {t('checkout.numberOfPeopleLabel')}\r\n {checkout.adultCount} {t('adults')} {checkout.childCount ? `/ ${checkout.childCount} ${t('child')}` : ''}{' '}\r\n {checkout.infantCount ? `/ ${checkout.infantCount} ${t('infant')}` : ''}\r\n
  • \r\n }\r\n
  • \r\n {t('checkout.cancellationPolicyLabel')}\r\n {checkout.cancellationPolicy && (checkout.cancellationPolicy\r\n ?.sort((a, b) => (a.hours < b.hours ? 1 : -1))\r\n .map((item, index) => (\r\n <>\r\n {index > 0 &&
    }{' '}\r\n {`${item.hours} ${declOfNum(item.hours, [t('checkout.clock1'), t('checkout.clock2'), t('checkout.clock3')])} ${\r\n t('checkout.orMore')\r\n } = ${item.percents}% ${t('checkout.returns')}`}\r\n \r\n )))}\r\n {checkout.cancellationPolicy && checkout.cancellationPolicy.length === 0 && (\r\n t('checkout.nonRefundable')\r\n )}\r\n
  • \r\n
  • \r\n {t('checkout.total')}\r\n {Math.round(amount) + ' ' + currency}\r\n
  • \r\n
\r\n
\r\n
\r\n {methods.map((item) => (\r\n
\r\n
setPaymentType(item.type)}>\r\n {methods.length > 1 && (\r\n \r\n )}\r\n {item.icon.map((icon, index) => (\r\n {icon}\r\n ))}\r\n
\r\n
{item.name}
\r\n {item.description}\r\n
\r\n
\r\n
{paymentType === item.type ? item.render : null}
\r\n
\r\n ))}\r\n {checkout.faqList && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n {t('payment.purchaseAgreement')}\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Checkout;\r\n\r\nconst getFaq = (faqList: FaqType[]): AccordeonItemType[] => {\r\n const faq = [];\r\n for (let entry of faqList) {\r\n faq.push(\r\n {\r\n title: entry.question,\r\n body: entry.answer\r\n }\r\n )\r\n }\r\n return faq;\r\n};\r\n\r\n","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconInfo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"icon-info\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 22.926,\n height: 22.925,\n viewBox: \"0 0 22.926 22.925\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_98\",\n \"data-name\": \"Path 98\",\n d: \"M11.463,0A11.463,11.463,0,1,0,22.925,11.463,11.476,11.476,0,0,0,11.463,0Zm0,20.841a9.379,9.379,0,1,1,9.379-9.378A9.389,9.389,0,0,1,11.463,20.841Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_99\",\n \"data-name\": \"Path 99\",\n d: \"M146.391,70a1.389,1.389,0,1,0,1.389,1.39A1.391,1.391,0,0,0,146.391,70Z\",\n transform: \"translate(-134.929 -65.137)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_100\",\n \"data-name\": \"Path 100\",\n d: \"M151.042,140A1.042,1.042,0,0,0,150,141.042v6.252a1.042,1.042,0,1,0,2.084,0v-6.252A1.042,1.042,0,0,0,151.042,140Z\",\n transform: \"translate(-139.579 -130.274)\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconInfo);\nexport default __webpack_public_path__ + \"static/media/icon-info.1f43e7b5.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconDownload(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 22.039,\n height: 22.039,\n viewBox: \"0 0 22.039 22.039\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"icon-download\",\n d: \"M17.639,11.988l-6.62,6.62L4.4,11.988l1.218-1.218,4.541,4.541V0H11.88V15.312l4.541-4.541Zm4.4,8.329H0v1.722H22.039Zm0,0\",\n fill: \"#fff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconDownload);\nexport default __webpack_public_path__ + \"static/media/icon-download.faa761b1.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconTicketActive(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n style: {\n transform: \"translateY(-1px)\"\n },\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 22.932,\n height: 22.932,\n viewBox: \"0 0 22.932 22.932\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"icon-ticket\",\n d: \"M20.1,5.743l-.475.475a2.055,2.055,0,0,1-2.907-2.907l.475-.475L14.353,0,0,14.353l2.836,2.836.475-.475A2.055,2.055,0,0,1,6.218,19.62l-.475.475,2.836,2.836L22.932,8.579ZM7.6,20.049a3.4,3.4,0,0,0-4.714-4.714L1.9,14.353,14.353,1.9l.982.982A3.4,3.4,0,0,0,20.049,7.6l.982.982L8.579,21.031Z\",\n transform: \"translate(0)\",\n fill: \"#ffffff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconTicketActive);\nexport default __webpack_public_path__ + \"static/media/icon-ticket-active.42a47998.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconAccept(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n style: {\n transform: \"translateY(2px)\"\n },\n id: \"icon-accept\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 21.258,\n height: 22.188,\n viewBox: \"0 0 21.258 22.188\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_124\",\n \"data-name\": \"Path 124\",\n d: \"M66.287,98.637h-3.88a.65.65,0,1,0,0,1.3h3.88a.65.65,0,1,0,0-1.3Zm0,0\",\n transform: \"translate(-59.081 -94.362)\",\n fill: \"#fff\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_125\",\n \"data-name\": \"Path 125\",\n d: \"M66.287,158.641h-3.88a.65.65,0,1,0,0,1.3h3.88a.65.65,0,1,0,0-1.3Zm0,0\",\n transform: \"translate(-59.081 -151.766)\",\n fill: \"#fff\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_126\",\n \"data-name\": \"Path 126\",\n d: \"M66.287,218.645h-3.88a.65.65,0,1,0,0,1.3h3.88a.65.65,0,1,0,0-1.3Zm0,0\",\n transform: \"translate(-59.081 -209.169)\",\n fill: \"#fff\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_127\",\n \"data-name\": \"Path 127\",\n d: \"M66.287,278.648h-3.88a.65.65,0,0,0,0,1.3h3.88a.65.65,0,0,0,0-1.3Zm0,0\",\n transform: \"translate(-59.081 -266.573)\",\n fill: \"#fff\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_128\",\n \"data-name\": \"Path 128\",\n d: \"M66.287,339.656h-3.88a.65.65,0,1,0,0,1.3h3.88a.65.65,0,1,0,0-1.3Zm0,0\",\n transform: \"translate(-59.081 -324.937)\",\n fill: \"#fff\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_129\",\n \"data-name\": \"Path 129\",\n d: \"M202.306,99.937h3.88a.65.65,0,1,0,0-1.3h-3.88a.65.65,0,0,0,0,1.3Zm0,0\",\n transform: \"translate(-192.917 -94.362)\",\n fill: \"#fff\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_130\",\n \"data-name\": \"Path 130\",\n d: \"M202.306,159.941h3.88a.65.65,0,1,0,0-1.3h-3.88a.65.65,0,0,0,0,1.3Zm0,0\",\n transform: \"translate(-192.917 -151.766)\",\n fill: \"#fff\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_131\",\n \"data-name\": \"Path 131\",\n d: \"M204.825,219.295a.65.65,0,0,0-.65-.65h-1.869a.65.65,0,0,0,0,1.3h1.869A.65.65,0,0,0,204.825,219.295Zm0,0\",\n transform: \"translate(-192.917 -209.169)\",\n fill: \"#fff\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_132\",\n \"data-name\": \"Path 132\",\n d: \"M314.088,342.831a.65.65,0,0,0-.914.1l-1.674,2.087-1.037-.751a.65.65,0,1,0-.763,1.053l1.538,1.114a.649.649,0,0,0,.888-.12l2.062-2.57A.65.65,0,0,0,314.088,342.831Zm0,0\",\n transform: \"translate(-296.023 -327.837)\",\n fill: \"#fff\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_133\",\n \"data-name\": \"Path 133\",\n d: \"M19.708,13a5.361,5.361,0,0,0-3.114-1.565V2.618A2.621,2.621,0,0,0,13.977,0H2.618A2.621,2.621,0,0,0,0,2.618V17.676a2.621,2.621,0,0,0,2.618,2.618h9.136a5.351,5.351,0,0,0,4.105,1.894A5.4,5.4,0,0,0,19.708,13ZM1.3,17.676V2.618A1.32,1.32,0,0,1,2.618,1.3H13.977a1.319,1.319,0,0,1,1.318,1.318v8.795a5.406,5.406,0,0,0-4.364,7.581H2.618A1.319,1.319,0,0,1,1.3,17.676Zm14.559,3.212a4.1,4.1,0,0,1,0-8.2h.074a4.1,4.1,0,0,1-.074,8.2Zm0,0\",\n fill: \"#fff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconAccept);\nexport default __webpack_public_path__ + \"static/media/icon-accept.7b45ed85.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconPhone(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20.31,\n height: 20.311,\n viewBox: \"0 0 20.31 20.311\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"icon-phone\",\n d: \"M19.8,14.98l-2.525-2.525a1.787,1.787,0,0,0-2.525,0L13.6,13.6a1.354,1.354,0,0,1-1.913,0L6.714,8.625a1.352,1.352,0,0,1,0-1.913L7.861,5.564a1.784,1.784,0,0,0,0-2.526L5.336.522a1.787,1.787,0,0,0-2.523,0l-.92.912a6.445,6.445,0,0,0,0,9.1l7.882,7.886a6.434,6.434,0,0,0,9.1,0l.918-.918A1.787,1.787,0,0,0,19.8,14.98ZM3.653,1.364a.6.6,0,0,1,.842,0L7.02,3.881a.6.6,0,0,1,0,.842L6.6,5.143,3.234,1.779Zm6.964,16.218L2.735,9.7a5.232,5.232,0,0,1-.328-7.061L5.761,5.989a2.54,2.54,0,0,0,.111,3.477l4.974,4.979h0a2.54,2.54,0,0,0,3.477.111l3.355,3.355A5.222,5.222,0,0,1,10.617,17.582Zm8.34-.918-.421.421-3.367-3.367.421-.421a.6.6,0,0,1,.842,0l2.525,2.525A.6.6,0,0,1,18.957,16.664Z\",\n transform: \"translate(-0.011 0)\",\n fill: \"#1b214a\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconPhone);\nexport default __webpack_public_path__ + \"static/media/icon-phone.65872c49.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIconEmail(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 15,\n viewBox: \"0 0 20 15\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"icon-email\",\n d: \"M18.242,61H1.758A1.747,1.747,0,0,0,0,62.731V74.269A1.747,1.747,0,0,0,1.758,76H18.242A1.747,1.747,0,0,0,20,74.269V62.731A1.747,1.747,0,0,0,18.242,61ZM18,62.154l-7.962,7.84-8.031-7.84ZM1.172,74.03V62.964l5.644,5.509ZM2,74.846l5.647-5.56,1.979,1.932a.592.592,0,0,0,.827,0l1.929-1.9L18,74.846Zm16.828-.816L13.211,68.5l5.617-5.53Z\",\n transform: \"translate(0 -61)\",\n fill: \"#1b214a\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconEmail);\nexport default __webpack_public_path__ + \"static/media/icon-email.dfe43654.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/contact-avatar-ru.09d6acfc.png\";","import React, { useEffect, useState, useCallback, useRef } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { supportPhoneNumber, supportEmail, mainSite, language } from '../../config/constants';\r\nimport { ReactComponent as IconInfo } from '../../assets/images/icons/icon-info.svg';\r\nimport { ReactComponent as IconDownload } from '../../assets/images/icons/icon-download.svg';\r\nimport { ReactComponent as IconTicketActive } from '../../assets/images/icons/icon-ticket-active.svg';\r\nimport { ReactComponent as IconAccept } from '../../assets/images/icons/icon-accept.svg';\r\nimport { ReactComponent as IconPhone } from '../../assets/images/icons/icon-phone.svg';\r\nimport { ReactComponent as IconEmail } from '../../assets/images/icons/icon-email.svg';\r\nimport ContactAvatar from '../../assets/images/contact-avatar.png';\r\nimport ContactAvatarRu from '../../assets/images/contact-avatar-ru.png';\r\nimport Button from '../../components/button';\r\nimport { Spin } from 'antd';\r\nimport { LoadingOutlined } from '@ant-design/icons';\r\nimport { bookingApi } from '../../lib/api';\r\nimport { googleConversion, fbConversion, yandexConversion } from '../../lib/utils';\r\nimport { Booking } from '../../types/booking';\r\nimport format from 'date-fns/format';\r\nimport addMinutes from 'date-fns/addMinutes';\r\nimport { emptyDate } from '../../config/constants';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {Helmet} from \"react-helmet\";\r\n\r\n\r\nconst handleEventHeaderClick = () => {\r\n window.location.href = mainSite;\r\n};\r\n\r\nconst Confirm = () => {\r\n const { bookingId } = useParams<{ bookingId: string }>();\r\n const [t] = useTranslation();\r\n\r\n // States\r\n const [booking, setBooking] = useState();\r\n const [isSucceeded, setSucceeded] = useState(false);\r\n const [isFailed, setFailed] = useState(false);\r\n const [retryFailed, setRetryFailed] = useState(false);\r\n const [isLoading, setLoading] = useState(true);\r\n\r\n const bookingStatus =\r\n isSucceeded && !booking?.isExternalBookingFailed\r\n ? t('confirm.title')\r\n : retryFailed || booking?.isExternalBookingFailed\r\n ? t('confirm.paymentHookError')\r\n : isFailed\r\n ? t('confirm.paymentFailed')\r\n : t('confirm.pleaseWait');\r\n\r\n // Ref for isLoading to get the latest value inside async functions\r\n const isLoadingRef = useRef(isLoading);\r\n useEffect(() => {\r\n isLoadingRef.current = isLoading;\r\n }, [isLoading]);\r\n\r\n // Wrap fetchData with useCallback\r\n const fetchData = useCallback(async () => {\r\n const data = await bookingApi.getBooking(bookingId);\r\n setBooking(data);\r\n\r\n if ((data.status === 0 || data.status === 1) && !data.paymentErrorMessage) {\r\n setSucceeded(true);\r\n setLoading(false);\r\n } else if (data.paymentErrorMessage) {\r\n setFailed(true);\r\n setLoading(false);\r\n }\r\n }, [bookingId]);\r\n\r\n // Initial data fetch and event listener setup\r\n useEffect(() => {\r\n document.addEventListener('eventHeaderClick', handleEventHeaderClick, false);\r\n return () => document.removeEventListener('eventHeaderClick', handleEventHeaderClick, false);\r\n }, [bookingId]);\r\n\r\n // Polling function\r\n useEffect(() => {\r\n let isCancelled = false;\r\n const countRef = { current: 0 }; // Use a ref for count\r\n\r\n const checkBookingStatus = async () => {\r\n const maxAttempts = 25;\r\n const intervalTime = 1000; // 1 second\r\n\r\n while (isLoadingRef.current && countRef.current < maxAttempts && !isCancelled) {\r\n countRef.current++;\r\n await fetchData();\r\n\r\n if (isLoadingRef.current && countRef.current < maxAttempts && !isCancelled) {\r\n await new Promise((resolve) => setTimeout(resolve, intervalTime));\r\n }\r\n }\r\n\r\n if (countRef.current >= maxAttempts && isLoadingRef.current && !isCancelled) {\r\n setRetryFailed(true);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n if (isLoading) {\r\n checkBookingStatus();\r\n }\r\n\r\n return () => {\r\n isCancelled = true;\r\n };\r\n }, [isLoading, fetchData]);\r\n\r\n \r\n function recordConversion() {\r\n if (!isSucceeded){\r\n return null\r\n }\r\n return googleConversion(booking?.totalCostUsd, bookingId)\r\n }\r\n function recordFBConversion() {\r\n if (!isSucceeded){\r\n return null\r\n }\r\n return fbConversion(booking?.totalCostUsd)\r\n }\r\n function recordYandexConversion() {\r\n if (!isSucceeded){\r\n return null\r\n }\r\n return yandexConversion(booking?.totalCostUsd)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {isLoading ? (\r\n } fullscreen tip={t('payment.paymentProcessing')} />\r\n ) : (\r\n
\r\n\r\n

\r\n {bookingStatus}\r\n

\r\n
\r\n
\r\n
{t('confirm.bookingStatus')}
\r\n
{bookingStatus}
\r\n
\r\n
\r\n
{t('confirm.bookingId')}
\r\n
{booking?.id}
\r\n
\r\n {booking && booking.startTime && booking.endTime && (\r\n
\r\n
{t('checkout.tourDate')}
\r\n
\r\n {booking &&\r\n `${format(new Date(booking.date), 'dd.MM.yyyy')} (${format(\r\n addMinutes(emptyDate, booking.startTime),\r\n 'HH-mm'\r\n )} - ${format(addMinutes(emptyDate, booking.endTime), 'HH-mm')})`}\r\n
\r\n
\r\n )}\r\n {booking && booking.ticketsValidUntil && (\r\n
\r\n
{t('checkout.validUntil')}
\r\n
\r\n {format(\r\n new Date(booking.ticketsValidUntil) || new Date(),\r\n 'dd.MM.yyyy'\r\n )}\r\n
\r\n
\r\n )}\r\n {booking?.hotelName && (\r\n
\r\n
{t('checkout.pickUpTime')}
\r\n
{`${format(\r\n addMinutes(emptyDate, booking.pickUpTimeStart),\r\n 'HH-mm'\r\n )} - ${format(addMinutes(emptyDate, booking.pickUpTimeEnd), 'HH-mm')}`}
\r\n
\r\n )}\r\n
\r\n
{t('confirm.tourName')}
\r\n
{booking?.offerName}
\r\n
\r\n
\r\n
{t('checkout.numberOfPeopleLabel')}
\r\n {\r\n (!!booking?.numChildren || !!booking?.numInfants) &&\r\n
\r\n {booking?.numAdults} {t('adults')} \r\n {booking?.numChildren ? `/ ${booking?.numChildren} ${t('child')} ` : ''} \r\n {booking?.numInfants ? `/ ${booking?.numInfants} ${t('infant')} ` : ''}\r\n
\r\n }\r\n {\r\n (!booking?.numChildren ?? !booking?.numInfants) &&\r\n
\r\n {booking?.numAdults} \r\n
\r\n }\r\n
\r\n
\r\n
{t('confirm.totalCost')}
\r\n
\r\n {booking?.totalCost} {booking?.paymentCurrency}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
{t('confirm.guestName')}
\r\n
{booking?.guestName}
\r\n
\r\n {booking?.hotelName && (\r\n <>\r\n
\r\n
{t('confirm.hotelName')}
\r\n
{booking.hotelName}
\r\n
\r\n
\r\n
{t('confirm.roomNumber')}
\r\n
{booking.roomNumber}
\r\n
\r\n \r\n )}\r\n
\r\n
{t('confirm.mobileNumber')}
\r\n
{booking?.phone}
\r\n
\r\n
\r\n
{t('confirm.email')}
\r\n
{booking?.email}
\r\n
\r\n
\r\n\r\n {isSucceeded && (\r\n
\r\n
\r\n {t('confirm.ticketInfo')}\r\n
\r\n
\r\n {booking?.voucherUrl && (\r\n (window.location.href = booking.voucherUrl)}\r\n iconLeft={() => }\r\n />\r\n )}\r\n {booking?.ticketsUrl && (\r\n (window.location.href = booking.ticketsUrl)}\r\n iconLeft={() => }\r\n />\r\n )}\r\n {booking?.invoiceUrl && (\r\n (window.location.href = booking.invoiceUrl)}\r\n iconLeft={() => }\r\n />\r\n )}\r\n
\r\n

\r\n {t('confirm.information')}\r\n

\r\n
\r\n )}\r\n\r\n
\r\n

{t('confirm.reservationTeamContacts')}

\r\n

{t('confirm.questions')}

\r\n
\r\n {language == 'ru' && (\r\n
\r\n Zenfira\r\n
\r\n )}\r\n {language != 'ru' && ( \r\n
\r\n Joan Bantay Fajardo\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 Confirm;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAA0CAIAAAB6lp2dAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGfmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTExLTExVDIxOjI5OjA4KzAzOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTExLTExVDIxOjI5OjA4KzAzOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0xMS0xMVQyMToyOTowOCswMzowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyZWRkY2I5ZC04MTg3LTRkNDgtOTI1Mi04YmNlZDZkMDFhZDYiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDplYjc4MmE5ZS1iYWQwLTFhNGQtYWJlMS0xYjZlYTk5Y2YwNDgiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozNWJjNGMyOC0xYzliLTVmNDgtYTA1NS05OTVlMGJmMjRiNDQiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjM1YmM0YzI4LTFjOWItNWY0OC1hMDU1LTk5NWUwYmYyNGI0NCIgc3RFdnQ6d2hlbj0iMjAyMS0xMS0xMVQyMToyOTowOCswMzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoyZWRkY2I5ZC04MTg3LTRkNDgtOTI1Mi04YmNlZDZkMDFhZDYiIHN0RXZ0OndoZW49IjIwMjEtMTEtMTFUMjE6Mjk6MDgrMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+NjJBMUU3OUUyM0VGOUQ1M0QyMkVGQzM4REIzQjMwMUQ8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6oC6CkAAAVCElEQVRYhV2Yx5Pl13Xfzzk3/cJL/Tp3T0/PYDAAJiCDgBFsyrKrKLlEyYmQSiWvJG+0cLm8c/kv0MZ0lRZaeGFXWbIX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\"","import React from 'react';\r\nimport Footer from '../../components/footer';\r\nimport Header from '../../components/header';\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport { routes } from '../../config/constants';\r\nimport Ticket from '../ticket';\r\nimport Checkout from '../checkout';\r\nimport Confirm from '../confirm';\r\n\r\nconst Layout = () => {\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