{"version":3,"sources":["components/ModifySelection/ModifySelectedRooms.module.css","components/SearchingWrapper/TempHotelResults.module.css","components/HotelSearch/HotelSearchBox.module.css","components/Availability/AvailabilityResult.module.css","components/Widget/HotelFacility.module.css","components/Packages/SelectPackages.module.css","components/Widget/ReviewRate.module.css","utility/HotelBlock.module.css","components/SearchMap/desktop-map.module.css","components/SearchMap/desktop-map-hotel-details.module.css","components/HotelsFilters/HotelsFilters.module.css","components/HotelDetails/HotelDetailsComment.module.css","components/HotelDetails/HotelDetails.module.css","components/Availability/AvailabilityHotel.module.css","components/Widget/Category.module.css","components/HotelSearch/HotelSearchInputPlace.module.css","utility/SendResultsByEmail.module.css","components/SearchMap/desktop-map-filters.module.css","components/HotelsFilters/__generated__/HotelsFiltersQuery.graphql.js","components/SearchingWrapper/__generated__/TempHotelResultsQuery.graphql.js","components/SearchingWrapper/__generated__/TempHotelByCodesResultsQuery.graphql.js","components/SearchingWrapper/__generated__/HotelIdsByFilterQuery.graphql.js","components/SearchResults/ResultDeal.module.css","components/SearchResults/__generated__/ResultDeal_deal.graphql.js","components/SearchMap/desktop-map-results.module.css","components/HotelDetails/__generated__/HotelDetailsQuery.graphql.js","components/SearchResults/__generated__/ResultHotel_hotel.graphql.js","utility/__generated__/HotelBlockQuery.graphql.js","components/SearchMap/map.module.css","components/SearchResults/__generated__/SearchResults_availability.graphql.js","components/SearchingWrapper/__generated__/SearchingWrapperQuery.graphql.js","utility/LanguageHelper.js","translations/i18n.js","translations/en.js","translations/es.js","translations/de.js","translations/fr.js","translations/it.js","translations/nl.js","translations/pt.js","translations/ru.js","utility/constants.js","utility/SearchUtility.js","components/HotelSearch/HotelSearchInputPlace.js","components/HotelSearch/HotelSearchRoomsSelection.js","components/HotelSearch/HotelSearchBox.js","Environment.js","components/Widget/Category.js","components/Widget/HotelFacility.js","components/Widget/HotelFacilities.js","components/SearchResults/ResultHotel.style.js","components/Availability/AvailabilityHotel.js","utility/responsiveHelper.js","components/HotelsFilters/HotelsFilters.js","components/Availability/AvailabilityResult.js","components/SearchingWrapper/TempHotelResults.js","components/SearchingWrapper/TempHotelByCodesResults.js","components/SearchingWrapper/HotelIdsByFilter.js","components/SearchResults/RoomNotesModal.js","components/SearchResults/ResultDistribution.style.js","components/SearchResults/ResultDistribution.js","components/ModifySelection/ModifySelectionSteps.js","components/ModifySelection/ModifySelectedRooms.style.js","components/ModifySelection/ModifySelectedRooms.js","components/Packages/SelectPackages.js","components/SearchResults/ResultDeal.style.js","components/SearchResults/ResultDealShowLoading.js","utility/bookingHelper.js","components/SearchResults/ResultDealButtonSelect.js","components/SearchResults/ResultDeal.js","components/HotelDetails/HotelDetailsDescription.js","components/HotelDetails/HotelDetailsMap.js","components/Widget/ReviewRate.js","components/HotelDetails/HotelCommentCanarias.js","components/HotelDetails/HotelCommentsTripAdvisor.js","components/HotelDetails/HotelDetailsComments.js","components/HotelDetails/HotelDetails.js","components/HotelDetails/HotelDetailsPopup.js","components/SearchResults/ResultHotel.js","utility/HotelBlock.js","components/SearchResults/ResultPaginator.js","components/SearchResults/ResultOrder.js","components/SearchResults/SearchResultsNoResults.js","utility/SendResultsByEmail.js","utility/SearchMapHelper.js","components/SearchMap/map.js","components/SearchMap/desktop-map-container.js","components/SearchMap/desktop-map-filters.js","components/SearchMap/desktop-map-results.js","components/SearchMap/desktop-map-hotel-details.js","components/SearchMap/desktop-map.js","components/SearchResults/SearchResults.js","components/SearchResults/SearchResultsShowSameHotels.js","components/SearchingWrapper/SearchingWrapper.js","components/ErrorBoundary.js","components/BookingProcess.js","app.js"],"names":["module","exports","root","closeButton","iconSync","fa-spin","main","filters","hotels","hotel","hotelFacility","facilityTooltip","stars-1","stars-2","stars-3","stars-4","stars-5","stars-6","label","loadingMessageContainer","mapContainer","container","hotelDetailsContainer","deals","searchBox","filtersContent","overlay","disabled","filterItemHeader","fitlerItemContent","filterFacilityItem","tabs","tabList","tab","tabSelected","tabPanel","tabPanelSelected","hotelDetails","info","infoDetails","infoDescrption","infoDetailsLeft","name","categoryAndType","type","addreddAndMap","address","mapButton","infoDetailsPrice","minPrice","linkHotel","hotelFacilities","iconLoadingRooms","loadingRooms","keys-1L","keys-2L","keys-3L","keys-4L","keys-5L","inputContainer","inputContainerHorizontal","labelHorizontal","menu","messageContainer","item","itemHeader","itemHighlighted","iconSearch","input","inputHorizontal","lineWrapperHorizontal","lineWrapper","inputWrapperHorizontal","inputWrapper","accordionHeader","filtersContainer","node","v0","kind","defaultValue","v1","alias","args","storageKey","v2","variableName","concreteType","plural","selections","fragment","metadata","argumentDefinitions","operation","params","operationKind","id","text","hash","iconInfo","v3","v4","resultsContainer","hotelSelected","hotelPrice","hotelName","nameAndCategory","category","v5","v6","v7","v8","v9","v10","v11","othersLanguages","getLanguageFromUrl","path","window","location","pathname","l","startsWith","concat","resources","en","translation","send_by_email.message_sent_1","send_by_email.message_sent_0","send_by_email.email-placeholder","send_by_email.message-placeholder","send_by_email.title","send_by_email.button","map.open-button","hotel_blocking_error","hotel_blocking_error_button","filters.filters","resultDeal.totalPriceText","resultDeal.roomTypeTitle","resultDeal.changeRoomTitle","resultDeal.changeRoomsTitle","resultDistribution.roomsQuantity","hotel_blocking.message","hotel_details_not_available","distributions.up_to_x_person","hotel_details.description","hotel_details.map","hotel_details.reviews","hotel_details.CheckIn","hotel_details.CheckOut","hotel_details.FacilitiesTitle","canariasComments.title","canariasComments.rateCleaning","canariasComments.rateDreamQuality","canariasComments.rateDrinkingSelection","canariasComments.rateFood","canariasComments.rateLocation","canariasComments.rateQualityPriceRelation","canariasComments.rateRooms","canariasComments.rateService","canariasComments.resumeTitle","canariasComments.numberOfComments","canariasComments.fromUser","canariasComments.fromPlace","canariasComments.trip_type_1","canariasComments.trip_type_2","canariasComments.trip_type_3","canariasComments.trip_type_4","canariasComments.trip_type_5","TripadvisorComments.title","TripadvisorComments.resumeTitle","TripadvisorComments.readMore","TripadvisorComments.NumerOfComments","TripadvisorComments.rate_value","TripadvisorComments.rate_cleanliness","TripadvisorComments.rate_sleep","TripadvisorComments.rate_service","TripadvisorComments.rate_location","TripadvisorComments.rate_room","TripadvisorComments.TripType","TripadvisorComments.NULL","TripadvisorComments.business","TripadvisorComments.couples","TripadvisorComments.family","TripadvisorComments.friends","TripadvisorComments.solo","RoomNotesModalInfo","search_box.horizontal_label_place","search_box.label_place","search_box.place_placeholder","search_box.label_pickup_date","search_box.label_dropoff_date","search_box.label_room_and_people","search_box.search_button_text","search_box.room_selection.confirm_button_text","search_box.room_selection.adult","search_box.room_selection.adults","search_box.room_selection.child","search_box.room_selection.children","search_box.room_selection.childrenAges","search_box.room_selection.room","search_box.room_selection.rooms","search_box.place","search_box.hotels","search_box.errors.errors_title","search_box.errors.select_place","search_box.errors.wrong_start_date","search_box.errors.wrong_end_date","search_box.errors.wrong_distributions","filters.change_search","filters.main_title","filters.filter_by_category","filters.filter_by_deal","filters.filter_by_facilities","filters.filter_by_price","filters.button_filter_text","filters.button_remove_filter_text","deal.button_select_text","deal.button_modify_text","deal_selection.button_select_text","category.0","category.0L","category.1","category.10","category.11","category.13","category.1L","category.2","category.20","category.23","category.26","category.28","category.29","category.2L","category.3","category.30","category.31","category.32","category.34","category.36","category.3L","category.4","category.40","category.4L","category.5","category.5L","category.8","category.93","category.A","category.AB","category.AGRO","category.Ak","category.AP","category.AR","category.AT","category.BA","category.BB","category.BO","category.BU","category.CA","category.CAM","category.CB","category.CC","category.CE","category.CH","category.CM","category.CO","category.CP","category.CR","category.CS","category.CT","category.Cz","category.FO","category.H1","category.H2","category.HO","category.HP","category.HR","category.HS","category.HT","category.IN","category.LO","category.MH","category.MO","category.MT","category.PA","category.PE","category.PENDI","category.PO","category.PR","category.RA","category.RE","category.RS","category.RT","category.ST","category.TU","category.TUS","category.VI","category.VV","package.Add","package.Selected","package.Select","package.Book","availability.NoResults","availability.orderBy.Recommended","availability.orderBy.Price","availability.orderBy.Category","es","direct_payment_Tooltip_text","de","fr","it","nl","pt","ru","language","moment","locale","i18n","use","initReactI18next","init","lng","keySeparator","interpolation","escapeValue","resultTypeZone","resultTypeHotel","urls","hotelResults","hotelBlocked","saveSearchFilter","sendResultByEmail","hotelUrl","searchByCoordinates","getHotelsByCoordinates","availabiltyByHotelsId","utility_SearchUtility","url","urlParts","split","paramName","param","this","getParamsFromUrl","find","paramValueName","seachUrlByTerm","term","HotelSearchInputPlace","props","_this","classCallCheck_default","possibleConstructorReturn_default","getPrototypeOf_default","call","defineProperty_default","assertThisInitialized_default","decodeURI","SearchUtility","getParamFromUrl","state","me","searchedTerm","trim","lastTerm","indexOf","setState","loading","fetch","then","response","isSearchedTerm","json","data","receivedResults","catch","err","console","log","JSON","stringify","length","zones","filter","results","push","header","t","value","onSelected","event","clearTimeout","requestTimer","setTimeout","doSearch","isHighlighted","react_default","a","createElement","className","styles","key","code","items","react_fontawesome_index_es","icon","selectedItem","bind","handleOnSelect","handleOnChange","renderItem","renderMenu","horizontal","showLabel","Autocomplete_default","getItemValue","onSelect","onChange","isItemSelectable","inputProps","placeholder","autoComplete","wrapperProps","renderIcons","Component","withTranslation","MAX_NUMBER_OF_ADULTS","MAX_NUMBER_OF_CHILDREN","TriggerLabel","styled","div","_templateObject","PopupOpenButton","_templateObject2","ChildrenAges","_templateObject3","InputField","_templateObject4","RowTitle","_templateObject5","RoomRow","_templateObject6","RoomRowItem","_templateObject7","ChildrenAgesContainer","_templateObject8","ChildrenAgesTitle","_templateObject9","PopupContent","_templateObject10","ConfirmButton","_templateObject11","SelectNumberOfRoom","select","_templateObject12","SelectPersonNumber","_templateObject13","SelectChildrenAge","_templateObject14","defaultRoomDistribution","adults","children","childrenAges","buildSummaryText","numAdults","numChildren","numRooms","HotelSearchRoomsSelection","_Component","roomsDistribution","numberOfRooms","parseInt","target","toConsumableArray_default","Array","keys","map","i","updateSummaryText","attributes","numberOfAdults","reduce","tot","room","numberOfChildren","summaryText","roomIndex","slice","distribution","updateAdultsChildrenQuantity","getRoomIndexFromSelect","childIndex","from","to","labelSingle","labelPlural","options","numOfChildren","handleOnChangeChildrenAge","data-room-index","data-child-index","renderNumericOptions","index","nameAdults","nameChildren","handleOnChangeAdultsNumber","handleOnChangeChildrenNumber","renderChildrenAges","popupPosition","popupTrigger","renderRoomsDistribution","getRoomsDistributions","inherits_default","createClass_default","_this2","popupContentStyle","width","padding","boxShadow","borderRadius","overflow","background","_templateObject15","_templateObject16","_templateObject17","_templateObject18","reactjs_popup_es","trigger","position","contentStyle","arrow","offsetX","close","handleOnChangeRoomsNumber","onClick","PageSize","Container","HotelSearchBox_templateObject","DateContainer","HotelSearchBox_templateObject2","ButtonSearch","HotelSearchBox_templateObject3","TitleLabel","HotelSearchBox_templateObject4","DatesLabel","HotelSearchBox_templateObject5","DateLabel","HotelSearchBox_templateObject6","HotelSearchRoomsSelectionStyled","HotelSearchBox_templateObject7","ErrorTitle","HotelSearchBox_templateObject8","ErrorItem","p","HotelSearchBox_templateObject9","HotelSearchBox","distributions","newErrors","titleText","add","mStartDate","startDate","isValid","mEndDate","endDate","errors","urlSearchData","place","zoneId","Type","Code","zoneName","Name","hotelId","serviceCode","initDate","format","Object","assign","subfilter","canaryResident","pageSize","pageNum","order","buildUrlSearchData","formSearchData","FormData","append","buildFormSearchData","mode","method","credentials","body","href","d","focusedInput","HotelSearchBox_templateObject10","HotelSearchBox_templateObject11","HotelSearchBox_templateObject12","HotelSearchBox_templateObject13","HotelSearchBox_templateObject14","HotelSearchBox_templateObject15","HotelSearchBox_templateObject16","HotelSearchBox_templateObject17","redirectToSearch","numberOfMonth","innerWidth","HotelSearch_HotelSearchInputPlace","Fragment","buildDistributionSummaryText","react_dates","startDateId","startDatePlaceholderText","numberOfMonths","endDateId","endDatePlaceholderText","onDatesChange","_ref","onFocusChange","verticalSpacing","index_es","open","onClose","classNames","modal","React","__RELAY_API_ENDPOINT__","process","fetchQuery","variables","headers","content-type","query","Environment","environment","network","Network","create","store","Store","RecordSource","Category","classnames","HotelFacility","rc_tooltip_es","placement","facility","arrowContent","HotelFacilities","facilities","Hotel","ResultHotel_style_templateObject","HotelImage","ResultHotel_style_templateObject2","src","HotelHiddenImage","img","ResultHotel_style_templateObject3","HotelDetails","ResultHotel_style_templateObject4","HotelInfo","ResultHotel_style_templateObject5","HotelName","ResultHotel_style_templateObject6","HotelAddress","ResultHotel_style_templateObject7","ResultHotel_style_templateObject8","HotelTop","ResultHotel_style_templateObject9","HotelHeader","ResultHotel_style_templateObject10","HotelDescription","ResultHotel_style_templateObject11","HotelDeals","ResultHotel_style_templateObject12","ResultHotel_style_templateObject13","HotelImageStyled","AvailabilityHotel_templateObject","LoadingPrices","AvailabilityHotel_templateObject2","AvailabilityHotel","defaultPhoto","photos","description","ResultHotel_style_HotelDetails","ResultHotel_style_HotelFacilities","responsiveHelper","FilterItem","HotelsFilters_templateObject","FilterIcon","FontAwesomeIcon","HotelsFilters_templateObject2","FilterItemLabel","HotelsFilters_templateObject3","InputHotelName","HotelsFilters_templateObject4","CategoryStars","HotelsFilters_templateObject5","selected","stars","CategoryKeys","HotelsFilters_templateObject6","CategoryText","HotelsFilters_templateObject7","FilterPriceRange","HotelsFilters_templateObject8","FilterButton","HotelsFilters_templateObject9","RemoveFilterButton","HotelsFilters_templateObject10","Counter","HotelsFilters_templateObject11","__webpack_require__","history","reloadForFilterModified","token","searchData","channelCode","channelKey","hideSearcher","searchParams","parse","queryString","search","buildInitialMinMaxPrice","min","max","maxPrice","_useState","useState","_useState2","slicedToArray_default","setHotelName","_useState3","_useState4","minMaxPrice","setMinMaxPrice","_useState5","_useState6","filterMinMaxPrice","setFilterMinMaxPrice","_useState7","_useState8","categories","setCategories","_useState9","_useState10","setDeals","_useState11","_useState12","setFacilities","handleToggleCategory","objArr","o","toggleSelected","handleApplyFilter","oldParams","newParams","cat","deal","fac","group","newUrl","handleRemoveFilter","handleEnterOnHotelName","e","preventDefault","classDisabled","getMinMaxPriceInput","filterMinMax","Math","getSelectedItem","isZone","renderFiltrosDefault","filterItem","onKeyPress","count","isKey","isStar","isText","renderCategory","newDeals","handleToggleDeal","newfacilities","f","handleToggleFacility","valueMinMax","js_default","maxValue","minValue","formatLabel","renderPriceRange","render","filterValues","newFilterMinMaxPrice","newCategoriesStars","newCategoriesKeys","newCategoriesText","c","newCategories","sort","b","substring","item1","item2","newFacilities","setFiltersData","searchExpanded","isMobile","isTablet","umd","allowZeroExpanded","preExpanded","uuid","renderFiltrosMobile","components_HotelSearch_HotelSearchBox","react_relay","env","error","AvailabilityResult","hotelsByZone","facilitiesFilter","filterDisabled","hotelsByCodes","HotelsFilters","initialHowManyRoomsShow","TempHotelResults","style","display","justifyContent","alignItems","margin","_graphql","zoneCode","result","handleLoading","TempHotelByCodesResults","TempHotelByCodesResults_graphql","RoomNotesModal","_this$props","notes","isModalOpen","auxNotes","replace","notesArray","finalNotes","InfoHeader","RoomNotesModal_templateObject","InfoBody","RoomNotesModal_templateObject2","class","dangerouslySetInnerHTML","__html","Distribution","ResultDistribution_style_templateObject","Provider","ResultDistribution_style_templateObject2","ResultDistribution_style_templateObject3","FirstColumn","ResultDistribution_style_templateObject4","RoomQuantityMessage","ResultDistribution_templateObject","RoomName","ResultDistribution_templateObject2","withTooltip","RoomPrice","ResultDistribution_templateObject3","ButtonModify","ResultDistribution_templateObject4","FirstRowMobile","ResultDistribution_templateObject5","DirectPayment","ResultDistribution_templateObject6","DirectPaymentText","ResultDistribution_templateObject7","DirectPaymentTooltipText","ResultDistribution_templateObject8","ExtendedRoomName","ResultDistribution_templateObject9","selectedRoom","showLoading","distributioName","isModalInformationOpen","setIsModalInformationOpen","rooms","imageProviderName","providerName","toLowerCase","providerImage","price","round","toFixed","renderRoomName","roomCount","faInfoCircle","SearchResults_RoomNotesModal","closed","roomAdditionalInfo","data-tip","data-for","dist_default","effect","isDesktop","ResultDistribution_style_Name","directPayment","StepsContainer","ModifySelectionSteps_templateObject","Steps","ModifySelectionSteps_templateObject2","Step","ModifySelectionSteps_templateObject3","active","kfProgressBar_0_3","keyframes","ModifySelectionSteps_templateObject4","kfProgressBar_1_3","ModifySelectionSteps_templateObject5","kfProgressBar_2_3","ModifySelectionSteps_templateObject6","ProgressBar","ModifySelectionSteps_templateObject7","keyframe","RightArrow","ModifySelectionSteps_templateObject8","CheckIcon","ModifySelectionSteps_templateObject9","ModifySelectionSteps","steps","activeStepIndex","step","ModifySelectedRooms_style_templateObject","ModifySelectedRooms_style_templateObject2","ModifySelectedRooms_style_templateObject3","RoomsContainer","ModifySelectedRooms_style_templateObject4","ModifySelectedRooms_style_templateObject5","ModifySelectedRooms_style_templateObject6","ModifySelectedRooms_style_templateObject7","ModifySelectedRooms_style_templateObject8","RoomSelect","ModifySelectedRooms_style_templateObject9","ModifySelectionRoom","roomsSelected","providerSelected","isDirectPayment","handleAllRoomSelected","selectedRooms","_this3","selectText","roomsIdAndHowManySelected","newRoom","r","stepRooms","selectedIsDirectPayment","numRoomsAvailable","ModifySelectedRooms_style_RoomRow","ModifySelectedRooms_style_Provider","ModifySelectedRooms_style_RoomName","ModifySelectedRooms_style_RoomPrice","ModifySelectedRooms_style_DirectPayment","ModifySelectedRooms_style_DirectPaymentText","ModifySelectedRooms_style_DirectPaymentTooltipText","nextStepIndex","distributionId","newRoomsSelected","newState","PackagesContainer","SelectPackages_templateObject","Instructions","SelectPackages_templateObject2","Package","SelectPackages_templateObject3","SelectPackages_templateObject4","Description","SelectPackages_templateObject5","Price","SelectPackages_templateObject6","SelectPackage","SelectPackages_templateObject7","SelectPackages_templateObject8","packages","selectedPackages","setSelectedPackages","forceReRender","setForceReRender","packagesId","_loop","packageId","distributionForPackages","distributionsId","distributionsForPackage","di","pack","packageName","packageDescription","packagePrice","pId","i1","pDistr","isSelected","SelectPackages_Name","newSelectedPackages","selectionToToggle","handleToggleSelectPackage","SelectPackages_ConfirmButton","Deal","ResultDeal_style_templateObject","DealResume","ResultDeal_style_templateObject2","DealName","ResultDeal_style_templateObject3","DescriptionSpace","ResultDeal_style_templateObject4","DealPrice","ResultDeal_style_templateObject5","DistributionsDetails","ResultDeal_style_templateObject6","Distributions","ResultDeal_style_templateObject7","Button","ResultDeal_style_templateObject8","ResultDeal_style_templateObject9","ResultDeal_style_templateObject10","ResultDealShowLoading_templateObject","ResultDealShowLoading","ResultDealShowLoading_Container","bookingHelper","roomsId","flatMap","uniqueRoomsId","existingRoomId","quantity","urlWithoutRooms","parametersWithoutRoom","join","getUrlWithoutRooms","roomsUrlPart","roomIds","ids","selection","existingId","roomId","firstUrl","bookingLink","start_rn_rooms","end_nr_rooms","baseUrl","callback","methos","Accept","Content-Type","dealCode","isPVP","ButtonSelect","ResultDealButtonSelect_templateObject","ResultDealButtonSelect","sendSelectedRoomsAndPackage","onCustomClick","ResultDealButtonSelect_ButtonSelect","selectedDistributionsId","roomPackages","hasNotPackage","multipleUrls","singleUrl","BookingHelper","groupBookingUrls","require","RoomTypeTitle","ResultDeal_templateObject","DealHeaderLeft","ResultDeal_templateObject2","TotalPriceText","ResultDeal_templateObject3","ResultDealWT","onSelectRooms","realDistributionNumber","defaultSelectionTotalPrice","roundPrice","buildDefaultSelectedRooms","defaultSelectionRoom","isModalSelectionOpen","setIsModalSelectionOpen","isModalSelectedPackagesOpen","setIsModalSelectedPackagesOpen","customerRoomsSelectionTotalPrice","setCustomerRoomsSelectionTotalPrice","setCustomerRoomsSelection","roomsPackages","setRoomsPackages","getSelectedRoom","roomList","arguments","undefined","s","flat","blockHotelParams","roomName","dealName","rawCancellationCosts","showModifyButton","changeRoomText","ResultDeal_style_ButtonModify","ModifySelectedRooms","newRoomsSelection","SelectPackages","maxOccupancy","SearchResults_ResultDistribution","createFragmentContainer","HotelDetailsDescription_templateObject","HotelDetailsDescription_templateObject2","Address","HotelDetailsDescription_templateObject3","Phone","HotelDetailsDescription_templateObject4","ImportantInformations","HotelDetailsDescription_templateObject5","HotelDetailsDescription_templateObject6","PhoneIcon","HotelDetailsDescription_templateObject7","AddressIcon","HotelDetailsDescription_templateObject8","ClockIcon","HotelDetailsDescription_templateObject9","CheckInOut","HotelDetailsDescription_templateObject10","CheckInOutRow","HotelDetailsDescription_templateObject11","CheckInOutItemLabel","HotelDetailsDescription_templateObject12","FacilitiesTitle","HotelDetailsDescription_templateObject13","Facilities","HotelDetailsDescription_templateObject14","Facility","HotelDetailsDescription_templateObject15","HotelDetailsDescription_templateObject16","HotelDetailsDescription_templateObject17","HotelDetailsDescription_templateObject18","FacilityCheckIcon","_templateObject19","phone","ii","checkInOut","HotelDetailsDescription_Container","HotelDetailsDescription_Name","checkinFrom","checkinTo","checkoutFrom","checkoutTo","renderCheckInOutMobile","height","renderCheckInOutDefault","HotelDetailsDescription_Description","facilitiesByGroup","rv","x","groups","groupName","allFacilities","g","groupFacilities","key2","renderFacilities","HotelDetailsMap_templateObject","compose","withProps","googleMapURL","loadingElement","containerElement","mapElement","withScriptjs","withGoogleMap","latitude","longitude","HotelDetailsMap_Container","lib","defaultZoom","defaultCenter","lat","ReviewRate","scale","HotelCommentCanarias_templateObject","Resume","HotelCommentCanarias_templateObject2","ResumeLeft","HotelCommentCanarias_templateObject3","ResumeRight","HotelCommentCanarias_templateObject4","ResumeTitle","HotelCommentCanarias_templateObject5","NumReviews","HotelCommentCanarias_templateObject6","Comment","HotelCommentCanarias_templateObject7","CommentRight","HotelCommentCanarias_templateObject8","CommentRates","HotelCommentCanarias_templateObject9","Title","HotelCommentCanarias_templateObject10","UserRating","HotelCommentCanarias_templateObject11","Rating","HotelCommentCanarias_templateObject12","CommentText","HotelCommentCanarias_templateObject13","CommentDate","HotelCommentCanarias_templateObject14","TripType","HotelCommentCanarias_templateObject15","User","HotelCommentCanarias_templateObject16","UserName","HotelCommentCanarias_templateObject17","UserPlace","HotelCommentCanarias_templateObject18","UserImage","HotelCommentCanarias_templateObject19","comments","globalRate","generalRating","rateCleaning","rateDreamQuality","rateDrinkingSelection","rateFood","rateLocation","rateQualityPriceRelation","rateRooms","rateService","numComments","renderUser","user","reviewDate","tripType","HotelCommentCanarias_Container","comment","title","reviewContent","renderComment","HotelCommentsTripAdvisor_templateObject","HotelCommentsTripAdvisor_templateObject2","CommentLeft","HotelCommentsTripAdvisor_templateObject3","HotelCommentsTripAdvisor_templateObject4","HotelCommentsTripAdvisor_templateObject5","CommentRate","HotelCommentsTripAdvisor_templateObject6","CommentTrip","HotelCommentsTripAdvisor_templateObject7","HotelCommentsTripAdvisor_templateObject8","CommentTitle","HotelCommentsTripAdvisor_templateObject9","HotelCommentsTripAdvisor_templateObject10","CommentSeparator","HotelCommentsTripAdvisor_templateObject11","ReadMore","HotelCommentsTripAdvisor_templateObject12","HotelCommentsTripAdvisor_templateObject13","HotelCommentsTripAdvisor_templateObject14","HotelCommentsTripAdvisor_templateObject15","HotelCommentsTripAdvisor_templateObject16","ResumeRate","HotelCommentsTripAdvisor_templateObject17","HotelCommentsTripAdvisor_templateObject18","Awards","HotelCommentsTripAdvisor_templateObject19","Award","_templateObject20","AwardImage","_templateObject21","AwardName","_templateObject22","Subrating","_templateObject23","_templateObject24","_templateObject25","_templateObject26","_templateObject27","SubratingValue","_templateObject28","SubratingLabel","_templateObject29","HotelCommentsTripAdvisor_Container","HotelCommentsTripAdvisor_Resume","HotelCommentsTripAdvisor_ResumeLeft","HotelCommentsTripAdvisor_ResumeTitle","rating","Number","HotelCommentsTripAdvisor_NumReviews","numReviews","HotelCommentsTripAdvisor_ResumeRight","subrating","subr","renderResume","HotelCommentsTripAdvisor_Comment","HotelCommentsTripAdvisor_User","username","userLocation","HotelCommentsTripAdvisor_CommentDate","publishedDate","date","HotelCommentsTripAdvisor_CommentRight","HotelCommentsTripAdvisor_CommentText","awards","aw","year","image","HotelDetailsComments_templateObject","canarias","tripadvisor","final","esm","selectedTabClassName","HotelDetails_HotelCommentsTripAdvisor","HotelCommentCanarias","HotelDetails_templateObject","Loading","HotelDetails_templateObject2","DetailsNotAvailable","HotelDetails_templateObject3","_ref2","alert","showComments","canariasComments","tripAdivsorComments","selectedClassName","HotelDetails_HotelDetailsDescription","importantInformation","HotelDetailsMap","parseFloat","HotelDetailsComments","HotelDetailsPopup_templateObject","isOpen","setIsOpen","HotelDetailsPopup_HotelName","components_HotelDetails_HotelDetails","onLoaded","photoIndex","setPhotoIndex","photoLightboxIsOpen","setPhotoLightboxIsOpen","categoryName","handleOnSelectRooms","otherData","hotelLatitude","hotelLongitude","hotelPhone","hotelCode","hotelCategoryName","hotelAddress","hotelImage","renderImagesLightbox","changePhotoIndex","diff","dist_index_es","mainSrc","nextSrc","prevSrc","onCloseRequest","onMovePrevRequest","onMoveNextRequest","onLoad","HotelDetails_HotelDetailsPopup","SearchResults_ResultDeal","ErrorContainer","HotelBlock_templateObject","ErrorButton","HotelBlock_templateObject2","details","onResponse","scrolledUp","setScrolledUp","scroll","scrollTo","renderBlockingHotel","modules","renderError","reload","queryVariable","hotelBlock","sessionId","roomCancellationCosts","roomsCancellationsCosts","cc","cancellationsCosts","sentData","buildHotelData","handleHotelBlocked","Pages","ResultPaginator_templateObject","Page","ResultPaginator_templateObject2","Arrow","ResultPaginator_templateObject3","ResultPaginator","totalResults","onChangePage","actualPage","numberOfPages","ceil","firstPage","visiblePages","visiblePageDiff","pagesArray","handleChangePage","page","OrderWrapper","ResultOrder_templateObject","OrderItem","ResultOrder_templateObject2","onChangeOrderBy","actualOrder","handleChangeOrderBy","orderBy","NoResults","SearchResultsNoResults_templateObject","SendResultsByEmail_templateObject","Email","SendResultsByEmail_templateObject2","UserMessage","textarea","SendResultsByEmail_templateObject3","SendButton","SendResultsByEmail_templateObject4","AccordionContent","SendResultsByEmail_templateObject5","SendingMessage","SendResultsByEmail_templateObject6","AccordionItemPanelStyled","AccordionItemPanel","SendResultsByEmail_templateObject7","MessageSent","SendResultsByEmail_templateObject8","email","setEmail","message","setMessage","sendingMessage","setSendingMessage","messageSent","setMessageSent","messageSentResult","setMessageSentResult","getParamsFormUrl","rows","urlParams","postUrl","res","errorCode","asyncToGenerator_default","regenerator_default","mark","_callee","bounds","wrap","_context","prev","next","northEastLat","northEastLng","southWestLat","southWestLng","sent","abrupt","stop","_x","apply","searchByHotelsId","_callee2","hotelsId","_context2","isCanaryResident","_x2","map_templateObject","MapContainer","coords","initialLat","initialLng","loadingResults","allResults","hotelIds","pages","markers","fitros","mapProps","gBounds","getBounds","northEast","getNorthEast","southWest","getSouthWest","getOnePageHotels","filtros","newHotelsArray","hotelsToAdd","h","newAllHotelsId","acc","curr","newAllResults","addNewMarkers","newResults","onChangeHotels","newHotels","newMarkers","m","google","google_maps_react_dist","zoom","initialCenter","onDragend","onZoomChanged","marker","showHotelDetails","GoogleApiWrapper","apiKey","handleUpdateSize","addEventListener","removeEventListener","clientWidth","heigth","clientHeight","flex","ref","elem","heigh","onShowHotelDetails","DesktopMapFilters","DesktopMapResults","onHotelSelected","selectedId","handleHotelSelected","desktop_map_hotel_details","cursor","color","backgroundColor","ButtonMap","desktop_map_templateObject","DesktopMap","showModalMap","selectedHotel","handleHotelsChange","handleShowHotelDetails","desktop_map_filters","disable","desktop_map_results","desktop_map_container_MapContainer","SearchResults_templateObject","LeftColumnContainer","SearchResults_templateObject2","Filters","SearchResults_templateObject3","SendEmailResults","SendResultsByEmail","SearchResults_templateObject4","HotelsAndOrders","SearchResults_templateObject5","Hotels","SearchResults_templateObject6","ResultHotel","SearchResults_templateObject7","availability","doHotelBlock","setDoHotelBlock","hotelBlockDetails","setHotelBlockDetails","hotelBlockOtherData","setHotelBlockOtherData","pageNumber","handleOrderBy","handleReloadForFilterModified","newFilterParams","SearchResults_Container","utility_HotelBlock","getHhotelBlockedUrl","param1","param2","filterParams","renderFilters","SearchResults_ResultOrder","desktop_map","SearchResults_Hotel","SearchResultsNoResults","SearchResultsShowSameHotels_templateObject","SearchResultsShowSameHotels_templateObject2","SearchResultsShowSameHotels_templateObject3","SearchResultsShowSameHotels_templateObject4","SearchResultsShowSameHotels","SearchResultsShowSameHotels_Container","SearchResultsShowSameHotels_Filters","SearchResultsShowSameHotels_Hotels","SearchResultsShowSameHotels_Hotel","OrderStrToNum","str","SearchingWrapperQuery","hotelsIds","vars","xhttp","XMLHttpRequest","onreadystatechange","readyState","status","hotelIdsByFilter","setRequestHeader","send","fil","lang","SearchingWrapper","backTosearchUrl","setSearchParams","queryVariables","setQueryVariables","visibleHotels","setVisibleHotels","visibleFacilities","setVvisibleFacilities","nextPageNumber","newOrder","newZoneCode","newQv","qv","setQueryVariablesFromUrl","getHotelIdsByFilter","previewRendering","SearchingWrapper_TempHotelByCodesResults","SearchingWrapper_TempHotelResults","components_SearchResults_SearchResults","ErrorBoundary","hasError","library","faTimesCircle","faCheckCircle","faCheck","faUsers","faSearch","faSync","farSquare","farCheckSquare","faPhone","faMapMarkerAlt","faClock","BookingProcess","BookingProcess_templateObject","bpDom","document","getElementById","getAttribute","dateFormat","distributionsJson","hasAttributes","ReactDOM","components_ErrorBoundary","react_router_dom","react_router","_ref3","HotelDetails_default","_ref4"],"mappings":"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","file":"static/js/main.006cf2c1.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ModifySelectedRooms_root__29tfO\",\"closeButton\":\"ModifySelectedRooms_closeButton__3Hmta\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"iconSync\":\"TempHotelResults_iconSync__2yx1s\",\"fa-spin\":\"TempHotelResults_fa-spin__jEdKO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"HotelSearchBox_root__1lsXA\",\"closeButton\":\"HotelSearchBox_closeButton__3nIYI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"AvailabilityResult_main__3XlcI\",\"filters\":\"AvailabilityResult_filters__3bfcr\",\"hotels\":\"AvailabilityResult_hotels__mf2SK\",\"hotel\":\"AvailabilityResult_hotel__3HLXS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hotelFacility\":\"HotelFacility_hotelFacility__3tfht\",\"facilityTooltip\":\"HotelFacility_facilityTooltip__2BIb7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"SelectPackages_root__2QxJc\",\"closeButton\":\"SelectPackages_closeButton__2aqN5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stars-1\":\"ReviewRate_stars-1__oEgFe\",\"stars-2\":\"ReviewRate_stars-2__1imGn\",\"stars-3\":\"ReviewRate_stars-3__9-dNe\",\"stars-4\":\"ReviewRate_stars-4__1ibxE\",\"stars-5\":\"ReviewRate_stars-5__ogW7g\",\"stars-6\":\"ReviewRate_stars-6__2U-OX\",\"label\":\"ReviewRate_label__3phKQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loadingMessageContainer\":\"HotelBlock_loadingMessageContainer__bbcWp\",\"iconSync\":\"HotelBlock_iconSync__3w_6z\",\"fa-spin\":\"HotelBlock_fa-spin__3u_Gw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"desktop-map_root__1QWoU\",\"closeButton\":\"desktop-map_closeButton__XVLMj\",\"mapContainer\":\"desktop-map_mapContainer__3hVj9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"desktop-map-hotel-details_container__2Ah5K\",\"hotelDetailsContainer\":\"desktop-map-hotel-details_hotelDetailsContainer__yILur\",\"deals\":\"desktop-map-hotel-details_deals__1pkvF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchBox\":\"HotelsFilters_searchBox__EWnY4\",\"filters\":\"HotelsFilters_filters__1egmP\",\"filtersContent\":\"HotelsFilters_filtersContent__1jUT6\",\"overlay\":\"HotelsFilters_overlay__szTrn\",\"disabled\":\"HotelsFilters_disabled__2fXoD\",\"filterItemHeader\":\"HotelsFilters_filterItemHeader__D290w\",\"fitlerItemContent\":\"HotelsFilters_fitlerItemContent__3_NuB\",\"filterFacilityItem\":\"HotelsFilters_filterFacilityItem__3JEBf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabs\":\"HotelDetailsComment_tabs__1rwyf\",\"tabList\":\"HotelDetailsComment_tabList___tsdV\",\"tab\":\"HotelDetailsComment_tab__3z2Ks\",\"tabSelected\":\"HotelDetailsComment_tabSelected__10_cf\",\"tabPanel\":\"HotelDetailsComment_tabPanel__2urX_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"HotelDetails_root__2lHn-\",\"closeButton\":\"HotelDetails_closeButton__3xeYB\",\"tabs\":\"HotelDetails_tabs__2qzFN\",\"tabList\":\"HotelDetails_tabList__jaoAq\",\"tab\":\"HotelDetails_tab__3raiR\",\"tabSelected\":\"HotelDetails_tabSelected__3teNM\",\"tabPanel\":\"HotelDetails_tabPanel__1duhY\",\"tabPanelSelected\":\"HotelDetails_tabPanelSelected__1P5D5\",\"iconSync\":\"HotelDetails_iconSync__2ZR5Z\",\"fa-spin\":\"HotelDetails_fa-spin__1ffdK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hotelDetails\":\"AvailabilityHotel_hotelDetails__3VyIe\",\"info\":\"AvailabilityHotel_info__2eQqO\",\"infoDetails\":\"AvailabilityHotel_infoDetails__3hVaA\",\"infoDescrption\":\"AvailabilityHotel_infoDescrption__3PDq4\",\"infoDetailsLeft\":\"AvailabilityHotel_infoDetailsLeft__2R0WO\",\"name\":\"AvailabilityHotel_name__3UtXQ\",\"categoryAndType\":\"AvailabilityHotel_categoryAndType__2-M0p\",\"type\":\"AvailabilityHotel_type__38cG_\",\"addreddAndMap\":\"AvailabilityHotel_addreddAndMap__3ZsDb\",\"address\":\"AvailabilityHotel_address__2-9U4\",\"mapButton\":\"AvailabilityHotel_mapButton__-MqT5\",\"infoDetailsPrice\":\"AvailabilityHotel_infoDetailsPrice__1A14n\",\"minPrice\":\"AvailabilityHotel_minPrice__1rjx-\",\"linkHotel\":\"AvailabilityHotel_linkHotel__3jfmP\",\"hotelFacilities\":\"AvailabilityHotel_hotelFacilities__HLnpV\",\"hotelFacility\":\"AvailabilityHotel_hotelFacility__qCkwJ\",\"facilityTooltip\":\"AvailabilityHotel_facilityTooltip__29nwG\",\"iconSync\":\"AvailabilityHotel_iconSync__2VOuk\",\"fa-spin\":\"AvailabilityHotel_fa-spin__tZ2yX\",\"iconLoadingRooms\":\"AvailabilityHotel_iconLoadingRooms__1jm8d\",\"loadingRooms\":\"AvailabilityHotel_loadingRooms__3Vl6s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stars-1\":\"Category_stars-1__2yTxf\",\"stars-2\":\"Category_stars-2__1kgfg\",\"stars-3\":\"Category_stars-3__2yglH\",\"stars-4\":\"Category_stars-4__2HlyV\",\"stars-5\":\"Category_stars-5__3ycpn\",\"stars-6\":\"Category_stars-6__co_5S\",\"keys-1L\":\"Category_keys-1L__WCmCp\",\"keys-2L\":\"Category_keys-2L__2J9Gr\",\"keys-3L\":\"Category_keys-3L__b1QH_\",\"keys-4L\":\"Category_keys-4L__30AKX\",\"keys-5L\":\"Category_keys-5L__HweOB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputContainer\":\"HotelSearchInputPlace_inputContainer__1itZQ\",\"inputContainerHorizontal\":\"HotelSearchInputPlace_inputContainerHorizontal__3oMpq\",\"labelHorizontal\":\"HotelSearchInputPlace_labelHorizontal__2BRf2\",\"label\":\"HotelSearchInputPlace_label__2PcUC\",\"menu\":\"HotelSearchInputPlace_menu__15QYE\",\"messageContainer\":\"HotelSearchInputPlace_messageContainer__1lMKj\",\"item\":\"HotelSearchInputPlace_item__pvnaT\",\"itemHeader\":\"HotelSearchInputPlace_itemHeader__cfM0A\",\"itemHighlighted\":\"HotelSearchInputPlace_itemHighlighted__3yRoq\",\"iconSearch\":\"HotelSearchInputPlace_iconSearch__MTOdM\",\"iconSync\":\"HotelSearchInputPlace_iconSync__3uY3C\",\"fa-spin\":\"HotelSearchInputPlace_fa-spin__2cj5k\",\"input\":\"HotelSearchInputPlace_input__1Z_WX\",\"inputHorizontal\":\"HotelSearchInputPlace_inputHorizontal__2q6eE\",\"lineWrapperHorizontal\":\"HotelSearchInputPlace_lineWrapperHorizontal__CExAg\",\"lineWrapper\":\"HotelSearchInputPlace_lineWrapper__O9kWw\",\"inputWrapperHorizontal\":\"HotelSearchInputPlace_inputWrapperHorizontal__2eZ3v\",\"inputWrapper\":\"HotelSearchInputPlace_inputWrapper__2kjxx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"iconSync\":\"SendResultsByEmail_iconSync__2JQAD\",\"fa-spin\":\"SendResultsByEmail_fa-spin__Zo-Az\",\"accordionHeader\":\"SendResultsByEmail_accordionHeader__3mr-D\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filtersContainer\":\"desktop-map-filters_filtersContainer__1jJ1q\"};","/**\r\n * @flow\r\n * @relayHash 10972b232ab7f7aeb67901699658ab2f\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ConcreteRequest } from 'relay-runtime';\r\nexport type HotelsFiltersQueryVariables = {|\r\n token: string,\r\n language: string,\r\n channelCode: string,\r\n channelKey: string,\r\n|};\r\nexport type HotelsFiltersQueryResponse = {|\r\n +filters: ?{|\r\n +errorMsg: ?string,\r\n +success: ?boolean,\r\n +filters: ?{|\r\n +minPrice: number,\r\n +maxPrice: number,\r\n +categories: ?$ReadOnlyArray,\r\n +deals: ?$ReadOnlyArray,\r\n +facilities: ?$ReadOnlyArray,\r\n |},\r\n |}\r\n|};\r\nexport type HotelsFiltersQuery = {|\r\n variables: HotelsFiltersQueryVariables,\r\n response: HotelsFiltersQueryResponse,\r\n|};\r\n*/\r\n\r\n\r\n/*\r\nquery HotelsFiltersQuery(\r\n $token: String!\r\n $language: String!\r\n $channelCode: String!\r\n $channelKey: String!\r\n) {\r\n filters(token: $token, language: $language, channelCode: $channelCode, channelKey: $channelKey) {\r\n errorMsg\r\n success\r\n filters {\r\n minPrice\r\n maxPrice\r\n categories {\r\n code\r\n count\r\n group\r\n name\r\n }\r\n deals {\r\n code\r\n count\r\n group\r\n name\r\n }\r\n facilities {\r\n code\r\n count\r\n group\r\n name\r\n }\r\n }\r\n }\r\n}\r\n*/\r\n\r\nconst node/*: ConcreteRequest*/ = (function(){\r\nvar v0 = [\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"token\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"language\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"channelCode\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"channelKey\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n }\r\n],\r\nv1 = [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"code\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"count\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"group\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"name\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n],\r\nv2 = [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"filters\",\r\n \"storageKey\": null,\r\n \"args\": [\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"channelCode\",\r\n \"variableName\": \"channelCode\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"channelKey\",\r\n \"variableName\": \"channelKey\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"language\",\r\n \"variableName\": \"language\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"token\",\r\n \"variableName\": \"token\",\r\n \"type\": \"String!\"\r\n }\r\n ],\r\n \"concreteType\": \"FiltersResponse\",\r\n \"plural\": false,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"errorMsg\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"success\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"filters\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"Filters\",\r\n \"plural\": false,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"minPrice\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"maxPrice\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"categories\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"FilterCountItem\",\r\n \"plural\": true,\r\n \"selections\": (v1/*: any*/)\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"deals\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"FilterCountItem\",\r\n \"plural\": true,\r\n \"selections\": (v1/*: any*/)\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"facilities\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"FilterCountItem\",\r\n \"plural\": true,\r\n \"selections\": (v1/*: any*/)\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n];\r\nreturn {\r\n \"kind\": \"Request\",\r\n \"fragment\": {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"HotelsFiltersQuery\",\r\n \"type\": \"CanariasQuery\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v2/*: any*/)\r\n },\r\n \"operation\": {\r\n \"kind\": \"Operation\",\r\n \"name\": \"HotelsFiltersQuery\",\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v2/*: any*/)\r\n },\r\n \"params\": {\r\n \"operationKind\": \"query\",\r\n \"name\": \"HotelsFiltersQuery\",\r\n \"id\": null,\r\n \"text\": \"query HotelsFiltersQuery(\\n $token: String!\\n $language: String!\\n $channelCode: String!\\n $channelKey: String!\\n) {\\n filters(token: $token, language: $language, channelCode: $channelCode, channelKey: $channelKey) {\\n errorMsg\\n success\\n filters {\\n minPrice\\n maxPrice\\n categories {\\n code\\n count\\n group\\n name\\n }\\n deals {\\n code\\n count\\n group\\n name\\n }\\n facilities {\\n code\\n count\\n group\\n name\\n }\\n }\\n }\\n}\\n\",\r\n \"metadata\": {}\r\n }\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = '224c01822b13d7e3c7914b755efc0489';\r\nmodule.exports = node;\r\n","/**\r\n * @flow\r\n * @relayHash 9fe08d0053a9f6f511206e49a17b283c\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ConcreteRequest } from 'relay-runtime';\r\nexport type TempHotelResultsQueryVariables = {|\r\n zoneCode: string,\r\n hotelId: string,\r\n language: string,\r\n pageSize?: ?number,\r\n pageNum?: ?number,\r\n order?: ?number,\r\n|};\r\nexport type TempHotelResultsQueryResponse = {|\r\n +hotelsByZone: ?{|\r\n +name: string,\r\n +hotels: ?$ReadOnlyArray,\r\n +rankingCanarias: number,\r\n +rateCanarias: number,\r\n +rateTripAdvisor: number,\r\n |}>,\r\n |}\r\n|};\r\nexport type TempHotelResultsQuery = {|\r\n variables: TempHotelResultsQueryVariables,\r\n response: TempHotelResultsQueryResponse,\r\n|};\r\n*/\r\n\r\n\r\n/*\r\nquery TempHotelResultsQuery(\r\n $zoneCode: String!\r\n $hotelId: String!\r\n $language: String!\r\n $pageSize: Int\r\n $pageNum: Int\r\n $order: Int\r\n) {\r\n hotelsByZone(zoneCode: $zoneCode, hotelId: $hotelId, language: $language, pageSize: $pageSize, pageNum: $pageNum, order: $order) {\r\n name\r\n hotels {\r\n _id\r\n name\r\n address\r\n category\r\n description\r\n photos\r\n rankingCanarias\r\n rateCanarias\r\n rateTripAdvisor\r\n }\r\n }\r\n}\r\n*/\r\n\r\nconst node/*: ConcreteRequest*/ = (function(){\r\nvar v0 = [\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"zoneCode\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"hotelId\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"language\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"pageSize\",\r\n \"type\": \"Int\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"pageNum\",\r\n \"type\": \"Int\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"order\",\r\n \"type\": \"Int\",\r\n \"defaultValue\": null\r\n }\r\n],\r\nv1 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"name\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv2 = [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"hotelsByZone\",\r\n \"storageKey\": null,\r\n \"args\": [\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"hotelId\",\r\n \"variableName\": \"hotelId\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"language\",\r\n \"variableName\": \"language\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"order\",\r\n \"variableName\": \"order\",\r\n \"type\": \"Int\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"pageNum\",\r\n \"variableName\": \"pageNum\",\r\n \"type\": \"Int\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"pageSize\",\r\n \"variableName\": \"pageSize\",\r\n \"type\": \"Int\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"zoneCode\",\r\n \"variableName\": \"zoneCode\",\r\n \"type\": \"String!\"\r\n }\r\n ],\r\n \"concreteType\": \"HotelsByZone\",\r\n \"plural\": false,\r\n \"selections\": [\r\n (v1/*: any*/),\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"hotels\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"HotelsByZoneItem\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"_id\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v1/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"address\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"category\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"description\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"photos\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rankingCanarias\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateCanarias\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateTripAdvisor\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n];\r\nreturn {\r\n \"kind\": \"Request\",\r\n \"fragment\": {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"TempHotelResultsQuery\",\r\n \"type\": \"CanariasQuery\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v2/*: any*/)\r\n },\r\n \"operation\": {\r\n \"kind\": \"Operation\",\r\n \"name\": \"TempHotelResultsQuery\",\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v2/*: any*/)\r\n },\r\n \"params\": {\r\n \"operationKind\": \"query\",\r\n \"name\": \"TempHotelResultsQuery\",\r\n \"id\": null,\r\n \"text\": \"query TempHotelResultsQuery(\\n $zoneCode: String!\\n $hotelId: String!\\n $language: String!\\n $pageSize: Int\\n $pageNum: Int\\n $order: Int\\n) {\\n hotelsByZone(zoneCode: $zoneCode, hotelId: $hotelId, language: $language, pageSize: $pageSize, pageNum: $pageNum, order: $order) {\\n name\\n hotels {\\n _id\\n name\\n address\\n category\\n description\\n photos\\n rankingCanarias\\n rateCanarias\\n rateTripAdvisor\\n }\\n }\\n}\\n\",\r\n \"metadata\": {}\r\n }\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = 'cc92597d30036243acf98a2c0d222610';\r\nmodule.exports = node;\r\n","/**\r\n * @flow\r\n * @relayHash 35bff130907f23dd30945d0a4c1547fd\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ConcreteRequest } from 'relay-runtime';\r\nexport type TempHotelByCodesResultsQueryVariables = {|\r\n hotelId: string,\r\n language: string,\r\n pageSize?: ?number,\r\n pageNum?: ?number,\r\n order?: ?number,\r\n|};\r\nexport type TempHotelByCodesResultsQueryResponse = {|\r\n +hotelsByCodes: ?$ReadOnlyArray,\r\n +rankingCanarias: number,\r\n +rateCanarias: number,\r\n +rateTripAdvisor: number,\r\n |}>\r\n|};\r\nexport type TempHotelByCodesResultsQuery = {|\r\n variables: TempHotelByCodesResultsQueryVariables,\r\n response: TempHotelByCodesResultsQueryResponse,\r\n|};\r\n*/\r\n\r\n\r\n/*\r\nquery TempHotelByCodesResultsQuery(\r\n $hotelId: String!\r\n $language: String!\r\n $pageSize: Int\r\n $pageNum: Int\r\n $order: Int\r\n) {\r\n hotelsByCodes(hotelId: $hotelId, language: $language, pageSize: $pageSize, pageNum: $pageNum, order: $order) {\r\n _id\r\n name\r\n address\r\n category\r\n description\r\n photos\r\n rankingCanarias\r\n rateCanarias\r\n rateTripAdvisor\r\n }\r\n}\r\n*/\r\n\r\nconst node/*: ConcreteRequest*/ = (function(){\r\nvar v0 = [\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"hotelId\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"language\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"pageSize\",\r\n \"type\": \"Int\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"pageNum\",\r\n \"type\": \"Int\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"order\",\r\n \"type\": \"Int\",\r\n \"defaultValue\": null\r\n }\r\n],\r\nv1 = [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"hotelsByCodes\",\r\n \"storageKey\": null,\r\n \"args\": [\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"hotelId\",\r\n \"variableName\": \"hotelId\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"language\",\r\n \"variableName\": \"language\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"order\",\r\n \"variableName\": \"order\",\r\n \"type\": \"Int\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"pageNum\",\r\n \"variableName\": \"pageNum\",\r\n \"type\": \"Int\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"pageSize\",\r\n \"variableName\": \"pageSize\",\r\n \"type\": \"Int\"\r\n }\r\n ],\r\n \"concreteType\": \"HotelsByZoneItem\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"_id\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"name\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"address\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"category\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"description\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"photos\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rankingCanarias\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateCanarias\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateTripAdvisor\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n }\r\n];\r\nreturn {\r\n \"kind\": \"Request\",\r\n \"fragment\": {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"TempHotelByCodesResultsQuery\",\r\n \"type\": \"CanariasQuery\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v1/*: any*/)\r\n },\r\n \"operation\": {\r\n \"kind\": \"Operation\",\r\n \"name\": \"TempHotelByCodesResultsQuery\",\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v1/*: any*/)\r\n },\r\n \"params\": {\r\n \"operationKind\": \"query\",\r\n \"name\": \"TempHotelByCodesResultsQuery\",\r\n \"id\": null,\r\n \"text\": \"query TempHotelByCodesResultsQuery(\\n $hotelId: String!\\n $language: String!\\n $pageSize: Int\\n $pageNum: Int\\n $order: Int\\n) {\\n hotelsByCodes(hotelId: $hotelId, language: $language, pageSize: $pageSize, pageNum: $pageNum, order: $order) {\\n _id\\n name\\n address\\n category\\n description\\n photos\\n rankingCanarias\\n rateCanarias\\n rateTripAdvisor\\n }\\n}\\n\",\r\n \"metadata\": {}\r\n }\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = '347fc3051139e9b2582338acd2802bda';\r\nmodule.exports = node;\r\n","/**\r\n * @flow\r\n * @relayHash 0eee7bae5275f3d46b1b4ca3b54e0db3\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ConcreteRequest } from 'relay-runtime';\r\nexport type HotelIdsByFilterQueryVariables = {|\r\n filter: string,\r\n language: string,\r\n|};\r\nexport type HotelIdsByFilterQueryResponse = {|\r\n +hotelIdsByFilter: ?string\r\n|};\r\nexport type HotelIdsByFilterQuery = {|\r\n variables: HotelIdsByFilterQueryVariables,\r\n response: HotelIdsByFilterQueryResponse,\r\n|};\r\n*/\r\n\r\n\r\n/*\r\nquery HotelIdsByFilterQuery(\r\n $filter: String!\r\n $language: String!\r\n) {\r\n hotelIdsByFilter(filter: $filter, language: $language)\r\n}\r\n*/\r\n\r\nconst node/*: ConcreteRequest*/ = (function(){\r\nvar v0 = [\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"filter\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"language\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n }\r\n],\r\nv1 = [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"hotelIdsByFilter\",\r\n \"args\": [\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"filter\",\r\n \"variableName\": \"filter\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"language\",\r\n \"variableName\": \"language\",\r\n \"type\": \"String!\"\r\n }\r\n ],\r\n \"storageKey\": null\r\n }\r\n];\r\nreturn {\r\n \"kind\": \"Request\",\r\n \"fragment\": {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"HotelIdsByFilterQuery\",\r\n \"type\": \"CanariasQuery\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v1/*: any*/)\r\n },\r\n \"operation\": {\r\n \"kind\": \"Operation\",\r\n \"name\": \"HotelIdsByFilterQuery\",\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v1/*: any*/)\r\n },\r\n \"params\": {\r\n \"operationKind\": \"query\",\r\n \"name\": \"HotelIdsByFilterQuery\",\r\n \"id\": null,\r\n \"text\": \"query HotelIdsByFilterQuery(\\n $filter: String!\\n $language: String!\\n) {\\n hotelIdsByFilter(filter: $filter, language: $language)\\n}\\n\",\r\n \"metadata\": {}\r\n }\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = '57393ba89e182553b63bcf1e3dec3d50';\r\nmodule.exports = node;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"iconSync\":\"ResultDeal_iconSync__3Fg7O\",\"fa-spin\":\"ResultDeal_fa-spin__1qDg1\",\"iconInfo\":\"ResultDeal_iconInfo__2SEWO\"};","/**\r\n * @flow\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ReaderFragment } from 'relay-runtime';\r\nimport type { FragmentReference } from \"relay-runtime\";\r\ndeclare export opaque type ResultDeal_deal$ref: FragmentReference;\r\nexport type ResultDeal_deal = {|\r\n +id: string,\r\n +code: string,\r\n +name: string,\r\n +defaultSelectionTotalPrice: number,\r\n +distributions: ?$ReadOnlyArray,\r\n +rawCancellationCosts: ?$ReadOnlyArray,\r\n +directPayment: boolean,\r\n +roomAdditionalInfo: string,\r\n +maxOccupancy: number,\r\n +isPVP: boolean,\r\n |}>,\r\n +defaultSelectionRoom: ?{|\r\n +id: string,\r\n +roomId: string,\r\n +roomName: string,\r\n +roomPrice: number,\r\n |},\r\n |}>,\r\n +$refType: ResultDeal_deal$ref,\r\n|};\r\n*/\r\n\r\n\r\nconst node/*: ReaderFragment*/ = (function(){\r\nvar v0 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"id\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv1 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"code\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv2 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"name\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv3 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv4 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"date\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n};\r\nreturn {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"ResultDeal_deal\",\r\n \"type\": \"AvailabilityResultHotelDeal\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": [],\r\n \"selections\": [\r\n (v0/*: any*/),\r\n (v1/*: any*/),\r\n (v2/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"defaultSelectionTotalPrice\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"distributions\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelDistribution\",\r\n \"plural\": true,\r\n \"selections\": [\r\n (v0/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"distributionId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v2/*: any*/),\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"rooms\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelRoom\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"numRoomsAvailable\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v0/*: any*/),\r\n (v1/*: any*/),\r\n (v2/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"price\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"providerName\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"bookingLink\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"canaryResident\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v3/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomCount\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"cancellationCosts\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelRoomCancellationCost\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"cost\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v4/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"time\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"rawCancellationCosts\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelRoomRawCancellationCost\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"amount\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"percent\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v4/*: any*/)\r\n ]\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"directPayment\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomAdditionalInfo\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"maxOccupancy\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"isPVP\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"defaultSelectionRoom\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityDefaultSelectionRoom\",\r\n \"plural\": false,\r\n \"selections\": [\r\n (v0/*: any*/),\r\n (v3/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomName\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomPrice\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = '63fb5948a11bb948b666982cb0f783b2';\r\nmodule.exports = node;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"resultsContainer\":\"desktop-map-results_resultsContainer__U53o3\",\"hotel\":\"desktop-map-results_hotel__486-L\",\"hotelSelected\":\"desktop-map-results_hotelSelected__dKQ-_\",\"hotelPrice\":\"desktop-map-results_hotelPrice__scg6d\",\"hotelName\":\"desktop-map-results_hotelName__1rFON\",\"nameAndCategory\":\"desktop-map-results_nameAndCategory__2Nw6R\",\"category\":\"desktop-map-results_category__2-gsY\"};","/**\r\n * @flow\r\n * @relayHash ead82a4a59966bea459a6668f32ce730\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ConcreteRequest } from 'relay-runtime';\r\nexport type FacilityType = \"HOTEL\" | \"ROOM\" | \"%future added value\";\r\nexport type HotelDetailsQueryVariables = {|\r\n hotelId: string,\r\n language: string,\r\n|};\r\nexport type HotelDetailsQueryResponse = {|\r\n +hotelDetails: ?{|\r\n +address: string,\r\n +category: number,\r\n +chain: string,\r\n +city: string,\r\n +country: string,\r\n +description: string,\r\n +importantInformation: string,\r\n +name: string,\r\n +photos: ?$ReadOnlyArray,\r\n +rankingCanarias: number,\r\n +rateCanarias: number,\r\n +rateTripAdvisor: number,\r\n +theme: string,\r\n +phone: string,\r\n +latitude: string,\r\n +longitude: string,\r\n +facilities: ?$ReadOnlyArray,\r\n +checkinOut: ?{|\r\n +checkinFrom: string,\r\n +checkinTo: string,\r\n +checkoutFrom: string,\r\n +checkoutTo: string,\r\n |},\r\n +canariasComments: ?$ReadOnlyArray,\r\n +tripAdivsorComments: ?{|\r\n +numReviews: number,\r\n +rating: number,\r\n +reviewRating1: number,\r\n +reviewRating2: number,\r\n +reviewRating3: number,\r\n +reviewRating4: number,\r\n +reviewRating5: number,\r\n +awards: ?$ReadOnlyArray,\r\n +breakdown: ?$ReadOnlyArray,\r\n +comments: ?$ReadOnlyArray,\r\n +subrating: ?$ReadOnlyArray,\r\n |},\r\n |}\r\n|};\r\nexport type HotelDetailsQuery = {|\r\n variables: HotelDetailsQueryVariables,\r\n response: HotelDetailsQueryResponse,\r\n|};\r\n*/\r\n\r\n\r\n/*\r\nquery HotelDetailsQuery(\r\n $hotelId: String!\r\n $language: String!\r\n) {\r\n hotelDetails(hotelId: $hotelId, language: $language) {\r\n address\r\n category\r\n chain\r\n city\r\n country\r\n description\r\n importantInformation\r\n name\r\n photos\r\n rankingCanarias\r\n rateCanarias\r\n rateTripAdvisor\r\n theme\r\n phone\r\n latitude\r\n longitude\r\n facilities {\r\n code\r\n group\r\n groupName\r\n isPayment\r\n name\r\n type\r\n value\r\n }\r\n checkinOut {\r\n checkinFrom\r\n checkinTo\r\n checkoutFrom\r\n checkoutTo\r\n }\r\n canariasComments {\r\n generalRating\r\n rateCleaning\r\n rateDreamQuality\r\n rateDrinkingSelection\r\n rateFood\r\n rateLocation\r\n rateQualityPriceRelation\r\n rateRooms\r\n rateService\r\n reviewContent\r\n reviewDate\r\n title\r\n tripType\r\n user {\r\n name\r\n place\r\n }\r\n }\r\n tripAdivsorComments {\r\n numReviews\r\n rating\r\n reviewRating1\r\n reviewRating2\r\n reviewRating3\r\n reviewRating4\r\n reviewRating5\r\n awards {\r\n award_type\r\n category\r\n image\r\n name\r\n year\r\n }\r\n breakdown {\r\n name\r\n value\r\n }\r\n comments {\r\n date\r\n helpfulVotes\r\n publishedDate\r\n rating\r\n ratingImageUrl\r\n text\r\n title\r\n tripType\r\n userLocation\r\n username\r\n url\r\n }\r\n subrating {\r\n name\r\n value\r\n }\r\n }\r\n }\r\n}\r\n*/\r\n\r\nconst node/*: ConcreteRequest*/ = (function(){\r\nvar v0 = [\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"hotelId\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"language\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n }\r\n],\r\nv1 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"name\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv2 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"category\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv3 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"value\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv4 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"title\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv5 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"tripType\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv6 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rating\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv7 = [\r\n (v1/*: any*/),\r\n (v3/*: any*/)\r\n],\r\nv8 = [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"hotelDetails\",\r\n \"storageKey\": null,\r\n \"args\": [\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"hotelId\",\r\n \"variableName\": \"hotelId\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"language\",\r\n \"variableName\": \"language\",\r\n \"type\": \"String!\"\r\n }\r\n ],\r\n \"concreteType\": \"HotelDetails\",\r\n \"plural\": false,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateCanarias\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"address\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"chain\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"city\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"country\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"description\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"importantInformation\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v1/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"photos\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rankingCanarias\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v2/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateTripAdvisor\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"theme\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"phone\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"latitude\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"longitude\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"facilities\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"Facility\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"code\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"group\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"groupName\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"isPayment\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v1/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"type\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v3/*: any*/)\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"checkinOut\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"CheckinOut\",\r\n \"plural\": false,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"checkinFrom\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"checkinTo\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"checkoutFrom\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"checkoutTo\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"canariasComments\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"CanariasComment\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateRooms\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"generalRating\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateDreamQuality\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateDrinkingSelection\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateFood\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateLocation\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateQualityPriceRelation\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateCleaning\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"rateService\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"reviewContent\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"reviewDate\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v4/*: any*/),\r\n (v5/*: any*/),\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"user\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"CanariasCommentUser\",\r\n \"plural\": false,\r\n \"selections\": [\r\n (v1/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"place\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"tripAdivsorComments\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"TripAdvisorComments\",\r\n \"plural\": false,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"reviewRating4\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"numReviews\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"reviewRating1\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"reviewRating2\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"reviewRating3\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v6/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"reviewRating5\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"awards\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"TripAdvisorAwards\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"award_type\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v2/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"image\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v1/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"year\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"breakdown\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"TripAdvisorBreakdown\",\r\n \"plural\": true,\r\n \"selections\": (v7/*: any*/)\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"comments\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"TripAdvisorComment\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"text\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"date\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"publishedDate\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v6/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"ratingImageUrl\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"helpfulVotes\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v4/*: any*/),\r\n (v5/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"userLocation\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"username\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"url\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"subrating\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"TripAdvisorReviewSubrating\",\r\n \"plural\": true,\r\n \"selections\": (v7/*: any*/)\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n];\r\nreturn {\r\n \"kind\": \"Request\",\r\n \"fragment\": {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"HotelDetailsQuery\",\r\n \"type\": \"CanariasQuery\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v8/*: any*/)\r\n },\r\n \"operation\": {\r\n \"kind\": \"Operation\",\r\n \"name\": \"HotelDetailsQuery\",\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v8/*: any*/)\r\n },\r\n \"params\": {\r\n \"operationKind\": \"query\",\r\n \"name\": \"HotelDetailsQuery\",\r\n \"id\": null,\r\n \"text\": \"query HotelDetailsQuery(\\n $hotelId: String!\\n $language: String!\\n) {\\n hotelDetails(hotelId: $hotelId, language: $language) {\\n address\\n category\\n chain\\n city\\n country\\n description\\n importantInformation\\n name\\n photos\\n rankingCanarias\\n rateCanarias\\n rateTripAdvisor\\n theme\\n phone\\n latitude\\n longitude\\n facilities {\\n code\\n group\\n groupName\\n isPayment\\n name\\n type\\n value\\n }\\n checkinOut {\\n checkinFrom\\n checkinTo\\n checkoutFrom\\n checkoutTo\\n }\\n canariasComments {\\n generalRating\\n rateCleaning\\n rateDreamQuality\\n rateDrinkingSelection\\n rateFood\\n rateLocation\\n rateQualityPriceRelation\\n rateRooms\\n rateService\\n reviewContent\\n reviewDate\\n title\\n tripType\\n user {\\n name\\n place\\n }\\n }\\n tripAdivsorComments {\\n numReviews\\n rating\\n reviewRating1\\n reviewRating2\\n reviewRating3\\n reviewRating4\\n reviewRating5\\n awards {\\n award_type\\n category\\n image\\n name\\n year\\n }\\n breakdown {\\n name\\n value\\n }\\n comments {\\n date\\n helpfulVotes\\n publishedDate\\n rating\\n ratingImageUrl\\n text\\n title\\n tripType\\n userLocation\\n username\\n url\\n }\\n subrating {\\n name\\n value\\n }\\n }\\n }\\n}\\n\",\r\n \"metadata\": {}\r\n }\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = '23cc5b8c2ced7ef9624dee375b54cff6';\r\nmodule.exports = node;\r\n","/**\r\n * @flow\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ReaderFragment } from 'relay-runtime';\r\ntype ResultDeal_deal$ref = any;\r\nimport type { FragmentReference } from \"relay-runtime\";\r\ndeclare export opaque type ResultHotel_hotel$ref: FragmentReference;\r\nexport type ResultHotel_hotel = {|\r\n +id: string,\r\n +name: string,\r\n +minPrice: any,\r\n +category: string,\r\n +ranking: number,\r\n +description: string,\r\n +address: string,\r\n +url: string,\r\n +photos: ?$ReadOnlyArray,\r\n +latitude: string,\r\n +longitude: string,\r\n +phone: string,\r\n +code: string,\r\n +categoryName: string,\r\n +facilities: ?$ReadOnlyArray,\r\n +deals: ?$ReadOnlyArray,\r\n +packages: ?$ReadOnlyArray,\r\n +$refType: ResultHotel_hotel$ref,\r\n|};\r\n*/\r\n\r\n\r\nconst node/*: ReaderFragment*/ = (function(){\r\nvar v0 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"id\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv1 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"description\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv2 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"name\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv3 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"latitude\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv4 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"longitude\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n};\r\nreturn {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"ResultHotel_hotel\",\r\n \"type\": \"AvalabilityResultsHotel\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": [],\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"photos\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v0/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"minPrice\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"category\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"ranking\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v1/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"address\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"url\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v2/*: any*/),\r\n (v3/*: any*/),\r\n (v4/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"phone\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"code\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"categoryName\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"facilities\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityHotelInfoFacility\",\r\n \"plural\": true,\r\n \"selections\": [\r\n (v0/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"className\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"label\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"deals\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelDeal\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"FragmentSpread\",\r\n \"name\": \"ResultDeal_deal\",\r\n \"args\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"packages\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelPackage\",\r\n \"plural\": true,\r\n \"selections\": [\r\n (v0/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"packageId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v2/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"distributionId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v1/*: any*/),\r\n (v3/*: any*/),\r\n (v4/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"price\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n }\r\n ]\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = '713b82114445f304d72ea3972982b027';\r\nmodule.exports = node;\r\n","/**\r\n * @flow\r\n * @relayHash 45f2ddcc00a886e6bf27cf1c8b6fdf80\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ConcreteRequest } from 'relay-runtime';\r\nexport type InputHotelBlockRequestType = {|\r\n rooms: $ReadOnlyArray,\r\n packages?: ?$ReadOnlyArray,\r\n distributions: $ReadOnlyArray,\r\n|};\r\nexport type HotelBlockRoom = {|\r\n id: string,\r\n hotelId: string,\r\n initDate: string,\r\n endDate: string,\r\n code: string,\r\n dealCode: string,\r\n price: number,\r\n isPVP: boolean,\r\n directPayment: boolean,\r\n canaryResident: boolean,\r\n distributionId: string,\r\n roomAdditionalInfo: string,\r\n|};\r\nexport type HotelBlockPackage = {|\r\n packageId?: ?string,\r\n distributionId?: ?string,\r\n initDate?: ?string,\r\n endDate?: ?string,\r\n|};\r\nexport type HotelBlockDistribution = {|\r\n id?: ?number,\r\n adults?: ?number,\r\n childrenAges?: ?$ReadOnlyArray,\r\n|};\r\nexport type HotelBlockQueryVariables = {|\r\n details: InputHotelBlockRequestType,\r\n channelCode: string,\r\n channelKey: string,\r\n|};\r\nexport type HotelBlockQueryResponse = {|\r\n +hotelBlock: ?{|\r\n +hotels: ?$ReadOnlyArray,\r\n +roomId: string,\r\n |}>,\r\n |}>\r\n |}\r\n|};\r\nexport type HotelBlockQuery = {|\r\n variables: HotelBlockQueryVariables,\r\n response: HotelBlockQueryResponse,\r\n|};\r\n*/\r\n\r\n\r\n/*\r\nquery HotelBlockQuery(\r\n $details: InputHotelBlockRequestType!\r\n $channelCode: String!\r\n $channelKey: String!\r\n) {\r\n hotelBlock(details: $details, channelCode: $channelCode, channelKey: $channelKey) {\r\n hotels {\r\n id\r\n sessionId\r\n roomsCancellationsCosts {\r\n cancellationsCosts {\r\n amount\r\n percent\r\n date\r\n }\r\n roomId\r\n }\r\n }\r\n }\r\n}\r\n*/\r\n\r\nconst node/*: ConcreteRequest*/ = (function(){\r\nvar v0 = [\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"details\",\r\n \"type\": \"InputHotelBlockRequestType!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"channelCode\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"channelKey\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n }\r\n],\r\nv1 = [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"hotelBlock\",\r\n \"storageKey\": null,\r\n \"args\": [\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"channelCode\",\r\n \"variableName\": \"channelCode\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"channelKey\",\r\n \"variableName\": \"channelKey\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"details\",\r\n \"variableName\": \"details\",\r\n \"type\": \"InputHotelBlockRequestType!\"\r\n }\r\n ],\r\n \"concreteType\": \"HotelBlockResponse\",\r\n \"plural\": false,\r\n \"selections\": [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"hotels\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"HotelBlocklResultHotel\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"id\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"sessionId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"roomsCancellationsCosts\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"HotelBlockingRoomCancellationCosts\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"cancellationsCosts\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"HotelBlockingCancellationCosts\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"amount\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"percent\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"date\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n];\r\nreturn {\r\n \"kind\": \"Request\",\r\n \"fragment\": {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"HotelBlockQuery\",\r\n \"type\": \"CanariasQuery\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v1/*: any*/)\r\n },\r\n \"operation\": {\r\n \"kind\": \"Operation\",\r\n \"name\": \"HotelBlockQuery\",\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": (v1/*: any*/)\r\n },\r\n \"params\": {\r\n \"operationKind\": \"query\",\r\n \"name\": \"HotelBlockQuery\",\r\n \"id\": null,\r\n \"text\": \"query HotelBlockQuery(\\n $details: InputHotelBlockRequestType!\\n $channelCode: String!\\n $channelKey: String!\\n) {\\n hotelBlock(details: $details, channelCode: $channelCode, channelKey: $channelKey) {\\n hotels {\\n id\\n sessionId\\n roomsCancellationsCosts {\\n cancellationsCosts {\\n amount\\n percent\\n date\\n }\\n roomId\\n }\\n }\\n }\\n}\\n\",\r\n \"metadata\": {}\r\n }\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = 'fbbc385a2dd6d436232cf682006d071a';\r\nmodule.exports = node;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"iconSync\":\"map_iconSync__9LrJE\",\"fa-spin\":\"map_fa-spin__p7eZi\"};","/**\r\n * @flow\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ReaderFragment } from 'relay-runtime';\r\ntype ResultHotel_hotel$ref = any;\r\nimport type { FragmentReference } from \"relay-runtime\";\r\ndeclare export opaque type SearchResults_availability$ref: FragmentReference;\r\nexport type SearchResults_availability = {|\r\n +currentPage: number,\r\n +order: number,\r\n +pageSize: number,\r\n +totalResults: number,\r\n +token: string,\r\n +realDistributionNumber: number,\r\n +facilitiesFilter: ?$ReadOnlyArray,\r\n +hotels: ?$ReadOnlyArray,\r\n +$refType: SearchResults_availability$ref,\r\n|};\r\n*/\r\n\r\n\r\nconst node/*: ReaderFragment*/ = {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"SearchResults_availability\",\r\n \"type\": \"AvailabilityResults\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": [],\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"currentPage\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"order\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"pageSize\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"totalResults\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"token\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"realDistributionNumber\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"facilitiesFilter\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"FacilityFilter\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"name\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"code\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"group\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"hotels\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvalabilityResultsHotel\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"FragmentSpread\",\r\n \"name\": \"ResultHotel_hotel\",\r\n \"args\": null\r\n }\r\n ]\r\n }\r\n ]\r\n};\r\n// prettier-ignore\r\n(node/*: any*/).hash = '88c2869c9efccfcff49b66a52c7eaf07';\r\nmodule.exports = node;\r\n","/**\r\n * @flow\r\n * @relayHash 37e6c2e0037896c61445e8b677d5c85c\r\n */\r\n\r\n/* eslint-disable */\r\n\r\n'use strict';\r\n\r\n/*::\r\nimport type { ConcreteRequest } from 'relay-runtime';\r\ntype SearchResults_availability$ref = any;\r\nexport type InputDistributionModelType = {|\r\n adults: number,\r\n childrenAges?: ?$ReadOnlyArray,\r\n|};\r\nexport type InputAvailabilityFilterType = {|\r\n hotelName?: ?string,\r\n categories?: ?$ReadOnlyArray,\r\n deals?: ?$ReadOnlyArray,\r\n facilities?: ?$ReadOnlyArray,\r\n minPrice?: ?any,\r\n maxPrice?: ?any,\r\n token?: ?string,\r\n|};\r\nexport type SearchingWrapperQueryVariables = {|\r\n zoneCode?: ?string,\r\n hotelId?: ?string,\r\n language: string,\r\n startDate: string,\r\n endDate: string,\r\n canaryResident: boolean,\r\n pageSize: number,\r\n pageNum: number,\r\n order: number,\r\n roomsDistribution: $ReadOnlyArray,\r\n filter?: ?InputAvailabilityFilterType,\r\n channelCode: string,\r\n channelKey: string,\r\n|};\r\nexport type SearchingWrapperQueryResponse = {|\r\n +availability: ?{|\r\n +$fragmentRefs: SearchResults_availability$ref\r\n |}\r\n|};\r\nexport type SearchingWrapperQuery = {|\r\n variables: SearchingWrapperQueryVariables,\r\n response: SearchingWrapperQueryResponse,\r\n|};\r\n*/\r\n\r\n\r\n/*\r\nquery SearchingWrapperQuery(\r\n $zoneCode: String\r\n $hotelId: String\r\n $language: String!\r\n $startDate: String!\r\n $endDate: String!\r\n $canaryResident: Boolean!\r\n $pageSize: Int!\r\n $pageNum: Int!\r\n $order: Int!\r\n $roomsDistribution: [InputDistributionModelType]!\r\n $filter: InputAvailabilityFilterType\r\n $channelCode: String!\r\n $channelKey: String!\r\n) {\r\n availability(zoneCode: $zoneCode, hotelId: $hotelId, language: $language, startDate: $startDate, endDate: $endDate, canaryResident: $canaryResident, pageSize: $pageSize, pageNum: $pageNum, order: $order, roomsDistribution: $roomsDistribution, filter: $filter, channelCode: $channelCode, channelKey: $channelKey) {\r\n ...SearchResults_availability\r\n }\r\n}\r\n\r\nfragment SearchResults_availability on AvailabilityResults {\r\n currentPage\r\n order\r\n pageSize\r\n totalResults\r\n token\r\n realDistributionNumber\r\n facilitiesFilter {\r\n name\r\n code\r\n group\r\n }\r\n hotels {\r\n ...ResultHotel_hotel\r\n id\r\n }\r\n}\r\n\r\nfragment ResultHotel_hotel on AvalabilityResultsHotel {\r\n id\r\n name\r\n minPrice\r\n category\r\n ranking\r\n description\r\n address\r\n url\r\n photos\r\n latitude\r\n longitude\r\n phone\r\n code\r\n categoryName\r\n facilities {\r\n id\r\n className\r\n label\r\n }\r\n deals {\r\n ...ResultDeal_deal\r\n id\r\n }\r\n packages {\r\n id\r\n packageId\r\n name\r\n distributionId\r\n description\r\n latitude\r\n longitude\r\n price\r\n }\r\n}\r\n\r\nfragment ResultDeal_deal on AvailabilityResultHotelDeal {\r\n id\r\n code\r\n name\r\n defaultSelectionTotalPrice\r\n distributions {\r\n id\r\n distributionId\r\n name\r\n rooms {\r\n id\r\n roomId\r\n code\r\n name\r\n price\r\n providerName\r\n bookingLink\r\n canaryResident\r\n numRoomsAvailable\r\n roomCount\r\n cancellationCosts {\r\n cost\r\n date\r\n time\r\n }\r\n rawCancellationCosts {\r\n amount\r\n percent\r\n date\r\n }\r\n directPayment\r\n roomAdditionalInfo\r\n maxOccupancy\r\n isPVP\r\n }\r\n defaultSelectionRoom {\r\n id\r\n roomId\r\n roomName\r\n roomPrice\r\n }\r\n }\r\n}\r\n*/\r\n\r\nconst node/*: ConcreteRequest*/ = (function(){\r\nvar v0 = [\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"zoneCode\",\r\n \"type\": \"String\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"hotelId\",\r\n \"type\": \"String\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"language\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"startDate\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"endDate\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"canaryResident\",\r\n \"type\": \"Boolean!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"pageSize\",\r\n \"type\": \"Int!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"pageNum\",\r\n \"type\": \"Int!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"order\",\r\n \"type\": \"Int!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"roomsDistribution\",\r\n \"type\": \"[InputDistributionModelType]!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"filter\",\r\n \"type\": \"InputAvailabilityFilterType\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"channelCode\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n },\r\n {\r\n \"kind\": \"LocalArgument\",\r\n \"name\": \"channelKey\",\r\n \"type\": \"String!\",\r\n \"defaultValue\": null\r\n }\r\n],\r\nv1 = [\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"canaryResident\",\r\n \"variableName\": \"canaryResident\",\r\n \"type\": \"Boolean!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"channelCode\",\r\n \"variableName\": \"channelCode\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"channelKey\",\r\n \"variableName\": \"channelKey\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"endDate\",\r\n \"variableName\": \"endDate\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"filter\",\r\n \"variableName\": \"filter\",\r\n \"type\": \"InputAvailabilityFilterType\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"hotelId\",\r\n \"variableName\": \"hotelId\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"language\",\r\n \"variableName\": \"language\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"order\",\r\n \"variableName\": \"order\",\r\n \"type\": \"Int!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"pageNum\",\r\n \"variableName\": \"pageNum\",\r\n \"type\": \"Int!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"pageSize\",\r\n \"variableName\": \"pageSize\",\r\n \"type\": \"Int!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"roomsDistribution\",\r\n \"variableName\": \"roomsDistribution\",\r\n \"type\": \"[InputDistributionModelType]!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"startDate\",\r\n \"variableName\": \"startDate\",\r\n \"type\": \"String!\"\r\n },\r\n {\r\n \"kind\": \"Variable\",\r\n \"name\": \"zoneCode\",\r\n \"variableName\": \"zoneCode\",\r\n \"type\": \"String\"\r\n }\r\n],\r\nv2 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"name\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv3 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"code\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv4 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"id\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv5 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"description\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv6 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"latitude\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv7 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"longitude\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv8 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"distributionId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv9 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"price\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv10 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n},\r\nv11 = {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"date\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n};\r\nreturn {\r\n \"kind\": \"Request\",\r\n \"fragment\": {\r\n \"kind\": \"Fragment\",\r\n \"name\": \"SearchingWrapperQuery\",\r\n \"type\": \"CanariasQuery\",\r\n \"metadata\": null,\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"availability\",\r\n \"storageKey\": null,\r\n \"args\": (v1/*: any*/),\r\n \"concreteType\": \"AvailabilityResults\",\r\n \"plural\": false,\r\n \"selections\": [\r\n {\r\n \"kind\": \"FragmentSpread\",\r\n \"name\": \"SearchResults_availability\",\r\n \"args\": null\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n \"operation\": {\r\n \"kind\": \"Operation\",\r\n \"name\": \"SearchingWrapperQuery\",\r\n \"argumentDefinitions\": (v0/*: any*/),\r\n \"selections\": [\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"availability\",\r\n \"storageKey\": null,\r\n \"args\": (v1/*: any*/),\r\n \"concreteType\": \"AvailabilityResults\",\r\n \"plural\": false,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"currentPage\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"order\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"pageSize\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"totalResults\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"token\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"realDistributionNumber\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"facilitiesFilter\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"FacilityFilter\",\r\n \"plural\": true,\r\n \"selections\": [\r\n (v2/*: any*/),\r\n (v3/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"group\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"hotels\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvalabilityResultsHotel\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"photos\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v4/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"minPrice\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"category\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"ranking\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v5/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"address\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"url\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v2/*: any*/),\r\n (v6/*: any*/),\r\n (v7/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"phone\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v3/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"categoryName\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"facilities\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityHotelInfoFacility\",\r\n \"plural\": true,\r\n \"selections\": [\r\n (v4/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"className\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"label\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"deals\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelDeal\",\r\n \"plural\": true,\r\n \"selections\": [\r\n (v4/*: any*/),\r\n (v3/*: any*/),\r\n (v2/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"defaultSelectionTotalPrice\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"distributions\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelDistribution\",\r\n \"plural\": true,\r\n \"selections\": [\r\n (v4/*: any*/),\r\n (v8/*: any*/),\r\n (v2/*: any*/),\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"rooms\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelRoom\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"numRoomsAvailable\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v4/*: any*/),\r\n (v3/*: any*/),\r\n (v2/*: any*/),\r\n (v9/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"providerName\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"bookingLink\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"canaryResident\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v10/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomCount\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"cancellationCosts\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelRoomCancellationCost\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"cost\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v11/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"time\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"rawCancellationCosts\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelRoomRawCancellationCost\",\r\n \"plural\": true,\r\n \"selections\": [\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"amount\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"percent\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v11/*: any*/)\r\n ]\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"directPayment\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomAdditionalInfo\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"maxOccupancy\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"isPVP\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"defaultSelectionRoom\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityDefaultSelectionRoom\",\r\n \"plural\": false,\r\n \"selections\": [\r\n (v4/*: any*/),\r\n (v10/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomName\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"roomPrice\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"kind\": \"LinkedField\",\r\n \"alias\": null,\r\n \"name\": \"packages\",\r\n \"storageKey\": null,\r\n \"args\": null,\r\n \"concreteType\": \"AvailabilityResultHotelPackage\",\r\n \"plural\": true,\r\n \"selections\": [\r\n (v4/*: any*/),\r\n {\r\n \"kind\": \"ScalarField\",\r\n \"alias\": null,\r\n \"name\": \"packageId\",\r\n \"args\": null,\r\n \"storageKey\": null\r\n },\r\n (v2/*: any*/),\r\n (v8/*: any*/),\r\n (v5/*: any*/),\r\n (v6/*: any*/),\r\n (v7/*: any*/),\r\n (v9/*: any*/)\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n \"params\": {\r\n \"operationKind\": \"query\",\r\n \"name\": \"SearchingWrapperQuery\",\r\n \"id\": null,\r\n \"text\": \"query SearchingWrapperQuery(\\n $zoneCode: String\\n $hotelId: String\\n $language: String!\\n $startDate: String!\\n $endDate: String!\\n $canaryResident: Boolean!\\n $pageSize: Int!\\n $pageNum: Int!\\n $order: Int!\\n $roomsDistribution: [InputDistributionModelType]!\\n $filter: InputAvailabilityFilterType\\n $channelCode: String!\\n $channelKey: String!\\n) {\\n availability(zoneCode: $zoneCode, hotelId: $hotelId, language: $language, startDate: $startDate, endDate: $endDate, canaryResident: $canaryResident, pageSize: $pageSize, pageNum: $pageNum, order: $order, roomsDistribution: $roomsDistribution, filter: $filter, channelCode: $channelCode, channelKey: $channelKey) {\\n ...SearchResults_availability\\n }\\n}\\n\\nfragment SearchResults_availability on AvailabilityResults {\\n currentPage\\n order\\n pageSize\\n totalResults\\n token\\n realDistributionNumber\\n facilitiesFilter {\\n name\\n code\\n group\\n }\\n hotels {\\n ...ResultHotel_hotel\\n id\\n }\\n}\\n\\nfragment ResultHotel_hotel on AvalabilityResultsHotel {\\n id\\n name\\n minPrice\\n category\\n ranking\\n description\\n address\\n url\\n photos\\n latitude\\n longitude\\n phone\\n code\\n categoryName\\n facilities {\\n id\\n className\\n label\\n }\\n deals {\\n ...ResultDeal_deal\\n id\\n }\\n packages {\\n id\\n packageId\\n name\\n distributionId\\n description\\n latitude\\n longitude\\n price\\n }\\n}\\n\\nfragment ResultDeal_deal on AvailabilityResultHotelDeal {\\n id\\n code\\n name\\n defaultSelectionTotalPrice\\n distributions {\\n id\\n distributionId\\n name\\n rooms {\\n id\\n roomId\\n code\\n name\\n price\\n providerName\\n bookingLink\\n canaryResident\\n numRoomsAvailable\\n roomCount\\n cancellationCosts {\\n cost\\n date\\n time\\n }\\n rawCancellationCosts {\\n amount\\n percent\\n date\\n }\\n directPayment\\n roomAdditionalInfo\\n maxOccupancy\\n isPVP\\n }\\n defaultSelectionRoom {\\n id\\n roomId\\n roomName\\n roomPrice\\n }\\n }\\n}\\n\",\r\n \"metadata\": {}\r\n }\r\n};\r\n})();\r\n// prettier-ignore\r\n(node/*: any*/).hash = 'ebeb875c57c50df124343ba948abb25c';\r\nmodule.exports = node;\r\n","export const defaultLanguage = \"es\"\r\nexport const othersLanguages = [\"en\", \"de\", \"fr\", \"it\", \"nl\", \"pt\", \"ru\"] // without default language (ES)\r\n\r\nexport const getLanguageFromUrl = () => {\r\n const path = window.location.pathname\r\n\r\n for(let l in othersLanguages){\r\n if(path.startsWith(`/${othersLanguages[l]}/`) || path === `/${othersLanguages[l]}`)\r\n return othersLanguages[l]\r\n }\r\n\r\n return defaultLanguage \r\n}\r\n","import i18n from \"i18next\"\r\nimport {getLanguageFromUrl} from \"./../utility/LanguageHelper\"\r\nimport { initReactI18next } from \"react-i18next\"\r\nimport moment from \"moment\"\r\nimport 'moment/locale/es'\r\nimport 'moment/locale/en-gb'\r\nimport 'moment/locale/de'\r\nimport 'moment/locale/fr'\r\nimport 'moment/locale/it'\r\nimport 'moment/locale/nl'\r\nimport 'moment/locale/pt'\r\nimport 'moment/locale/ru'\r\n\r\n\r\nimport es from './es'\r\nimport en from './en'\r\nimport de from './de'\r\nimport fr from './fr'\r\nimport it from './it'\r\nimport nl from './nl'\r\nimport pt from './pt'\r\nimport ru from './ru' \r\n\r\nconst resources = { en, es, de, fr, it, nl, pt, ru }\r\nconst language = getLanguageFromUrl()\r\n\r\nmoment.locale(language)\r\n\r\ni18n.use(initReactI18next)\r\n .init({\r\n resources,\r\n lng: language,\r\n keySeparator: false,\r\n interpolation:{ \r\n escapeValue: false\r\n }\r\n })\r\n\r\nexport default i18n ","export default {\r\n translation: {\r\n \"send_by_email.message_sent_1\": \"Something went wrong...\",\r\n \"send_by_email.message_sent_0\": \"Email sent\",\r\n \"send_by_email.email-placeholder\": \"Your email\",\r\n \"send_by_email.message-placeholder\": \"write a message\",\r\n \"send_by_email.title\": \"Send by email\",\r\n \"send_by_email.button\": \"Send\", \r\n\r\n \"map.open-button\": \"View Map\",\r\n \r\n \r\n\r\n \"hotel_blocking_error\": \"Booking Error\",\r\n \"hotel_blocking_error_button\": \"Book Another Hotel\",\r\n\r\n \"filters.filters\": \"Open Filters\",\r\n \"resultDeal.totalPriceText\": \"Total price\",\r\n\r\n \"resultDeal.roomTypeTitle\": \"type of room\",\r\n \"resultDeal.changeRoomTitle\": \"change room\",\r\n \"resultDeal.changeRoomsTitle\": \"change rooms\",\r\n \"resultDistribution.roomsQuantity\": \"(__num__ rooms more)\",\r\n\r\n \"hotel_blocking.message\": \"We are creating your reservation...\",\r\n\r\n \"hotel_details_not_available\": \"Details not available\",\r\n \"distributions.up_to_x_person\": \"Uo to __num__ people\",\r\n\r\n \"hotel_details.description\": \"Description\",\r\n \"hotel_details.map\": \"Map\",\r\n \"hotel_details.reviews\": \"Reviews\",\r\n \"hotel_details.CheckIn\": \"Arrival\",\r\n \"hotel_details.CheckOut\": \"Leave\", \r\n \"hotel_details.FacilitiesTitle\": \"Equipment\", \r\n \"canariasComments.title\": \"Reviews Canarias.com\", \r\n \"canariasComments.rateCleaning\": \"Cleaning\",\r\n \"canariasComments.rateDreamQuality\": \"Sleep quality\",\r\n \"canariasComments.rateDrinkingSelection\": \"Selection of beverages\",\r\n \"canariasComments.rateFood\": \"Food\",\r\n \"canariasComments.rateLocation\": \"Location\",\r\n \"canariasComments.rateQualityPriceRelation\": \"Value for money\",\r\n \"canariasComments.rateRooms\": \"Bedrooms\",\r\n \"canariasComments.rateService\": \"Service\",\r\n \"canariasComments.resumeTitle\": \"Scores Canarias.com\",\r\n \"canariasComments.numberOfComments\": \"Based on __num__ reviews\", \r\n \"canariasComments.fromUser\": \"by\", \r\n \"canariasComments.fromPlace\": \"from\", \r\n \"canariasComments.trip_type_1\": \"Business trip\", \r\n \"canariasComments.trip_type_2\": \"Travel in couple\",\r\n \"canariasComments.trip_type_3\": \"Family travel\",\r\n \"canariasComments.trip_type_4\": \"Travel of friends\",\r\n \"canariasComments.trip_type_5\": \"Trip of solitaire\",\r\n\r\n \"TripadvisorComments.title\": \"Reviews TripAdvisor\", \r\n \"TripadvisorComments.resumeTitle\": \"Scores TripAdvisor\", \r\n \"TripadvisorComments.readMore\": \"Read more\", \r\n \"TripadvisorComments.NumerOfComments\": \"Based on __num__ reviews\", \r\n\r\n \"TripadvisorComments.rate_value\": \"Value for money\", \r\n \"TripadvisorComments.rate_cleanliness\": \"Cleaning\", \r\n \"TripadvisorComments.rate_sleep\": \"Sleep quality\", \r\n \"TripadvisorComments.rate_service\": \"Service\", \r\n \"TripadvisorComments.rate_location\": \"Location\", \r\n \"TripadvisorComments.rate_room\": \"Bedrooms\", \r\n \r\n \"TripadvisorComments.TripType\": \"Type of Trip\", \r\n \"TripadvisorComments.NULL\": \"n.d.\", \r\n \"TripadvisorComments.business\": \"For business\", \r\n \"TripadvisorComments.couples\": \"In couple\", \r\n \"TripadvisorComments.family\": \"In family\", \r\n \"TripadvisorComments.friends\": \"With friends\", \r\n \"TripadvisorComments.solo\": \"Lonely\", \r\n\r\n \r\n \"RoomNotesModalInfo\": \"Info\",\r\n \"search_box.horizontal_label_place\": \"Use our Hotel finder to find your perfect hotel\",\r\n \"search_box.label_place\": \"Type a hotel, city...\",\r\n \"search_box.place_placeholder\": \"Type your hotel or destination\",\r\n \"search_box.label_pickup_date\": \"Entry date\",\r\n \"search_box.label_dropoff_date\": \"Departure date\",\r\n \"search_box.label_room_and_people\": \"No. of rooms and people\",\r\n \"search_box.search_button_text\": \"Search\",\r\n \"search_box.room_selection.confirm_button_text\": \"Confirm\",\r\n \"search_box.room_selection.adult\": \"Adult\", \r\n \"search_box.room_selection.adults\": \"Adults\",\r\n \"search_box.room_selection.child\": \"Child\", \r\n \"search_box.room_selection.children\": \"Children\",\r\n \"search_box.room_selection.childrenAges\": \"Children ages\",\r\n \"search_box.room_selection.room\": \"Room\", \r\n \"search_box.room_selection.rooms\": \"Rooms\", \r\n \"search_box.place\": \"Place\", \r\n \"search_box.hotels\": \"Hotels\", \r\n \"search_box.errors.errors_title\": \"There are the following errors: \", \r\n \"search_box.errors.select_place\": \"Select a place o a hotel\", \r\n \"search_box.errors.wrong_start_date\": \"The pickup date isn't valid\", \r\n \"search_box.errors.wrong_end_date\": \"The drop off date isn't valid\", \r\n \"search_box.errors.wrong_distributions\": \"The distribution isn't valid\",\r\n \"filters.change_search\": \"Change Search\", \r\n \"filters.main_title\": \"Filter by Name\",\r\n \"filters.filter_by_category\": \"Filter by Category\",\r\n \"filters.filter_by_deal\": \"Filter by Deal\",\r\n \"filters.filter_by_facilities\": \"Filter by Facilities\",\r\n \"filters.filter_by_price\": \"Filter by Price\",\r\n \"filters.button_filter_text\": \"Filter\",\r\n \"filters.button_remove_filter_text\": \"Remove Filters\",\r\n \"deal.button_select_text\": \"Select\",\r\n \"deal.button_modify_text\": \"Modify\", \r\n \"deal_selection.button_select_text\": \"Select\",\r\n\r\n \"category.0\":\t\t\"Not available\",\r\n \"category.0L\":\t\t\"Not availablee\",\r\n \"category.1\":\t\t\"1\",\r\n \"category.10\":\t\t\"Luxury\",\r\n \"category.11\":\t\t\"Offer\",\r\n \"category.13\":\t\t\"13\",\r\n \"category.1L\":\t\t\"1L\",\r\n \"category.2\":\t\t\"2\",\r\n \"category.20\":\t\t\"3L\",\r\n \"category.23\":\t\t\"3\",\r\n \"category.26\":\t\t\"26\",\r\n \"category.28\":\t\t\"28\",\r\n \"category.29\":\t\t\"29\",\r\n \"category.2L\":\t\t\"2L\",\r\n \"category.3\":\t\t\"3\",\r\n \"category.30\":\t\t\"30\",\r\n \"category.31\":\t\t\"31\",\r\n \"category.32\":\t\t\"32\",\r\n \"category.34\":\t\t\"34\",\r\n \"category.36\":\t\t\"36\",\r\n \"category.3L\":\t\t\"3L\",\r\n \"category.4\":\t\t\"4\",\r\n \"category.40\":\t\t\"40\",\r\n \"category.4L\":\t\t\"4L\",\r\n \"category.5\":\t\t\"5\",\r\n \"category.5L\":\t\t\"5L\",\r\n \"category.8\":\t\t\"First\",\r\n \"category.93\":\t\t\"93\",\r\n \"category.A\":\t\t\"A\",\r\n \"category.AB\":\t\t\"Hostel\",\r\n \"category.AGRO\":\t\"Agrotourism\",\r\n \"category.Ak\":\t\t\"Touristic Apartment\",\r\n \"category.AP\":\t\t\"Apartahotel\",\r\n \"category.AR\":\t\t\"Rural Apartment\",\r\n \"category.AT\":\t\t\"Apartment\",\r\n \"category.BA\":\t\t\"Spa\",\r\n \"category.BB\":\t\t\"BB\",\r\n \"category.BO\":\t\t\"Boutique\",\r\n \"category.BU\":\t\t\"Bungalow\",\r\n \"category.CA\":\t\t\"Castle\",\r\n \"category.CAM\":\t\t\"CAM\",\r\n \"category.CB\":\t\t\"Cabin\",\r\n \"category.CC\":\t\t\"Cave Houses\",\r\n \"category.CE\":\t\t\"Special Category\",\r\n \"category.CH\":\t\t\"Guesthouse\",\r\n \"category.CM\":\t\t\"Rural Complex\",\r\n \"category.CO\":\t\t\"Farmhouse\",\r\n \"category.CP\":\t\t\"Camping\",\r\n \"category.CR\":\t\t\"Rural house\",\r\n \"category.CS\":\t\t\"Rural house with SPA\",\r\n \"category.CT\":\t\t\"Rural Tourism Center\",\r\n \"category.Cz\":\t\t\"Cz\",\r\n \"category.FO\":\t\t\"Inn\",\r\n \"category.H1\":\t\t\"Lodging House *\",\r\n \"category.H2\":\t\t\"Lodging House **\",\r\n \"category.HO\":\t\t\"Lodging House\",\r\n \"category.HP\":\t\t\"Hospedería\",\r\n \"category.HR\":\t\t\"Rural hotel\",\r\n \"category.HS\":\t\t\"Hotel With SPA\",\r\n \"category.HT\":\t\t\"Hotel\",\r\n \"category.IN\":\t\t\"Not available\",\r\n \"category.LO\":\t\t\"Lodge\",\r\n \"category.MH\":\t\t\"Mini Hotel\",\r\n \"category.MO\":\t\t\"Monastery\",\r\n \"category.MT\":\t\t\"Motel\",\r\n \"category.PA\":\t\t\"Hostel\",\r\n \"category.PE\":\t\t\"Hotel Pension\",\r\n \"category.PENDI\":\t\"Pendi\",\r\n \"category.PO\":\t\t\"Pousada\",\r\n \"category.PR\":\t\t\"Posada Real\",\r\n \"category.RA\":\t\t\"RA\",\r\n \"category.RE\":\t\t\"Residential\",\r\n \"category.RS\":\t\t\"Superior Category Rural Hotel\",\r\n \"category.RT\":\t\t\"Resort\",\r\n \"category.ST\":\t\t\"Standard\",\r\n \"category.TU\":\t\t\"Tourist\",\r\n \"category.TUS\":\t\t\"Superior Tourist\",\r\n \"category.VI\":\t\t\"Villa\",\r\n \"category.VV\":\t\t\"Vacation Homes\",\r\n\r\n \"package.Add\": \"Add an Experience\",\r\n \"package.Selected\": \"SELECTED\",\r\n \"package.Select\": \"SELECT\",\r\n \"package.Book\": \"Book\",\r\n\r\n \"availability.NoResults\": \"We cannot find availabilty. Try again by modifying your search.\",\r\n\r\n \"availability.orderBy.Recommended\": \"Recommended\",\r\n \"availability.orderBy.Price\": \"Price\",\r\n \"availability.orderBy.Category\": \"Category\",\r\n }\r\n}\r\n","export default {\r\n translation: {\r\n \"send_by_email.message_sent_1\": \"Error al enviar el email\",\r\n \"send_by_email.message_sent_0\": \"Email Enviada\",\r\n \"send_by_email.email-placeholder\": \"Tu email\",\r\n \"send_by_email.message-placeholder\": \"escribe un mensaje\",\r\n \"send_by_email.title\": \"Enviar por email\",\r\n \"send_by_email.button\": \"Enviar\", \r\n\r\n \"map.open-button\": \"Ver Mapa\",\r\n\r\n\r\n\r\n\r\n \"direct_payment_Tooltip_text\": \"PAGO EN HOTEL: Se podrá comprobar la validez de la tarjeta con el cargo de 1€. Este importe será devuelto inmediatamente de forma automática una vez hecha la comprobación y realizada la reserva. Por otra parte el hotel se reserva el derecho a comprobar la validez de la tarjeta por el importe de los gastos de cancelación pudiendo cargar los mismos desde el momento en que aplican. En este caso serán descontados del total a pagar en el hotel. Si usted elige esta modalidad de pago en lugar de pagar en nuestra web a usted le cobrará el establecimiento (hotel, apartamento). En la mayor parte de los casos el cobro se hará a su llegada al establecimiento, si bien en algunos casos el hotel, en función de las características de la tarifa, cobrará por anticipado una parte o la totalidad.Puedes pagar en hotel\",\r\n\r\n \"hotel_blocking_error\": \"Error al crear la reserva con este hotel\",\r\n \"hotel_blocking_error_button\": \"Reserva Otro Hotel\",\r\n\r\n \"filters.filters\": \"Ver Filtros\",\r\n \"resultDeal.totalPriceText\": \"Precio Total\",\r\n\r\n \"resultDeal.roomTypeTitle\": \"tipo de habitación\",\r\n \"resultDeal.changeRoomTitle\": \"cambiar habitacion\",\r\n \"resultDeal.changeRoomsTitle\": \"cambiar habitaciones\",\r\n \"resultDistribution.roomsQuantity\": \"(__num__ habitaciones más)\",\r\n \"hotel_blocking.message\": \"Estamos creando tu reserva...\",\r\n\r\n \"hotel_details_not_available\": \"Detalles no disponibles\",\r\n \"distributions.up_to_x_person\": \"Hasta __num__ personas\",\r\n\r\n \"hotel_details.description\": \"Descripción\",\r\n \"hotel_details.map\": \"Mapa\",\r\n \"hotel_details.reviews\": \"Opiniones\",\r\n \"hotel_details.CheckIn\": \"Entrada\",\r\n \"hotel_details.CheckOut\": \"Salida\", \r\n \"hotel_details.FacilitiesTitle\": \"Equipamiento\", \r\n \"canariasComments.title\": \"Opiniones Canarias.com\", \r\n \"canariasComments.rateCleaning\": \"Limpieza\",\r\n \"canariasComments.rateDreamQuality\": \"Calidad del sueño\",\r\n \"canariasComments.rateDrinkingSelection\": \"Selección de bebidas\",\r\n \"canariasComments.rateFood\": \"Comida\",\r\n \"canariasComments.rateLocation\": \"Ubicación\",\r\n \"canariasComments.rateQualityPriceRelation\": \"Relación calidad-precio\",\r\n \"canariasComments.rateRooms\": \"Habitaciones\",\r\n \"canariasComments.rateService\": \"Servicio\",\r\n \"canariasComments.resumeTitle\": \"Puntuaciones Canarias.com\",\r\n \"canariasComments.numberOfComments\": \"Basado en __num__ comentarios\", \r\n \"canariasComments.fromUser\": \"por\", \r\n \"canariasComments.fromPlace\": \"de\", \r\n \"canariasComments.trip_type_1\": \"Viaje de negocios\", \r\n \"canariasComments.trip_type_2\": \"Viaje en pareja\",\r\n \"canariasComments.trip_type_3\": \"Viaje en familia\",\r\n \"canariasComments.trip_type_4\": \"Viaje de amigos\",\r\n \"canariasComments.trip_type_5\": \"Viaje de solitario\",\r\n\r\n \"TripadvisorComments.title\": \"Opiniones TripAdvisor\", \r\n \"TripadvisorComments.resumeTitle\": \"Puntuaciones TripAdvisor\", \r\n \"TripadvisorComments.readMore\": \"Leer opinión completa\", \r\n \"TripadvisorComments.NumerOfComments\": \"Basado en __num__ comentarios\", \r\n\r\n \"TripadvisorComments.rate_value\": \"Relación calidad-precio\", \r\n \"TripadvisorComments.rate_cleanliness\": \"Limpieza\", \r\n \"TripadvisorComments.rate_sleep\": \"Calidad del sueño\", \r\n \"TripadvisorComments.rate_service\": \"Servicio\", \r\n \"TripadvisorComments.rate_location\": \"Ubicación\", \r\n \"TripadvisorComments.rate_room\": \"Habitaciones\", \r\n \r\n \"TripadvisorComments.TripType\": \"Tipo de Viaje\", \r\n \"TripadvisorComments.NULL\": \"n.d.\", \r\n \"TripadvisorComments.business\": \"Por negocio\", \r\n \"TripadvisorComments.couples\": \"En pareja\", \r\n \"TripadvisorComments.family\": \"En familia\", \r\n \"TripadvisorComments.friends\": \"Con amigos\", \r\n \"TripadvisorComments.solo\": \"Solitario\", \r\n \r\n \r\n\r\n\r\n \"RoomNotesModalInfo\": \"Info\",\r\n \"search_box.horizontal_label_place\": \"Usa nuestro buscador para encontrar tu hotel ideal\",\r\n \"search_box.label_place\": \"Escribe un Hotel, Ciudad...\",\r\n \"search_box.place_placeholder\": \"Escribe tu hotel o destino\", \r\n \"search_box.label_pickup_date\": \"Fecha de Entrada\",\r\n \"search_box.label_dropoff_date\": \"Fecha de Salida\",\r\n \"search_box.label_room_and_people\": \"Nº de habitaciones y personas\",\r\n \"search_box.search_button_text\": \"Buscar\",\r\n \"search_box.room_selection.confirm_button_text\": \"Confirmar\",\r\n \"search_box.room_selection.adult\": \"Adulto\",\r\n \"search_box.room_selection.adults\": \"Adultos\", \r\n \"search_box.room_selection.child\": \"Niño\",\r\n \"search_box.room_selection.children\": \"Niños\", \r\n \"search_box.room_selection.childrenAges\": \"Edad de los niños\", \r\n \"search_box.room_selection.room\": \"Habitación\", \r\n \"search_box.room_selection.rooms\": \"Habitaciones\", \r\n \"search_box.place\": \"Destinos\", \r\n \"search_box.hotels\": \"Hoteles\", \r\n \"search_box.errors.errors_title\": \"Ocurrieron los siguientes errores: \", \r\n \"search_box.errors.select_place\": \"Seleccione un lugar o un hotel\", \r\n \"search_box.errors.wrong_start_date\": \"La fecha de entrada no es válida\", \r\n \"search_box.errors.wrong_end_date\": \"La fecha de salida no es válida\", \r\n \"search_box.errors.wrong_distributions\": \"La distribution no es valida\", \r\n \"filters.main_title\": \"Filtrar por nombre\",\r\n \"filters.filter_by_category\": \"Filtrar por categoría\",\r\n \"filters.filter_by_deal\": \"Filtrar por régimen\",\r\n \"filters.filter_by_facilities\": \"Filtrar por servicios\",\r\n \"filters.filter_by_price\": \"Filtrar por precio\",\r\n \"filters.button_filter_text\": \"Filtrar\",\r\n \"filters.button_remove_filter_text\": \"Quitar Filtros\",\r\n \"filters.change_search\": \"Modificar Búsqueda\",\r\n \"deal.button_select_text\": \"Seleccionar\",\r\n \"deal.button_modify_text\": \"Modificar\", \r\n \"deal_selection.button_select_text\": \"Seleccionar\",\r\n\r\n \"category.0\":\t\t\"No Disponible\",\r\n \"category.0L\":\t\t\"No Disponible\",\r\n \"category.1\":\t\t\"1\",\r\n \"category.10\":\t\t\"Lujo\",\r\n \"category.11\":\t\t\"Oferta\",\r\n \"category.13\":\t\t\"13\",\r\n \"category.1L\":\t\t\"1L\",\r\n \"category.2\":\t\t\"2\",\r\n \"category.20\":\t\t\"3L\",\r\n \"category.23\":\t\t\"3\",\r\n \"category.26\":\t\t\"26\",\r\n \"category.28\":\t\t\"28\",\r\n \"category.29\":\t\t\"29\",\r\n \"category.2L\":\t\t\"2L\",\r\n \"category.3\":\t\t\"3\",\r\n \"category.30\":\t\t\"30\",\r\n \"category.31\":\t\t\"31\",\r\n \"category.32\":\t\t\"32\",\r\n \"category.34\":\t\t\"34\",\r\n \"category.36\":\t\t\"36\",\r\n \"category.3L\":\t\t\"3L\",\r\n \"category.4\":\t\t\"4\",\r\n \"category.40\":\t\t\"40\",\r\n \"category.4L\":\t\t\"4L\",\r\n \"category.5\":\t\t\"5\",\r\n \"category.5L\":\t\t\"5L\",\r\n \"category.8\":\t\t\"Primera\",\r\n \"category.93\":\t\t\"93\",\r\n \"category.A\":\t\t\"A\",\r\n \"category.AB\":\t\t\"Albergue\",\r\n \"category.AGRO\":\t\"Agroturismo\",\r\n \"category.Ak\":\t\t\"Apartamento Turístico\",\r\n \"category.AP\":\t\t\"Aparthotel\",\r\n \"category.AR\":\t\t\"Apartamento Rural\",\r\n \"category.AT\":\t\t\"Apartamento\",\r\n \"category.BA\":\t\t\"Balneario\",\r\n \"category.BB\":\t\t\"BB\",\r\n \"category.BO\":\t\t\"Boutique\",\r\n \"category.BU\":\t\t\"Bungalow\",\r\n \"category.CA\":\t\t\"Castillo\",\r\n \"category.CAM\":\t\t\"CAM\",\r\n \"category.CB\":\t\t\"Cabaña\",\r\n \"category.CC\":\t\t\"Casas Cueva\",\r\n \"category.CE\":\t\t\"Categoría Especial\",\r\n \"category.CH\":\t\t\"Casa de Huéspedes\",\r\n \"category.CM\":\t\t\"Complejo Rural\",\r\n \"category.CO\":\t\t\"Cortijo\",\r\n \"category.CP\":\t\t\"Camping\",\r\n \"category.CR\":\t\t\"Casa Rural\",\r\n \"category.CS\":\t\t\"Casa Rural Con SPA\",\r\n \"category.CT\":\t\t\"Centro De Turismo Rural\",\r\n \"category.Cz\":\t\t\"Cz\",\r\n \"category.FO\":\t\t\"Fonda\",\r\n \"category.H1\":\t\t\"Hostal *\",\r\n \"category.H2\":\t\t\"Hostal **\",\r\n \"category.HO\":\t\t\"Hostal\",\r\n \"category.HP\":\t\t\"Hospedería\",\r\n \"category.HR\":\t\t\"Hotel Rural\",\r\n \"category.HS\":\t\t\"Hotel Con SPA\",\r\n \"category.HT\":\t\t\"Hotel\",\r\n \"category.IN\":\t\t\"No Disponible\",\r\n \"category.LO\":\t\t\"Lodge\",\r\n \"category.MH\":\t\t\"Mini Hotel\",\r\n \"category.MO\":\t\t\"Monasterio\",\r\n \"category.MT\":\t\t\"Motel\",\r\n \"category.PA\":\t\t\"Parador\",\r\n \"category.PE\":\t\t\"Pensión\",\r\n \"category.PENDI\":\t\"Pendi\",\r\n \"category.PO\":\t\t\"Pousada\",\r\n \"category.PR\":\t\t\"Posada Real\",\r\n \"category.RA\":\t\t\"RA\",\r\n \"category.RE\":\t\t\"Residencial\",\r\n \"category.RS\":\t\t\"Hotel Rural Categoría Superior\",\r\n \"category.RT\":\t\t\"Resort\",\r\n \"category.ST\":\t\t\"Standard\",\r\n \"category.TU\":\t\t\"Turista\",\r\n \"category.TUS\":\t\t\"Turista Superior\",\r\n \"category.VI\":\t\t\"Villa\",\r\n \"category.VV\":\t\t\"Viviendas Vacacionales\",\r\n\r\n \"package.Add\": \"Añade una Experiencia\",\r\n \"package.Selected\": \"SELECCIONADO\",\r\n \"package.Select\": \"SELECCIONAR\",\r\n \"package.Book\": \"Reservar\",\r\n\r\n \"availability.NoResults\": \"No hemos encontrado disponibilidad. Intente nuevamente, modificando su búsqueda.\",\r\n \"availability.orderBy.Recommended\": \"Recomendados\",\r\n \"availability.orderBy.Price\": \"Precio\",\r\n \"availability.orderBy.Category\": \"Categoría\",\r\n }\r\n}","export default {\r\n translation: {\r\n \"send_by_email.message_sent_1\": \"Fehler beim Senden der E-Mail\",\r\n \"send_by_email.message_sent_0\": \"E-Mail gesendet\",\r\n \"send_by_email.email-placeholder\": \"Deine E-Mail\",\r\n \"send_by_email.message-placeholder\": \"schreibe eine nachricht\",\r\n \"send_by_email.title\": \"Senden Sie per E-Mail\",\r\n \"send_by_email.button\": \"Senden\", \r\n\r\n \"map.open-button\": \"Siehe Karte\",\r\n\r\n\r\n\r\n \"hotel_blocking_error\": \"Fehler beim Erstellen der Reservierung mit diesem Hotel\",\r\n \"hotel_blocking_error_button\": \"Buchen Sie Other Hotel\",\r\n\r\n \"filters.filters\": \"Filter\",\r\n \"resultDeal.totalPriceText\": \"Gesamtpreis\",\r\n\r\n \"resultDeal.roomTypeTitle\": \"Art des Zimmers\",\r\n \"resultDeal.changeRoomTitle\": \"zimmer wechseln\",\r\n \"resultDeal.changeRoomsTitle\": \"zimmer wechseln\",\r\n \"resultDistribution.roomsQuantity\": \"(__num__ weitere Räume)\",\r\n \r\n\r\n \"hotel_blocking.message\": \"Wir erstellen Ihre Reservierung...\",\r\n\r\n \"hotel_details_not_available\": \"Details nicht verfügbar\",\r\n \"distributions.up_to_x_person\": \"Bis zu __num__ personen\",\r\n\r\n \"hotel_details.description\": \"Beschreibung\",\r\n \"hotel_details.map\": \"Karte\",\r\n \"hotel_details.reviews\": \"Bewertungen\",\r\n \"hotel_details.CheckIn\": \"Ankunft\",\r\n \"hotel_details.CheckOut\": \"Verlassen\", \r\n \"hotel_details.FacilitiesTitle\": \"Ausrüstung\", \r\n \"canariasComments.title\": \"Bewertungen Canarias.com\", \r\n \"canariasComments.rateCleaning\": \"Reinigung\",\r\n \"canariasComments.rateDreamQuality\": \"Schlafqualität\",\r\n \"canariasComments.rateDrinkingSelection\": \"Auswahl an Getränken\",\r\n \"canariasComments.rateFood\": \"Essen\",\r\n \"canariasComments.rateLocation\": \"Ort\",\r\n \"canariasComments.rateQualityPriceRelation\": \"Wert für Geld\",\r\n \"canariasComments.rateRooms\": \"Schlafzimmer\",\r\n \"canariasComments.rateService\": \"Bedienung\",\r\n \"canariasComments.resumeTitle\": \"Ergebnis Canarias.com\",\r\n \"canariasComments.numberOfComments\": \"Basiert auf __num__ Rezensionen\", \r\n \"canariasComments.fromUser\": \"von\", \r\n \"canariasComments.fromPlace\": \"von\", \r\n \"canariasComments.trip_type_1\": \"Geschäftsreise\", \r\n \"canariasComments.trip_type_2\": \"Reisen Sie zu zweit\",\r\n \"canariasComments.trip_type_3\": \"Familienreisen\",\r\n \"canariasComments.trip_type_4\": \"Reisen von Freunden\",\r\n \"canariasComments.trip_type_5\": \"Solitärausflug\",\r\n\r\n \"TripadvisorComments.title\": \"Bewertungen TripAdvisor\", \r\n \"TripadvisorComments.resumeTitle\": \"Bewertungen TripAdvisor\", \r\n \"TripadvisorComments.readMore\": \"Weiterlesen\", \r\n \"TripadvisorComments.NumerOfComments\": \"Basiert auf __num__ Rezensionen\", \r\n\r\n \"TripadvisorComments.rate_value\": \"Wert für Geld\", \r\n \"TripadvisorComments.rate_cleanliness\": \"Reinigung\", \r\n \"TripadvisorComments.rate_sleep\": \"Schlafqualität\", \r\n \"TripadvisorComments.rate_service\": \"Bedienung\", \r\n \"TripadvisorComments.rate_location\": \"Ort\", \r\n \"TripadvisorComments.rate_room\": \"Schlafzimmer\", \r\n \r\n \"TripadvisorComments.TripType\": \"Art der Reise\", \r\n \"TripadvisorComments.NULL\": \"n.d.\", \r\n \"TripadvisorComments.business\": \"Für das Geschäft\", \r\n \"TripadvisorComments.couples\": \"Zu zweit\", \r\n \"TripadvisorComments.family\": \"In der Familie\", \r\n \"TripadvisorComments.friends\": \"Mit Freunden\", \r\n \"TripadvisorComments.solo\": \"Einsam\", \r\n\r\n\r\n \"RoomNotesModalInfo\": \"Info\",\r\n \"search_box.horizontal_label_place\": \"Use our Hotel finder to find your perfect hotel\",\r\n \"search_box.label_place\": \"Schreiben Sie ein Hotel, Stadt ..\",\r\n \"search_box.place_placeholder\": \"Geben Sie Ihr Hotel oder Reiseziel ein\", \r\n \"search_box.label_pickup_date\": \"Eintrittsdatum\",\r\n \"search_box.label_dropoff_date\": \"Abreisedatum\",\r\n \"search_box.label_room_and_people\": \"Räume und Personen\",\r\n \"search_box.search_button_text\": \"Suche\",\r\n \"search_box.room_selection.confirm_button_text\": \"Bestätige\",\r\n \"search_box.room_selection.adult\": \"Erwachsener\",\r\n \"search_box.room_selection.adults\": \"Erwachsene\", \r\n \"search_box.room_selection.child\": \"Kind\",\r\n \"search_box.room_selection.children\": \"Kinder\", \r\n \"search_box.room_selection.childrenAges\": \"Alter der Kinder\", \r\n \"search_box.room_selection.room\": \"Zimmer\", \r\n \"search_box.room_selection.rooms\": \"Zimmer\", \r\n \"search_box.place\": \"Reiseziele\", \r\n \"search_box.hotels\": \"Hotels\", \r\n \"search_box.errors.errors_title\": \"Folgende Fehler sind aufgetreten:\", \r\n \"search_box.errors.select_place\": \"Wählen Sie einen Ort oder ein Hotel\", \r\n \"search_box.errors.wrong_start_date\": \"Das Eingabedatum ist ungültig\", \r\n \"search_box.errors.wrong_end_date\": \"Das Abreisedatum ist nicht gültig\", \r\n \"search_box.errors.wrong_distributions\": \"Die Verteilung ist ungültig\", \r\n \"filters.change_search\": \"Suche ändern\", \r\n \"filters.main_title\": \"Filtern nach Namen\",\r\n \"filters.filter_by_category\": \"Filtern nach Kategorie\",\r\n \"filters.filter_by_deal\": \"Filtern nach Regime\",\r\n \"filters.filter_by_facilities\": \"Nach Diensten filtern\",\r\n \"filters.filter_by_price\": \"Filtern nach Preis\",\r\n \"filters.button_filter_text\": \"Filter\",\r\n \"filters.button_remove_filter_text\": \"Filter aufheben\",\r\n \"deal.button_select_text\": \"Auswählen\",\r\n \"deal.button_modify_text\": \"Ändern\", \r\n \"deal_selection.button_select_text\": \"Auswählen\",\r\n\r\n \"category.0\":\t\t\"Nicht verfügbar\",\r\n \"category.0L\":\t\t\"Nicht verfügbar\",\r\n \"category.1\":\t\t\"1\",\r\n \"category.10\":\t\t\"Luxus\",\r\n \"category.11\":\t\t\"Angebot\",\r\n \"category.13\":\t\t\"13\",\r\n \"category.1L\":\t\t\"1L\",\r\n \"category.2\":\t\t\"2\",\r\n \"category.20\":\t\t\"3L\",\r\n \"category.23\":\t\t\"3\",\r\n \"category.26\":\t\t\"26\",\r\n \"category.28\":\t\t\"28\",\r\n \"category.29\":\t\t\"29\",\r\n \"category.2L\":\t\t\"2L\",\r\n \"category.3\":\t\t\"3\",\r\n \"category.30\":\t\t\"30\",\r\n \"category.31\":\t\t\"31\",\r\n \"category.32\":\t\t\"32\",\r\n \"category.34\":\t\t\"34\",\r\n \"category.36\":\t\t\"36\",\r\n \"category.3L\":\t\t\"3L\",\r\n \"category.4\":\t\t\"4\",\r\n \"category.40\":\t\t\"40\",\r\n \"category.4L\":\t\t\"4L\",\r\n \"category.5\":\t\t\"5\",\r\n \"category.5L\":\t\t\"5L\",\r\n \"category.8\":\t\t\"Erstens\",\r\n \"category.93\":\t\t\"93\",\r\n \"category.A\":\t\t\"A\",\r\n \"category.AB\":\t\t\"Unterschlupf\",\r\n \"category.AGRO\":\t\"Agroturismo \",\r\n \"category.Ak\":\t\t\"Touristenwohnung\",\r\n \"category.AP\":\t\t\"Aparthotel\",\r\n \"category.AR\":\t\t\"Ländliche Wohnung\",\r\n \"category.AT\":\t\t\"Wohnung\",\r\n \"category.BA\":\t\t\"Spa\",\r\n \"category.BB\":\t\t\"BB\",\r\n \"category.BO\":\t\t\"Boutique\",\r\n \"category.BU\":\t\t\"Bungalow\",\r\n \"category.CA\":\t\t\"Schloss\",\r\n \"category.CAM\":\t\t\"CAM\",\r\n \"category.CB\":\t\t\"Kabine\",\r\n \"category.CC\":\t\t\"Höhlenhäuser\",\r\n \"category.CE\":\t\t\"Spezielle Kategorie\",\r\n \"category.CH\":\t\t\"Gästehaus\",\r\n \"category.CM\":\t\t\"Ländlicher Komplex\",\r\n \"category.CO\":\t\t\"Cortijo\",\r\n \"category.CP\":\t\t\"Camping\",\r\n \"category.CR\":\t\t\"Landhaus\",\r\n \"category.CS\":\t\t\"Landhaus mit SPA\",\r\n \"category.CT\":\t\t\"Zentrum für ländlichen Tourismus\",\r\n \"category.Cz\":\t\t\"Cz\",\r\n \"category.FO\":\t\t\"Gasthaus\",\r\n \"category.H1\":\t\t\"Herberge *\",\r\n \"category.H2\":\t\t\"Herberge **\",\r\n \"category.HO\":\t\t\"Herberge\",\r\n \"category.HP\":\t\t\"Herberge\",\r\n \"category.HR\":\t\t\"Landhotel\",\r\n \"category.HS\":\t\t\"Hotel Mit SPA\",\r\n \"category.HT\":\t\t\"Hotel\",\r\n \"category.IN\":\t\t\"Nicht verfügbar\",\r\n \"category.LO\":\t\t\"Lodge\",\r\n \"category.MH\":\t\t\"Mini Hotel\",\r\n \"category.MO\":\t\t\"Kloster\",\r\n \"category.MT\":\t\t\"Motel\",\r\n \"category.PA\":\t\t\"Parador\",\r\n \"category.PE\":\t\t\"Rente\",\r\n \"category.PENDI\":\t\"Pendi\",\r\n \"category.PO\":\t\t\"Pousada\",\r\n \"category.PR\":\t\t\"Posada Real\",\r\n \"category.RA\":\t\t\"RA\",\r\n \"category.RE\":\t\t\"Wohnimmobilien\",\r\n \"category.RS\":\t\t\"Landhotel der gehobenen Kategorie\",\r\n \"category.RT\":\t\t\"Frühling\",\r\n \"category.ST\":\t\t\"Standard\",\r\n \"category.TU\":\t\t\"Tourist\",\r\n \"category.TUS\":\t\t\"Superior Tourist\",\r\n \"category.VI\":\t\t\"Kleinstadt\",\r\n \"category.VV\":\t\t\"Ferienhäuser\",\r\n\r\n \"package.Add\": \"Eine Erfahrung hinzufügen\",\r\n \"package.Selected\": \"AUSGEWÄHLT\",\r\n \"package.Select\": \"SELECT\",\r\n \"package.Book\": \"Buch\",\r\n\r\n \"availability.NoResults\": \"Suche erfolglos. Versuchen Sie es erneut.\",\r\n\r\n \"availability.orderBy.Recommended\": \"Empfohlen\",\r\n \"availability.orderBy.Price\": \"Preis\",\r\n \"availability.orderBy.Category\": \"Kategorie\",\r\n }\r\n}\r\n","export default {\r\n translation: {\r\n \"send_by_email.message_sent_1\": \"Erreur d'envoi du courrier électronique\",\r\n \"send_by_email.message_sent_0\": \"Email envoyé\",\r\n \"send_by_email.email-placeholder\": \"Votre email\",\r\n \"send_by_email.message-placeholder\": \"écrire un message\",\r\n \"send_by_email.title\": \"Envoyer par mail\",\r\n \"send_by_email.button\": \"Envoyer\", \r\n\r\n \"map.open-button\": \"Voir la carte\",\r\n\r\n \"hotel_blocking_error\": \"Erreur lors de la création de la réservation avec cet hôtel\",\r\n \"hotel_blocking_error_button\": \"Réserver un autre hôtel\",\r\n\r\n \"filters.filters\": \"Filtrer\",\r\n \"resultDeal.totalPriceText\": \"Prix total\",\r\n\r\n \"resultDeal.roomTypeTitle\": \"type de chambre\",\r\n \"resultDeal.changeRoomTitle\": \"change de chambre\",\r\n \"resultDeal.changeRoomsTitle\": \"change de chambre\",\r\n \"resultDistribution.roomsQuantity\": \"(__num__ chambres plus)\",\r\n\r\n\r\n \"hotel_blocking.message\": \"Nous créons votre réservation...\",\r\n\r\n \"hotel_details_not_available\": \"Détails non disponibles\", \r\n \"distributions.up_to_x_person\": \"Jusqu'à __num__ personnes\",\r\n\r\n \"hotel_details.description\": \"La description\",\r\n \"hotel_details.map\": \"Carte\",\r\n \"hotel_details.reviews\": \"Avis\",\r\n \"hotel_details.CheckIn\": \"Arrivée\",\r\n \"hotel_details.CheckOut\": \"Quitter\", \r\n \"hotel_details.FacilitiesTitle\": \"Équipement\", \r\n \"canariasComments.title\": \"Avis Canarias.com\", \r\n \"canariasComments.rateCleaning\": \"Nettoyage\",\r\n \"canariasComments.rateDreamQuality\": \"Qualité du sommeil\",\r\n \"canariasComments.rateDrinkingSelection\": \"Sélection de boissons\",\r\n \"canariasComments.rateFood\": \"Aliments\",\r\n \"canariasComments.rateLocation\": \"Emplacement\",\r\n \"canariasComments.rateQualityPriceRelation\": \"Le rapport qualité prix\",\r\n \"canariasComments.rateRooms\": \"Chambres à coucher\",\r\n \"canariasComments.rateService\": \"Un service\",\r\n \"canariasComments.resumeTitle\": \"Partitions Canarias.com\",\r\n \"canariasComments.numberOfComments\": \"Basé sur __num__ avis\", \r\n \"canariasComments.fromUser\": \"de\", \r\n \"canariasComments.fromPlace\": \"de\", \r\n \"canariasComments.trip_type_1\": \"Voyage d'affaires\", \r\n \"canariasComments.trip_type_2\": \"Voyage en couple\",\r\n \"canariasComments.trip_type_3\": \"Voyage en famille\",\r\n \"canariasComments.trip_type_4\": \"Voyage d'amis\",\r\n \"canariasComments.trip_type_5\": \"Voyage de solitaire\",\r\n\r\n \"TripadvisorComments.title\": \"Commentaires TripAdvisor\", \r\n \"TripadvisorComments.resumeTitle\": \"Scores TripAdvisor\", \r\n \"TripadvisorComments.readMore\": \"Lire la suite\", \r\n \"TripadvisorComments.NumerOfComments\": \"Basé sur __num__ avis\", \r\n\r\n \"TripadvisorComments.rate_value\": \"Le rapport qualité prix\", \r\n \"TripadvisorComments.rate_cleanliness\": \"Nettoyage\", \r\n \"TripadvisorComments.rate_sleep\": \"Qualité du sommeil\", \r\n \"TripadvisorComments.rate_service\": \"Un service\", \r\n \"TripadvisorComments.rate_location\": \"Emplacement\", \r\n \"TripadvisorComments.rate_room\": \"Chambres à coucher\", \r\n \r\n \"TripadvisorComments.TripType\": \"Type de voyage\", \r\n \"TripadvisorComments.NULL\": \"n.d.\", \r\n \"TripadvisorComments.business\": \"Pour le business\", \r\n \"TripadvisorComments.couples\": \"En couple\", \r\n \"TripadvisorComments.family\": \"Dans la famille\", \r\n \"TripadvisorComments.friends\": \"With friends\", \r\n \"TripadvisorComments.solo\": \"Solitaire\", \r\n\r\n\r\n \"RoomNotesModalInfo\": \"Info\",\r\n \"search_box.horizontal_label_place\": \"Use our Hotel finder to find your perfect hotel\",\r\n \"search_box.label_place\": \"Tapez un hôtel, une ville...\",\r\n \"search_box.place_placeholder\": \"Tapez votre hôtel ou votre destination\",\r\n \"search_box.label_pickup_date\": \"Date d'entrée\",\r\n \"search_box.label_dropoff_date\": \"Date de départ\",\r\n \"search_box.label_room_and_people\": \"Chambres et personnes\",\r\n \"search_box.search_button_text\": \"Chercher\",\r\n \"search_box.room_selection.confirm_button_text\": \"Confirmer\",\r\n \"search_box.room_selection.adult\": \"Adulte\", \r\n \"search_box.room_selection.adults\": \"Adultes\",\r\n \"search_box.room_selection.child\": \"Enfant\", \r\n \"search_box.room_selection.children\": \"Les enfants\",\r\n \"search_box.room_selection.childrenAges\": \"Âges des enfants\",\r\n \"search_box.room_selection.room\": \"Pièce\", \r\n \"search_box.room_selection.rooms\": \"Pièces\", \r\n \"search_box.place\": \"Endroit\", \r\n \"search_box.hotels\": \"Hôtels\", \r\n \"search_box.errors.errors_title\": \"Il y a les erreurs suivantes:\", \r\n \"search_box.errors.select_place\": \"Sélectionnez un lieu ou un hôtel\", \r\n \"search_box.errors.wrong_start_date\": \"La date de prise en charge n'est pas valide\", \r\n \"search_box.errors.wrong_end_date\": \"La date de restitution n'est pas valide\", \r\n \"search_box.errors.wrong_distributions\": \"La distribution n'est pas valide\",\r\n \"filters.change_search\": \"Modifier la Recherche\", \r\n \"filters.main_title\": \"Filtrer par nom\",\r\n \"filters.filter_by_category\": \"Filtrer par catégorie\",\r\n \"filters.filter_by_deal\": \"Filtrer par Deal\",\r\n \"filters.filter_by_facilities\": \"Filtrer par installations\",\r\n \"filters.filter_by_price\": \"Filtrer par prix\",\r\n \"filters.button_filter_text\": \"Filtre\",\r\n \"filters.button_remove_filter_text\": \"Quitter les filtres\",\r\n \"deal.button_select_text\": \"Sélectionner\",\r\n \"deal.button_modify_text\": \"Modifier\", \r\n \"deal_selection.button_select_text\": \"Sélectionner\",\r\n \"category.0\":\t\t\"Non disponible\",\r\n \"category.0L\":\t\t\"Non disponible\",\r\n \"category.1\":\t\t\"1\",\r\n \"category.10\":\t\t\"De luxe\",\r\n \"category.11\":\t\t\"Offre\",\r\n \"category.13\":\t\t\"13\",\r\n \"category.1L\":\t\t\"1L\",\r\n \"category.2\":\t\t\"2\",\r\n \"category.20\":\t\t\"3L\",\r\n \"category.23\":\t\t\"3\",\r\n \"category.26\":\t\t\"26\",\r\n \"category.28\":\t\t\"28\",\r\n \"category.29\":\t\t\"29\",\r\n \"category.2L\":\t\t\"2L\",\r\n \"category.3\":\t\t\"3\",\r\n \"category.30\":\t\t\"30\",\r\n \"category.31\":\t\t\"31\",\r\n \"category.32\":\t\t\"32\",\r\n \"category.34\":\t\t\"34\",\r\n \"category.36\":\t\t\"36\",\r\n \"category.3L\":\t\t\"3L\",\r\n \"category.4\":\t\t\"4\",\r\n \"category.40\":\t\t\"40\",\r\n \"category.4L\":\t\t\"4L\",\r\n \"category.5\":\t\t\"5\",\r\n \"category.5L\":\t\t\"5L\",\r\n \"category.8\":\t\t\"Premier\",\r\n \"category.93\":\t\t\"93\",\r\n \"category.A\":\t\t\"A\",\r\n \"category.AB\":\t\t\"Refuge\",\r\n \"category.AGRO\":\t\"Agrotourisme\",\r\n \"category.Ak\":\t\t\"Appartement touristique\",\r\n \"category.AP\":\t\t\"Aparthotel\",\r\n \"category.AR\":\t\t\"Appartement rural\",\r\n \"category.AT\":\t\t\"Appartement\",\r\n \"category.BA\":\t\t\"Spa\",\r\n \"category.BB\":\t\t\"BB\",\r\n \"category.BO\":\t\t\"Boutique\",\r\n \"category.BU\":\t\t\"Bungalow\",\r\n \"category.CA\":\t\t\"Château\",\r\n \"category.CAM\":\t\t\"CAM\",\r\n \"category.CB\":\t\t\"Cabine\",\r\n \"category.CC\":\t\t\"Maisons Troglodytes\",\r\n \"category.CE\":\t\t\"Catégorie spéciale\",\r\n \"category.CH\":\t\t\"Maison d'hôtes\",\r\n \"category.CM\":\t\t\"Complexe rural\",\r\n \"category.CO\":\t\t\"Cortijo\",\r\n \"category.CP\":\t\t\"Camping\",\r\n \"category.CR\":\t\t\"Maison rurale\",\r\n \"category.CS\":\t\t\"Gîte rural avec SPA\",\r\n \"category.CT\":\t\t\"Centre de tourisme rural\",\r\n \"category.Cz\":\t\t\"Cz\",\r\n \"category.FO\":\t\t\"Fonda\",\r\n \"category.H1\":\t\t\"Hostal *\",\r\n \"category.H2\":\t\t\"Hostal **\",\r\n \"category.HO\":\t\t\"Hostal\",\r\n \"category.HP\":\t\t\"Hospedería\",\r\n \"category.HR\":\t\t\"Hôtel rural\",\r\n \"category.HS\":\t\t\"Hôtel avec SPA\",\r\n \"category.HT\":\t\t\"Hôtel\",\r\n \"category.IN\":\t\t\"Non disponible\",\r\n \"category.LO\":\t\t\"Lodge\",\r\n \"category.MH\":\t\t\"Mini Hôtel\",\r\n \"category.MO\":\t\t\"Monastère\",\r\n \"category.MT\":\t\t\"Motel\",\r\n \"category.PA\":\t\t\"Parador\",\r\n \"category.PE\":\t\t\"Pension\",\r\n \"category.PENDI\":\t\"Pendi\",\r\n \"category.PO\":\t\t\"Pousada\",\r\n \"category.PR\":\t\t\"Posada Real\",\r\n \"category.RA\":\t\t\"RA\",\r\n \"category.RE\":\t\t\"Résidentiel\",\r\n \"category.RS\":\t\t\"Catégorie Hôtel Rural Supérieur\",\r\n \"category.RT\":\t\t\"Resort\",\r\n \"category.ST\":\t\t\"Standard\",\r\n \"category.TU\":\t\t\"Touriste\",\r\n \"category.TUS\":\t\t\"Touriste Supérieur\",\r\n \"category.VI\":\t\t\"Villa\",\r\n \"category.VV\":\t\t\"Maisons de vacances\",\r\n\r\n \"package.Add\": \"Ajouter une expérience\",\r\n \"package.Selected\": \"SÉLECTIONNÉ\",\r\n \"package.Select\": \"SELECT\",\r\n \"package.Book\": \"Livre\",\r\n\r\n \"availability.NoResults\": \"Nous n'avons pas trouvé de disponibilité. Retentez à nouveau, en modifiant votre recherche.\",\r\n\r\n \"availability.orderBy.Recommended\": \"Recommandé\",\r\n \"availability.orderBy.Price\": \"Prix\",\r\n \"availability.orderBy.Category\": \"Catégorie\",\r\n }\r\n}","export default {\r\n translation: {\r\n \"send_by_email.message_sent_1\": \"Si è veriifcato un errore durante l'invio dell'email\",\r\n \"send_by_email.message_sent_0\": \"Email Inviate\",\r\n \"send_by_email.email-placeholder\": \"La tua email\",\r\n \"send_by_email.message-placeholder\": \"scrivi un messaggio\",\r\n \"send_by_email.title\": \"Inviare per email\",\r\n \"send_by_email.button\": \"Invia\", \r\n\r\n \"map.open-button\": \"Vedi Mappa\",\r\n \r\n \r\n \"hotel_blocking_error\": \"Si è verificato un errore durante la prenotazione\",\r\n \"hotel_blocking_error_button\": \"Prenota un altro Hotel\",\r\n\r\n \"filters.filters\": \"Applica Filtri\",\r\n \"resultDeal.totalPriceText\": \"Prezzo totale\",\r\n\r\n \"resultDeal.roomTypeTitle\": \"tipo di camera\",\r\n \"resultDeal.changeRoomTitle\": \"cambiare camera\",\r\n \"resultDeal.changeRoomsTitle\": \"cambiare camere\",\r\n \"resultDistribution.roomsQuantity\": \"(__num__ altre camere)\",\r\n\r\n\r\n \"hotel_blocking.message\": \"Stiamo creando la tua prenotazione...\",\r\n\r\n \"hotel_details_not_available\": \"Dettagli non disponibili\", \r\n \"distributions.up_to_x_person\": \"Fino a __num__ persone\",\r\n\r\n \"hotel_details.description\": \"Descrizione\",\r\n \"hotel_details.map\": \"Mappa\",\r\n \"hotel_details.reviews\": \"Opinioni\",\r\n \"hotel_details.CheckIn\": \"Arrivo\",\r\n \"hotel_details.CheckOut\": \"Partenza\", \r\n \"hotel_details.FacilitiesTitle\": \"Attrezzature\", \r\n \"canariasComments.title\": \"Opinioni Canarias.com\", \r\n \"canariasComments.rateCleaning\": \"Pulizia\",\r\n \"canariasComments.rateDreamQuality\": \"Qualitá del sonno\",\r\n \"canariasComments.rateDrinkingSelection\": \"Selezione bevande\",\r\n \"canariasComments.rateFood\": \"Cibo\",\r\n \"canariasComments.rateLocation\": \"Posizione\",\r\n \"canariasComments.rateQualityPriceRelation\": \"Qualitá prezzo\",\r\n \"canariasComments.rateRooms\": \"Camere\",\r\n \"canariasComments.rateService\": \"Servizio\",\r\n \"canariasComments.resumeTitle\": \"Punteggio Canarias.com\",\r\n \"canariasComments.numberOfComments\": \"Basato su __num__ opinioni\", \r\n \"canariasComments.fromUser\": \"di\", \r\n \"canariasComments.fromPlace\": \"da\", \r\n \"canariasComments.trip_type_1\": \"Viaggio di lavoro\",\r\n \"canariasComments.trip_type_2\": \"Viaggio di coppia\",\r\n \"canariasComments.trip_type_3\": \"Viaggio in famiglia\",\r\n \"canariasComments.trip_type_4\": \"Viaggio con amici\",\r\n \"canariasComments.trip_type_5\": \"Viaggio da solo\",\r\n\r\n \"TripadvisorComments.title\": \"Opinioni TripAdvisor\", \r\n \"TripadvisorComments.resumeTitle\": \"Punteggio TripAdvisor\", \r\n \"TripadvisorComments.readMore\": \"Continua a leggere\", \r\n \"TripadvisorComments.NumerOfComments\": \"Basato su __num__ opinioni\", \r\n\r\n \"TripadvisorComments.rate_value\": \"Qualitñà prezzo\", \r\n \"TripadvisorComments.rate_cleanliness\": \"Pulizia\", \r\n \"TripadvisorComments.rate_sleep\": \"Qualitá del sonno\", \r\n \"TripadvisorComments.rate_service\": \"Servizio\", \r\n \"TripadvisorComments.rate_location\": \"Posizione\", \r\n \"TripadvisorComments.rate_room\": \"Camere\", \r\n \r\n \"TripadvisorComments.TripType\": \"Tipo di viaggio\", \r\n \"TripadvisorComments.NULL\": \"n.d.\", \r\n \"TripadvisorComments.business\": \"D'affati\", \r\n \"TripadvisorComments.couples\": \"In coppia\", \r\n \"TripadvisorComments.family\": \"In famiglia\", \r\n \"TripadvisorComments.friends\": \"Con amici\", \r\n \"TripadvisorComments.solo\": \"Solo\", \r\n\r\n\r\n\r\n \"RoomNotesModalInfo\": \"Info\",\r\n \"search_box.horizontal_label_place\": \"Use our Hotel finder to find your perfect hotel\",\r\n \"search_box.label_place\": \"Scrivi un hotele, una cittá...\",\r\n \"search_box.place_placeholder\": \"Scrivi l'hotel o la destinazione\",\r\n \"search_box.label_pickup_date\": \"Data di arrivo\",\r\n \"search_box.label_dropoff_date\": \"Data di partenza\",\r\n \"search_box.label_room_and_people\": \"Nº stanze e persone\",\r\n \"search_box.search_button_text\": \"Cerca\",\r\n \"search_box.room_selection.confirm_button_text\": \"Conferma\",\r\n \"search_box.room_selection.adult\": \"Adulto\", \r\n \"search_box.room_selection.adults\": \"Adulti\",\r\n \"search_box.room_selection.child\": \"Bambino\", \r\n \"search_box.room_selection.children\": \"Bambini\",\r\n \"search_box.room_selection.childrenAges\": \"Etá dei bambini\",\r\n \"search_box.room_selection.room\": \"Stanza\", \r\n \"search_box.room_selection.rooms\": \"Stanze\", \r\n \"search_box.place\": \"Luogo\", \r\n \"search_box.hotels\": \"Hotel\", \r\n \"search_box.errors.errors_title\": \"Si sono verificati i seguenti errori: \", \r\n \"search_box.errors.select_place\": \"Seleziona un luogo e un hotel\", \r\n \"search_box.errors.wrong_start_date\": \"La data di arrivo non è valida\", \r\n \"search_box.errors.wrong_end_date\": \"La data di partnza non è valida\", \r\n \"search_box.errors.wrong_distributions\": \"La distribuzione non è valida\",\r\n \"filters.change_search\": \"Modifica la Ricerca\", \r\n \"filters.main_title\": \"Filtra per nome\",\r\n \"filters.filter_by_category\": \"Filtra per Categoria\",\r\n \"filters.filter_by_deal\": \"Filtra per regime\",\r\n \"filters.filter_by_facilities\": \"Filtra per servizi\",\r\n \"filters.filter_by_price\": \"Filtra per prezzo\",\r\n \"filters.button_filter_text\": \"Filtra\",\r\n \"filters.button_remove_filter_text\": \"Rimuovi Filtri\",\r\n \"deal.button_select_text\": \"Seleziona\",\r\n \"deal.button_modify_text\": \"Modifica\", \r\n \"deal_selection.button_select_text\": \"Seleziona\",\r\n \"category.0\":\t\t\"Non Disponibile\",\r\n \"category.0L\":\t\t\"Non Disponibile\",\r\n \"category.1\":\t\t\"1\",\r\n \"category.10\":\t\t\"Lusso\",\r\n \"category.11\":\t\t\"Offerta\",\r\n \"category.13\":\t\t\"13\",\r\n \"category.1L\":\t\t\"1L\",\r\n \"category.2\":\t\t\"2\",\r\n \"category.20\":\t\t\"3L\",\r\n \"category.23\":\t\t\"3\",\r\n \"category.26\":\t\t\"26\",\r\n \"category.28\":\t\t\"28\",\r\n \"category.29\":\t\t\"29\",\r\n \"category.2L\":\t\t\"2L\",\r\n \"category.3\":\t\t\"3\",\r\n \"category.30\":\t\t\"30\",\r\n \"category.31\":\t\t\"31\",\r\n \"category.32\":\t\t\"32\",\r\n \"category.34\":\t\t\"34\",\r\n \"category.36\":\t\t\"36\",\r\n \"category.3L\":\t\t\"3L\",\r\n \"category.4\":\t\t\"4\",\r\n \"category.40\":\t\t\"40\",\r\n \"category.4L\":\t\t\"4L\",\r\n \"category.5\":\t\t\"5\",\r\n \"category.5L\":\t\t\"5L\",\r\n \"category.8\":\t\t\"Prima\",\r\n \"category.93\":\t\t\"93\",\r\n \"category.A\":\t\t\"A\",\r\n \"category.AB\":\t\t\"Albergo\",\r\n \"category.AGRO\":\t\"Agriturismo\",\r\n \"category.Ak\":\t\t\"Appartamento turistico\",\r\n \"category.AP\":\t\t\"Apartahotel\",\r\n \"category.AR\":\t\t\"Apartamento Rurale\",\r\n \"category.AT\":\t\t\"Appartamento\",\r\n \"category.BA\":\t\t\"Balneario\",\r\n \"category.BB\":\t\t\"BB\",\r\n \"category.BO\":\t\t\"Boutique\",\r\n \"category.BU\":\t\t\"Bungalow\",\r\n \"category.CA\":\t\t\"Castello\",\r\n \"category.CAM\":\t\t\"CAM\",\r\n \"category.CB\":\t\t\"Capanna\",\r\n \"category.CC\":\t\t\"Casa nella Grotta\",\r\n \"category.CE\":\t\t\"Categoria Speciale\",\r\n \"category.CH\":\t\t\"Guest House\",\r\n \"category.CM\":\t\t\"Complesso rurale\",\r\n \"category.CO\":\t\t\"Fattoria\",\r\n \"category.CP\":\t\t\"Campeggio\",\r\n \"category.CR\":\t\t\"Casa Rurale\",\r\n \"category.CS\":\t\t\"Casa Rurale Con SPA\",\r\n \"category.CT\":\t\t\"Centro Turismo Rurale\",\r\n \"category.Cz\":\t\t\"Cz\",\r\n \"category.FO\":\t\t\"Fonda\",\r\n \"category.H1\":\t\t\"Ostello *\",\r\n \"category.H2\":\t\t\"Ostello **\",\r\n \"category.HO\":\t\t\"Ostello\",\r\n \"category.HP\":\t\t\"Locanda\",\r\n \"category.HR\":\t\t\"Hotel Rurale\",\r\n \"category.HS\":\t\t\"Hotel Con SPA\",\r\n \"category.HT\":\t\t\"Hotel\",\r\n \"category.IN\":\t\t\"No Disponible\",\r\n \"category.LO\":\t\t\"Casetta\",\r\n \"category.MH\":\t\t\"Mini Hotel\",\r\n \"category.MO\":\t\t\"Monastero\",\r\n \"category.MT\":\t\t\"Motel\",\r\n \"category.PA\":\t\t\"Ostello\",\r\n \"category.PE\":\t\t\"Pensione\",\r\n \"category.PENDI\":\t\"Pendi\",\r\n \"category.PO\":\t\t\"Pousada\",\r\n \"category.PR\":\t\t\"Posada Real\",\r\n \"category.RA\":\t\t\"RA\",\r\n \"category.RE\":\t\t\"Residenziale\",\r\n \"category.RS\":\t\t\"Hotel Rurale Categoria Superiore\",\r\n \"category.RT\":\t\t\"Resort\",\r\n \"category.ST\":\t\t\"Standard\",\r\n \"category.TU\":\t\t\"Turista\",\r\n \"category.TUS\":\t\t\"Turista Superiore\",\r\n \"category.VI\":\t\t\"Villa\",\r\n \"category.VV\":\t\t\"Case Vacanze\",\r\n\r\n \"package.Add\": \"Aggiungi una esperienza\",\r\n \"package.Selected\": \"SELEZIONATO\",\r\n \"package.Select\": \"SELEZIONA\",\r\n \"package.Book\": \"Prenota\",\r\n\r\n \"availability.NoResults\": \"Non abbiamo trovato disponibilitá, ritenta con un'altra ricerca.\",\r\n\r\n \"availability.orderBy.Recommended\": \"Raccomandato\",\r\n \"availability.orderBy.Price\": \"Prezzo\",\r\n \"availability.orderBy.Category\": \"Categoria\",\r\n }\r\n}\r\n","export default {\r\n translation: {\r\n \"send_by_email.message_sent_1\": \"Feil ved sending av e-post\",\r\n \"send_by_email.message_sent_0\": \"E-post sendt\",\r\n \"send_by_email.email-placeholder\": \"Din e-post\",\r\n \"send_by_email.message-placeholder\": \"skriv en melding\",\r\n \"send_by_email.title\": \"Send via e-post\",\r\n \"send_by_email.button\": \"Sende\", \r\n\r\n \"map.open-button\": \"Se kart\",\r\n \r\n \r\n \"hotel_blocking_error\": \"Feil ved å opprette reservasjonen med dette hotellet\",\r\n \"hotel_blocking_error_button\": \"Bestill annet hotell\",\r\n\r\n \"filters.filters\": \"Filter\",\r\n \"resultDeal.totalPriceText\": \"Total pris\",\r\n\r\n \"resultDeal.roomTypeTitle\": \"type rom\",\r\n \"resultDeal.changeRoomTitle\": \"endre rom\",\r\n \"resultDeal.changeRoomsTitle\": \"endre rom\",\r\n \"resultDistribution.roomsQuantity\": \"(__num__ flere rom)\",\r\n\r\n\r\n \"hotel_blocking.message\": \"Vi lager din reservasjon...\",\r\n\r\n \"hotel_details_not_available\": \"Detaljer ikke tilgjengelig\", \r\n \"distributions.up_to_x_person\": \"Opptil __num__ personer\",\r\n\r\n \"hotel_details.description\": \"Beskrivelse\",\r\n \"hotel_details.map\": \"Kart\",\r\n \"hotel_details.reviews\": \"Anmeldelser\",\r\n \"hotel_details.CheckIn\": \"Ankomst\",\r\n \"hotel_details.CheckOut\": \"Permisjon\", \r\n \"hotel_details.FacilitiesTitle\": \"Utstyr\", \r\n \"canariasComments.title\": \"Vurderinger Canarias.com\", \r\n \"canariasComments.rateCleaning\": \"Rengjøring\",\r\n \"canariasComments.rateDreamQuality\": \"Søvnkvalitet\",\r\n \"canariasComments.rateDrinkingSelection\": \"Utvalg av drikkevarer\",\r\n \"canariasComments.rateFood\": \"Mat\",\r\n \"canariasComments.rateLocation\": \"Plassering\",\r\n \"canariasComments.rateQualityPriceRelation\": \"Valuta for pengene\",\r\n \"canariasComments.rateRooms\": \"Soverom\",\r\n \"canariasComments.rateService\": \"Service\",\r\n \"canariasComments.resumeTitle\": \"Scorer Canarias.com\",\r\n \"canariasComments.numberOfComments\": \"Basert på __num__ vurderinger\", \r\n \"canariasComments.fromUser\": \"av\", \r\n \"canariasComments.fromPlace\": \"fra\", \r\n \"canariasComments.trip_type_1\": \"Forretningsreise\", \r\n \"canariasComments.trip_type_2\": \"Reise i par\",\r\n \"canariasComments.trip_type_3\": \"Familie reise\",\r\n \"canariasComments.trip_type_4\": \"Reise av venner\",\r\n \"canariasComments.trip_type_5\": \"Turen av kabal\",\r\n\r\n \"TripadvisorComments.title\": \"Anmeldelser TripAdvisor\", \r\n \"TripadvisorComments.resumeTitle\": \"Scores TripAdvisor\", \r\n \"TripadvisorComments.readMore\": \"Les mer\", \r\n \"TripadvisorComments.NumerOfComments\": \"Basert på __num__ vurderinger\", \r\n\r\n \"TripadvisorComments.rate_value\": \"Valuta for pengene\", \r\n \"TripadvisorComments.rate_cleanliness\": \"Rengjøring\", \r\n \"TripadvisorComments.rate_sleep\": \"Søvnkvalitet\", \r\n \"TripadvisorComments.rate_service\": \"Service\", \r\n \"TripadvisorComments.rate_location\": \"Plassering\", \r\n \"TripadvisorComments.rate_room\": \"Soverom\", \r\n \r\n \"TripadvisorComments.TripType\": \"Type tur\", \r\n \"TripadvisorComments.NULL\": \"n.d.\", \r\n \"TripadvisorComments.business\": \"For forretninger\", \r\n \"TripadvisorComments.couples\": \"I par\", \r\n \"TripadvisorComments.family\": \"I familien\", \r\n \"TripadvisorComments.friends\": \"Med venner\", \r\n \"TripadvisorComments.solo\": \"Ensom\", \r\n\r\n \"RoomNotesModalInfo\": \"Info\",\r\n \"search_box.horizontal_label_place\": \"Use our Hotel finder to find your perfect hotel\",\r\n \"search_box.label_place\": \"Skriv inn et hotell, en by...\",\r\n \"search_box.place_placeholder\": \"Skriv inn ditt hotell eller destinasjon\",\r\n \"search_box.label_pickup_date\": \"Påmeldingsfrist\",\r\n \"search_box.label_dropoff_date\": \"Avgangsdato\",\r\n \"search_box.label_room_and_people\": \"Antall rom og personer\",\r\n \"search_box.search_button_text\": \"Søke\",\r\n \"search_box.room_selection.confirm_button_text\": \"Bekrefte\",\r\n \"search_box.room_selection.adult\": \"Voksen\", \r\n \"search_box.room_selection.adults\": \"Voksne\",\r\n \"search_box.room_selection.child\": \"Barn\", \r\n \"search_box.room_selection.children\": \"Barn\",\r\n \"search_box.room_selection.childrenAges\": \"Barn eldre\",\r\n \"search_box.room_selection.room\": \"Rom\", \r\n \"search_box.room_selection.rooms\": \"Rom\", \r\n \"search_box.place\": \"Sted\", \r\n \"search_box.hotels\": \"Hoteller\", \r\n \"search_box.errors.errors_title\": \"Det er følgende feil:\", \r\n \"search_box.errors.select_place\": \"Velg et sted på et hotell\", \r\n \"search_box.errors.wrong_start_date\": \"Pickup-datoen er ikke gyldig\", \r\n \"search_box.errors.wrong_end_date\": \"Drop-out dato er ikke gyldig\", \r\n \"search_box.errors.wrong_distributions\": \"Fordelingen er ikke gyldig\",\r\n \"filters.change_search\": \"Endre søk\", \r\n \"filters.main_title\": \"Filtrer etter navn\",\r\n \"filters.filter_by_category\": \"Filtrer etter kategori\",\r\n \"filters.filter_by_deal\": \"Filtrer etter avtale\",\r\n \"filters.filter_by_facilities\": \"Filtrer etter fasiliteter\",\r\n \"filters.filter_by_price\": \"Filtrer etter pris\",\r\n \"filters.button_filter_text\": \"Filter\",\r\n \"filters.button_remove_filter_text\": \"Filters verwijderen\",\r\n \"deal.button_select_text\": \"Å velge\",\r\n \"deal.button_modify_text\": \"Eendre\", \r\n \"deal_selection.button_select_text\": \"Å velge\",\r\n \"category.0\":\t\t\"Ikke tilgjengelig\",\r\n \"category.0L\":\t\t\"Ikke tilgjengelig\",\r\n \"category.1\":\t\t\"1\",\r\n \"category.10\":\t\t\"Luksus\",\r\n \"category.11\":\t\t\"Tilbud\",\r\n \"category.13\":\t\t\"13\",\r\n \"category.1L\":\t\t\"1L\",\r\n \"category.2\":\t\t\"2\",\r\n \"category.20\":\t\t\"3L\",\r\n \"category.23\":\t\t\"3\",\r\n \"category.26\":\t\t\"26\",\r\n \"category.28\":\t\t\"28\",\r\n \"category.29\":\t\t\"29\",\r\n \"category.2L\":\t\t\"2L\",\r\n \"category.3\":\t\t\"3\",\r\n \"category.30\":\t\t\"30\",\r\n \"category.31\":\t\t\"31\",\r\n \"category.32\":\t\t\"32\",\r\n \"category.34\":\t\t\"34\",\r\n \"category.36\":\t\t\"36\",\r\n \"category.3L\":\t\t\"3L\",\r\n \"category.4\":\t\t\"4\",\r\n \"category.40\":\t\t\"40\",\r\n \"category.4L\":\t\t\"4L\",\r\n \"category.5\":\t\t\"5\",\r\n \"category.5L\":\t\t\"5L\",\r\n \"category.8\":\t\t\"Første\",\r\n \"category.93\":\t\t\"93\",\r\n \"category.A\":\t\t\"A\",\r\n \"category.AB\":\t\t\"Vandrer\",\r\n \"category.AGRO\":\t\"Agroturisme\",\r\n \"category.Ak\":\t\t\"Toeristische appartement\",\r\n \"category.AP\":\t\t\"Apart\",\r\n \"category.AR\":\t\t\"Rural leilighet\",\r\n \"category.AT\":\t\t\"Leilighet\",\r\n \"category.BA\":\t\t\"Spa\",\r\n \"category.BB\":\t\t\"BB\",\r\n \"category.BO\":\t\t\"Boutique\",\r\n \"category.BU\":\t\t\"Bungalow\",\r\n \"category.CA\":\t\t\"Slott\",\r\n \"category.CAM\":\t\t\"CAM\",\r\n \"category.CB\":\t\t\"Hytta\",\r\n \"category.CC\":\t\t\"Hulehus\",\r\n \"category.CE\":\t\t\"Spesiell kategori\",\r\n \"category.CH\":\t\t\"Guest House\",\r\n \"category.CM\":\t\t\"Rural Complex\",\r\n \"category.CO\":\t\t\"Våningshuset\",\r\n \"category.CP\":\t\t\"Camping\",\r\n \"category.CR\":\t\t\"Rural hus\",\r\n \"category.CS\":\t\t\"Landlig hus med SPA\",\r\n \"category.CT\":\t\t\"Rural Tourism Center\",\r\n \"category.Cz\":\t\t\"Cz\",\r\n \"category.FO\":\t\t\"Vertshuset\",\r\n \"category.H1\":\t\t\"Hostel *\",\r\n \"category.H2\":\t\t\"Hostel **\",\r\n \"category.HO\":\t\t\"Hostel\",\r\n \"category.HP\":\t\t\"Gjestgiveri\",\r\n \"category.HR\":\t\t\"Rural Hotel\",\r\n \"category.HS\":\t\t\"Hotell med SPA\",\r\n \"category.HT\":\t\t\"Hotel\",\r\n \"category.IN\":\t\t\"Ikke Tilgjengelig\",\r\n \"category.LO\":\t\t\"Lodge\",\r\n \"category.MH\":\t\t\"Mini Hotel\",\r\n \"category.MO\":\t\t\"Kloster\",\r\n \"category.MT\":\t\t\"Motell\",\r\n \"category.PA\":\t\t\"Vandrer\",\r\n \"category.PE\":\t\t\"Pension\",\r\n \"category.PENDI\":\t\"Pensjon\",\r\n \"category.PO\":\t\t\"Pousada\",\r\n \"category.PR\":\t\t\"Posada Real\",\r\n \"category.RA\":\t\t\"RA\",\r\n \"category.RE\":\t\t\"Bolig\",\r\n \"category.RS\":\t\t\"Superior kategori Rural Hotel\",\r\n \"category.RT\":\t\t\"Resort\",\r\n \"category.ST\":\t\t\"Standard\",\r\n \"category.TU\":\t\t\"Turist\",\r\n \"category.TUS\":\t\t\"Superior Turist\",\r\n \"category.VI\":\t\t\"Villa\",\r\n \"category.VV\":\t\t\"Feriehus\",\r\n\r\n \"package.Add\": \"Voeg een ervaring toe\",\r\n \"package.Selected\": \"GESELECTEERD\",\r\n \"package.Select\": \"SELECT\",\r\n \"package.Book\": \"Reserve\",\r\n\r\n \"availability.NoResults\": \"We hebben geen beschikbaarheid gevonden. Verander uw zoekopdracht en probeer opnieuw.\",\r\n\r\n \"availability.orderBy.Recommended\": \"Aanbevolen\",\r\n \"availability.orderBy.Price\": \"Prijs\",\r\n \"availability.orderBy.Category\": \"Categorie\",\r\n }\r\n}\r\n","export default {\r\n translation: {\r\n \"send_by_email.message_sent_1\": \"Erro ao enviar email\",\r\n \"send_by_email.message_sent_0\": \"Email enviado\",\r\n \"send_by_email.email-placeholder\": \"Seu email\",\r\n \"send_by_email.message-placeholder\": \"escreva uma mensagem\",\r\n \"send_by_email.title\": \"Enviar por email\",\r\n \"send_by_email.button\": \"Enviar\", \r\n\r\n \"map.open-button\": \"Ver Mapa\",\r\n\r\n \"hotel_blocking_error\": \"Erro ao criar a reserva com este hotel\",\r\n \"hotel_blocking_error_button\": \"Reservar outro hotel\",\r\n\r\n \"filters.filters\": \"Filtrar\",\r\n \"resultDeal.totalPriceText\": \"Preço total\",\r\n\r\n \"resultDeal.roomTypeTitle\": \"tipo de habitação\",\r\n \"resultDeal.changeRoomTitle\": \"mudar de quarto\",\r\n \"resultDeal.changeRoomsTitle\": \"mudar de quarto\",\r\n \"resultDistribution.roomsQuantity\": \"(Mais __num__ quartos)\",\r\n\r\n\r\n \"hotel_blocking.message\": \"Estamos criando sua reserva...\",\r\n\r\n \"hotel_details_not_available\": \"Detalhes não disponíveis\", \r\n \"distributions.up_to_x_person\": \"Até __num__ pessoas\",\r\n\r\n \"hotel_details.description\": \"Descrição\",\r\n \"hotel_details.map\": \"Mapa\",\r\n \"hotel_details.reviews\": \"Rever\",\r\n \"hotel_details.CheckIn\": \"Chegada\",\r\n \"hotel_details.CheckOut\": \"Sair\", \r\n \"hotel_details.FacilitiesTitle\": \"Equipamento\", \r\n \"canariasComments.title\": \"Avaliações Canarias.com\", \r\n \"canariasComments.rateCleaning\": \"Limpeza\",\r\n \"canariasComments.rateDreamQuality\": \"Qualidade do sono\",\r\n \"canariasComments.rateDrinkingSelection\": \"Seleção de bebidas\",\r\n \"canariasComments.rateFood\": \"Comida\",\r\n \"canariasComments.rateLocation\": \"Localização\",\r\n \"canariasComments.rateQualityPriceRelation\": \"Valor pelo dinheiro\",\r\n \"canariasComments.rateRooms\": \"Quartos de dormir\",\r\n \"canariasComments.rateService\": \"Serviço\",\r\n \"canariasComments.resumeTitle\": \"Pontuações Canarias.com\",\r\n \"canariasComments.numberOfComments\": \"Com base em __num__ resenhas\", \r\n \"canariasComments.fromUser\": \"por\", \r\n \"canariasComments.fromPlace\": \"de\", \r\n \"canariasComments.trip_type_1\": \"Viagem de negócios\", \r\n \"canariasComments.trip_type_2\": \"Viajar em casal\",\r\n \"canariasComments.trip_type_3\": \"Viagens em família\",\r\n \"canariasComments.trip_type_4\": \"Viagem de amigos\",\r\n \"canariasComments.trip_type_5\": \"Viagem de paciência\",\r\n\r\n \"TripadvisorComments.title\": \"Comentários TripAdvisor\", \r\n \"TripadvisorComments.resumeTitle\": \"Pontuações TripAdvisor\", \r\n \"TripadvisorComments.readMore\": \"Consulte Mais informação\", \r\n \"TripadvisorComments.NumerOfComments\": \"Com base em __num__ resenhas\", \r\n\r\n \"TripadvisorComments.rate_value\": \"Valor pelo dinheiro\", \r\n \"TripadvisorComments.rate_cleanliness\": \"Limpeza\", \r\n \"TripadvisorComments.rate_sleep\": \"Qualidade do sono\", \r\n \"TripadvisorComments.rate_service\": \"Serviço\", \r\n \"TripadvisorComments.rate_location\": \"Localização\", \r\n \"TripadvisorComments.rate_room\": \"Quartos de dormir\", \r\n \r\n \"TripadvisorComments.TripType\": \"Tipo de viagem\", \r\n \"TripadvisorComments.NULL\": \"n.d.\", \r\n \"TripadvisorComments.business\": \"Para negócios\", \r\n \"TripadvisorComments.couples\": \"Em casal\", \r\n \"TripadvisorComments.family\": \"Em família\", \r\n \"TripadvisorComments.friends\": \"Com amigos\", \r\n \"TripadvisorComments.solo\": \"Solitário\", \r\n\r\n \"RoomNotesModalInfo\": \"Info\",\r\n \"search_box.horizontal_label_place\": \"Use our Hotel finder to find your perfect hotel\",\r\n \"search_box.label_place\": \"Digite um hotel, cidade ...\",\r\n \"search_box.place_placeholder\": \"Digite seu hotel ou destino\",\r\n \"search_box.label_pickup_date\": \"Data de entrada\",\r\n \"search_box.label_dropoff_date\": \"Departure date\",\r\n \"search_box.label_room_and_people\": \"No. de quartos e pessoas\",\r\n \"search_box.search_button_text\": \"Procurar\",\r\n \"search_box.room_selection.confirm_button_text\": \"Confirme\",\r\n \"search_box.room_selection.adult\": \"Adulto\", \r\n \"search_box.room_selection.adults\": \"Adultos\",\r\n \"search_box.room_selection.child\": \"Criança\", \r\n \"search_box.room_selection.children\": \"Crianças\",\r\n \"search_box.room_selection.childrenAges\": \"Crianças com idades\",\r\n \"search_box.room_selection.room\": \"Sala\", \r\n \"search_box.room_selection.rooms\": \"Quartos\", \r\n \"search_box.place\": \"Lugar\", \r\n \"search_box.hotels\": \"Hotéis\", \r\n \"search_box.errors.errors_title\": \"Existem os seguintes erros:\", \r\n \"search_box.errors.select_place\": \"Selecione um lugar de um hotel\", \r\n \"search_box.errors.wrong_start_date\": \"A data de retirada não é válida\", \r\n \"search_box.errors.wrong_end_date\": \"A data de entrega não é válida\", \r\n \"search_box.errors.wrong_distributions\": \"A distribuição não é válida\",\r\n \"filters.main_title\": \"Filtrar por nome\",\r\n \"filters.filter_by_category\": \"Filtrar por Categoria\",\r\n \"filters.filter_by_deal\": \"Filtrar por transação\",\r\n \"filters.filter_by_facilities\": \"Filtrar por Instalações\",\r\n \"filters.filter_by_price\": \"Filtrar por Preço\",\r\n \"filters.change_search\": \"Modificar Pesquisa\", \r\n \"filters.button_filter_text\": \"Filtro\",\r\n \"filters.button_remove_filter_text\": \"Remover filtros\",\r\n \"deal.button_select_text\": \"Selecione\",\r\n \"deal.button_modify_text\": \"Modificar\", \r\n \"deal_selection.button_select_text\": \"Selecione\",\r\n\r\n \"category.0\":\t\t\"Não disponível\",\r\n \"category.0L\":\t\t\"Não disponível\",\r\n \"category.1\":\t\t\"1\",\r\n \"category.10\":\t\t\"Luxo\",\r\n \"category.11\":\t\t\"Oferta\",\r\n \"category.13\":\t\t\"13\",\r\n \"category.1L\":\t\t\"1L\",\r\n \"category.2\":\t\t\"2\",\r\n \"category.20\":\t\t\"3L\",\r\n \"category.23\":\t\t\"3\",\r\n \"category.26\":\t\t\"26\",\r\n \"category.28\":\t\t\"28\",\r\n \"category.29\":\t\t\"29\",\r\n \"category.2L\":\t\t\"2L\",\r\n \"category.3\":\t\t\"3\",\r\n \"category.30\":\t\t\"30\",\r\n \"category.31\":\t\t\"31\",\r\n \"category.32\":\t\t\"32\",\r\n \"category.34\":\t\t\"34\",\r\n \"category.36\":\t\t\"36\",\r\n \"category.3L\":\t\t\"3L\",\r\n \"category.4\":\t\t\"4\",\r\n \"category.40\":\t\t\"40\",\r\n \"category.4L\":\t\t\"4L\",\r\n \"category.5\":\t\t\"5\",\r\n \"category.5L\":\t\t\"5L\",\r\n \"category.8\":\t\t\"Primeiro\",\r\n \"category.93\":\t\t\"93\",\r\n \"category.A\":\t\t\"A\",\r\n \"category.AB\":\t\t\"Abrigo\",\r\n \"category.AGRO\":\t\"Agroturismo\",\r\n \"category.Ak\":\t\t\"Apartamento Uso Turístico\",\r\n \"category.AP\":\t\t\"Aparthotel\",\r\n \"category.AR\":\t\t\"Apartamento Rural\",\r\n \"category.AT\":\t\t\"Apartamento\",\r\n \"category.BA\":\t\t\"Spa\",\r\n \"category.BB\":\t\t\"BB\",\r\n \"category.BO\":\t\t\"Boutique\",\r\n \"category.BU\":\t\t\"Bungalow\",\r\n \"category.CA\":\t\t\"Castle\",\r\n \"category.CAM\":\t\t\"CAM\",\r\n \"category.CB\":\t\t\"Cabine\",\r\n \"category.CC\":\t\t\"Casas da caverna\",\r\n \"category.CE\":\t\t\"Categoria especial\",\r\n \"category.CH\":\t\t\"Casa de Hóspedes\",\r\n \"category.CM\":\t\t\"Complexo Rural\",\r\n \"category.CO\":\t\t\"Cortijo\",\r\n \"category.CP\":\t\t\"Camping\",\r\n \"category.CR\":\t\t\"Casa Rural\",\r\n \"category.CS\":\t\t\"Casa Rural com SPA\",\r\n \"category.CT\":\t\t\"Centro de Turismo Rural\",\r\n \"category.Cz\":\t\t\"Cz\",\r\n \"category.FO\":\t\t\"Fonda\",\r\n \"category.H1\":\t\t\"Hostal *\",\r\n \"category.H2\":\t\t\"Hostal **\",\r\n \"category.HO\":\t\t\"Hostal\",\r\n \"category.HP\":\t\t\"Hospedería\",\r\n \"category.HR\":\t\t\"Hotel Rural\",\r\n \"category.HS\":\t\t\"Hotel Con SPA\",\r\n \"category.HT\":\t\t\"Hotel\",\r\n \"category.IN\":\t\t\"Não disponível\",\r\n \"category.LO\":\t\t\"Lodge\",\r\n \"category.MH\":\t\t\"Mini Hotel\",\r\n \"category.MO\":\t\t\"Monasterio\",\r\n \"category.MT\":\t\t\"Motel\",\r\n \"category.PA\":\t\t\"Parador\",\r\n \"category.PE\":\t\t\"Pensão\",\r\n \"category.PENDI\":\t\"Pendi\",\r\n \"category.PO\":\t\t\"Pousada\",\r\n \"category.PR\":\t\t\"Posada Real\",\r\n \"category.RA\":\t\t\"RA\",\r\n \"category.RE\":\t\t\"Residencial\",\r\n \"category.RS\":\t\t\"Categoria Superior Hotel Rural\",\r\n \"category.RT\":\t\t\"Resort\",\r\n \"category.ST\":\t\t\"Standard\",\r\n \"category.TU\":\t\t\"Turista\",\r\n \"category.TUS\":\t\t\"Turista Superior\",\r\n \"category.VI\":\t\t\"Villa\",\r\n \"category.VV\":\t\t\"Casas de Férias\",\r\n\r\n \"package.Add\": \"Adicione uma experiência\",\r\n \"package.Selected\": \"SELECIONADO\",\r\n \"package.Select\": \"SELECIONAR\",\r\n \"package.Book\": \"Livro\",\r\n\r\n \"availability.NoResults\": \"Não encontramos disponibilidade. Tente de novo, modificando a sua pesquisa.\",\r\n\r\n \"availability.orderBy.Recommended\": \"Recomendado\",\r\n \"availability.orderBy.Price\": \"Preço\",\r\n \"availability.orderBy.Category\": \"Categoria\",\r\n }\r\n}\r\n","export default {\r\n translation: {\r\n \"send_by_email.message_sent_1\": \"Ошибка при отправке электронной почты\",\r\n \"send_by_email.message_sent_0\": \"Email отправлено\",\r\n \"send_by_email.email-placeholder\": \"Ваш электронный адрес\",\r\n \"send_by_email.message-placeholder\": \"написать сообщение\",\r\n \"send_by_email.title\": \"Отправить по электронной почте\",\r\n \"send_by_email.button\": \"послать\", \r\n\r\n \"map.open-button\": \"Посмотреть карту\",\r\n\r\n \"hotel_blocking_error\": \"Ошибка при создании бронирования с этим отелем\",\r\n \"hotel_blocking_error_button\": \"Забронировать другой отель\",\r\n\r\n \"filters.filters\": \"фильтр\",\r\n \"resultDeal.totalPriceText\": \"Общая стоимость\",\r\n\r\n \"resultDeal.roomTypeTitle\": \"тип комнаты\",\r\n \"resultDeal.changeRoomTitle\": \"раздевалка\",\r\n \"resultDeal.changeRoomsTitle\": \"раздевалки\",\r\n \"resultDistribution.roomsQuantity\": \"(Еще __num__ комнат)\",\r\n\r\n \"hotel_blocking.message\": \"Мы создаем ваше бронирование...\",\r\n\r\n \"hotel_details_not_available\": \"детали не доступны\", \r\n \"distributions.up_to_x_person\": \"До __num__ человек\",\r\n\r\n \"hotel_details.description\": \"Описание\",\r\n \"hotel_details.map\": \"карта\",\r\n \"hotel_details.reviews\": \"Отзывы\",\r\n \"hotel_details.CheckIn\": \"прибытие\",\r\n \"hotel_details.CheckOut\": \"Покидать\", \r\n \"hotel_details.FacilitiesTitle\": \"Оборудование\", \r\n \"canariasComments.title\": \"Отзывы Canarias.com\", \r\n \"canariasComments.rateCleaning\": \"очищающий\",\r\n \"canariasComments.rateDreamQuality\": \"Качество сна\",\r\n \"canariasComments.rateDrinkingSelection\": \"Выбор напитков\",\r\n \"canariasComments.rateFood\": \"питание\",\r\n \"canariasComments.rateLocation\": \"Место нахождения\",\r\n \"canariasComments.rateQualityPriceRelation\": \"Цена денег\",\r\n \"canariasComments.rateRooms\": \"спальни\",\r\n \"canariasComments.rateService\": \"обслуживание\",\r\n \"canariasComments.resumeTitle\": \"Результаты Canarias.com\",\r\n \"canariasComments.numberOfComments\": \"На основании __num__ отзывов\", \r\n \"canariasComments.fromUser\": \"\", \r\n \"canariasComments.fromPlace\": \"из\", \r\n \"canariasComments.trip_type_1\": \"Командировка\", \r\n \"canariasComments.trip_type_2\": \"Путешествие в паре\",\r\n \"canariasComments.trip_type_3\": \"Семейное путешествие\",\r\n \"canariasComments.trip_type_4\": \"Путешествие друзей\",\r\n \"canariasComments.trip_type_5\": \"Пасьянс Путешествие\",\r\n\r\n \"TripadvisorComments.title\": \"Отзывы TripAdvisor\", \r\n \"TripadvisorComments.resumeTitle\": \"Результаты TripAdvisor\", \r\n \"TripadvisorComments.readMore\": \"Прочитайте больше\", \r\n \"TripadvisorComments.NumerOfComments\": \"На основании __num__ отзывов\", \r\n\r\n \"TripadvisorComments.rate_value\": \"Цена денег\", \r\n \"TripadvisorComments.rate_cleanliness\": \"очищающий\", \r\n \"TripadvisorComments.rate_sleep\": \"Качество сна\", \r\n \"TripadvisorComments.rate_service\": \"обслуживание\", \r\n \"TripadvisorComments.rate_location\": \"Место нахождения\", \r\n \"TripadvisorComments.rate_room\": \"спальни\", \r\n \r\n \"TripadvisorComments.TripType\": \"Тип поездки\", \r\n \"TripadvisorComments.NULL\": \"n.d.\", \r\n \"TripadvisorComments.business\": \"Для бизнеса\", \r\n \"TripadvisorComments.couples\": \"В паре\", \r\n \"TripadvisorComments.family\": \"В семье\", \r\n \"TripadvisorComments.friends\": \"С друзьями\", \r\n \"TripadvisorComments.solo\": \"Одинокий\", \r\n\r\n \"RoomNotesModalInfo\": \"Информация\",\r\n \"search_box.horizontal_label_place\": \"Use our Hotel finder to find your perfect hotel\",\r\n \"search_box.label_place\": \"Введите отель, город ...\",\r\n \"search_box.place_placeholder\": \"Введите свой отель или пункт назначения\",\r\n \"search_box.label_pickup_date\": \"Дата поступления\",\r\n \"search_box.label_dropoff_date\": \"Дата отбытия\",\r\n \"search_box.label_room_and_people\": \"Количество комнат и людей\",\r\n \"search_box.search_button_text\": \"Поиск\",\r\n \"search_box.room_selection.confirm_button_text\": \"подтвердить\",\r\n \"search_box.room_selection.adult\": \"для взрослых\", \r\n \"search_box.room_selection.adults\": \"Взрослые\",\r\n \"search_box.room_selection.child\": \"ребенок\", \r\n \"search_box.room_selection.children\": \"Дети\",\r\n \"search_box.room_selection.childrenAges\": \"Возраст детей\",\r\n \"search_box.room_selection.room\": \"Номер\", \r\n \"search_box.room_selection.rooms\": \"Номера\", \r\n \"search_box.place\": \"Место\", \r\n \"search_box.hotels\": \"Отели\", \r\n \"search_box.errors.errors_title\": \"Есть следующие ошибки:\", \r\n \"search_box.errors.select_place\": \"Выберите место в отеле\", \r\n \"search_box.errors.wrong_start_date\": \"Дата получения не действительна\", \r\n \"search_box.errors.wrong_end_date\": \"Дата сдачи не действительна\", \r\n \"search_box.errors.wrong_distributions\": \"Распределение недействительно\",\r\n \"filters.main_title\": \"Фильтровать по имени\",\r\n \"filters.filter_by_category\": \"Фильтровать по категории\",\r\n \"filters.filter_by_deal\": \"Фильтр по сделке\",\r\n \"filters.filter_by_facilities\": \"Фильтр по объектам\",\r\n \"filters.filter_by_price\": \"Фильтровать по цене\",\r\n \"filters.button_filter_text\": \"Фильтр\",\r\n \"filters.button_remove_filter_text\": \"Очистить фильтры\",\r\n \"filters.change_search\": \"Изменить поиск\", \r\n \"deal.button_select_text\": \"Выбрать\",\r\n \"deal.button_modify_text\": \"изменять\", \r\n \"deal_selection.button_select_text\": \"Выбрать\",\r\n\r\n \"category.0\":\t\t\"Не доступно\",\r\n \"category.0L\":\t\t\"Не доступно\",\r\n \"category.1\":\t\t\"1\",\r\n \"category.10\":\t\t\"Pоскошь\",\r\n \"category.11\":\t\t\"предложение\",\r\n \"category.13\":\t\t\"13\",\r\n \"category.1L\":\t\t\"1L\",\r\n \"category.2\":\t\t\"2\",\r\n \"category.20\":\t\t\"3L\",\r\n \"category.23\":\t\t\"3\",\r\n \"category.26\":\t\t\"26\",\r\n \"category.28\":\t\t\"28\",\r\n \"category.29\":\t\t\"29\",\r\n \"category.2L\":\t\t\"2L\",\r\n \"category.3\":\t\t\"3\",\r\n \"category.30\":\t\t\"30\",\r\n \"category.31\":\t\t\"31\",\r\n \"category.32\":\t\t\"32\",\r\n \"category.34\":\t\t\"34\",\r\n \"category.36\":\t\t\"36\",\r\n \"category.3L\":\t\t\"3L\",\r\n \"category.4\":\t\t\"4\",\r\n \"category.40\":\t\t\"40\",\r\n \"category.4L\":\t\t\"4L\",\r\n \"category.5\":\t\t\"5\",\r\n \"category.5L\":\t\t\"5L\",\r\n \"category.8\":\t\t\"первый\",\r\n \"category.93\":\t\t\"93\",\r\n \"category.A\":\t\t\"A\",\r\n \"category.AB\":\t\t\"общежитие\",\r\n \"category.AGRO\":\t\"агротуризм\",\r\n \"category.Ak\":\t\t\"Туристическая квартира\",\r\n \"category.AP\":\t\t\"Апарт-отель\",\r\n \"category.AR\":\t\t\"Сельская квартира\",\r\n \"category.AT\":\t\t\"квартира\",\r\n \"category.BA\":\t\t\"спа\",\r\n \"category.BB\":\t\t\"BB\",\r\n \"category.BO\":\t\t\"бутик\",\r\n \"category.BU\":\t\t\"бунгало\",\r\n \"category.CA\":\t\t\"замок\",\r\n \"category.CAM\":\t\t\"CAM\",\r\n \"category.CB\":\t\t\"кабина\",\r\n \"category.CC\":\t\t\"Пещерные дома\",\r\n \"category.CE\":\t\t\"Специальная категория\",\r\n \"category.CH\":\t\t\"Гостевой Дом\",\r\n \"category.CM\":\t\t\"Сельский Комплекс\",\r\n \"category.CO\":\t\t\"дом\",\r\n \"category.CP\":\t\t\"кемпинг\",\r\n \"category.CR\":\t\t\"Сельский дом\",\r\n \"category.CS\":\t\t\"Сельский дом со СПА\",\r\n \"category.CT\":\t\t\"Центр сельского туризма\",\r\n \"category.Cz\":\t\t\"Cz\",\r\n \"category.FO\":\t\t\"гостиница\",\r\n \"category.H1\":\t\t\"общежитие *\",\r\n \"category.H2\":\t\t\"общежитие **\",\r\n \"category.HO\":\t\t\"общежитие\",\r\n \"category.HP\":\t\t\"гостиница\",\r\n \"category.HR\":\t\t\"Сельская Гостиница\",\r\n \"category.HS\":\t\t\"Отель Со СПА\",\r\n \"category.HT\":\t\t\"отель\",\r\n \"category.IN\":\t\t\"Не доступно\",\r\n \"category.LO\":\t\t\"домик\",\r\n \"category.MH\":\t\t\"Мини Отель\",\r\n \"category.MO\":\t\t\"монастырь\",\r\n \"category.MT\":\t\t\"мотель\",\r\n \"category.PA\":\t\t\"общежитие\",\r\n \"category.PE\":\t\t\"пенсия\",\r\n \"category.PENDI\":\t\"котловина\",\r\n \"category.PO\":\t\t\"Pousada\",\r\n \"category.PR\":\t\t\"Посада Реал\",\r\n \"category.RA\":\t\t\"RA\",\r\n \"category.RE\":\t\t\"жилой\",\r\n \"category.RS\":\t\t\"Отель высшей категории в сельской местности\",\r\n \"category.RT\":\t\t\"курорт\",\r\n \"category.ST\":\t\t\"стандарт\",\r\n \"category.TU\":\t\t\"турист\",\r\n \"category.TUS\":\t\t\"Улучшенный турист\",\r\n \"category.VI\":\t\t\"вилла\",\r\n \"category.VV\":\t\t\"Дома для отдыха\",\r\n\r\n \"package.Add\": \"Добавить опыт\",\r\n \"package.Selected\": \"ИЗБРАННЫЕ\",\r\n \"package.Select\": \"ВЫБРАТЬ\",\r\n \"package.Book\": \"резерв\",\r\n\r\n \"availability.NoResults\": \"Мы не нашли доступных отелей. Попробуйте еще раз, изменив параметры поиска.\",\r\n\r\n \"availability.orderBy.Recommended\": \"рекомендуемый\",\r\n \"availability.orderBy.Price\": \"цена\",\r\n \"availability.orderBy.Category\": \"категория\",\r\n }\r\n}\r\n","export const resultTypeZone = \"Destinos\"\r\nexport const resultTypeHotel = \"Hoteles\"\r\n\r\nexport const urls = {\r\n hotelResults: \"/hotels-results\",\r\n hotelBlocked: \"/hotel-blocked\",\r\n saveSearchFilter: \"/ReactReservation/save-search-filter\",\r\n sendResultByEmail: \"/ReactReservation/send-results-by-email\",\r\n hotelDetails: hotelUrl => `/hotel/${hotelUrl}`,\r\n searchByCoordinates: \"/api/availability-by-coordinates\",\r\n getHotelsByCoordinates: \"/api/hotels-by-coordinates\",\r\n availabiltyByHotelsId: \"/api/availability-by-hotels-id\"\r\n}\r\n\r\nexport const googleMapUrl = \"https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=AIzaSyDGsFaj339wkwoHbhoaoZcO-0kvFxjmuU8\"\r\n\r\n","\r\nclass SearchUtility{\r\n\r\n getParamsFromUrl(url){\r\n const urlParts = url && url.split('?')\r\n const params = urlParts && urlParts[1] && urlParts[1].split('&')\r\n \r\n return params || []\r\n }\r\n \r\n getParamFromUrl(paramName, url){\r\n const param = this.getParamsFromUrl(url).find(param => param && param.startsWith(`${paramName}=`))\r\n const paramValueName = param && param.split('=')\r\n return (paramValueName && paramValueName[1] ) || ''\r\n }\r\n}\r\n\r\nexport default new SearchUtility()","import React, { Component } from 'react'\r\nimport Autocomplete from 'react-autocomplete'\r\nimport styles from './HotelSearchInputPlace.module.css'\r\nimport SearchUtility from './../../utility/SearchUtility'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nimport { resultTypeZone, resultTypeHotel} from \"./../../utility/constants\"\r\n\r\n\r\nconst seachUrlByTerm = term => `https://www.canarias.com/core/search-zone-and-hotel?take=10&term=${term}`\r\n\r\n// este componente se connecta a la API de canarias.com para encortrar terminos buscado\r\n// le pasa el temino e recibe 2 tipos de resutlados: hoteles o destinos, que mostreran agrupados por tipo\r\n\r\nclass HotelSearchInputPlace extends Component {\r\n constructor(props){\r\n super(props)\r\n\r\n this.state = {\r\n term: props.selectedItem.name || '',\r\n lastTerm: '',\r\n loading: false,\r\n results: props.results || [] \r\n }\r\n\r\n this.requestTimer = null\r\n this.doSearch = this.doSearch.bind(this)\r\n this.isSearchedTerm = this.isSearchedTerm.bind(this)\r\n this.handleOnSelect = this.handleOnSelect.bind(this)\r\n this.handleOnChange = this.handleOnChange.bind(this)\r\n this.renderItem = this.renderItem.bind(this)\r\n this.renderMenu = this.renderMenu.bind(this)\r\n this.receivedResults = this.receivedResults.bind(this)\r\n\r\n }\r\n\r\n\r\n isSearchedTerm = (url, term) => decodeURI(SearchUtility.getParamFromUrl('term', url)) === this.state.term\r\n\r\n doSearch = () => {\r\n const me = this\r\n const searchedTerm = this.state.term.trim()\r\n if(this.state.lastTerm && this.state.lastTerm.indexOf(searchedTerm) > -1){ \r\n // si el termino es parte del anterion (se borrò in caracter) es inutil lanzar otra busqueda del termino\r\n this.setState({ loading: false})\r\n return \r\n } else this.setState({ lastTerm: searchedTerm})\r\n \r\n fetch(seachUrlByTerm(searchedTerm))\r\n .then(response => me.isSearchedTerm(response.url, searchedTerm) ? response.json() : null ) \r\n .then(data => me.receivedResults(data)) \r\n .catch(err => console.log(\"TO DO - Error \" + JSON.stringify(err)))\r\n }\r\n\r\n receivedResults = data => {\r\n if(data && data.length < 1) return\r\n\r\n // en los resultados hoteles y destino son mezclados, el buscador los muestras agrupados por tipo\r\n const zones = data.filter(item => item.type === resultTypeZone)\r\n const hotels = data.filter(item => item.type === resultTypeHotel)\r\n\r\n let results = []\r\n if(zones.length > 0){\r\n results.push({header: this.props.t(\"search_box.place\")})\r\n results = results.concat(zones)\r\n }\r\n if(hotels.length > 0){\r\n results.push({header: this.props.t(\"search_box.hotels\")})\r\n results = results.concat(hotels)\r\n }\r\n\r\n data && this.setState({ results, loading: false})\r\n }\r\n\r\n handleOnSelect = (value, item) => {\r\n this.setState({ term: value }) \r\n this.props.onSelected(item)\r\n }\r\n\r\n handleOnChange = (event, value) => {\r\n // Al escribir un carater hay una espera de 1 segundo antes de iniciar la busqueda.\r\n // Si alguien escribe lentamente evitamos hacer busquedas cuando todavia està escribiendo \r\n clearTimeout(this.requestTimer)\r\n this.requestTimer = setTimeout(this.doSearch, 1000)\r\n this.setState({term: value, loading: true})\r\n }\r\n\r\n renderItem = (item, isHighlighted) => \r\n item ? \r\n (item.header\r\n ?
\r\n {item.header}\r\n
\r\n :
\r\n {item.name}\r\n
\r\n ) : null\r\n \r\n\r\n renderMenu = (items, value) => \r\n
\r\n { value === '' ? null\r\n : this.state.loading ? items\r\n : items.length === 0 ? null\r\n : items\r\n }\r\n
\r\n\r\n \r\n renderIcons = () => this.state.loading ? : null\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.showLabel &&
{this.props.t(\"search_box.label_place\")}
} \r\n
\r\n item.name}\r\n onSelect={this.handleOnSelect}\r\n onChange={this.handleOnChange}\r\n renderItem={this.renderItem}\r\n renderMenu={this.renderMenu}\r\n isItemSelectable={item => item && !(item.header)}\r\n inputProps={{className: this.props.horizontal != \"true\" ? styles.input : styles.inputHorizontal, placeholder: this.props.placeholder, id: 'states-autocomplete', autoComplete: 'no'}}\r\n wrapperProps={{className: this.props.horizontal != \"true\" ? styles.inputWrapper : styles.inputWrapperHorizontal}}\r\n />\r\n {this.renderIcons()}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withTranslation()(HotelSearchInputPlace)\r\n\r\n\r\n\r\n\r\n\r\n","import React, { Component } from 'react'\r\nimport Popup from 'reactjs-popup'\r\nimport styled from 'styled-components'\r\n\r\n//import { RowTitle, TriggerLabel, PopupOpenButton, ChildrenAges, InputField, RoomRow, RoomRowItem, ChildrenAgesContainer, \r\n// ChildrenAgesTitle, PopupContent, ConfirmButton, } from './HotelSearchRoomsSelection.styled'\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nconst MAX_NUMBER_OF_ROOMS = 3\r\nconst MAX_NUMBER_OF_ADULTS = 8\r\nconst MAX_NUMBER_OF_CHILDREN = 4\r\n\r\nvar TriggerLabel = styled.div`\r\n text-align: left; \r\n font-size: 1em;\r\n font-weight: bold;\r\n margin-bottom: 3px;\r\n`\r\n\r\nvar PopupOpenButton = styled.div`\r\n cursor: pointer;\r\n background-color: #fff;\r\n color: #333;\r\n text-align: left;\r\n\r\n border-radius: 4px;\r\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\r\n border: 1px solid #ccc;\r\n font-size: 1em;\r\n padding: 7px 20px 7px 10px;\r\n`\r\n\r\nvar ChildrenAges = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`\r\n\r\nvar InputField = styled.div`\r\n text-align: left;\r\n display: flex;\r\n flex-direction: column;\r\n`\r\n\r\nvar RowTitle = styled.div`\r\n margin: 15px 0 0 0;\r\n text-align: center;\r\n border-top: 1px dotted #ccc;\r\n padding-top: 10px;\r\n letter-spacing: 1px;\r\n`\r\n\r\nvar RoomRow = styled.div`\r\n display: flex;\r\n margin-top: 10px;\r\n`\r\n\r\nvar RoomRowItem = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n padding: 0 5%;\r\n`\r\n\r\nvar ChildrenAgesContainer = styled.div`\r\n margin: 10px 5%;\r\n display: flex;\r\n flex-direction: column;\r\n`\r\n\r\nvar ChildrenAgesTitle = styled.div`\r\n margin: 5px 0;\r\n`\r\n\r\nvar PopupContent = styled.div`\r\n width: 300px;\r\n`\r\n\r\nvar ConfirmButton = styled.div`\r\n margin: 20px 15px 10px 15px;\r\n padding: 3px;\r\n font-size: 1.2em;\r\n cursor: pointer;\r\n color: #fff;\r\n text-align: center;\r\n background-color: rgb(5,183,79);\r\n`\r\n\r\n\r\nconst SelectNumberOfRoom = styled.select`\r\n font-size: 1.1em;\r\n margin: 15px 15px 0px 15px;\r\n padding: 3px 20px 0px 20px;\r\n`\r\n\r\nconst SelectPersonNumber = styled.select`\r\n padding: 3px 10px;\r\n letter-spacing: 1px;\r\n`\r\n\r\nconst SelectChildrenAge = styled.select`\r\n flex: 1;\r\n`\r\n\r\nconst defaultRoomDistribution = () => ({ adults: 2, children: 0, childrenAges: [] })\r\n\r\nconst buildSummaryText = (t, numAdults, numChildren, numRooms) => {\r\n const adultTxt = `${numAdults} ${numAdults === 1 \r\n ? t(\"search_box.room_selection.adult\") \r\n : t(\"search_box.room_selection.adults\")}`\r\n const childrenTxt = numChildren === 0 ? `` \r\n : numChildren === 1 ? `, 1 ${t(\"search_box.room_selection.child\")}` \r\n : `, ${numChildren} ${t(\"search_box.room_selection.children\")}`\r\n const roomsTxt = numRooms === 1 \r\n ? ` - 1 ${t(\"search_box.room_selection.room\")}` \r\n : ` - ${numRooms} ${t(\"search_box.room_selection.rooms\")}`\r\n\r\n return adultTxt + childrenTxt + roomsTxt\r\n}\r\n\r\nexport class HotelSearchRoomsSelection extends Component {\r\n constructor(props){\r\n super(props)\r\n\r\n this.state = {\r\n summaryText: this.props.summaryText || buildSummaryText(this.props.t, 2, 0, 1),\r\n roomsDistribution: this.props.roomsDistribution || [defaultRoomDistribution()],\r\n popupPosition: \"bottom center\" //VIC123 changed it from right center to bottom center\r\n }\r\n\r\n this.popupTrigger = this.popupTrigger.bind(this)\r\n this.renderNumericOptions = this.renderNumericOptions.bind(this) \r\n this.handleOnChangeAdultsNumber = this.handleOnChangeAdultsNumber.bind(this)\r\n this.handleOnChangeChildrenNumber = this.handleOnChangeChildrenNumber.bind(this)\r\n this.renderRoomsDistribution = this.renderRoomsDistribution.bind(this) \r\n this.getRoomIndexFromSelect = this.getRoomIndexFromSelect.bind(this) \r\n this.updateAdultsChildrenQuantity = this.updateAdultsChildrenQuantity.bind(this)\r\n this.updateSummaryText = this.updateSummaryText.bind(this) \r\n this.renderChildrenAges = this.renderChildrenAges.bind(this) \r\n this.handleOnChangeChildrenAge = this.handleOnChangeChildrenAge.bind(this) \r\n \r\n if (props.getRoomsDistributions)\r\n props.getRoomsDistributions(this.getRoomsDistributions.bind(this));\r\n\r\n }\r\n\r\n\r\n getRoomsDistributions = () => this.state.roomsDistribution\r\n\r\n handleOnChangeRoomsNumber = event => {\r\n const numberOfRooms = parseInt(event.target.value)\r\n const roomsDistribution = [...Array(numberOfRooms).keys()].map(i => this.state.roomsDistribution[i] || defaultRoomDistribution())\r\n\r\n this.setState({roomsDistribution}, this.updateSummaryText)\r\n }\r\n\r\n getRoomIndexFromSelect = event => event.target.attributes['data-room-index'].value\r\n\r\n // cuando en otras funciones la modifica del estado ha terminado, se executa esta funciòn que actualiza el resumen \r\n updateSummaryText = () => {\r\n const numberOfAdults = this.state.roomsDistribution.reduce((tot, room) => tot + parseInt(room.adults), 0)\r\n const numberOfChildren = this.state.roomsDistribution.reduce((tot, room) => tot + parseInt(room.children), 0)\r\n const summaryText = buildSummaryText(this.props.t, numberOfAdults, numberOfChildren, this.state.roomsDistribution.length)\r\n \r\n this.setState({summaryText})\r\n }\r\n\r\n updateAdultsChildrenQuantity = (roomIndex, adults, children) => {\r\n const roomsDistribution = this.state.roomsDistribution.slice(0)\r\n const distribution = roomsDistribution[roomIndex]\r\n const childrenAges = children <= distribution.children \r\n ? distribution.childrenAges.slice(0, children)\r\n : distribution.childrenAges.concat([...Array(children - distribution.children)].map(i => 0))\r\n\r\n roomsDistribution[roomIndex] = { \r\n adults : adults !== null ? adults : distribution.adults,\r\n children : children !== null ? children : distribution.children,\r\n childrenAges: childrenAges\r\n }\r\n this.setState({roomsDistribution}, this.updateSummaryText)\r\n }\r\n\r\n handleOnChangeAdultsNumber = event => \r\n this.updateAdultsChildrenQuantity(this.getRoomIndexFromSelect(event), \r\n event.target.value, \r\n null)\r\n \r\n handleOnChangeChildrenNumber = event => \r\n this.updateAdultsChildrenQuantity(this.getRoomIndexFromSelect(event), \r\n null,\r\n event.target.value) \r\n\r\n handleOnChangeChildrenAge = event => {\r\n const roomsDistribution = this.state.roomsDistribution.slice(0)\r\n const roomIndex = parseInt(event.target.attributes['data-room-index'].value)\r\n const childIndex = parseInt(event.target.attributes['data-child-index'].value)\r\n \r\n roomsDistribution[roomIndex].childrenAges[childIndex] = parseInt(event.target.value)\r\n this.setState({roomsDistribution})\r\n\r\n }\r\n\r\n popupTrigger = () =>
\r\n \r\n {this.props.t(\"search_box.label_room_and_people\")} \r\n \r\n \r\n {this.state.summaryText}\r\n \r\n
\r\n\r\n // crea un listado opciones por una select\r\n renderNumericOptions = (from, to, labelSingle, labelPlural) => {\r\n const options = []\r\n for(let i=from; i<=to; i++)\r\n options.push()\r\n\r\n return options\r\n }\r\n\r\n\r\n renderChildrenAges = (roomIndex, numOfChildren) => {\r\n const me = this\r\n return (\r\n \r\n {[...Array(numOfChildren).keys()].map(i => {\r\n const name = `room_${roomIndex}_child_${i}`\r\n const defaultValue = me.state.roomsDistribution[roomIndex].childrenAges[i] || 0\r\n \r\n return \r\n {me.renderNumericOptions(0, 17)}\r\n \r\n })}\r\n \r\n )}\r\n\r\n renderRoomsDistribution = (room, index) => {\r\n const t = this.props.t\r\n const nameAdults = `adults-${index}`\r\n const nameChildren = `children-${index}`\r\n\r\n return \r\n {t(\"search_box.room_selection.room\")} {index + 1}\r\n \r\n \r\n \r\n {this.renderNumericOptions(1, MAX_NUMBER_OF_ADULTS, \"search_box.room_selection.adult\", \"search_box.room_selection.adults\")}\r\n \r\n \r\n \r\n \r\n {this.renderNumericOptions(0, MAX_NUMBER_OF_CHILDREN, \"search_box.room_selection.child\", \"search_box.room_selection.children\")}\r\n \r\n \r\n \r\n { room.children > 0 && \r\n \r\n {t(\"search_box.room_selection.childrenAges\")}\r\n {this.renderChildrenAges(index, parseInt(room.children))}\r\n \r\n }\r\n \r\n \r\n }\r\n\r\n render() {\r\n const t = this.props.t\r\n\r\n var popupContentStyle = {\r\n width: \"auto\", \r\n padding: 0, \r\n boxShadow: \"0px 3px 10px #888\",\r\n borderRadius: \"5px\",\r\n overflow: \"hidden\"\r\n }\r\n\r\n if(this.props.horizontal == \"true\"){\r\n popupContentStyle = {\r\n width: \"auto\", \r\n padding: 0, \r\n boxShadow: \"0px 3px 10px #888\",\r\n borderRadius: \"5px\",\r\n overflow: \"hidden\",\r\n background: \"#43aec0\"\r\n }\r\n ConfirmButton = styled.div`\r\n margin: 20px 15px 10px 15px;\r\n padding: 3px;\r\n font-size: 1.2em;\r\n cursor: pointer;\r\n color: #fff;\r\n text-align: center;\r\n background-color: #002c47;\r\n `\r\n TriggerLabel = styled.div`\r\n text-align: left; \r\n font-size: 1em;\r\n font-weight: bold;\r\n margin-bottom: 0px;\r\n `\r\n InputField = styled.div`\r\n text-align: left;\r\n display: flex;\r\n flex-direction: column;\r\n `\r\n PopupOpenButton = styled.div`\r\n cursor: pointer;\r\n background-color: #fff;\r\n color: #333;\r\n text-align: left;\r\n height: 36px;\r\n\r\n border-radius: 10px;\r\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\r\n border: 1px solid #ccc;\r\n font-size: 1em;\r\n padding: 7px 20px 7px 10px;\r\n `\r\n }\r\n\r\n return (\r\n
\r\n \r\n {close => (\r\n \r\n \r\n \r\n {this.renderNumericOptions(1, MAX_NUMBER_OF_ROOMS, \"search_box.room_selection.room\", \"search_box.room_selection.rooms\")}\r\n \r\n \r\n\r\n { this.state.roomsDistribution.map(this.renderRoomsDistribution)}\r\n\r\n {t(\"search_box.room_selection.confirm_button_text\")}\r\n \r\n )}\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withTranslation()(HotelSearchRoomsSelection)\r\n","import React from 'react'\r\nimport Modal from 'react-responsive-modal'\r\nimport { DateRangePicker } from 'react-dates'\r\n\r\nimport 'react-dates/initialize'\r\nimport 'react-dates/lib/css/_datepicker.css'\r\nimport 'react-dates/lib/css/_custom.css'\r\n\r\nimport './HotelSearchBox.css'\r\n\r\n\r\n\r\nimport HotelSearchInputPlace from './HotelSearchInputPlace'\r\nimport HotelSearchRoomsSelection from './HotelSearchRoomsSelection'\r\nimport { resultTypeZone, resultTypeHotel} from \"./../../utility/constants\"\r\nimport {getLanguageFromUrl} from \"./../../utility/LanguageHelper\"\r\n\r\nimport styles from './HotelSearchBox.module.css'\r\nimport styled from 'styled-components'\r\nimport moment from \"moment\"\r\nimport {withTranslation} from 'react-i18next'\r\nimport  {urls} from './../../utility/constants'\r\n\r\n\r\nconst PageSize = 20\r\nconst language = getLanguageFromUrl()\r\n\r\nvar Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: #f5f5f5;\r\n margin-bottom: 15px;\r\n`\r\n\r\nvar DateContainer = styled.div`\r\n display: inline-block;\r\n width: 25%;\r\n\r\n @media (max-width: 992px){\r\n width: 49%;\r\n }\r\n\r\n @media (max-width: 768px){\r\n width: 100%;\r\n }\r\n`\r\n\r\nvar ButtonSearch = styled.div`\r\n background: linear-gradient(to bottom, #ff474a 0%,#b71c1c 100%);\r\n color: #fff;\r\n padding: 6px 0;\r\n margin-top: 20px;\r\n letter-spacing: 1px;\r\n cursor: pointer;\r\n text-align: center;\r\n text-transform: uppercase;\r\n font-size: 1em;\r\n font-weight: bold;\r\n border-radius: 4px;\r\n`\r\n\r\nvar TitleLabel = styled.div`\r\n font-weight: bold;\r\n margin-bottom: 0px;\r\n font-size: 1.2em;\r\n text-align: center;\r\n border-bottom: 1px solid;\r\n`\r\n\r\nvar DatesLabel = styled.div`\r\n display: flex;\r\n text-align: left;\r\n margin: 10px 0 3px 0;\r\n font-weight: bold;\r\n`\r\nvar DateLabel = styled.div`\r\n flex: 1;\r\n font-size: 1em;\r\n margin-bottom: 0px;\r\n text-align: left;\r\n :last-child {\r\n margin-left: 10%;\r\n }\r\n`\r\n\r\nvar HotelSearchRoomsSelectionStyled = styled(HotelSearchRoomsSelection)`\r\n margin: 20px 0 0 0;\r\n`\r\n\r\nvar ErrorTitle = styled.div`\r\n font-size: 1.2em;\r\n text-align: left;\r\n background-color: #f00;\r\n color: #fff;\r\n padding: 9px 80px 8px 20px;\r\n width: 100%;\r\n margin: 0;\r\n letter-spacing: 1px;\r\n`\r\n\r\nvar ErrorItem = styled.p`\r\n padding: 0 20px;\r\n`\r\n\r\nclass HotelSearchBox extends React.Component{\r\n constructor(props){\r\n super(props)\r\n \r\n this.state = {\r\n titleText: props.titleText || null, //el título en caso de no necesitar selected item\r\n selectedItem: props.selectedItem || null, // el item puede ser un hotel o un destino\r\n distributions: props.distributions || null, // cuantas habitaciones, personas y niños estàn seleccionadas\r\n subfilter: props.subfilter || null,\r\n horizontal: props.horizontal,\r\n focusedInput: props.focusedInput || null, // para mantener el estado \"focus\" del input\r\n startDate : props.startDate || new moment().add(7, 'd'), // por defecto se usa una fecha de entrada de hoy mas 7 dias\r\n endDate : props.endDate || new moment().add(14, 'd'), // por defecto usamos una duraciòn de 7 dia (hoy + 14)\r\n errors: []\r\n }\r\n\r\n if(this.props.horizontal == \"true\"){\r\n Container = styled.div`\r\n display: block;\r\n background-color: #43aec0;\r\n color: #fff;\r\n margin-bottom: 15px;\r\n `\r\n ButtonSearch = styled.div`\r\n background: #002c47;\r\n color: #fff;\r\n padding: 6px 0;\r\n margin-top: 20px;\r\n letter-spacing: 1px;\r\n cursor: pointer;\r\n text-align: center;\r\n text-transform: uppercase;\r\n font-size: 1em;\r\n font-weight: bold;\r\n border-radius: 0px;\r\n width: 20%;\r\n min-width: 100px;\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n `\r\n ErrorTitle = styled.div`\r\n font-size: 1.2em;\r\n text-align: left;\r\n background-color: #002c47;\r\n color: #fff;\r\n padding: 9px 80px 8px 20px;\r\n width: 100%;\r\n margin: 0;\r\n letter-spacing: 1px;\r\n `\r\n DatesLabel = styled.div`\r\n display: flex;\r\n text-align: left;\r\n font-weight: bold;\r\n `\r\n DateLabel = styled.div`\r\n display: inline-block;\r\n font-size: 1em;\r\n margin-bottom: 0px;\r\n text-align: left;\r\n :last-child {\r\n margin-left: 17%;\r\n }\r\n `\r\n /*DateLabel = styled.div`\r\n display: inline-block;\r\n font-size: 1em;\r\n margin-bottom: 0px;\r\n margin-right: 90px;\r\n text-align: left;\r\n :last-child {\r\n margin-left: 0%;\r\n }\r\n `*/\r\n HotelSearchRoomsSelectionStyled = styled(HotelSearchRoomsSelection)`\r\n width: 33%;\r\n display: inline-block;\r\n float: left;\r\n padding-right: 1%;\r\n\r\n @media (max-width: 992px){\r\n width: 49%;\r\n margin-bottom: 10px;\r\n }\r\n\r\n @media (max-width: 768px){\r\n width: 100%;\r\n margin-bottom: 10px;\r\n }\r\n `\r\n TitleLabel = styled.div`\r\n font-weight: bold;\r\n margin-bottom: 0px;\r\n font-size: 1.2em;\r\n width: 100%;\r\n `\r\n }\r\n else{\r\n DateContainer = styled.div`\r\n width: 100%;\r\n `\r\n }\r\n\r\n this.redirectToSearch = this.redirectToSearch.bind(this) \r\n }\r\n \r\n // convierte los parametros de la busqueda en parametros para la una url y para una post\r\n // executa la post para gurdar las datos de la busqueda en el servidor, el servidor harà mas cosas antes de contestar\r\n // asì se hace en parallelo la redirect a la url que muestra los resultados\r\n redirectToSearch = () => {\r\n const distributions = this.getRoomsDistributions() \r\n const newErrors = []\r\n\r\n if((!this.state.selectedItem || !this.state.selectedItem.name) && !this.state.titleText)\r\n newErrors.push(\"search_box.errors.select_place\")\r\n\r\n const mTomorrow = moment().add(1, 'd') // VIC123Reservas el mismo día\r\n const mStartDate = moment(this.state.startDate)\r\n if(mStartDate.isValid() === false || mStartDate <= moment())\r\n newErrors.push(\"search_box.errors.wrong_start_date\")\r\n\r\n const mEndDate = moment(this.state.endDate)\r\n if(mEndDate.isValid() === false || mEndDate < mStartDate)\r\n newErrors.push(\"search_box.errors.wrong_end_date\")\r\n\r\n if(!distributions || distributions.length < 1)\r\n newErrors.push(\"search_box.errors.wrong_distributions\")\r\n\r\n // si al array de errores no està vacio, la funciòn no deja continuar\r\n if(newErrors.length > 0 ){\r\n this.setState({errors: newErrors})\r\n return\r\n } \r\n\r\n // construye los datos para la POST que guarda los parametros de la busqueda\r\n const buildFormSearchData = (place, startDate, endDate, distributions) => {\r\n var zoneId = \"\";\r\n var zoneName = \"\";\r\n var hotelId = \"\";\r\n\r\n if ((typeof place.Type !== \"undefined\" && place.Type === resultTypeZone) || \r\n (typeof place.type !== \"undefined\" && place.type === resultTypeZone)) {\r\n zoneId = (typeof place.Code !== \"undefined\" ? place.Code : (typeof place.code !== \"undefined\" ? place.code : \"\"));\r\n zoneName = (typeof place.Name !== \"undefined\" ? place.Name : (typeof place.name !== \"undefined\" ? place.name : \"\"));\r\n }\r\n if ((typeof place.Type !== \"undefined\" && place.Type === resultTypeHotel) || \r\n (typeof place.type !== \"undefined\" && place.type === resultTypeHotel)) {\r\n hotelId = (typeof place.Code !== \"undefined\" ? place.Code : (typeof place.code !== \"undefined\" ? place.code : \"\"));\r\n }\r\n\r\n const data = new FormData()\r\n data.append('zoneId', zoneId) // si es un destino, la API se espera que zoneId tenga un valor\r\n data.append('zoneName', zoneName) \r\n data.append('hotelId', hotelId) // si es un hotel, la API se espera que hotelId tenga un valor\r\n data.append('serviceCode', \"\")\r\n data.append('initDate', startDate.format(\"YYYY-MM-DD\"))\r\n data.append('endDate', endDate.format(\"YYYY-MM-DD\"))\r\n data.append('jsonDistributions', JSON.stringify( distributions.map((item, index) => Object.assign({}, item, {id: index + 1}))))\r\n data.append('language', this.props.language || language) \r\n data.append('jsonFilters', [])\r\n data.append('jsonSubFilters', this.state.subfilter)\r\n data.append('horizontal', this.state.horizontal)\r\n data.append('canaryResident', false) // TO DO: hay que añadirlo al frontend\r\n data.append('pageSize', PageSize)\r\n data.append('pageNum', 1)\r\n data.append('order', \"Ranking\") \r\n\r\n return data\r\n }\r\n\r\n // contruye los datos para la redirect a la pagina de resultados\r\n const buildUrlSearchData = (place, startDate, endDate, distributions) => ({\r\n zoneId: (typeof place.Type !== \"undefined\" && place.Type === resultTypeZone) || \r\n (typeof place.type !== \"undefined\" && place.type === resultTypeZone) ? \r\n (typeof place.Code !== \"undefined\" ? place.Code : (typeof place.code !== \"undefined\" ? place.code : \"\")) : \"\", // como por la form anterior, si es un destino, la API se espera un zoneId\r\n zoneName: (typeof place.Type !== \"undefined\" && place.Type === resultTypeZone) || \r\n (typeof place.type !== \"undefined\" && place.type === resultTypeZone) ? \r\n (typeof place.Name !== \"undefined\" ? place.Name : (typeof place.name !== \"undefined\" ? place.name : \"\")) : '',\r\n hotelId: (typeof place.Type !== \"undefined\" && place.Type === resultTypeHotel) || \r\n (typeof place.type !== \"undefined\" && place.type === resultTypeHotel) ? \r\n (typeof place.Code !== \"undefined\" ? place.Code : (typeof place.code !== \"undefined\" ? place.code : \"\")) : '', // como por la form anterior, si es un hotel, la API se espera un hotelId\r\n serviceCode: \"\", \r\n initDate: startDate.format(\"YYYY-MM-DD\"),\r\n endDate: endDate.format(\"YYYY-MM-DD\"),\r\n distributions: distributions.map((item, index) => Object.assign({}, item, {id: index + 1})), \r\n language: this.props.language || language,\r\n filter: {} ,\r\n subfilter: this.state.subfilter ,\r\n horizontal: this.state.horizontal,\r\n canaryResident: false, // TO DO: hay que añadirlo al frontend\r\n pageSize: PageSize,\r\n pageNum: 1,\r\n order: \"Ranking\"\r\n })\r\n\r\n\r\n const urlSearchData = buildUrlSearchData(this.state.selectedItem, this.state.startDate, this.state.endDate, distributions)\r\n const formSearchData = buildFormSearchData(this.state.selectedItem, this.state.startDate, this.state.endDate, distributions)\r\n\r\n // post to save searchParams in session\r\n fetch(urls.saveSearchFilter,{\r\n mode: 'cors',\r\n method: 'POST',\r\n credentials: 'include',\r\n body: formSearchData \r\n }) // don't wait the response \r\n \r\n //language === \"es\" ? \"\" : VIC123 eliminé eso porque routing en net core es raro\r\n window.location.href = `${language === \"es\" ? \"\" : \"/\" + language}${urls.hotelResults}?params=${JSON.stringify(urlSearchData)}`\r\n }\r\n\r\n // en base al numero de habitaciones y personas seleccionadas se contruye el texto que resume (\"4 adultos, 1 niño - 2 Habitaciones\")\r\n buildDistributionSummaryText = () => {\r\n if(this.state.distributions === null) return ''\r\n\r\n const t = this.props.t\r\n\r\n let numAdults = 0\r\n let numChildren = 0\r\n let numRooms = 0\r\n this.state\r\n .distributions\r\n .map(d => {\r\n numRooms++\r\n numAdults += parseInt(d.adults)\r\n numChildren += parseInt(d.children)\r\n })\r\n\r\n const adultTxt = `${numAdults} ${numAdults === 1 \r\n ? t(\"search_box.room_selection.adult\") \r\n : t(\"search_box.room_selection.adults\")}`\r\n\r\n const childrenTxt = numChildren === 0 ? `` \r\n : numChildren === 1 ? `, 1 ${t(\"search_box.room_selection.child\")}` \r\n : `, ${numChildren} ${t(\"search_box.room_selection.children\")}`\r\n const roomsTxt = numRooms === 1 \r\n ? ` - 1 ${t(\"search_box.room_selection.room\")}` \r\n : ` - ${numRooms} ${t(\"search_box.room_selection.rooms\")}`\r\n\r\n return adultTxt + childrenTxt + roomsTxt\r\n }\r\n\r\n \r\n\r\n render(){\r\n const t = this.props.t\r\n const numberOfMonth = window.innerWidth > 700 ? 2 : 1 // si la pantalla es demasiado pequeña mostramos solo un mese a lo vez\r\n \r\n let header, className;\r\n\r\n if(this.props.horizontal){\r\n className = {t(\"search_box.horizontal_label_place\")}\r\n }\r\n\r\n if (!this.state.titleText){\r\n header = this.setState({selectedItem})} \r\n selectedItem={this.state.selectedItem}\r\n placeholder={t(\"search_box.label_place\")}\r\n showLabel={true}\r\n horizontal={this.props.horizontal}\r\n />;\r\n }\r\n else{\r\n className = {this.state.titleText};\r\n }\r\n \r\n return (\r\n <>\r\n \r\n {className}\r\n {header}\r\n \r\n {this.getRoomsDistributions = getRoomsDistributions}}\r\n horizontal={this.props.horizontal} />\r\n \r\n {this.props.showLabel &&
{this.props.t(\"search_box.label_place\")}
}\r\n \r\n {t(\"search_box.label_pickup_date\")}\r\n {t(\"search_box.label_dropoff_date\")}\r\n \r\n this.setState({startDate, endDate})\r\n } \r\n onFocusChange={focusedInput => this.setState({ focusedInput })} \r\n verticalSpacing={10} \r\n />\r\n
\r\n\r\n {t(\"search_box.search_button_text\")}\r\n
\r\n\r\n {/* si hay uno mas errores se muestra esta modal con los mensajes */ }\r\n 0} \r\n onClose={() => this.setState({errors: []})} \r\n classNames={{ modal: styles.root, closeButton: styles.closeButton}}\r\n >\r\n {t(\"search_box.errors.errors_title\")}\r\n {this.state.errors.map((err, index) => {this.props.t(err)})}\r\n \r\n \r\n )\r\n }\r\n\r\n}\r\n\r\nexport default withTranslation()(HotelSearchBox)","import {Environment, Network, RecordSource, Store, } from 'relay-runtime'\r\n\r\n\r\n//const __RELAY_API_ENDPOINT__ = 'http://localhost:5000/graphql'\r\nconst __RELAY_API_ENDPOINT__ = process.env.RELAY_API_ENDPOINT//'https://hotelsdataapi.canarias.com/graphql'\r\n//console.log(process.env);\r\n\r\nfunction fetchQuery(operation, variables)\r\n{\r\n return fetch(__RELAY_API_ENDPOINT__, {\r\n method: 'POST',\r\n headers: {\r\n\t\t 'content-type': 'application/json'\r\n\t\t},\r\n body: JSON.stringify({ \r\n query: operation.text, \r\n variables \r\n }),\r\n }).then(response => { return response.json() })\r\n}\r\n\r\nconst environment = new Environment({ network: Network.create(fetchQuery), store: new Store(new RecordSource())})\r\n\r\nexport default {environment, __RELAY_API_ENDPOINT__, fetchQuery}","import React from 'react'\r\nimport styles from './Category.module.css'\r\nimport classnames from 'classnames'\r\n// se pone una clase con un background-position diferente en base cuantas estrellas quieres mostrar \r\n\r\nexport default ({value, type, className}) => value < 1 ? null :
\r\n\r\n","import React from 'react'\r\nimport styles from './HotelFacility.module.css'\r\nimport Tooltip from 'rc-tooltip'\r\n\r\nimport 'rc-tooltip/assets/bootstrap_white.css'\r\nimport './hotel-facilities.css'\r\n\r\nexport default props => \r\n {props.facility.label}
} \r\n arrowContent={
}\r\n >\r\n
\r\n ","import React from 'react'\r\n//import { createFragmentContainer, graphql} from 'react-relay'\r\nimport HotelFacility from './HotelFacility'\r\n\r\n\r\nclass HotelFacilities extends React.Component{\r\n\r\n render(){\r\n return(\r\n
\r\n {this.props.facilities && \r\n this.props.facilities.map(facility => \r\n \r\n )}\r\n
\r\n )}\r\n}\r\n\r\n\r\nexport default HotelFacilities\r\n\r\n","import styled from 'styled-components'\r\n\r\nimport hotelFacilities from './../Widget/HotelFacilities'\r\n\r\nexport const Hotel = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 1em 0;\r\n`\r\n\r\nexport const HotelImage = styled.div`\r\n width: 300px;\r\n height: 200px;\r\n background-image: url(${props => props.src});\r\n background-position: center center;\r\n background-size: cover;\r\n cursor: pointer;\r\n\r\n @media (max-width: 768px){\r\n margin-top: 10px;\r\n }\r\n`\r\n\r\nexport const HotelHiddenImage = styled.img`\r\n width: 1px;\r\n height: 1px;\r\n opacity: 0.01;\r\n position: absolute;\r\n`\r\n\r\nexport const HotelDetails = styled.div`\r\n display: flex;\r\n @media (max-width: 768px){\r\n flex-direction: column;\r\n align-items: center;\r\n }\r\n`\r\n\r\nexport const HotelInfo = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n`\r\n\r\nexport const HotelName = styled.a`\r\n margin: 0;\r\n padding: 5px 20px;\r\n font-weight: bold;\r\n text-transform: uppercase;\r\n color: #fff;\r\n text-decoration: none; \r\n flex: 1; \r\n text-align: left;\r\n font-size: 1.2em; \r\n`\r\n\r\nexport const HotelAddress = styled.div`\r\n text-align: left;\r\n padding: 10px 20px;\r\n`\r\n\r\nexport const HotelFacilities = styled(hotelFacilities)`\r\n display: flex;\r\n padding: 10px 20px;\r\n flex-wrap: wrap;\r\n`\r\n\r\nexport const HotelTop = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n`\r\n\r\nexport const HotelHeader = styled.div`\r\n padding: 10px 20px;\r\n display: flex; \r\n background-color: #b71c1c; \r\n align-items: center; \r\n @media (max-width: 768px){\r\n flex-direction: column;\r\n align-items: center;\r\n width: 100%;\r\n }\r\n`\r\n\r\nexport const HotelDescription = styled.div`\r\n background-color: #f5f5f5;\r\n flex: 0.65;\r\n display: flex;\r\n align-items: center;\r\n text-align: left;\r\n padding: 0 20px;\r\n\r\n @media(max-width: 1200px){\r\n display: none;\r\n }\r\n`\r\n\r\n\r\nexport const HotelMinPrice = styled.div`\r\n font-size: 1.6em;\r\n color: #348427;\r\n margin: 5px 0;\r\n font-weight: bold;\r\n`\r\n\r\nexport const HotelDeals = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n\r\n`","import React from 'react'\r\nimport {FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\r\nimport styles from './AvailabilityHotel.module.css'\r\nimport styled from 'styled-components'\r\nimport Category from './../Widget/Category'\r\nimport 'rc-tooltip/assets/bootstrap_white.css'\r\n\r\nimport {Hotel, HotelImage, HotelDetails, HotelInfo, HotelName, HotelAddress, HotelFacilities, HotelTop, \r\n HotelHeader, HotelDescription} \r\n from './../SearchResults/ResultHotel.style'\r\n\r\nconst HotelImageStyled = styled(HotelImage)`\r\n @media (max-width: 768px){\r\n margin-top: 0;\r\n }\r\n`\r\n\r\n\r\nconst LoadingPrices = styled.div`\r\n height: 100px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n font-size: 3em;\r\n color: #999;\r\n`\r\n\r\nexport default props => {\r\n const {hotel, className} = props\r\n const defaultPhoto = (hotel.photos && hotel.photos[0]) || \"/hotel-image-not-available.jpg\"\r\n const {description, facilities, name, category, address} = hotel\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {name} \r\n \r\n {address}\r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","class ResponsiveHelper {\r\n isDesktop = () => window.innerWidth >= 1378\r\n\r\n isTablet = () => window.innerWidth < 1378 && window.innerWidth > 768\r\n\r\n isMobile = () => window.innerWidth < 768\r\n}\r\n\r\nexport default new ResponsiveHelper()","import React, {useState} from 'react'\r\nimport queryString from 'query-string'\r\nimport {QueryRenderer, graphql} from 'react-relay'\r\nimport env from './../../Environment'\r\nimport styled from 'styled-components'\r\nimport styles from './HotelsFilters.module.css'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport InputRange from 'react-input-range'\r\nimport {urls, resultTypeZone, resultTypeHotel} from './../../utility/constants'\r\nimport HotelSearchBox from './../HotelSearch/HotelSearchBox'\r\nimport {withTranslation} from 'react-i18next'\r\nimport moment from \"moment\"\r\nimport responsiveHelper from '../../utility/responsiveHelper'\r\n\r\nimport {Accordion, AccordionItem, AccordionItemHeading, AccordionItemButton, AccordionItemPanel} from 'react-accessible-accordion'\r\nimport './custom-accordion.css';\r\n\r\nimport 'react-input-range/lib/css/index.css'\r\n\r\nconst FilterItem = styled.div`\r\n cursor: pointer;\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n margin: 0.5em 0;\r\n`\r\nconst FilterIcon = styled(FontAwesomeIcon)`\r\n color: #333;\r\n margin-right: 10px;\r\n`\r\nconst FilterItemLabel = styled.div`\r\n align-items: center;\r\n text-align: left;\r\n flex: 1;\r\n`\r\n\r\nconst InputHotelName = styled.input`\r\n font-size: 1.2em;\r\n margin: 5px 4%;\r\n width: 90%;\r\n`\r\n\r\nconst CategoryStars = styled.div`\r\n flex: 1;\r\n opacity: ${props => props.selected ? 1 : 0.6};\r\n background-image: url('${props => props.stars !== \"0\" ? \"/content/react/images/stars.png\" : \"\"}' );\r\n width: 130px;\r\n height: 30px;\r\n background-repeat: no-repeat;\r\n background-position-y: ${props => props.stars === \"1\" ? 0 \r\n : props.stars === \"2\" ? -30 \r\n : props.stars === \"3\" ? -60 \r\n : props.stars === \"4\" ? -90 \r\n : props.stars === \"5\" ? -120 \r\n : props.stars === \"6\" ? -150 \r\n : 0}px;\r\n`\r\n\r\nconst CategoryKeys = styled.div`\r\n flex: 1;\r\n opacity: ${props => props.selected ? 1 : 0.6};\r\n background-image: url('${props => props.keys !== \"0\" ? \"/content/react/images/keys.png\" : \"\"}' );\r\n width: 130px;\r\n height: 30px;\r\n background-repeat: no-repeat;\r\n background-position-y: ${props => props.keys === \"1L\" ? 0 \r\n : props.keys === \"2L\" ? -30 \r\n : props.keys === \"3L\" ? -60 \r\n : props.keys === \"4L\" ? -90 \r\n : props.keys === \"5L\" ? -120 \r\n : 0}px;\r\n`\r\n\r\nconst CategoryText = styled.div`\r\n flex: 1;\r\n opacity: ${props => props.selected ? 1 : 0.6};\r\n width: 130px;\r\n height: 30px;\r\n display: flex;\r\n align-items: center;\r\n`\r\n\r\nconst FilterPriceRange = styled.div`\r\n padding: 30px;\r\n`\r\n\r\nconst FilterButton = styled.div`\r\n text-align: center;\r\n background-color: #5cb85c;\r\n text-transform: uppercase;\r\n color: #fff;\r\n cursor: pointer;\r\n padding: 0.5em;\r\n width: auto;\r\n margin: 0 20px;\r\n`\r\nconst RemoveFilterButton = styled.div`\r\n text-align: center;\r\n background-color: transparent;\r\n text-transform: uppercase;\r\n color: #666;\r\n cursor: pointer;\r\n padding: 0.5em;\r\n width: auto;\r\n margin: 10px 20px;\r\n`\r\n\r\nconst Counter = styled.div`\r\n background-color: #fffbe9;\r\n color: #333;\r\n width: 2em;\r\n padding: 3px 0;\r\n margin-right: 10px;\r\n text-align: center;\r\n`\r\n\r\nconst query = graphql`\r\n query HotelsFiltersQuery($token: String!, $language: String!, $channelCode: String!, $channelKey: String!)\r\n {\r\n filters(token: $token, language: $language, channelCode: $channelCode, channelKey: $channelKey)\r\n { \r\n errorMsg\r\n success\r\n filters{\r\n minPrice\r\n maxPrice\r\n categories{\r\n code\r\n count\r\n group\r\n name\r\n }\r\n deals{\r\n code\r\n count\r\n group\r\n name\r\n } \r\n facilities{\r\n code\r\n count\r\n group\r\n name\r\n }\r\n }\r\n }\r\n }\r\n`\r\n\r\n\r\nconst HotelFilter = props => {\r\n const {history, location, className, disabled, language, reloadForFilterModified, token, t, searchData, hotels, channelCode, channelKey, hideSearcher } = props\r\n \r\n const searchParams = JSON.parse(queryString.parse(window.location.search).params)\r\n const initialSelectedCategory = id => searchParams && \r\n searchParams.filter && \r\n searchParams.filter.categories && \r\n searchParams.filter.categories.length > 0 \r\n ? searchParams.filter.categories.find(c => c === id) != null\r\n : false\r\n\r\n const initialSelectedDeal = code => searchParams && \r\n searchParams.filter && \r\n searchParams.filter.deals && \r\n searchParams.filter.deals.length > 0 \r\n ? searchParams.filter.deals.find(c => c === code) != null\r\n : false\r\n\r\n const initialSelectedFacilities = fac => searchParams && \r\n searchParams.filter && \r\n searchParams.filter.facilities && \r\n searchParams.filter.facilities.length > 0 \r\n ? searchParams.filter.facilities.find(f => f === `${fac.group}║${fac.code}`) != null\r\n : false\r\n\r\n const buildInitialMinMaxPrice = () => {\r\n const min = (searchParams.filter.minPrice < 0 || searchParams.filter.minPrice > 1000000) ? 0 : searchParams.filter.minPrice\r\n const max = (searchParams.filter.maxPrice < 0 || searchParams.filter.maxPrice > 1000000) ? 1000000 : searchParams.filter.maxPrice\r\n return ({min, max})\r\n }\r\n\r\n const [hotelName, setHotelName] = useState(searchParams && searchParams.filter && searchParams.filter.hotelName)\r\n const [minMaxPrice, setMinMaxPrice] = useState(buildInitialMinMaxPrice())\r\n const [filterMinMaxPrice, setFilterMinMaxPrice] = useState(buildInitialMinMaxPrice())\r\n\r\n const [categories, setCategories] = useState(null)\r\n const [deals, setDeals] = useState(null)\r\n const [facilities, setFacilities] = useState(null)\r\n\r\n const toggleSelected = (objArr, id) => \r\n objArr.map(o => o.id !== id ? o : Object.assign({}, o, {selected: !o.selected}))\r\n\r\n\r\n const handleToggleCategory = id => setCategories(toggleSelected(categories, id))\r\n const handleToggleDeal = code => {\r\n const newDeals = deals.map(d => \r\n (d.code === code)\r\n ? Object.assign({}, d, {selected: !d.selected}) \r\n : d\r\n )\r\n setDeals(newDeals)\r\n }\r\n\r\n const handleToggleFacility = fac => {\r\n const newfacilities = facilities.map(f => \r\n (f.code === fac.code && f.group === fac.group)\r\n ? Object.assign({}, f, {selected: !f.selected}) \r\n : f\r\n )\r\n setFacilities(newfacilities) \r\n } \r\n\r\n const handleApplyFilter = () => { \r\n const oldParams = JSON.parse(queryString.parse(window.location.search).params)\r\n const newParams = Object.assign({}, \r\n oldParams, \r\n {\r\n pageNum: 1,\r\n filter:{\r\n hotelName,\r\n categories: categories.filter(cat => cat.selected).map(cat => '' + cat.id),\r\n deals: deals.filter(deal => deal.selected).map(deal => '' + deal.code),\r\n facilities: facilities.filter(fac => fac.selected).map(fac => `${fac.group}║${fac.code}`),\r\n minPrice: minMaxPrice.min > filterMinMaxPrice.min ? minMaxPrice.min : null,\r\n maxPrice: minMaxPrice.max < filterMinMaxPrice.max ? minMaxPrice.max : null\r\n }\r\n }) \r\n\r\n const newUrl = `${urls.hotelResults}?params=${JSON.stringify(newParams)}`\r\n history.push(newUrl)\r\n reloadForFilterModified(newParams.filter) // push url is not syncro, I send params to be sure\r\n }\r\n\r\n const handleRemoveFilter = () => { \r\n const oldParams = JSON.parse(queryString.parse(window.location.search).params)\r\n const newParams = Object.assign({}, \r\n oldParams, \r\n {\r\n pageNum: 1,\r\n filter:{}\r\n }) \r\n\r\n const newUrl = `${urls.hotelResults}?params=${JSON.stringify(newParams)}`\r\n history.push(newUrl)\r\n reloadForFilterModified(newParams.filter) // push url is not syncro, I send params to be sure\r\n }\r\n\r\n const handleEnterOnHotelName = e => {\r\n if(e.key === \"Enter\"){\r\n handleApplyFilter()\r\n e.preventDefault()\r\n }\r\n }\r\n\r\n const classDisabled = disabled ? styles.disabled : ''\r\n\r\n\r\n const setFiltersData = data => {\r\n if(!data || !(data.filters)) return\r\n\r\n const filterValues = data.filters.filters\r\n\r\n const newFilterMinMaxPrice = {min: filterValues.minPrice, max: filterValues.maxPrice}\r\n\r\n const newCategoriesStars = []\r\n const newCategoriesKeys = []\r\n const newCategoriesText = []\r\n\r\n filterValues.categories\r\n .map(c => {\r\n if (c.code.indexOf(\"L\") === -1 && parseInt(c.code) > 0) newCategoriesStars.push(c)\r\n else if(c.code.indexOf(\"L\") !== -1) newCategoriesKeys.push(c)\r\n else newCategoriesText.push(c)\r\n })\r\n\r\n const newCategories = [...newCategoriesStars.sort((a, b) => parseInt(a.code) - parseInt(b.code)), \r\n ...newCategoriesKeys.sort((a, b) => parseInt(a.code.substring(0, a.code.length - 1 )) - parseInt(b.code.substring(0, b.code.length - 1 ))),\r\n ...newCategoriesText.sort()]\r\n .map(c => ({\r\n label: c.code, \r\n id: c.code, \r\n count: c.count, \r\n selected: initialSelectedCategory(c.code)\r\n }))\r\n\r\n const newDeals = filterValues.deals\r\n .map(d => ({\r\n label: d.name, \r\n code: d.code, \r\n count: d.count,\r\n selected: initialSelectedDeal(d.code)\r\n }))\r\n .sort((item1, item2) => item1.name - item2.name)\r\n\r\n const newFacilities = filterValues.facilities\r\n .map(f => ({\r\n label: f.name,\r\n group: f.group,\r\n code: f.code,\r\n count: f.count,\r\n selected: initialSelectedFacilities(f)\r\n }))\r\n .sort()\r\n \r\n setFilterMinMaxPrice(newFilterMinMaxPrice)\r\n setMinMaxPrice(getMinMaxPriceInput(newFilterMinMaxPrice))\r\n setCategories (newCategories)\r\n setDeals(newDeals)\r\n setFacilities(newFacilities)\r\n \r\n }\r\n\r\n const getMinMaxPriceInput = (filterMinMax) => {\r\n const min = searchParams.filter.minPrice > 0 ? Math.max(searchParams.filter.minPrice, filterMinMax.min) : filterMinMax.min\r\n const max = searchParams.filter.maxPrice > 0 ? Math.min(searchParams.filter.maxPrice, filterMinMax.max) : filterMinMax.max\r\n return {min, max}\r\n }\r\n\r\n const getSelectedItem = () => {\r\n const isZone = searchParams.zoneId && searchParams.zoneId.length > 0 \r\n const Code = isZone ? searchParams.zoneId : searchParams.hotelId\r\n const Name = searchParams.zoneName\r\n const Type = isZone ? resultTypeZone : resultTypeHotel\r\n\r\n return { Code, Name, Type }\r\n }\r\n\r\n const renderCategory = cat => {\r\n const isKey = cat.label.indexOf('L') > -1\r\n const isStar = !isKey && parseInt(cat.label) > 0\r\n const isText = !isKey && !isStar\r\n\r\n return isStar ? \r\n : isKey ? \r\n : isText ? {t(`category.${cat.id}`)} \r\n : null\r\n }\r\n\r\n const renderPriceRange = data => { \r\n if(!data.filters.filters) \r\n return null\r\n\r\n const maxPrice = data.filters.filters.maxPrice < 0 || data.filters.filters.maxPrice > 1000000 ? 1000000 : data.filters.filters.maxPrice\r\n const minPrice = data.filters.filters.minPrice < 0 || data.filters.filters.minPrice > 1000000 ? 0 : data.filters.filters.minPrice\r\n\r\n const valueMinMax = {\r\n min: minMaxPrice.min < 0 || minMaxPrice.min > 1000000 ? 0 : minMaxPrice.min,\r\n max: minMaxPrice.max < 0 || minMaxPrice.max > 1000000 ? 1000000 : minMaxPrice.max\r\n }\r\n\r\n return ( \r\n
\r\n
{t(\"filters.filter_by_price\")}
\r\n
\r\n \r\n `${value} €`}\r\n value={valueMinMax}\r\n onChange={value => setMinMaxPrice(value)}\r\n /> \r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n const renderFiltrosDefault = (data) => \r\n
\r\n {minMaxPrice && categories && deals && facilities && ( <>\r\n
\r\n
\r\n
{t(\"filters.main_title\")}
\r\n
\r\n setHotelName(e.target.value)} onKeyPress={handleEnterOnHotelName}/>\r\n
\r\n
\r\n\r\n {categories.length > 0 &&\r\n
\r\n
{t(\"filters.filter_by_category\")}
\r\n
\r\n {categories.map(cat =>\r\n handleToggleCategory(cat.id)}>\r\n {cat.count} \r\n \r\n {renderCategory(cat)} \r\n \r\n )}\r\n
\r\n
\r\n }\r\n\r\n {deals.length > 0 &&\r\n
\r\n
{t(\"filters.filter_by_deal\")}
\r\n
\r\n {deals.map(deal => \r\n handleToggleDeal(deal.code)}>\r\n {deal.count} \r\n \r\n {deal.label} \r\n \r\n )}\r\n
\r\n
\r\n }\r\n\r\n {facilities.length > 0 && \r\n
\r\n
{t(\"filters.filter_by_facilities\")}
\r\n
\r\n {facilities && facilities.map((facility, index) => \r\n handleToggleFacility(facility)}>\r\n {facility.count}\r\n \r\n {facility.label} \r\n \r\n )}\r\n
\r\n
\r\n }\r\n\r\n {renderPriceRange(data)}\r\n\r\n {t(\"filters.button_filter_text\")}\r\n {t(\"filters.button_remove_filter_text\")}\r\n
\r\n
\r\n )} \r\n
\r\n\r\n\r\n const renderFiltrosMobile = (data, searchExpanded) =>\r\n \r\n \r\n \r\n {t(\"filters.filters\")}\r\n \r\n \r\n \r\n {renderFiltrosDefault(data)}\r\n \r\n \r\n \r\n\r\n const render = (data) => { \r\n if(!minMaxPrice || !categories || !deals || !facilities) setFiltersData(data) \r\n \r\n const searchExpanded = responsiveHelper.isMobile() || responsiveHelper.isTablet()? \"0\" : \"1\"\r\n\r\n let filter = null;\r\n if((minMaxPrice || categories || deals || facilities) && (JSON.stringify(searchParams.filter) !== JSON.stringify({}) || hotels.length > 1))\r\n filter = responsiveHelper.isMobile() || responsiveHelper.isTablet() ? renderFiltrosMobile(data, searchExpanded) : renderFiltrosDefault(data, searchExpanded)\r\n\r\n return (\r\n
\r\n {!hideSearcher &&\r\n \r\n \r\n \r\n {t(\"filters.change_search\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {filter}\r\n
\r\n )\r\n }\r\n\r\n return \r\n error || !props ?
\r\n
\r\n
\r\n : render(props) \r\n }\r\n />\r\n\r\n\r\n\r\n} \r\n\r\nexport default withTranslation()(HotelFilter)","import React from 'react'\r\nimport styles from './AvailabilityResult.module.css'\r\nimport AvailabilityHotel from './AvailabilityHotel';\r\nimport HotelsFilters from './../HotelsFilters/HotelsFilters'\r\nimport responsiveHelper from './../../utility/responsiveHelper'\r\n\r\nexport default ({hotelsByZone, facilitiesFilter, filterDisabled, className, hotelsByCodes}) => {\r\n const hotels = hotelsByZone !== null ? hotelsByZone.hotels : hotelsByCodes !== null ? hotelsByCodes.hotelsByCodes : []\r\n\r\n\r\n\r\n return (\r\n
\r\n { !responsiveHelper.isMobile() &&\r\n \r\n }\r\n
\r\n {hotels.map((hotel, index) => )}\r\n
\r\n
\r\n )\r\n}","import React from 'react'\r\nimport {QueryRenderer, graphql} from 'react-relay'\r\nimport env from './../../Environment'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\nimport AvailabilityResult from './../Availability/AvailabilityResult'\r\nimport styles from './TempHotelResults.module.css'\r\n\r\nclass TempHotelResults extends React.Component{\r\n\r\n handleLoading = () => \r\n
\r\n \r\n
\r\n\r\n render() {\r\n return (\r\n // se cargan los hoteles de la zona y se muestran durante la espera de los resultados\r\n result.error ? this.handleLoading()\r\n : !(result.props) ? this.handleLoading()\r\n : !(result.props.hotelsByZone) ? this.handleLoading() \r\n : \r\n }\r\n />\r\n )\r\n }\r\n}\r\n\r\n\r\nexport default TempHotelResults","import React from 'react'\r\nimport {QueryRenderer, graphql} from 'react-relay'\r\nimport env from './../../Environment'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\nimport AvailabilityResult from './../Availability/AvailabilityResult'\r\nimport styles from './TempHotelResults.module.css'\r\n\r\nclass TempHotelByCodesResults extends React.Component{\r\n\r\n handleLoading = () => \r\n
\r\n \r\n
\r\n\r\n render() {\r\n return (\r\n // se cargan los hoteles de la zona y se muestran durante la espera de los resultados\r\n result.error ? this.handleLoading()\r\n : !(result.props) ? this.handleLoading() \r\n : \r\n }\r\n />\r\n )\r\n }\r\n}\r\n\r\n\r\nexport default TempHotelByCodesResults","import React from 'react'\r\nimport {QueryRenderer, graphql} from 'react-relay'\r\nimport env from './../../Environment'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\nimport AvailabilityResult from './../Availability/AvailabilityResult'\r\nimport styles from './TempHotelResults.module.css'\r\n\r\nclass HotelIdsByFilter extends React.Component{\r\n render() {\r\n return (\r\n // se cargan los hoteles de la zona y se muestran durante la espera de los resultados\r\n {\r\n if (error) {\r\n return \"error\"\r\n }\r\n return props\r\n }}\r\n />\r\n )\r\n }\r\n}\r\n\r\n\r\nexport default HotelIdsByFilter","import React, { useState, useEffect } from 'react'\r\nimport styles from '../ModifySelection/ModifySelectedRooms.module.css'\r\nimport Modal from 'react-responsive-modal'\r\nimport {withTranslation} from 'react-i18next'\r\nimport styled from 'styled-components'\r\n\r\nclass RoomNotesModal extends React.Component{\r\n render(){\r\n const {\r\n t,\r\n notes, \r\n isModalOpen, \r\n onClose,\r\n } = this.props\r\n\r\n /*var finalNotes = \"
  • \" + notes.replace(/()|(
    )/g, \"
  • \");\r\n finalNotes = finalNotes.replace(/\\/\\/($)/g, \"$1\");\r\n finalNotes = finalNotes.replace(/(\\/\\/)|(\\. \\/\\/)/g, \"
  • \");\r\n finalNotes = finalNotes.replace(/(\\. )/g, \".
  • \");\r\n finalNotes = finalNotes + \"
\";*/\r\n\r\n var auxNotes = notes.replace(/()|(
)/g, \"¡\");\r\n auxNotes = auxNotes.replace(/( )/g, \"\");\r\n auxNotes = auxNotes.replace(/\\/\\/($)/g, \"$1¡\");\r\n auxNotes = auxNotes.replace(/(\\/\\/)|(\\. \\/\\/)/g, \"¡\");\r\n auxNotes = auxNotes.replace(/(\\. )/g, \"¡\");\r\n\r\n var notesArray = auxNotes.split(\"¡\");\r\n\r\n var finalNotes = \"
  • \";\r\n var i;\r\n for (i = 0; i < notesArray.length; i++) {\r\n if(i == 0 || finalNotes == \"
    • \"){\r\n if(notesArray[i].length > 0 && notesArray[i].replace(/\\s/g, '').length > 0){\r\n finalNotes += notesArray[i];\r\n finalNotes += \"
    • \";\r\n }\r\n continue;\r\n }\r\n if(i == notesArray.length){\r\n if(notesArray[i].length > 0 && notesArray[i].replace(/\\s/g, '').length > 0){\r\n finalNotes += notesArray[i];\r\n }\r\n finalNotes += \"
    \";\r\n }\r\n else{\r\n if(notesArray[i].length > 0 && notesArray[i].replace(/\\s/g, '').length > 0){\r\n finalNotes += \"
  • \" + notesArray[i] + \"
  • \";\r\n }\r\n }\r\n }\r\n \r\n if(finalNotes == \"
    • \"){\r\n finalNotes = \"\";\r\n }\r\n\r\n var InfoHeader = styled.div`\r\n font-size: 2em;\r\n font-weight: bold;\r\n width: 97%;\r\n background: #b71c1c;\r\n color: white;\r\n padding: 0 20px;\r\n `\r\n\r\n var InfoBody = styled.div`\r\n .innerInfo ul {\r\n list-style: none; /* Remove list bullets */\r\n padding: 0;\r\n margin: 0;\r\n }\r\n \r\n .innerInfo ul li {\r\n padding-left: 16px;\r\n }\r\n \r\n .innerInfo ul li:before {\r\n content: \"🗹\"; /* Insert content that looks like bullets */\r\n padding-right: 8px;\r\n margin-left: -24px;\r\n }\r\n\r\n .innerInfo ul li{\r\n margin-bottom: 15px;\r\n }\r\n `\r\n \r\n return (\r\n onClose(null)} classNames={{modal: styles.root, closeButton: styles.closeButton}}>\r\n {t(\"RoomNotesModalInfo\")}
      \r\n
      \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withTranslation()(RoomNotesModal)","import styled from 'styled-components'\r\n\r\nexport const Distribution = styled.div`\r\n display: flex;\r\n margin: 5px 0;\r\n\r\n @media (max-width: 768px){\r\n flex-direction: column;\r\n border-bottom: 1px dotted #ccc;\r\n margin: 5px 0;\r\n padding: 5px 0;\r\n }\r\n`\r\nexport const Provider = styled.img`\r\n height: 32px;\r\n margin-left: 20px;\r\n\r\n @media (max-width: 768px){\r\n height: 24px;\r\n }\r\n`\r\n\r\nexport const Name = styled.div`\r\n flex: 1.5;\r\n text-align: left;\r\n padding: 5px 0px 5px 20px;\r\n`\r\n\r\n\r\nexport const FirstColumn = styled.div`\r\n flex: 1;\r\n display: flex;\r\n`","import React, { useState } from 'react'\r\nimport {withTranslation} from 'react-i18next'\r\nimport styled from 'styled-components'\r\nimport styles from './ResultDeal.module.css'\r\nimport {FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons'\r\nimport responsiveHelper from '../../utility/responsiveHelper'\r\nimport RoomNotesModal from './RoomNotesModal'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport {\r\n Distribution, \r\n Provider, \r\n Name, \r\n FirstColumn\r\n} from './ResultDistribution.style'\r\n\r\n\r\nconst RoomQuantityMessage = styled.div`\r\n margin-left: 30px;\r\n font-style: italic;\r\n color: #555;\r\n \r\n @media (max-width: 1378px){\r\n display: none;\r\n }\r\n`\r\n\r\nconst RoomName = styled.div`\r\n flex: 1.5;\r\n text-align: left;\r\n padding: 5px 0px 5px 20px;\r\n display: flex;\r\n font-weight: ${props => props.withTooltip ? 'bold' : 'normal'};\r\n text-transform: ${props => props.withTooltip ? 'uppercase' : 'none'};\r\n font-size: ${props => props.withTooltip ? '0.9em' : '1em'};\r\n cursor: ${props => props.withTooltip ? 'help' : 'normal'};\r\n`\r\n\r\nconst RoomPrice = styled.div`\r\n width: 150px;\r\n padding: 5px 0px;\r\n display: flex;\r\n justify-content: center;\r\n\r\n @media (max-width: 768px){\r\n padding-right: 10px;\r\n width: auto;\r\n }\r\n`\r\n\r\nconst ButtonModify = styled.div`\r\n padding: 5px 10px;\r\n font-size: 70%;\r\n font-weight: 700;\r\n line-height: 1;\r\n text-align: center;\r\n white-space: nowrap;\r\n vertical-align: baseline;\r\n border-radius: .25rem;\r\n color: #000;\r\n cursor: pointer;\r\n text-transform: uppercase;\r\n font-family: Arial;\r\n letter-spacing: 1px;\r\n margin-left: 40px;\r\n border-radius: 20px;\r\n\r\n @media (max-width: 1378px){\r\n margin-left: 0px;\r\n }\r\n`\r\n\r\nfunction setIsModalSelectionOpen(test){\r\n\r\n}\r\n\r\nconst FirstRowMobile = styled.div`\r\n display: flex;\r\n`\r\n\r\nconst DirectPayment = styled.div`\r\n width: 200px; \r\n text-align: center;\r\n`\r\n\r\nconst DirectPaymentText = styled.div`\r\n background-color: #298ed7;\r\n color: #fff;\r\n display: inline-block;\r\n border-radius: 20px;\r\n padding: 1px 10px;\r\n margin: 0 auto;\r\n cursor: help;\r\n font-size: 0.9em;\r\n`\r\n\r\nconst DirectPaymentTooltipText = styled.div`\r\n font-size: 12px;\r\n max-width: 300px;\r\n text-align: justify;\r\n padding: 10px 10px;\r\n`\r\nconst ExtendedRoomName = styled.div`\r\n max-width: 250px;\r\n text-align: left;\r\n padding: 10px 10px;\r\n font-size: 16px;\r\n`\r\n\r\n/*var isModalInformationOpen = false;\r\n\r\nfunction setIsModalInformationOpen(isOpen){\r\n isModalInformationOpen = isOpen;\r\n}*/\r\n\r\nconst ResultDistribution = ({t, distribution, selectedRoom, className, showLoading, distributioName}) => {\r\n \r\n const [isModalInformationOpen, setIsModalInformationOpen] = useState(false)\r\n\r\n const room = distribution.rooms.find(room => room.id === selectedRoom.id)\r\n const imageProviderName = room.providerName.toLowerCase() !== 'Booking' ? 'Joinrates' : 'Booking';\r\n const providerImage = `/content/react/images/${imageProviderName}.png`\r\n const price = (Math.round(room.price * 100) / 100).toFixed(2)\r\n\r\n\r\n const renderDistributionDesktop = () => \r\n \r\n \r\n \r\n {distributioName} \r\n \r\n\r\n \r\n {renderRoomName()}\r\n \r\n {t(\"resultDistribution.roomsQuantity\").replace(\"__num__\", distribution.rooms.length)}\r\n \r\n \r\n \r\n {showLoading ? \r\n : `${price} €`\r\n }\r\n \r\n \r\n \r\n {room.directPayment && <>\r\n Pago en hotel\r\n \r\n \r\n {t(\"direct_payment_Tooltip_text\")}\r\n \r\n \r\n }\r\n \r\n \r\n //VIC123 this up here is the FirectPaymentTooltipText David told me to make smaller\r\n const renderDistributionTablet = () => \r\n \r\n \r\n \r\n {distributioName} \r\n \r\n\r\n \r\n {renderRoomName()}\r\n \r\n {t(\"resultDistribution.roomsQuantity\").replace(\"__num__\", distribution.rooms.length)}\r\n \r\n \r\n \r\n {showLoading ? \r\n : `${price} €`\r\n }\r\n \r\n \r\n\r\n const renderDistributionMobile = () => \r\n \r\n \r\n \r\n {distributioName}\r\n \r\n {showLoading ? \r\n : `${price} €`\r\n }\r\n \r\n \r\n {renderRoomName()}\r\n \r\n\r\n const renderRoomName = () => \r\n room.roomCount < 2 \r\n ? <>\r\n {/** VIC123 también puedo hacer la i aquí**/}\r\n {room.name} setIsModalInformationOpen(true)}> \r\n {setIsModalInformationOpen(false); return;}}\r\n notes={room.roomAdditionalInfo} \r\n />\r\n \r\n : <>\r\n {room.roomCount} {t(\"canariasComments.rateRooms\")} \r\n \r\n \r\n {room.name}\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n return <>\r\n { responsiveHelper.isDesktop() && renderDistributionDesktop() }\r\n { responsiveHelper.isTablet() && renderDistributionTablet() }\r\n { responsiveHelper.isMobile() && renderDistributionMobile() }\r\n \r\n}\r\n\r\n\r\nexport default withTranslation()(ResultDistribution)","import React from 'react'\r\nimport styled, {keyframes} from 'styled-components'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport responsiveHelper from '../../utility/responsiveHelper'\r\n\r\nconst red = '#b71c1c';\r\n\r\nconst StepsContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n width: 1200px;\r\n\r\n @media (max-width: 768px){\r\n width: 95%;\r\n text-align: center;\r\n font-size: 1.2em;\r\n padding: 5px 0 15px 0;\r\n font-weight: bold;\r\n letter-spacing: 1px;\r\n text-transform: uppercase;\r\n }\r\n`\r\n\r\nconst Steps = styled.div`\r\n display: flex;\r\n margin-top: 30px; \r\n position: relative;\r\n`\r\n\r\nconst Step = styled.div`\r\n flex: 1;\r\n padding: 10px 0; \r\n z-index: 10; \r\n font-weight: ${props => props.active ? 'bold' : 'normal'};\r\n font-size ${props => props.active ? '1.4em' : '1.2em'}; \r\n color: ${props => props.active ? '#333' : '#eee'};\r\n`\r\n\r\nconst kfProgressBar_0_3 = keyframes`\r\n 0%{\r\n width: 20%;\r\n }\r\n 100%{\r\n width: 20%;\r\n }\r\n`\r\n\r\nconst kfProgressBar_1_3 = keyframes`\r\n 0%{\r\n width: 20%;\r\n }\r\n 100%{\r\n width: 40%;\r\n }\r\n`\r\nconst kfProgressBar_2_3 = keyframes`\r\n 0%{\r\n width: 40%;\r\n }\r\n 100%{\r\n width: 60%;\r\n }\r\n`\r\n\r\nconst ProgressBar = styled.div`\r\n position: absolute;\r\n z-index: 0;\r\n width: 20%;\r\n height: 40px;\r\n display: flex;\r\n justify-content: flex-end;\r\n background-color: ${red};\r\n animation: ${props => props.keyframe} 0.5s ease-in-out;\r\n animation-fill-mode: forwards;\r\n animation-iteration-count: 1;\r\n`\r\n\r\nconst RightArrow = styled.div`\r\n width: 0px;\r\n height: 0px;\r\n border-top: 20px solid transparent;\r\n border-bottom: 20px solid transparent;\r\n border-left: 30px solid ${red};\r\n position: absolute;\r\n top: 0;\r\n right: -30px;\r\n`\r\n\r\nconst CheckIcon = styled(FontAwesomeIcon)`\r\n margin-right: 10px;\r\n`\r\n\r\nexport default ({steps, activeStepIndex}) => {\r\n\r\n const keyframe = (steps.length === 3 && activeStepIndex === 1) ? kfProgressBar_0_3\r\n : (steps.length === 3 && activeStepIndex === 2) ? kfProgressBar_1_3\r\n : (steps.length === 3 && activeStepIndex === 3) ? kfProgressBar_2_3\r\n : ''\r\n\r\n const renderDefault = () => \r\n \r\n \r\n \r\n {steps.map((step, index) => \r\n \r\n {(index+1) < activeStepIndex ? : ''}\r\n {step}\r\n \r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n const renderMobile = () => \r\n \r\n {steps[activeStepIndex]}\r\n \r\n \r\n return responsiveHelper.isMobile() ? renderMobile() : renderDefault()\r\n}\r\n\r\n\r\n","import styled from 'styled-components'\r\n\r\nexport const DirectPayment = styled.div`\r\n width: 200px; \r\n text-align: center;\r\n`\r\n\r\nexport const DirectPaymentText = styled.div`\r\n background-color: #298ed7;\r\n color: #fff;\r\n display: inline-block;\r\n border-radius: 20px;\r\n padding: 1px 10px;\r\n margin: 0 auto;\r\n cursor: help;\r\n font-size: 0.9em;\r\n`\r\n\r\nexport const DirectPaymentTooltipText = styled.div`\r\n font-size: 18px;\r\n max-width: 300px; \r\n text-align: justify;\r\n padding: 10px 10px; \r\n`\r\n\r\nexport const RoomsContainer = styled.div`\r\n overflow: auto;\r\n`\r\n\r\nexport const RoomRow = styled.div`\r\n display: flex;\r\n margin: 10px 0;\r\n\r\n &:nth-child(even){\r\n background-color: #f5f5f5;\r\n }\r\n\r\n @media (max-width: 768px){\r\n flex-wrap: wrap;\r\n padding: 30px 10px;\r\n }\r\n`\r\n\r\nexport const Provider = styled.img`\r\n height: 32px;\r\n margin-right: 20px; \r\n`\r\n\r\nexport const RoomName = styled.div`\r\n flex: 2;\r\n display: flex;\r\n justify-content: left;\r\n align-items: center;\r\n \r\n @media (max-width: 768px){\r\n flex: 75%;\r\n }\r\n`\r\nexport const RoomPrice = styled.div`\r\n flex: 1;\r\n display: flex;\r\n justify-content: left;\r\n align-items: center; \r\n \r\n @media (max-width: 768px){\r\n flex: 45%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 1.2em;\r\n font-weight: bold;\r\n } \r\n`\r\nexport const RoomSelect = styled.div`\r\n width: 200px;\r\n cursor: pointer;\r\n background-color: #5cb85c;\r\n color: #fff;\r\n padding: 5px 10px;\r\n text-align: center;\r\n text-transform: uppercase;\r\n\r\n @media (max-width: 768px){\r\n flex: 45%;\r\n }\r\n`","import React, { useState, useEffect } from 'react'\r\nimport styles from './ModifySelectedRooms.module.css'\r\nimport styled from 'styled-components'\r\nimport Modal from 'react-responsive-modal'\r\nimport ModifySelectionSteps from './ModifySelectionSteps'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nimport {\r\n DirectPayment,\r\n DirectPaymentText,\r\n DirectPaymentTooltipText,\r\n RoomsContainer,\r\n RoomRow,\r\n Provider,\r\n RoomName,\r\n RoomPrice,\r\n RoomSelect\r\n} from './ModifySelectedRooms.style'\r\n\r\nclass ModifySelectionRoom extends React.Component{\r\n constructor(props){\r\n super()\r\n\r\n this.state = {\r\n activeStepIndex: 1,\r\n roomsSelected: [],\r\n providerSelected: null,\r\n isDirectPayment: false\r\n }\r\n\r\n this.handleAllRoomSelected = this.handleAllRoomSelected.bind(this)\r\n }\r\n \r\n handleAllRoomSelected(selectedRooms){ \r\n this.setState({\r\n activeStepIndex: 1,\r\n roomsSelected: [],\r\n providerSelected: null,\r\n isDirectPayment: false\r\n }, () => {\r\n this.props.onClose(selectedRooms)\r\n }) \r\n }\r\n\r\n render(){\r\n const {\r\n t, \r\n distributions, \r\n isModalOpen, \r\n onClose, \r\n selectText, \r\n roomsSelected, \r\n newRoom, \r\n providerSelected, \r\n activeStepIndex\r\n } = this.props\r\n\r\n const roomsIdAndHowManySelected = {}\r\n\r\n if(roomsSelected)\r\n roomsSelected.map(r => {\r\n return roomsIdAndHowManySelected[r.room.id] \r\n ? roomsIdAndHowManySelected[r.room.id] = roomsIdAndHowManySelected[r.room.id] + 1\r\n : roomsIdAndHowManySelected[r.room.id] = 1\r\n })\r\n \r\n\r\n\r\n const steps = distributions.map(d => d.name)\r\n let stepRooms = distributions[this.state.activeStepIndex-1].rooms\r\n\r\n if(this.state.providerSelected !== null)\r\n stepRooms = stepRooms.filter(r => r.providerName === this.state.providerSelected)\r\n\r\n if(this.state.roomsSelected.length > 0){\r\n const selectedIsDirectPayment = this.state.roomsSelected[0].room.directPayment\r\n\r\n stepRooms = stepRooms.filter(r => r.directPayment === selectedIsDirectPayment)\r\n }\r\n \r\n\r\n \r\n stepRooms = stepRooms.filter(r => !roomsIdAndHowManySelected[r.id] || roomsIdAndHowManySelected[r.id] < r.numRoomsAvailable ) // skip if rooms already selected is less or equal of room availability\r\n\r\n\r\n // const stepRooms = providerSelected == null \r\n // ? distributions[this.state.activeStepIndex-1].rooms\r\n // : distributions[this.state.activeStepIndex-1].rooms\r\n // .filter(r => r.providerName === this.state.providerSelected)\r\n // .filter(r => !filterByDirectPayment ? true : r.directPayment === filterDirectPaymentValue)\r\n // .filter(r => { \r\n // return !roomsIdAndHowManySelected[r.id] ||\r\n // roomsIdAndHowManySelected[r.id] < r.numRoomsAvailable }) // skip if rooms already selected is less or equal of room availability\r\n \r\n \r\n const me = this \r\n return (\r\n onClose(null)} classNames={{modal: styles.root, closeButton: styles.closeButton}}>\r\n \r\n \r\n \r\n {stepRooms.map((room, index) =>\r\n \r\n\r\n \r\n {room.name}\r\n {room.price} €\r\n {room.directPayment && \r\n \r\n Pago en hotel\r\n \r\n \r\n {t(\"direct_payment_Tooltip_text\")}\r\n \r\n \r\n }\r\n {\r\n const nextStepIndex = me.state.activeStepIndex + 1 \r\n\r\n const distributionId = distributions[me.state.activeStepIndex-1].distributionId\r\n\r\n const newRoomsSelected = me.state\r\n .roomsSelected\r\n .filter(r => r.distributionId !== distributionId)\r\n\r\n newRoomsSelected.push({ distributionId, room})\r\n\r\n const newState = {}\r\n Object.assign(newState, me.state)\r\n\r\n newState.roomsSelected = newRoomsSelected\r\n newState.providerSelected = room.providerName\r\n newState.isDirectPayment = room.directPayment\r\n \r\n if(nextStepIndex > distributions.length) { \r\n me.handleAllRoomSelected(newRoomsSelected) // onClose(newRoomsSelected)\r\n newState.activeStepIndex = 1 \r\n newState.providerSelected = null\r\n } else{\r\n newState.activeStepIndex = nextStepIndex \r\n me.setState(newState)\r\n } \r\n\r\n \r\n\r\n }}>{selectText} \r\n \r\n )}\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\n/**\r\n * *****************************************************************************************\r\n * ! OLD FUNCTIONAL VERSION\r\n */\r\n\r\n\r\n// const ModifySelectionRoom = ({distributions, isModalOpen, onClose, selectText}) => {\r\n// const [activeStepIndex, useActiveStepIndex] = useState(1)\r\n// const [roomsSelected, useRoomsSelected] = useState([])\r\n// const [providerSelected, useProviderSelected] = useState(null)\r\n \r\n// useEffect(() => {\r\n// useActiveStepIndex(1)\r\n// useRoomsSelected([]) // re-init when open the modale\r\n// useProviderSelected(null)\r\n// }, [isModalOpen]) \r\n\r\n// const roomsIdAndHowManySelected = {}\r\n\r\n// if(roomsSelected)\r\n// roomsSelected.map(r => {\r\n// return roomsIdAndHowManySelected[r.room.id] \r\n// ? roomsIdAndHowManySelected[r.room.id] = roomsIdAndHowManySelected[r.room.id] + 1\r\n// : roomsIdAndHowManySelected[r.room.id] = 1\r\n// })\r\n\r\n// const steps = distributions.map(d => d.name)\r\n// const stepRooms = providerSelected == null \r\n// ? distributions[activeStepIndex-1].rooms\r\n// : distributions[activeStepIndex-1].rooms\r\n// .filter(r => r.providerName === providerSelected)\r\n// .filter(r => { \r\n// return !roomsIdAndHowManySelected[r.id] ||\r\n// roomsIdAndHowManySelected[r.id] < r.numRoomsAvailable }) // skip if rooms already selected is less or equal of room availability\r\n \r\n \r\n \r\n// return (\r\n// onClose(null)} classNames={{modal: styles.root, closeButton: styles.closeButton}}>\r\n// \r\n \r\n// \r\n// {stepRooms.map((room, index) =>\r\n// \r\n\r\n// \r\n// {room.name}\r\n// {room.price} €\r\n// {room.directPayment && \r\n// \r\n// Pago en hotel\r\n// \r\n// \r\n// {t(\"direct_payment_Tooltip_text\")}\r\n// \r\n// \r\n// }\r\n// {\r\n// const nextStepIndex = activeStepIndex + 1 \r\n\r\n// const distributionId = distributions[activeStepIndex-1].distributionId\r\n// const newRoomsSelected = roomsSelected &&roomsSelected.filter(r => r.distributionId !== distributionId)\r\n// newRoomsSelected.push({ distributionId, room})\r\n\r\n// useRoomsSelected(newRoomsSelected)\r\n// useProviderSelected(room.providerName)\r\n\r\n// if(nextStepIndex > distributions.length) { \r\n// onClose(newRoomsSelected)\r\n// useActiveStepIndex(1) \r\n// useProviderSelected(null)\r\n// }\r\n// else useActiveStepIndex(nextStepIndex) // move to next step\r\n\r\n// }}>{selectText} \r\n// \r\n// )}\r\n// \r\n// \r\n\r\n// )\r\n// }\r\n\r\n export default withTranslation()(ModifySelectionRoom)","import React, { useState } from \"react\"\r\nimport styles from \"./SelectPackages.module.css\"\r\nimport styled from \"styled-components\"\r\nimport Modal from \"react-responsive-modal\"\r\nimport { withTranslation } from \"react-i18next\"\r\n\r\nconst PackagesContainer = styled.div`\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n`\r\n\r\nconst Instructions = styled.div`\r\n\tfont-size: 1.4em;\r\n\tmargin: 10px 0;\r\n\ttext-align: center;\r\n\tmargin: 0 0 2em 0;\r\n\r\n\t@media (max-width: 768px) {\r\n\t\tmargin-top: 20px;\r\n\t}\r\n`\r\n\r\nconst Package = styled.div`\r\n\tflex: 1;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tmargin-bottom: 20px;\r\n\tpadding-bottom: 20px;\r\n\tborder-bottom: 2px dotted #ddd;\r\n\r\n\t&:last-child {\r\n\t\tborder-bottom: none;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\tflex-direction: column;\r\n\t}\r\n`\r\n\r\nconst Name = styled.div`\r\n\tflex: 1;\r\n\ttext-align: left;\r\n\r\n\t@media (max-width: 768px) {\r\n\t\tfont-size: 1.2em;\r\n\t\tfont-weight: bold;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttext-transform: uppercase;\r\n\t}\r\n`\r\n\r\nconst Description = styled.div`\r\n\tflex: 2;\r\n\ttext-align: justify;\r\n`\r\n\r\nconst Price = styled.div`\r\n\tflex: 1;\r\n\tfont-size: 1.2em;\r\n\ttext-align: right;\r\n\tpadding-right: 2em;\r\n\r\n\t@media (max-width: 768px) {\r\n\t\tpadding-right: 0;\r\n\t\tmargin-bottom: 20px;\r\n\t\tfont-weight: bold;\r\n\t}\r\n`\r\n\r\nconst SelectPackage = styled.div`\r\n\tcursor: pointer;\r\n\tcolor: #fff;\r\n\tpadding: 5px;\r\n\twidth: 150px;\r\n\ttext-align: center;\r\n\tbackground-color: ${props => (props.selected ? \"#4d924d\" : \"#5cb85c\")};\r\n`\r\n\r\nconst ConfirmButton = styled.div`\r\n\tcursor: pointer;\r\n\tcolor: #fff;\r\n\tpadding: 5px;\r\n\twidth: 150px;\r\n\tfont-size: 1.4em;\r\n\tbackground-color: #4d924d;\r\n\tmargin: 20px auto 0 auto;\r\n\ttext-align: center;\r\n`\r\n\r\nconst SelectPackageComp = ({\r\n\tt,\r\n\tisModalOpen,\r\n\tpackages,\r\n\tdistributions,\r\n\tonClose\r\n}) => {\r\n\tconst [selectedPackages, setSelectedPackages] = useState(null)\r\n\tconst [forceReRender, setForceReRender] = useState(0)\r\n\r\n\tconst packagesId = []\r\n\tfor (let i in packages)\r\n\t\tif (packagesId.filter(p => p === packages[i].packageId).length < 1)\r\n\t\t\tpackagesId.push(packages[i].packageId)\r\n\r\n\tconst distributionForPackages = packagesId.map(packageId => {\r\n\t\tconst distributionsId = packages\r\n\t\t\t.filter(p => p.packageId === packageId)\r\n\t\t\t.map(p => p.distributionId)\r\n\r\n\t\tconst distributionsForPackage = distributions.filter(\r\n\t\t\td =>\r\n\t\t\t\tdistributionsId.filter(di => di === d.distributionId).length > 0\r\n\t\t)\r\n\r\n\t\tconst pack = packages.filter(p => p.packageId === packageId)[0] // the package name is repeated for every distributions\r\n\r\n\t\treturn {\r\n\t\t\tpackageId: pack.packageId,\r\n\t\t\tpackageName: pack.name,\r\n\t\t\tpackageDescription: pack.description,\r\n\t\t\tpackagePrice: pack.price,\r\n\t\t\tdistributions: distributionsForPackage\r\n\t\t}\r\n\t})\r\n\r\n\tconst handleToggleSelectPackage = packageId => {\r\n\t\tconst newSelectedPackages =\r\n\t\t\tselectedPackages === null\r\n\t\t\t\t? packagesId.map(id => ({ packageId: id, selected: false }))\r\n\t\t\t\t: selectedPackages\r\n\r\n\t\tconst selectionToToggle = newSelectedPackages.find(\r\n\t\t\tp => p.packageId === packageId\r\n\t\t)\r\n\t\tselectionToToggle.selected = !selectionToToggle.selected\r\n\r\n\t\tsetSelectedPackages(newSelectedPackages)\r\n\t\tsetForceReRender(forceReRender + 1) // to force a render every time selectedPackages, at the moment there is something with his Hook that doesn't work correctly...\r\n\t}\r\n\r\n\treturn (\r\n\t\t onClose(null)}\r\n\t\t\tclassNames={{ modal: styles.root, closeButton: styles.closeButton }}\r\n\t\t\tforceReRender={forceReRender}\r\n\t\t>\r\n\t\t\t\r\n\t\t\t\t{t(\"package.Add\")}: \r\n\t\t\t\t{packagesId &&\r\n\t\t\t\t\tpackagesId.map((pId, i1) => {\r\n\t\t\t\t\t\tconst pDistr =\r\n\t\t\t\t\t\t\tdistributionForPackages.filter(\r\n\t\t\t\t\t\t\t\td => d.packageId === pId\r\n\t\t\t\t\t\t\t)[0] || []\r\n\t\t\t\t\t\tconst isSelected =\r\n\t\t\t\t\t\t\ttrue &&\r\n\t\t\t\t\t\t\tselectedPackages &&\r\n\t\t\t\t\t\t\tselectedPackages.find(p => p.packageId === pId)\r\n\t\t\t\t\t\t\t\t.selected\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{pDistr.packageName}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{pDistr.packageDescription}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{`${pDistr.packagePrice} €`}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thandleToggleSelectPackage(pId)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{isSelected\r\n\t\t\t\t\t\t\t\t\t\t? t(\"package.Selected\")\r\n\t\t\t\t\t\t\t\t\t\t: t(\"package.Select\")}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t})}\r\n\r\n\t\t\t\t onClose(selectedPackages || [])}>\r\n\t\t\t\t\t{t(\"package.Book\")}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default withTranslation()(SelectPackageComp)\r\n","import styled from 'styled-components'\r\n\r\nexport const Deal = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n border-top: 2px dotted #ddd;\r\n padding: 30px;\r\n \r\n &:first-child{\r\n border-top: none;\r\n }\r\n\r\n @media (max-width: 768px){\r\n padding: 30px 0px 0px 0px;\r\n margin-bottom: 30px;\r\n }\r\n`\r\n\r\nexport const DealResume = styled.div`\r\n display: flex;\r\n height: 3em;\r\n background-color: #f2f2f2;\r\n border-radius: 5px;\r\n\r\n @media (max-height: 1378px){\r\n height: 5em;\r\n align-items: center;\r\n }\r\n`\r\n\r\nexport const DealName = styled.div`\r\n font-weight: bold;\r\n color: #333;\r\n text-transform: uppercase;\r\n letter-spacing: 1px;\r\n flex: 1;\r\n display: flex;\r\n align-items: center;\r\n padding-left: 20px;\r\n\r\n @media (max-width: 1378px){\r\n width: 50%;\r\n justify-content: center;\r\n height: 2em;\r\n }\r\n\r\n @media (max-width: 768px){\r\n width: 100%;\r\n justify-content: center;\r\n padding-left: 0px;\r\n margin-bottom: 10px;\r\n }\r\n`\r\nexport const DescriptionSpace = styled.div`\r\n flex: 1.5;\r\n display: flex;\r\n align-items: center;\r\n\r\n @media (max-width: 1378px) and (min-width: 768px){\r\n justify-content: flex-end;\r\n padding-right: 20px;\r\n }\r\n\r\n @media (max-width: 768px){\r\n justify-content: center; \r\n }\r\n`\r\n\r\nexport const DealPrice = styled.div`\r\n justify-content: center;\r\n align-items: center;\r\n display: flex;\r\n font-size: 1.4em;\r\n width: 150px;\r\n\r\n @media (max-width: 1378px){\r\n padding-top: 15px;\r\n padding-right: 45px;\r\n width: auto;\r\n justify-content: flex-end;\r\n }\r\n`\r\nexport const DistributionsDetails = styled.div`\r\n display: flex;\r\n`\r\n\r\nexport const Distributions = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n`\r\n\r\nconst Button = styled.div`\r\n color: #fff;\r\n cursor: pointer;\r\n text-transform: uppercase; \r\n padding: 5px;\r\n width: 200px; \r\n text-align: center;\r\n`\r\n\r\nexport const ButtonSelect = styled(Button)`\r\n background-color: #5cb85c;\r\n\r\n`\r\n\r\nexport const ButtonModify = styled.div`\r\n padding: 5px 10px;\r\n font-size: 70%;\r\n font-weight: 700;\r\n line-height: 1;\r\n text-align: center;\r\n white-space: nowrap;\r\n vertical-align: baseline;\r\n border-radius: .25rem;\r\n color: #fff;\r\n background-color: #dc0000;\r\n cursor: pointer;\r\n text-transform: uppercase;\r\n font-family: Arial;\r\n letter-spacing: 1px;\r\n margin-left: 40px;\r\n border-radius: 20px;\r\n\r\n @media (max-width: 1378px){\r\n margin-left: 0px;\r\n }\r\n`\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nexport const Container = styled.div`\r\n display: flex;\r\n align-items:center;\r\n justify-content: center;\r\n width: 200px;\r\n\r\n @media (max-width: 1378px){\r\n width: auto;\r\n }\r\n`\r\n\r\nexport default ({showLoading, children}) => !showLoading && {children}","const joinratesHotelBlock = 'https://hotelsapi.canarias.com/api/hotelblock'\r\n\r\nclass BookingHelper{\r\n \r\n\r\n groupBookingUrls = urls => {\r\n const roomParamName = 'nr_rooms_'\r\n\r\n const getUrlWithoutRooms = url =>{\r\n const urlParts = url.split('?')\r\n const parameters = urlParts[1].split('&')\r\n const parametersWithoutRoom = parameters.filter(p => p.indexOf(roomParamName) === -1)\r\n\r\n return `${urlParts[0]}?` + parametersWithoutRoom.join('&')\r\n }\r\n\r\n const roomsId = urls.map(url => {\r\n const urlParts = url.split('?')\r\n const parameters = urlParts[1].split('&')\r\n return parameters.filter(p => p.indexOf(roomParamName) === 0)\r\n }).flatMap(i => i)\r\n\r\n const uniqueRoomsId = []\r\n for(let i in roomsId){\r\n const existingRoomId = uniqueRoomsId.find(r => roomsId[i].indexOf(r.id) >= 0)\r\n if(existingRoomId) existingRoomId.quantity = existingRoomId.quantity + 1\r\n else uniqueRoomsId.push({\r\n id: roomsId[i].split('=')[0], \r\n quantity: 1\r\n })\r\n }\r\n\r\n const urlWithoutRooms = getUrlWithoutRooms(urls[0])\r\n const roomsUrlParts = uniqueRoomsId.map(r => `&${r.id}=${r.quantity}`)\r\n const roomsUrlPart = roomsUrlParts.join('')\r\n\r\n return `${urlWithoutRooms}${roomsUrlPart}`\r\n }\r\n\r\n isBookingHotel = hotelId => hotelId && hotelId.startsWith('B-')\r\n\r\n isJoinratesHotel = hotelId => hotelId && !hotelId.startsWith('B-')\r\n\r\n buildBookingHotelUrl = selections => {\r\n const roomIds = selections.reduce((ids, selection) => {\r\n const existingId = ids.filter(i => i.roomId === selection.roomId)\r\n existingId.length === 1 ? existingId[0].value++ : ids.push({roomId: selection.roomId, value: 1})\r\n return ids\r\n }, []) \r\n\r\n const firstUrl = selections[0].bookingLink\r\n const start_rn_rooms = firstUrl.indexOf('&nr_rooms_')\r\n const end_nr_rooms = firstUrl.indexOf('&', start_rn_rooms + 10)\r\n \r\n const baseUrl = end_nr_rooms < 1 ? firstUrl.substring(0, start_rn_rooms)\r\n : firstUrl.substring(0, start_rn_rooms) + firstUrl.substring(end_nr_rooms)\r\n\r\n return roomIds.reduce((url, id) => `${url}&nr_rooms_${id.roomId}=${id.value}`, baseUrl) \r\n }\r\n\r\n doJoinratesHotelBlock = (selections, callback) => {\r\n const params = {\r\n \"rooms\": [\r\n {\r\n \"id\": \"string\",\r\n \"hotelId\": \"string\",\r\n \"initDate\": \"2019-03-11T12:21:49.002Z\",\r\n \"endDate\": \"2019-03-11T12:21:49.002Z\",\r\n \"code\": \"string\",\r\n \"dealCode\": \"string\",\r\n \"price\": 0,\r\n \"isPVP\": true,\r\n \"directPayment\": true,\r\n \"canaryResident\": true,\r\n \"distributionId\": 0\r\n }\r\n ],\r\n \"packages\": [\r\n {\r\n \"packageId\": 0,\r\n \"distributionId\": 0,\r\n \"initDate\": \"2019-03-11T12:21:49.002Z\",\r\n \"endDate\": \"2019-03-11T12:21:49.002Z\"\r\n }\r\n ],\r\n \"distributions\": [\r\n {\r\n \"id\": 0,\r\n \"adults\": 0,\r\n \"childrenAges\": [\r\n 0\r\n ]\r\n }\r\n ],\r\n \"channelCode\": \"string\",\r\n \"channelKey\": \"string\"\r\n }\r\n\r\n\r\n\r\n\r\n\r\n fetch(joinratesHotelBlock,{\r\n methos: 'POST',\r\n headers:{\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(params)\r\n })\r\n .then(response => response.json())\r\n .then(json => callback(json))\r\n }\r\n}\r\n\r\n\r\nexport default new BookingHelper()","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport BookingHelper from './../../utility/bookingHelper'\r\n\r\nexport const ButtonSelect = styled.div`\r\n color: #fff;\r\n cursor: pointer;\r\n text-transform: uppercase; \r\n padding: 5px;\r\n width: 150px; \r\n text-align: center;\r\n background-color: #5cb85c;\r\n border-radius: 20px;\r\n\r\n @media (max-width: 1378px){\r\n width: 90%;\r\n margin-top: 40px;\r\n }\r\n\r\n @media (max-width: 768px){ \r\n margin-top: 10px;\r\n }\r\n`\r\n\r\nexport default ({selectedRooms, packages, sendSelectedRoomsAndPackage, onCustomClick, text}) => \r\n {\r\n const selectedDistributionsId = selectedRooms.map(r => r.distributionId)\r\n const roomPackages = packages && packages.filter(p => selectedDistributionsId.filter(d => d.distributionId === p.distributionId))\r\n const hasNotPackage = roomPackages && roomPackages.length === 0 \r\n const isExternalProvider = selectedRooms[0].room.providerName !== 'Joinrates'\r\n \r\n if(isExternalProvider){\r\n const multipleUrls = selectedRooms.map(r => r.room.bookingLink)\r\n const singleUrl = BookingHelper.groupBookingUrls(multipleUrls)\r\n\r\n window.open(singleUrl)\r\n return\r\n }else if(hasNotPackage)\r\n sendSelectedRoomsAndPackage() \r\n \r\n onCustomClick(roomPackages)\r\n }}\r\n >{text} ","import React, { useState } from 'react'\r\nimport { createFragmentContainer, graphql } from 'react-relay'\r\nimport Distribution from './ResultDistribution'\r\nimport ModifySelectedRooms from '../ModifySelection/ModifySelectedRooms'\r\nimport SelectPackages from './../Packages/SelectPackages'\r\nimport {FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\r\nimport styled from 'styled-components'\r\nimport responsiveHelper from '../../utility/responsiveHelper'\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nimport {Deal, DealResume, DealName, DescriptionSpace, DealPrice, Distributions, ButtonModify, DistributionsDetails} \r\n from './ResultDeal.style'\r\nimport styles from './ResultDeal.module.css'\r\n\r\nimport ResultDealShowLoading from './ResultDealShowLoading'\r\nimport ResultDealButtonSelect from './ResultDealButtonSelect'\r\n\r\nrequire(\"react-bootstrap/ModalHeader\")\r\n\r\nconst RoomTypeTitle = styled.div`\r\n font-weight: bold;\r\n color: rgb(51, 51, 51);\r\n text-transform: uppercase;\r\n letter-spacing: 1px;\r\n display: flex;\r\n -webkit-box-align: center;\r\n align-items: center;\r\n`\r\nconst DealHeaderLeft = styled.div`\r\n display: flex;\r\n flex: 1;\r\n align-items: center;\r\n\r\n @media (max-width: 1378px){\r\n width: 66%;\r\n flex-wrap: wrap;\r\n }\r\n\r\n @media (max-width: 768px){\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n`\r\n\r\n\r\n\r\nconst TotalPriceText = styled.div`\r\n display: flex; \r\n flex: 1; \r\n padding-left: 20px;\r\n`\r\n\r\nfunction ResultDeal({deal, className, onSelectRooms, packages, showLoading, t, realDistributionNumber}){\r\n const {distributions, defaultSelectionTotalPrice, code, name} = deal\r\n\r\n const roundPrice = price => (Math.round(price * 100) / 100).toFixed(2)\r\n \r\n const buildDefaultSelectedRooms = () =>\r\n distributions.map(distribution => {\r\n \r\n return {\r\n distributionId: distribution.distributionId,\r\n room: distribution.rooms.find(room => room.id === distribution.defaultSelectionRoom.roomId) \r\n }\r\n }) \r\n\r\n const [isModalSelectionOpen, setIsModalSelectionOpen] = useState(false)\r\n const [isModalSelectedPackagesOpen, setIsModalSelectedPackagesOpen] = useState(false)\r\n const [customerRoomsSelectionTotalPrice, setCustomerRoomsSelectionTotalPrice] = useState(roundPrice(defaultSelectionTotalPrice))\r\n const [selectedRooms, setCustomerRoomsSelection] = useState(buildDefaultSelectedRooms())\r\n const [roomsPackages, setRoomsPackages] = useState([])\r\n \r\n const getSelectedRoom = (distributionId, roomList) => {\r\n var rooms = roomList || selectedRooms;\r\n for(let i in rooms)\r\n if(rooms[i].distributionId === distributionId)\r\n return rooms[i].room\r\n }\r\n\r\n\r\n const sendSelectedRoomsAndPackage = (selectedPackages = []) => {\r\n\r\n const getPackages = distributionId => selectedPackages.filter(p => p.selected)\r\n .map(p => ({\r\n packageId: p.packageId,\r\n distributionId: distributionId,\r\n }))\r\n\r\n const packages = selectedPackages === null \r\n ? [] \r\n : selectedRooms.map(s => getPackages(s.distributionId))\r\n .flat(2)\r\n\r\n const blockHotelParams = {\r\n rooms: selectedRooms.map(s => ({\r\n id: s.room.roomId,\r\n code: s.room.code,\r\n dealCode: code,\r\n price: s.room.price,\r\n isPVP: s.room.isPVP,\r\n directPayment: s.room.directPayment,\r\n canaryResident: s.room.canaryResident,\r\n distributionId: s.distributionId,\r\n roomName: s.room.name,\r\n dealName: deal.name,\r\n roomAdditionalInfo: s.room.roomAdditionalInfo,\r\n rawCancellationCosts: s.room.rawCancellationCosts // add text \r\n })),\r\n packages\r\n }\r\n\r\n onSelectRooms(blockHotelParams) \r\n }\r\n\r\n const showModifyButton = distributions.filter(d => d.rooms.length > 1).length > 0\r\n const changeRoomText = distributions.length == 1 ? t(\"resultDeal.changeRoomTitle\") : t(\"resultDeal.changeRoomsTitle\")\r\n\r\n\r\n const renderDealResumeDesktop = () => \r\n \r\n \r\n {name} \r\n \r\n {t(\"resultDeal.roomTypeTitle\")} \r\n { !showLoading && showModifyButton && \r\n <> \r\n setIsModalSelectionOpen(true)}>{changeRoomText}\r\n {/* I'll have to see how this down here works and use it to show the information */}\r\n { \r\n setIsModalSelectionOpen(false)\r\n \r\n if(!newRoomsSelection) return\r\n \r\n let defaultSelectionTotalPrice = 0\r\n for(let i in newRoomsSelection) defaultSelectionTotalPrice += newRoomsSelection[i].room.price \r\n \r\n setCustomerRoomsSelectionTotalPrice(roundPrice(defaultSelectionTotalPrice))\r\n setCustomerRoomsSelection(newRoomsSelection) \r\n }} \r\n distributions={distributions} \r\n selectText={t(\"deal_selection.button_select_text\")} />\r\n \r\n }\r\n \r\n \r\n {showLoading ? \r\n : `${customerRoomsSelectionTotalPrice} €`\r\n }\r\n \r\n \r\n \r\n \r\n {\r\n setRoomsPackages(roomPackages)\r\n setIsModalSelectedPackagesOpen(true) \r\n }}\r\n text={t(\"deal.button_select_text\")}\r\n />\r\n \r\n {\r\n setIsModalSelectedPackagesOpen(false) \r\n selectedPackages && sendSelectedRoomsAndPackage(selectedPackages)\r\n }} \r\n packages={roomsPackages} \r\n distributions={distributions} \r\n isModalOpen={isModalSelectedPackagesOpen}\r\n />\r\n \r\n \r\n\r\n \r\n const renderDealResumeTablet = () => \r\n \r\n \r\n {name} \r\n \r\n { !showLoading && showModifyButton && // show button only if there are more options\r\n <> \r\n setIsModalSelectionOpen(true)}>{changeRoomText}\r\n { \r\n setIsModalSelectionOpen(false)\r\n \r\n if(!newRoomsSelection) return\r\n \r\n let defaultSelectionTotalPrice = 0\r\n for(let i in newRoomsSelection) defaultSelectionTotalPrice += newRoomsSelection[i].room.price \r\n \r\n setCustomerRoomsSelectionTotalPrice(roundPrice(defaultSelectionTotalPrice))\r\n setCustomerRoomsSelection(newRoomsSelection) \r\n }} \r\n distributions={distributions} \r\n selectText={t(\"deal_selection.button_select_text\")} />\r\n \r\n }\r\n \r\n \r\n \r\n\r\n\r\n const renderDealResumeMobile = () => \r\n \r\n \r\n {name} \r\n \r\n { !showLoading && showModifyButton && // show button only if there are more options\r\n <> \r\n setIsModalSelectionOpen(true)}>{changeRoomText}\r\n { \r\n setIsModalSelectionOpen(false)\r\n \r\n if(!newRoomsSelection) return\r\n \r\n let defaultSelectionTotalPrice = 0\r\n for(let i in newRoomsSelection) defaultSelectionTotalPrice += newRoomsSelection[i].room.price \r\n \r\n setCustomerRoomsSelectionTotalPrice(roundPrice(defaultSelectionTotalPrice))\r\n setCustomerRoomsSelection(newRoomsSelection) \r\n }} \r\n distributions={distributions} \r\n selectText={t(\"deal_selection.button_select_text\")} />\r\n \r\n }\r\n \r\n \r\n \r\n\r\n\r\n const renderDealResumeBottomDesktop = () => \r\n <>\r\n \r\n\r\n const renderDealResumeBottomTablet = () => \r\n <>\r\n \r\n {showLoading ? \r\n : <>{t(\"resultDeal.totalPriceText\")}{customerRoomsSelectionTotalPrice} €\r\n }\r\n \r\n \r\n\r\n \r\n {\r\n setRoomsPackages(roomPackages)\r\n setIsModalSelectedPackagesOpen(true) \r\n }}\r\n text={t(\"deal.button_select_text\")}\r\n />\r\n \r\n {\r\n setIsModalSelectedPackagesOpen(false) \r\n selectedPackages && sendSelectedRoomsAndPackage(selectedPackages)\r\n }} \r\n packages={roomsPackages} \r\n distributions={distributions} \r\n isModalOpen={isModalSelectedPackagesOpen}\r\n />\r\n \r\n \r\n\r\n const renderDealResumeBottomMobile = () => \r\n <>\r\n \r\n {showLoading ? \r\n : <>{t(\"resultDeal.totalPriceText\")}{customerRoomsSelectionTotalPrice} €\r\n } \r\n \r\n\r\n \r\n {\r\n setRoomsPackages(roomPackages)\r\n setIsModalSelectedPackagesOpen(true) \r\n }}\r\n text={t(\"deal.button_select_text\")}\r\n />\r\n \r\n {\r\n setIsModalSelectedPackagesOpen(false) \r\n selectedPackages && sendSelectedRoomsAndPackage(selectedPackages)\r\n }} \r\n packages={roomsPackages} \r\n distributions={distributions} \r\n isModalOpen={isModalSelectedPackagesOpen}\r\n />\r\n \r\n \r\n\r\n return( \r\n \r\n { responsiveHelper.isDesktop() && renderDealResumeDesktop() }\r\n { responsiveHelper.isTablet() && renderDealResumeTablet() }\r\n { responsiveHelper.isMobile() && renderDealResumeMobile() }\r\n \r\n \r\n \r\n {distributions && distributions.map((distribution, index) => {\r\n const distributioName = realDistributionNumber > distributions.length \r\n ? t(\"distributions.up_to_x_person\").replace(\"__num__\", distribution.rooms[0].maxOccupancy)\r\n : distribution.name\r\n \r\n var selectedRoom = getSelectedRoom(distribution.distributionId);\r\n if(distribution.rooms.filter(r => r.id == selectedRoom.id).length === 0){\r\n //Al filtrar por regimen, cuando hay 1 hab por regimen (creo...), selectedRoom a veces queda vinculada a otro regimen\r\n //en este caso, la reconstruimos desde aqui\r\n selectedRoom = getSelectedRoom(distribution.distributionId, buildDefaultSelectedRooms());\r\n }\r\n return \r\n }\r\n \r\n )} \r\n \r\n \r\n \r\n \r\n { responsiveHelper.isDesktop() && renderDealResumeBottomDesktop() }\r\n { responsiveHelper.isTablet() && renderDealResumeBottomTablet() }\r\n { responsiveHelper.isMobile() && renderDealResumeBottomMobile() }\r\n \r\n \r\n )\r\n}\r\n\r\nconst ResultDealWT = withTranslation()(ResultDeal)\r\n\r\nexport default createFragmentContainer(ResultDealWT, graphql`\r\n fragment ResultDeal_deal on AvailabilityResultHotelDeal{\r\n id\r\n code\r\n name\r\n defaultSelectionTotalPrice\r\n distributions{ \r\n id\r\n distributionId\r\n name\r\n rooms{\r\n id\r\n roomId\r\n code\r\n name \r\n price\r\n providerName\r\n bookingLink\r\n canaryResident\r\n numRoomsAvailable\r\n roomCount\r\n cancellationCosts{\r\n cost\r\n date\r\n time\r\n } \r\n rawCancellationCosts{\r\n amount\r\n percent\r\n date\r\n }\r\n directPayment\r\n roomAdditionalInfo\r\n maxOccupancy\r\n isPVP \r\n }\r\n defaultSelectionRoom{\r\n id\r\n roomId\r\n roomName\r\n roomPrice\r\n }\r\n } \r\n }\r\n`)","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {withTransaltion, withTranslation} from 'react-i18next'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport responsiveHelper from '../../utility/responsiveHelper'\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 20px 100px;\r\n justify-content: center;\r\n\r\n @media (max-width: 768px){\r\n padding: 20px 5%;\r\n border-top: 2px dotted #ddd;\r\n }\r\n`\r\n\r\nconst Name = styled.div`\r\n flex: 1;\r\n font-size: 1.6em;\r\n letter-spacing: 1px;\r\n margin-bottom: 20px;\r\n margin-top: 20px;\r\n\r\n @media (max-width: 768px){\r\n font-size: 1.2em;\r\n }\r\n`\r\n\r\nconst Address = styled.div`\r\n flex: 1;\r\n margin-bottom: 10px;\r\n font-size: 1.2em;\r\n\r\n @media (max-width: 768px){\r\n font-size: 1em;\r\n }\r\n`\r\n\r\nconst Phone = styled.div`\r\n font-size: 1.2em;\r\n margin-bottom: 10px;\r\n\r\n @media (max-width: 768px){\r\n font-size: 1em;\r\n }\r\n`\r\n\r\nconst ImportantInformations = styled.div`\r\n font-size: 1.2em;\r\n background-color: beige;\r\n padding: 10px 20px;\r\n margin-top: 40px;\r\n\r\n @media (max-width: 768px){\r\n font-size: 1em;\r\n }\r\n`\r\n\r\nconst Description = styled.div`\r\n flex: 5;\r\n margin: 40px 0 24px 0;\r\n line-height: 1.4em;\r\n text-align: justify;\r\n`\r\n\r\nconst PhoneIcon = styled(FontAwesomeIcon)`\r\n margin-right: 15px;\r\n opacity: 0.4;\r\n\r\n @media (max-width: 768px){\r\n display: none;\r\n }\r\n`\r\n\r\nconst AddressIcon = styled(FontAwesomeIcon)`\r\n margin-right: 20px;\r\n opacity: 0.4;\r\n \r\n @media (max-width: 768px){\r\n display: none;\r\n }\r\n`\r\n\r\nconst ClockIcon = styled(FontAwesomeIcon)`\r\n margin-right: 15px;\r\n opacity: 0.4;\r\n\r\n \r\n @media (max-width: 768px){\r\n display: none;\r\n }\r\n`\r\n\r\nconst CheckInOut = styled.div`\r\n display: flex;\r\n font-size: 1.2em;\r\n\r\n \r\n @media (max-width: 768px){\r\n font-size: 1em;\r\n width: 100%;\r\n display: inline-block;\r\n }\r\n`\r\nconst CheckInOutRow = styled.div`\r\n display: inline-block;\r\n width: 100%;\r\n`\r\n\r\nconst CheckInOutItemLabel = styled.div`\r\n margin-right: 10px;\r\n\r\n @media (max-width: 768px){\r\n display: inline-block;\r\n width: 50%;\r\n }\r\n`\r\n\r\nconst FacilitiesTitle = styled.div`\r\n font-size: 1.2em;\r\n text-transform: uppercase;\r\n margin-bottom: 10px;\r\n border-top: 1px solid #eee;\r\n padding-top: 20px;\r\n`\r\n\r\nconst Facilities = styled.div`\r\n\r\n`\r\n\r\nconst FacilityGroup = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 20px;\r\n`\r\n\r\nconst FacilityGroupName = styled.div`\r\n font-size: 1.2em;\r\n`\r\n\r\nconst FacilitiesByGroup = styled.div`\r\n`\r\n\r\nconst Facility = styled.div`\r\n width: 50%;\r\n padding: 10px 0px;\r\n float: left;\r\n display: flex;\r\n\r\n @media (max-width: 768px){\r\n width: 100%;\r\n }\r\n`\r\n\r\nconst FacilityCheckIcon = styled(FontAwesomeIcon)`\r\n margin-right: 10px;\r\n opacity: 0.4;\r\n color: green;\r\n vertical-align: bottom;\r\n`\r\n\r\n\r\nconst HotelDetailsDescription = ({t, name, address, description, phone, ii, checkInOut, facilities}) => {\r\n\r\n const renderFacilities = () => {\r\n if(!facilities || facilities.length === 0) return\r\n\r\n // las facilities llegan todas mezcladas, aquì se agrupan por \"group\"\r\n const facilitiesByGroup = facilities && \r\n facilities.reduce((rv, x) => {\r\n (rv[x[\"group\"]] = rv[x[\"group\"]] || []).push(x)\r\n return rv\r\n }, {})\r\n\r\n const groups = []\r\n for(let i in facilitiesByGroup)\r\n groups.push({name: facilitiesByGroup[i][0].groupName, facilities: facilitiesByGroup[i].map(f => f.name)})\r\n \r\n const allFacilities = []\r\n groups.map(g => {\r\n const groupFacilities = g.facilities.filter(fac => fac && fac.length > 0)\r\n if(groupFacilities.length > 0)\r\n allFacilities.push(groupFacilities)\r\n })\r\n\r\n return (allFacilities.length > 0 &&\r\n \r\n {t(\"hotel_details.FacilitiesTitle\")}\r\n {/* {groups.map((g, index) => renderFacilitiesGroup(g, index))} */}\r\n {allFacilities.map((fac, key2) => \r\n \r\n {fac.join(\", \")}\r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n const renderCheckInOutDefault = (checkInOut) =>\r\n checkInOut && \r\n \r\n \r\n {t(\"hotel_details.CheckIn\")} {checkInOut.checkinFrom} - {checkInOut.checkinTo}\r\n
      \r\n {t(\"hotel_details.CheckOut\")} {checkInOut.checkoutFrom} - {checkInOut.checkoutTo} \r\n
      \r\n \r\n\r\n const renderCheckInOutMobile = (checkInOut) =>\r\n checkInOut && \r\n \r\n \r\n {t(\"hotel_details.CheckIn\")}{`${checkInOut.checkinFrom} - ${checkInOut.checkinTo}`} \r\n \r\n \r\n {t(\"hotel_details.CheckOut\")}{`${checkInOut.checkoutFrom} - ${checkInOut.checkoutTo}`} \r\n \r\n \r\n \r\n\r\n return (\r\n \r\n {name}\r\n
      {address}
      \r\n {phone}\r\n {responsiveHelper.isMobile() ? renderCheckInOutMobile(checkInOut) : renderCheckInOutDefault(checkInOut) } \r\n {ii}\r\n {description}\r\n\r\n {renderFacilities()}\r\n\r\n
      \r\n )\r\n}\r\n\r\n\r\nexport default withTranslation()(HotelDetailsDescription)","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {googleMapUrl} from \"./../../utility/constants\"\r\n\r\nimport { compose, withProps } from \"recompose\"\r\nimport { withScriptjs, withGoogleMap, GoogleMap, Marker } from \"react-google-maps\"\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n width: 100%;\r\n height: 100%;\r\n\r\n @media (max-width: 768px){\r\n padding: 0;\r\n }\r\n`\r\n\r\nexport default compose(\r\n withProps({\r\n googleMapURL: googleMapUrl,\r\n loadingElement:
      ,\r\n containerElement:
      ,\r\n mapElement:
      ,\r\n }),\r\n withScriptjs,\r\n withGoogleMap\r\n )(props => {\r\n console.log(\"props\")\r\n console.log(props)\r\n console.log(`Latitude ${props.latitude} Longitude ${props.longitude}`)\r\n return(\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n)\r\n\r\n","import React from 'react'\r\nimport styles from './ReviewRate.module.css'\r\n\r\n// se pone una clase con un background-position diferente en base cuantas estrellas quieres mostrar \r\n\r\nexport default ({value, label, scale, className}) => \r\n value < 1 \r\n ? null \r\n :
      \r\n {label &&
      {label}
      }\r\n
      \r\n
      \r\n \r\n \r\n\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nimport ReviewRate from './../Widget/ReviewRate'\r\n\r\nconst Container = styled.div`\r\n padding: 0px 100px; \r\n\r\n @media (max-width: 768px){\r\n padding: 0; \r\n }\r\n`\r\n\r\n\r\nconst Resume = styled.div`\r\n display: flex;\r\n margin-top: 0px; \r\n border-bottom: 2px dotted #ccc;\r\n padding-bottom: 30px;\r\n margin-bottom: 30px; \r\n \r\n @media (max-width: 768px){\r\n flex-direction: column;\r\n }\r\n` \r\n\r\nconst ResumeLeft = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column; \r\n \r\n @media (max-width: 768px){\r\n margin-bottom: 20px;\r\n }\r\n` \r\nconst ResumeRight = styled.div`\r\n flex: 2;\r\n display: flex;\r\n flex-wrap: wrap;\r\n :after {\r\n content: '';\r\n flex: auto;\r\n }\r\n` \r\n\r\nconst ResumeTitle = styled.div`\r\n font-size: 1.2em;\r\n margin-bottom: 10px;\r\n` \r\n\r\nconst NumReviews = styled.div`\r\n\r\n`\r\n\r\nconst Comment = styled.div`\r\n display: flex;\r\n border-bottom: 2px dotted #ddd;\r\n padding-bottom: 40px;\r\n margin-bottom: 40px;\r\n\r\n @media (max-width: 768px){\r\n flex-direction: column;\r\n }\r\n`\r\n\r\nconst CommentRight = styled.div`\r\n flex: 4;\r\n display: flex;\r\n flex-direction: column;\r\n`\r\n\r\nconst CommentRates = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n`\r\n\r\n\r\nconst Title = styled.div`\r\n display: flex;\r\n font-size: 1.2em;\r\n line-height: 1.7em;\r\n text-transform: uppercase;\r\n background-color: #f5f5f5;\r\n\r\n @media (max-width: 768px){\r\n flex-direction: column;\r\n background-color: transparent;\r\n }\r\n`\r\n\r\nconst UserRating = styled(ReviewRate)`\r\n margin: 0 15px 0 0;\r\n`\r\nconst Rating = styled(ReviewRate)`\r\n width: 200px;\r\n margin: 5px 0 15px 0;\r\n`\r\n\r\nconst CommentText = styled.div`\r\n padding: 20px 0;\r\n border-bottom: 1px solid #f5f5f5;\r\n margin-bottom: 20px;\r\n`\r\nconst CommentDate = styled.div`\r\n\r\n`\r\n\r\nconst TripType = styled.div`\r\n font-style: italic;\r\n margin-top: 5px;\r\n`\r\nconst User = styled.div`\r\n display: block;\r\n padding: 0 20px;\r\n width: 250px;\r\n \r\n @media (max-width: 768px){\r\n width: 100%;\r\n padding: 0 0 20px\r\n }\r\n`\r\n\r\nconst UserName = styled.div`\r\n width: 100%;\r\n display: block;\r\n clear: both;\r\n \r\n @media (max-width: 768px){\r\n display: inline-blocK;\r\n float: left;\r\n }\r\n`\r\nconst UserPlace = styled.div`\r\n width: 100%;\r\n display: block;\r\n clear: both;\r\n margin-bottom: 10px;\r\n\r\n @media (max-width: 768px){\r\n display: inline-blocK;\r\n float: left;\r\n }\r\n`\r\n\r\nconst UserImage = styled.img`\r\n margin: 0 auto;\r\n border-radius: 50%;\r\n margin-bottom: 10px; \r\n \r\n @media (max-width: 768px){\r\n display: none;\r\n }\r\n`\r\n\r\nconst HotelCommentsCanarias = ({t, comments}) => {\r\n\r\n // se calculan los rating haciendo una media\r\n const globalRate = {\r\n generalRating: 0,\r\n rateCleaning: 0,\r\n rateDreamQuality: 0,\r\n rateDrinkingSelection: 0,\r\n rateFood: 0,\r\n rateLocation: 0,\r\n rateQualityPriceRelation: 0,\r\n rateRooms: 0,\r\n rateService: 0,\r\n } \r\n\r\n if(comments){\r\n comments.map(c => {\r\n globalRate.generalRating += c.generalRating\r\n globalRate.rateCleaning += c.rateCleaning\r\n globalRate.rateDreamQuality += c.rateDreamQuality\r\n globalRate.rateDrinkingSelection += c.rateDrinkingSelection\r\n globalRate.rateFood += c.rateFood\r\n globalRate.rateLocation += c.rateLocation\r\n globalRate.rateQualityPriceRelation += c.rateQualityPriceRelation\r\n globalRate.rateRooms += c.rateRooms\r\n globalRate.rateService += c.rateService\r\n })\r\n\r\n const numComments = comments.length\r\n\r\n globalRate.generalRating = Math.round(globalRate.generalRating / numComments)\r\n globalRate.rateCleaning = Math.round(globalRate.rateCleaning / numComments)\r\n globalRate.rateDreamQuality = Math.round(globalRate.rateDreamQuality / numComments)\r\n globalRate.rateDrinkingSelection = Math.round(globalRate.rateDrinkingSelection / numComments)\r\n globalRate.rateFood = Math.round(globalRate.rateFood / numComments)\r\n globalRate.rateLocation = Math.round(globalRate.rateLocation / numComments)\r\n globalRate.rateQualityPriceRelation = Math.round(globalRate.rateQualityPriceRelation / numComments)\r\n globalRate.rateRooms = Math.round(globalRate.rateRooms / numComments)\r\n globalRate.rateService = Math.round(globalRate.rateService / numComments)\r\n }\r\n\r\n const renderResume = () => {\r\n return (\r\n <>\r\n \r\n \r\n {t(\"canariasComments.resumeTitle\")}\r\n \r\n {t(\"canariasComments.numberOfComments\").replace(\"__num__\", comments.length)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n const renderComment = (comment, key) => \r\n \r\n {renderUser(comment.user, comment.reviewDate, comment.tripType)}\r\n \r\n \r\n <UserRating value={comment.generalRating} /> {comment.title}\r\n \r\n {comment.reviewContent} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n const renderUser = (user, reviewDate, tripType) => \r\n \r\n \r\n {t(\"canariasComments.fromUser\")} {user.name}\r\n {t(\"canariasComments.fromPlace\")} {user.place} \r\n {reviewDate}\r\n {t(`canariasComments.trip_type_${tripType}`)} \r\n \r\n\r\n return comments && comments.length > 0 && (\r\n \r\n {renderResume()}\r\n {comments.map((comment,index) => renderComment(comment, index))}\r\n \r\n )\r\n}\r\n\r\n\r\nexport default withTranslation()(HotelCommentsCanarias)","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nconst generalRateImage = value => `https://no.tripadvisor.com/img/cdsi/img2/ratings/traveler/${Number(value).toFixed(1)}-28964-5.svg`\r\nconst rateImage = value => `https://static.tacdn.com/img2/ratings/traveler/ss${Number(value).toFixed(1)}.gif`\r\nconst commentRateImage = value => `https://www.tripadvisor.es/img/cdsi/img2/ratings/traveler/s${Number(value).toFixed(1)}-28964-5.svg`\r\n\r\n\r\nconst Container = styled.div`\r\n padding: 20px 100px; \r\n\r\n @media (max-width: 768px){\r\n padding: 20px 0; \r\n }\r\n`\r\n\r\nconst Comment = styled.div`\r\n display: flex;\r\n :last-child{\r\n margin-bottom: 30px;\r\n }\r\n\r\n @media (max-width: 768px){\r\n flex-direction: column;\r\n }\r\n`\r\n\r\nconst CommentLeft = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n\r\n @media (max-width: 768px){\r\n margin-bottom: 20px;\r\n }\r\n`\r\n\r\nconst User = styled.div`\r\n margin-bottom: 5px;\r\n color: #555;\r\n`\r\n\r\nconst CommentDate = styled.div`\r\n margin-bottom: 5px;\r\n color: #555;\r\n`\r\n\r\nconst CommentRate = styled.img`\r\n margin-bottom: 5px;\r\n`\r\nconst CommentTrip = styled.div`\r\n font-style: italic;\r\n`\r\n\r\nconst CommentRight = styled.div`\r\n flex: 2;\r\n display: flex;\r\n flex-direction: column;\r\n`\r\n\r\nconst CommentTitle = styled.div`\r\n text-transform: uppercase;\r\n color: #006699;\r\n font-weight: bold;\r\n margin-bottom: 5px;\r\n`\r\n\r\nconst CommentText = styled.div`\r\n text-align: justify;\r\n margin-bottom: 5px;\r\n`\r\n\r\nconst CommentSeparator = styled.div`\r\n width: 100%;\r\n margin: 20px 0;\r\n border-bottom: 2px dotted #eee;\r\n`\r\n\r\nconst ReadMore = styled.a`\r\n text-decoration: none;\r\n color: #777;\r\n font-style: italic;\r\n`\r\n\r\nconst Resume = styled.div`\r\n display: flex;\r\n margin-top: 20px; \r\n border-bottom: 2px dotted #ccc;\r\n padding-bottom: 30px;\r\n margin-bottom: 30px; \r\n\r\n @media (max-width: 768px){\r\n flex-direction: column;\r\n }\r\n` \r\n\r\nconst ResumeLeft = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column; \r\n` \r\nconst ResumeRight = styled.div`\r\n flex: 2;\r\n display: flex;\r\n flex-wrap: wrap;\r\n :after {\r\n content: '';\r\n flex: auto;\r\n }\r\n\r\n @media (max-width: 768px){\r\n margin-top: 20px;\r\n }\r\n` \r\n\r\nconst ResumeTitle = styled.div`\r\n font-size: 1.2em;\r\n margin-bottom: 10px;\r\n` \r\nconst ResumeRate = styled.img`\r\n margin-bottom: 5px;\r\n width: 120px;\r\n`\r\n\r\nconst NumReviews = styled.div`\r\n\r\n`\r\n\r\nconst Awards = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center; \r\n border-top: 2px dotted #ccc;\r\n padding-top: 30px;\r\n margin-top: 30px; \r\n`\r\n\r\nconst Award = styled.div`\r\n width: 250px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n`\r\n\r\nconst AwardImage = styled.img`\r\n max-width: 200px;\r\n max-height: 150px;\r\n`\r\nconst AwardName = styled.div`\r\n margin-bottom: 10px;\r\n font-weight: bold;\r\n`\r\nconst Breakdowns = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n border-top: 2px dotted #ccc;\r\n border-bottom: 2px dotted #ccc;\r\n padding-top: 20px;\r\n padding-bottom: 20px;\r\n margin-bottom: 20px; \r\n align-items: center; \r\n`\r\n\r\nconst BreakdownTitle = styled.div`\r\n width: auto;\r\n text-transform: uppercase;\r\n`\r\n\r\n\r\nconst Breakdown = styled.div`\r\n width: 250px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n`\r\n\r\nconst BreakdownValue = styled.div`\r\n background-color: #2d95ea;\r\n color: #fff;\r\n border-radius: 50%;\r\n width: 30px;\r\n height: 30px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin-right: 10px;\r\n`\r\n\r\n\r\nconst Subrating = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n width: 250px;\r\n align-items: flex-start;\r\n\r\n @media (max-width: 768px){\r\n width: 100%;\r\n flex-direction: row;\r\n align-items: center;\r\n }\r\n`\r\n\r\n\r\nconst SubratingValue = styled.img`\r\n @media (max-width: 768px){\r\n margin-top: 3px;\r\n }\r\n`\r\n\r\nconst SubratingLabel = styled.div`\r\n @media (max-width: 768px){ \r\n width: 80%;\r\n max-width: 200px;\r\n }\r\n`\r\n\r\nconst HotelCommentsTripAdvisor = ({t, comments}) => {\r\n\r\n const renderResume = () => {\r\n return (\r\n <>\r\n \r\n \r\n {t(\"TripadvisorComments.resumeTitle\")}\r\n \r\n { comments && {t(\"TripadvisorComments.NumerOfComments\").replace(\"__num__\", comments.numReviews)}}\r\n \r\n \r\n {comments && comments.subrating &&\r\n comments.subrating.map((subr, index) => \r\n \r\n {t(`TripadvisorComments.${subr.name}`)}\r\n \r\n )\r\n } \r\n \r\n \r\n {/* \r\n {comments && comments.breakdown &&\r\n <>\r\n {t(\"TripadvisorComments.TripType\")}: \r\n {comments.breakdown.map((br, index) => \r\n \r\n {br.value}\r\n {t(`TripadvisorComments.${br.name}`)}\r\n )}\r\n \r\n }\r\n */}\r\n \r\n )\r\n }\r\n \r\n\r\n\r\n const renderAwards = () => {\r\n return (\r\n \r\n {comments && comments.awards &&\r\n comments.awards.map((aw, index) => \r\n \r\n {aw.name} {aw.year}\r\n \r\n )\r\n }\r\n \r\n ) \r\n } \r\n\r\n \r\n\r\n const renderComment = (comment, key) => {\r\n return (\r\n <>\r\n \r\n \r\n {comment.username} - {comment.userLocation}\r\n {comment.publishedDate}\r\n \r\n {t(`TripadvisorComments.${comment.tripType}`)} - {comment.date}\r\n \r\n \r\n {comment.title}\r\n {comment.text}\r\n {t(\"TripadvisorComments.readMore\")}\r\n \r\n \r\n {key < (comments.comments.length - 1) && }\r\n \r\n )\r\n }\r\n\r\n \r\n return comments && (\r\n \r\n {renderResume()}\r\n {comments && \r\n comments.comments && \r\n comments.comments.map((comment,index) => renderComment(comment, index))\r\n }\r\n {renderAwards()} \r\n \r\n )\r\n}\r\n\r\n\r\nexport default withTranslation()(HotelCommentsTripAdvisor)","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs'\r\nimport \"react-tabs/style/react-tabs.css\"\r\n\r\nimport styles from './HotelDetailsComment.module.css'\r\nimport HotelCommentCanarias from './HotelCommentCanarias'\r\nimport HotelCommentTripAdvisor from './HotelCommentsTripAdvisor'\r\n\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n`\r\n\r\n// las opiniones se reparten en dos tab, uno por los usuario de TripAdvisor y otro por los usuario de Canarias.com\r\n\r\nconst HotelComments = ({t, canarias, tripadvisor}) => {\r\n let final = null;\r\n\r\n if(tripadvisor != null && canarias == null){\r\n final = \r\n \r\n {t(\"TripadvisorComments.title\")}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n else if(tripadvisor == null && canarias != null){\r\n final = \r\n \r\n {t(\"canariasComments.title\")}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n else if(tripadvisor != null && canarias != null){\r\n final = \r\n \r\n {t(\"TripadvisorComments.title\")} \r\n {t(\"canariasComments.title\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n return (\r\n final\r\n )\r\n}\r\n\r\n\r\nexport default withTranslation()(HotelComments)","import React from 'react'\r\nimport {QueryRenderer, graphql} from 'react-relay'\r\nimport env from './../../Environment'\r\nimport styled from 'styled-components'\r\nimport {withTranslation} from 'react-i18next'\r\nimport {getLanguageFromUrl} from './../../utility/LanguageHelper'\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs'\r\nimport \"react-tabs/style/react-tabs.css\"\r\n\r\nimport HotelDetailsDescription from './HotelDetailsDescription'\r\nimport HotelDetailsMap from './HotelDetailsMap'\r\nimport HotelDetailsComments from './HotelDetailsComments'\r\n\r\nimport styles from './HotelDetails.module.css'\r\nimport { Container } from '../SearchResults/ResultDealShowLoading'\r\n\r\nconst HotelName = styled.div`\r\n color: #fff;\r\n font-size: 1.4em;\r\n letter-spacing: 1px;\r\n cursor: pointer;\r\n text-transform: uppercase;\r\n`\r\nconst Loading = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n height: 100%;\r\n`\r\n\r\nconst DetailsNotAvailable = styled.div`\r\n display: flex;\r\n width: 100%;\r\n height: 100%;\r\n justify-content: center;\r\n align-items: center;\r\n font-size: 2em;\r\n color: #777;\r\n text-transform: uppercase; \r\n`\r\n\r\nconst query = graphql`\r\n query HotelDetailsQuery(\r\n $hotelId: String!, \r\n $language: String!\r\n ){\r\n hotelDetails(\r\n hotelId: $hotelId, \r\n language: $language\r\n ){\r\n address\r\n category\r\n chain\r\n city\r\n country\r\n description\r\n importantInformation\r\n name\r\n photos\r\n rankingCanarias\r\n rateCanarias\r\n rateTripAdvisor\r\n theme\r\n phone\r\n latitude\r\n longitude\r\n facilities{\r\n code\r\n group\r\n groupName\r\n isPayment\r\n name\r\n type\r\n value \r\n }\r\n checkinOut{\r\n checkinFrom\r\n checkinTo\r\n checkoutFrom\r\n checkoutTo \r\n } \r\n canariasComments{\r\n generalRating\r\n rateCleaning\r\n rateDreamQuality\r\n rateDrinkingSelection\r\n rateFood\r\n rateLocation\r\n rateQualityPriceRelation\r\n rateRooms\r\n rateService\r\n reviewContent\r\n reviewDate\r\n title\r\n tripType \r\n user{\r\n name\r\n place\t\r\n } \r\n } \t\t\r\n tripAdivsorComments{\r\n numReviews\r\n rating\r\n reviewRating1\r\n reviewRating2\r\n reviewRating3\r\n reviewRating4\r\n reviewRating5\r\n awards{\r\n award_type\r\n category\r\n image\r\n name\r\n year \r\n }\r\n breakdown{\r\n name\r\n value\r\n }\r\n comments{\r\n date\r\n helpfulVotes\r\n publishedDate\r\n rating\r\n ratingImageUrl\r\n text\r\n title\r\n tripType\r\n userLocation\r\n username \r\n url \r\n } \r\n subrating{\r\n name\r\n value\r\n }\r\n }\r\n \r\n }\r\n }\r\n`\r\n\r\n\r\nconst HotelDetails = ({t, hotelId, language}) => {\r\n\r\n const render = hotelDetails => {\r\n const showComments = (hotelDetails && hotelDetails.canariasComments && hotelDetails.canariasComments.length > 0) || \r\n (hotelDetails && hotelDetails.tripAdivsorComments !== null)\r\n\r\n return !hotelDetails \r\n ? {t(\"hotel_details_not_available\")}\r\n :\r\n \r\n \r\n {t(\"hotel_details.description\")} \r\n {t(\"hotel_details.map\")} \r\n {showComments && {t(\"hotel_details.reviews\")} }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n return \r\n error ?
      {alert('error')}
      \r\n : !props ? \r\n : render(props.hotelDetails)\r\n }\r\n />\r\n}\r\n\r\nexport default withTranslation()(HotelDetails)","import React, {useState} from 'react'\r\nimport styled from 'styled-components'\r\nimport Modal from 'react-responsive-modal'\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nimport \"react-tabs/style/react-tabs.css\"\r\nimport HotelDetails from './HotelDetails'\r\n\r\nimport styles from './HotelDetails.module.css'\r\n\r\nconst HotelName = styled.div`\r\n color: #fff;\r\n font-size: 1.4em;\r\n letter-spacing: 1px;\r\n cursor: pointer;\r\n text-transform: uppercase;\r\n\r\n @media (max-width: 768px){\r\n font-size: 1em;\r\n text-align: center;\r\n }\r\n`\r\n\r\n// mostramos los detalles del hotel en una Modal sin cambiar la pàgina y dejando los resultados en segundo plano\r\n\r\nconst HotelDetailsPopup = ({t, hotelId, text}) => {\r\n const [isOpen, setIsOpen] = useState(false)\r\n\r\n return (\r\n <>\r\n setIsOpen(true)}>{text}\r\n setIsOpen(false)}\r\n classNames={{\r\n modal: styles.root, \r\n closeButton: styles.closeButton\r\n }}\r\n >\r\n \r\n \r\n \r\n )\r\n \r\n}\r\n\r\nexport default withTranslation()(HotelDetailsPopup)","import React, { useState } from \"react\"\r\nimport { createFragmentContainer, graphql } from \"react-relay\"\r\nimport Lightbox from \"react-image-lightbox\"\r\nimport Category from \"./../Widget/Category\"\r\nimport HotelDeal from \"./ResultDeal\"\r\nimport HotelDetailsPopup from \"./../HotelDetails/HotelDetailsPopup\"\r\nimport responsiveHelper from \"../../utility/responsiveHelper\"\r\n\r\nimport {\r\n\tHotel,\r\n\tHotelImage,\r\n\tHotelHiddenImage,\r\n\tHotelDetails,\r\n\tHotelInfo,\r\n\tHotelName,\r\n\tHotelAddress,\r\n\tHotelFacilities,\r\n\tHotelTop,\r\n\tHotelHeader,\r\n\tHotelDescription,\r\n\tHotelDeals\r\n} from \"./ResultHotel.style\"\r\n\r\nimport { urls } from \"./../../utility/constants\"\r\n\r\nconst ResultHotel = ({\r\n\tclassName,\r\n\tonSelectRooms,\r\n\thotel,\r\n\tshowLoading,\r\n\tonLoaded,\r\n\trealDistributionNumber\r\n}) => {\r\n\tconst [photoIndex, setPhotoIndex] = useState(0)\r\n\tconst [photoLightboxIsOpen, setPhotoLightboxIsOpen] = useState(false)\r\n\r\n\tconst {\r\n\t\tcategory,\r\n\t\tcategoryName,\r\n\t\turl,\r\n\t\tname,\r\n\t\taddress,\r\n\t\tfacilities,\r\n\t\tdescription,\r\n\t\tdeals,\r\n\t\tpackages,\r\n\t\tphotos,\r\n\t\tid\r\n\t} = hotel\r\n\r\n\tconst defaultPhoto =\r\n\t\t(photos && photos[0]) ||\r\n\t\t\"/content/react/images/hotel-image-not-available.jpg\"\r\n\t//const defaultPhoto = (photos && photos[0]) || \"http://images.xtravelsystem.com/slide/files/public/950/0/1/9/Images/img_1550873713777.jpg\"\r\n\r\n\tconst handleOnSelectRooms = (selection, otherData = {}) => {\r\n\t\tfor (let i in selection.rooms) selection.rooms[i].hotelId = id\r\n\r\n\t\totherData.hotelLatitude = hotel.latitude\r\n\t\totherData.hotelLongitude = hotel.longitude\r\n\t\totherData.hotelPhone = hotel.phone\r\n\t\totherData.hotelCode = hotel.code\r\n\t\totherData.hotelCategoryName = hotel.categoryName\r\n\t\totherData.hotelAddress = hotel.address\r\n\t\totherData.hotelPhone = hotel.phone\r\n\t\totherData.hotelCode = hotel.code\r\n\t\totherData.hotelId = hotel.id\r\n\t\totherData.hotelName = hotel.name\r\n\t\totherData.hotelCategoryName = hotel.categoryName\r\n\t\totherData.hotelImage = defaultPhoto\r\n\r\n\t\tonSelectRooms(selection, otherData)\r\n\t}\r\n\r\n\tconst renderImagesLightbox = () => {\r\n\t\tconst changePhotoIndex = diff =>\r\n\t\t\tsetPhotoIndex((photoIndex + photos.length + diff) % photos.length)\r\n\r\n\t\treturn (\r\n\t\t\tphotoLightboxIsOpen &&\r\n\t\t\tphotos &&\r\n\t\t\tphotos.length > 1 && (\r\n\t\t\t\t setPhotoLightboxIsOpen(false)}\r\n\t\t\t\t\tonMovePrevRequest={() => changePhotoIndex(-1)}\r\n\t\t\t\t\tonMoveNextRequest={() => changePhotoIndex(1)}\r\n\t\t\t\t/>\r\n\t\t\t)\r\n\t\t)\r\n\t}\r\n\r\n\tconst renderHotelDektop = () => (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t setPhotoLightboxIsOpen(true)}\r\n\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{address}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{description}\r\n\t\t\t\t\r\n\t\t\t\t{renderImagesLightbox()}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{deals.map((deal, index) => (\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n\r\n\tconst renderHoteltablet = () => (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t setPhotoLightboxIsOpen(true)}\r\n\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{address}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{description}\r\n\t\t\t\t\r\n\t\t\t\t{renderImagesLightbox()}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{deals.map((deal, index) => (\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n\r\n\tconst renderHotelMobile = () => (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t setPhotoLightboxIsOpen(true)}\r\n\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{address}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{description}\r\n\t\t\t\t\r\n\t\t\t\t{renderImagesLightbox()}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{deals.map((deal, index) => (\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{responsiveHelper.isDesktop() && renderHotelDektop()}\r\n\t\t\t{responsiveHelper.isTablet() && renderHoteltablet()}\r\n\t\t\t{responsiveHelper.isMobile() && renderHotelMobile()}\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default createFragmentContainer(\r\n\tResultHotel,\r\n\tgraphql`\r\n\t\tfragment ResultHotel_hotel on AvalabilityResultsHotel {\r\n\t\t\tid\r\n\t\t\tname\r\n\t\t\tminPrice\r\n\t\t\tcategory\r\n\t\t\tranking\r\n\t\t\tdescription\r\n\t\t\taddress\r\n\t\t\turl\r\n\t\t\tphotos\r\n\t\t\tlatitude\r\n\t\t\tlongitude\r\n\t\t\tphone\r\n\t\t\tcode\r\n\t\t\tcategoryName\r\n\t\t\tfacilities {\r\n\t\t\t\tid\r\n\t\t\t\tclassName\r\n\t\t\t\tlabel\r\n\t\t\t}\r\n\t\t\tdeals {\r\n\t\t\t\t...ResultDeal_deal\r\n\t\t\t}\r\n\t\t\tpackages {\r\n\t\t\t\tid\r\n\t\t\t\tpackageId\r\n\t\t\t\tname\r\n\t\t\t\tdistributionId\r\n\t\t\t\tdescription\r\n\t\t\t\tlatitude\r\n\t\t\t\tlongitude\r\n\t\t\t\tprice\r\n\t\t\t}\r\n\t\t}\r\n\t`\r\n)\r\n","import React, { useState } from \"react\"\r\nimport { QueryRenderer, graphql } from \"react-relay\"\r\nimport env from \"./../Environment\"\r\nimport { withTranslation } from \"react-i18next\"\r\nimport styled from \"styled-components\"\r\n\r\nimport styles from \"./HotelBlock.module.css\"\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\r\nimport { Element, animateScroll as scroll } from \"react-scroll\"\r\n\r\n//const saveSelectedHotelUrl = '/ReactReservation/add-room-to-session'\r\nconst saveSelectedHotelUrl = \"/ReactReservation/add-room-to-session\"\r\nconst confirmAndPayUrl = \"/confirmar-y-pagar\"\r\n\r\nconst query = graphql`\r\n\tquery HotelBlockQuery(\r\n\t\t$details: InputHotelBlockRequestType!\r\n\t\t$channelCode: String!\r\n\t\t$channelKey: String!\r\n\t) {\r\n\t\thotelBlock(\r\n\t\t\tdetails: $details\r\n\t\t\tchannelCode: $channelCode\r\n\t\t\tchannelKey: $channelKey\r\n\t\t) {\r\n\t\t\thotels {\r\n\t\t\t\tid\r\n\t\t\t\tsessionId\r\n\t\t\t\troomsCancellationsCosts {\r\n\t\t\t\t\tcancellationsCosts {\r\n\t\t\t\t\t\tamount\r\n\t\t\t\t\t\tpercent\r\n\t\t\t\t\t\tdate\r\n\t\t\t\t\t}\r\n\t\t\t\t\troomId\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`\r\n\r\nconst ErrorContainer = styled.div`\r\n\tdisplay: flex;\r\n\tpadding: 20px;\r\n\tfont-size: 1.2em;\r\n\talign-items: center;\r\n\twidth: 100%;\r\n\tjustify-content: center;\r\n`\r\n\r\nconst ErrorButton = styled.div`\r\n\tmargin-left: 20px;\r\n\tcursor: pointer;\r\n\tbackground-color: rgb(92, 184, 92);\r\n\tcolor: #fff;\r\n\tpadding: 3px 10px;\r\n\tborder-radius: 3px;\r\n`\r\n\r\nconst HotelBlock = ({\r\n\tt,\r\n\tdetails,\r\n\totherData,\r\n\tonResponse,\r\n\tchannelCode,\r\n\tchannelKey,\r\n\tlanguage\r\n}) => {\r\n\tconst [scrolledUp, setScrolledUp] = useState(false)\r\n\r\n\tif (!scrolledUp) {\r\n\t\tsetScrolledUp(true)\r\n\t\tscroll.scrollTo(\"scrollTopElement\")\r\n\t}\r\n\r\n\tconst handleHotelBlocked = data => {\r\n\t\tif (\r\n\t\t\t!data.props.hotelBlock ||\r\n\t\t\t!data.props.hotelBlock.hotels ||\r\n\t\t\tdata.props.hotelBlock.hotels.length < 1 ||\r\n\t\t\tdetails.rooms.length < 1\r\n\t\t)\r\n\t\t\treturn renderError()\r\n\r\n\t\tfor (let i in details.rooms)\r\n\t\t\tdetails.rooms[i].sessionId =\r\n\t\t\t\tdata.props.hotelBlock.hotels[i].sessionId\r\n\r\n\t\tfor (let i in details.rooms) {\r\n\t\t\ttry {\r\n\t\t\t\tconst hbCancellationCosts =\r\n\t\t\t\t\tdata.props.hotelBlock.hotels[i].roomsCancellationsCosts\r\n\t\t\t\tconst roomCancellationCosts = hbCancellationCosts.find(\r\n\t\t\t\t\tcc => cc.roomId === details.rooms[i].id\r\n\t\t\t\t)\r\n\t\t\t\tdetails.rooms[i].rawCancellationCosts =\r\n\t\t\t\t\troomCancellationCosts.cancellationsCosts\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.log(err)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst buildHotelData = () => {\r\n\t\t\tconst data = new FormData()\r\n\t\t\tdata.append(\r\n\t\t\t\t\"jsonDistributions\",\r\n\t\t\t\tJSON.stringify(details.distributions)\r\n\t\t\t)\r\n\t\t\tdata.append(\"jsonPackages\", JSON.stringify(details.packages))\r\n\t\t\tdata.append(\"jsonRooms\", JSON.stringify(details.rooms))\r\n\t\t\tdata.append(\"jsonOtherData\", JSON.stringify(otherData))\r\n\t\t\treturn data\r\n\t\t}\r\n\r\n\t\tconst sentData = buildHotelData()\r\n\r\n\t\tconsole.log(\"details----------------\")\r\n\t\tconsole.log(details)\r\n\r\n\t\tfetch(saveSelectedHotelUrl, {\r\n\t\t\tmode: \"cors\",\r\n\t\t\tmethod: \"POST\",\r\n\t\t\tcredentials: \"include\",\r\n\t\t\tbody: sentData\r\n\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\t//window.open(confirmAndPayUrl)\r\n\t\t\t\twindow.location.href = language === \"es\" ? confirmAndPayUrl : \"/\" + language + confirmAndPayUrl\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\t// the header 'Access-Control-Allow-Origin' is present in the response but it says no\r\n\t\t\t\tconsole.log(error)\r\n\t\t\t})\r\n\r\n\t\treturn renderBlockingHotel()\r\n\t}\r\n\r\n\tconst renderBlockingHotel = () => (\r\n\t\t
      \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{t(\"hotel_blocking.message\")}\r\n\t\t
      \r\n\t)\r\n\r\n\tconst renderError = () => (\r\n\t\t\r\n\t\t\t{t(\"hotel_blocking_error\")}\r\n\t\t\t window.location.reload()}>\r\n\t\t\t\t{t(\"hotel_blocking_error_button\")}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n\r\n\tconst queryVariable = JSON.parse(JSON.stringify(details)) // deep copy\r\n\tfor (let i in queryVariable.rooms) {\r\n\t\t// no more need it & don´t want to add to server side graphql input data struct\r\n\t\tdelete queryVariable.rooms[i].roomName\r\n\t\tdelete queryVariable.rooms[i].dealName\r\n\t\tdelete queryVariable.rooms[i].rawCancellationCosts\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\tdata.error ? (\r\n\t\t\t\t\t
      {alert(\"error\")}
      \r\n\t\t\t\t) : !data.props ? (\r\n\t\t\t\t\trenderBlockingHotel()\r\n\t\t\t\t) : (\r\n\t\t\t\t\thandleHotelBlocked(data)\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t/>\r\n\t)\r\n}\r\n\r\nexport default withTranslation()(HotelBlock)\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport queryString from 'query-string'\r\n\r\nconst Pages = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`\r\n\r\nconst Page = styled.div`\r\n padding: 15px 0;\r\n background-color: ${props => props.active ? \"#eee\" : \"#298ed7\"};\r\n color: ${props => props.active ? \"inherit\" : \"#fff\"};\r\n cursor: ${props => props.active ? \"inherit\" : \"pointer\"};\r\n margin: 0 0.5em;\r\n width: 3em; \r\n border-radius: 50%; \r\n display: flex;\r\n align-items: center;\r\n justify-content: center; \r\n`\r\n\r\nconst Arrow = styled(Page)`\r\n background-color: transparent;\r\n font-size: 2em;\r\n font-weight: bold;\r\n color: inherit;\r\n font-family: monospace\r\n padding: 0;\r\n`\r\n\r\nexport default ({pageSize, totalResults, onChangePage}) => {\r\n const searchParams = JSON.parse(queryString.parse(window.location.search).params)\r\n const actualPage = searchParams.pageNum\r\n const numberOfPages = Math.ceil(totalResults / pageSize)\r\n const visiblePageDiff = 3\r\n const firstPage = (actualPage - visiblePageDiff) > 1 ? (actualPage - visiblePageDiff) : 1\r\n const lastPage = (actualPage + visiblePageDiff) >= numberOfPages ? (numberOfPages)\r\n : (actualPage + visiblePageDiff) < (visiblePageDiff * 2 + 1) ? (actualPage + visiblePageDiff) \r\n : (actualPage + visiblePageDiff) < numberOfPages ? (actualPage + visiblePageDiff)\r\n : (numberOfPages)\r\n const visiblePages = lastPage - firstPage + 1\r\n const pagesArray = Array.from(Array(visiblePages).keys()).map(i => firstPage + i)\r\n\r\n const handleChangePage = page => onChangePage(page)\r\n\r\n const renderLeftPage = () => \r\n actualPage > 1 \r\n ? handleChangePage(1)} i>{`<<`}\r\n : null\r\n\r\n const renderRightPage = () => \r\n actualPage \r\n ? handleChangePage(numberOfPages)}>{`>>`}\r\n : null\r\n\r\n const renderCenterPages = () => \r\n !pagesArray || pagesArray.length < 1 \r\n ? null\r\n : pagesArray.map(i => {if(i!== actualPage)handleChangePage(i)}} \r\n key={i}\r\n >\r\n {i}\r\n )\r\n\r\n return ( \r\n \r\n {renderLeftPage()} \r\n {renderCenterPages()}\r\n {renderRightPage()}\r\n \r\n )\r\n}","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport queryString from 'query-string'\r\nimport {withTranslation} from 'react-i18next'\r\n\r\nconst OrderWrapper = styled.div`\r\n display: flex;\r\n justify-content: center; \r\n padding: 0 20px 20px 20px;\r\n\r\n @media(max-width: 700px){\r\n flex-direction: column;\r\n }\r\n`\r\n\r\nconst OrderItem = styled.div`\r\n text-transform: uppercase;\r\n padding: 10px;\r\n background-color: ${props => props.active ? \"#ddd\" : \"#298ed7\"};\r\n color: ${props => props.active ? \"inherit\" : \"#fff\"};\r\n cursor: ${props => props.active ? \"inherit\" : \"pointer\"};\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: ${props => props.active ? \"bold\" : \"inherit\"};\r\n flex: 1; \r\n box-shadow: ${props => props.active ? \"inset 0 0 10px #aaa\" : \"none\"};\r\n\r\n &:first-child {\r\n border-right: 3px solid #ededed;\r\n }\r\n\r\n &:last-child {\r\n border-left: 3px solid #ededed;\r\n }\r\n\r\n @media(max-width: 700px){\r\n border-right: none !important;\r\n border-left: none !important;\r\n margin: 5px 0;\r\n }\r\n`\r\n\r\n\r\nconst ResultOrder = ({t, onChangeOrderBy}) => {\r\n const searchParams = JSON.parse(queryString.parse(window.location.search).params)\r\n const actualOrder = searchParams.order\r\n \r\n const handleChangeOrderBy = orderBy => onChangeOrderBy(orderBy)\r\n\r\n return (\r\n \r\n actualOrder === \"Ranking\" ? null : handleChangeOrderBy(\"Ranking\")}>\r\n {t('availability.orderBy.Recommended')}\r\n \r\n actualOrder === \"Price\" ? null : handleChangeOrderBy(\"Price\")}>\r\n {t('availability.orderBy.Price')}\r\n \r\n actualOrder === \"Category_Asc\" ? null : handleChangeOrderBy(\"Category_Asc\")}>\r\n {t('availability.orderBy.Category')}\r\n \r\n \r\n ) \r\n}\r\n\r\nexport default withTranslation()(ResultOrder)","import React from \"react\"\r\nimport { withTranslation } from \"react-i18next\"\r\nimport styled from \"styled-components\"\r\n\r\nconst NoResults = styled.div`\r\n\tfont-size: 1.5em;\r\n\tpadding: 2em;\r\n\tcolor: #004085;\r\n\tbackground-color: #cce5ff;\r\n\tborder-color: #b8daff;\r\n\tdisplay: block;\r\n\theight: 5em;\r\n\tmargin: 2em auto;\r\n\tbox-shadow: 0 0 10px #999;\r\n`\r\n\r\nconst NoHotelResults = ({ t }) => (\r\n\t{t(\"availability.NoResults\")}\r\n)\r\n\r\nexport default withTranslation()(NoHotelResults)\r\n","import React, {useState} from 'react'\r\nimport queryString from 'query-string'\r\nimport styled from 'styled-components'\r\nimport {withTranslation} from 'react-i18next'\r\nimport styles from \"./SendResultsByEmail.module.css\"\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport SearchUtility from '../utility/SearchUtility'\r\n\r\nimport  {urls} from './../utility/constants'\r\n\r\nimport {\r\n Accordion, \r\n AccordionItem, \r\n AccordionItemHeading, \r\n AccordionItemButton, \r\n AccordionItemPanel\r\n} from 'react-accessible-accordion'\r\n\r\nconst Container = styled.div`\r\n padding: 1em;\r\n margin: 1em;\r\n`\r\n\r\nconst Email = styled.input`\r\n font-size: 1.2em;\r\n margin-bottom: 20px;\r\n padding: 3px 10px;\r\n`\r\nconst UserMessage = styled.textarea`\r\n font-size: 1.2em;\r\n margin-bottom: 20px;\r\n padding: 3px 10px;\r\n`\r\n\r\nconst SendButton = styled.div`\r\n color: #fff;\r\n cursor: pointer;\r\n text-transform: uppercase;\r\n padding: 5px;\r\n text-align: center;\r\n background-color: #dc0000;\r\n border-radius: 20px;\r\n`\r\nconst AccordionContent = styled.div`\r\n padding: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n`\r\n\r\nconst SendingMessage = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0,0,0,0.4);\r\n font-size: 3em;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`\r\n\r\n\r\nconst AccordionItemPanelStyled = styled(AccordionItemPanel)`\r\n position: relative;\r\n margin-top: -20px;\r\n`\r\n\r\nconst MessageSent = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(255, 255, 255, 1);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n font-size: 1.2em;\r\n letter-spacing: 1px;\r\n text-transform: uppercase;\r\n`\r\n\r\nconst SendResultByEmail = ({t, className}) => {\r\n\r\n const [email, setEmail] = useState('')\r\n const [message, setMessage] = useState('')\r\n const [sendingMessage, setSendingMessage] = useState(false)\r\n const [messageSent, setMessageSent] = useState(false)\r\n const [messageSentResult, setMessageSentResult] = useState(false)\r\n\r\n const handleSendEmail = () => {\r\n setSendingMessage(true)\r\n\r\n const data = new FormData()\r\n const urlParams = getParamsFormUrl()\r\n\r\n data.append('email', email)\r\n data.append('message', message)\r\n data.append('url', decodeURI(window.location.href).replace(\"http://localhost:3000\", \"https://www.canarias.com\"))\r\n data.append('location', urlParams.zoneName)\r\n data.append('startDate', urlParams.initDate)\r\n data.append('endDate', urlParams.endDate)\r\n data.append('rooms', buildDistributionSummaryText(urlParams.distributions))\r\n data.append('language', urlParams.language)\r\n\r\n const postUrl = window.location.href.indexOf(\"localhost\") > -1 \r\n ? \"http://localhost:58999/ReactReservation/send-results-by-email\"\r\n : urls.sendResultByEmail\r\n\r\n fetch(postUrl,\r\n { \r\n mode: 'cors',\r\n method: 'POST',\r\n body: data \r\n }).then(res => res.json())\r\n .then(json => {\r\n setSendingMessage(false)\r\n setMessageSent(true)\r\n setMessageSentResult(json.errorCode)\r\n }).catch(err => {\r\n setSendingMessage(false)\r\n setMessageSent(true)\r\n setMessageSentResult(\"generic\")\r\n }) \r\n }\r\n\r\n\r\n const buildDistributionSummaryText = distributions => {\r\n \r\n let numAdults = 0\r\n let numChildren = 0\r\n let numRooms = 0\r\n\r\n distributions.map(d => {\r\n numRooms++\r\n numAdults += parseInt(d.adults)\r\n numChildren += parseInt(d.children)\r\n })\r\n\r\n const adultTxt = `${numAdults} ${numAdults === 1 \r\n ? t(\"search_box.room_selection.adult\") \r\n : t(\"search_box.room_selection.adults\")}`\r\n\r\n const childrenTxt = numChildren === 0 ? `` \r\n : numChildren === 1 ? `, 1 ${t(\"search_box.room_selection.child\")}` \r\n : `, ${numChildren} ${t(\"search_box.room_selection.children\")}`\r\n const roomsTxt = numRooms === 1 \r\n ? ` - 1 ${t(\"search_box.room_selection.room\")}` \r\n : ` - ${numRooms} ${t(\"search_box.room_selection.rooms\")}`\r\n\r\n return adultTxt + childrenTxt + roomsTxt\r\n }\r\n\r\n const getParamsFormUrl = () => JSON.parse(decodeURI(window.location.href).split('?')[1].split('params=')[1])\r\n\r\n return (\r\n
      \r\n \r\n \r\n \r\n \r\n {t(\"send_by_email.title\")}\r\n \r\n \r\n \r\n \r\n setEmail(e.target.value)} \r\n />\r\n setMessage(e.target.value)} />\r\n \r\n {t(\"send_by_email.button\")}\r\n \r\n \r\n {sendingMessage &&\r\n \r\n \r\n \r\n } \r\n {messageSent &&\r\n \r\n {t(\"send_by_email.message_sent_\" + messageSentResult)}\r\n \r\n } \r\n \r\n \r\n \r\n
      \r\n )\r\n}\r\n \r\n\r\nexport default withTranslation()(SendResultByEmail)","import {\r\n urls\r\n} from \"../utility/constants\"\r\n\r\nconst getParamsFormUrl = () => JSON.parse(decodeURI(window.location.href).split('?')[1].split('params=')[1])\r\n\r\nexport const getHotelsByCoordinates = async bounds => {\r\n const data = new FormData()\r\n const urlParams = getParamsFormUrl()\r\n const urlBase = process.env.API_URL_BASE;\r\n \r\n data.append('northEastLat', bounds.northEastLat)\r\n data.append('northEastLng', bounds.northEastLng)\r\n data.append('southWestLat', bounds.southWestLat)\r\n data.append('southWestLng', bounds.southWestLng)\r\n data.append('pageSize', urlParams.pageSize)\r\n data.append('pageNum', urlParams.pageNum)\r\n\r\n const postUrl = urlBase + urls.getHotelsByCoordinates;/*window.location.href.indexOf(\"localhost\") > 1\r\n ? `http://localhost:5000${urls.getHotelsByCoordinates}`\r\n : urls.getHotelsByCoordinates*/\r\n \r\n const response = await fetch(postUrl,\r\n {\r\n mode: 'cors',\r\n method: 'POST',\r\n body: data\r\n })\r\n\r\n return await response.json()\r\n}\r\n\r\nexport const searchByHotelsId = async (hotelsId) => {\r\n const data = new FormData()\r\n const urlParams = getParamsFormUrl()\r\n const urlBase = process.env.API_URL_BASE;\r\n\r\n data.append('hotelsId', hotelsId)\r\n data.append('language', urlParams.language)\r\n data.append('startDate', urlParams.initDate)\r\n data.append('endDate', urlParams.endDate)\r\n data.append('isCanaryResident', urlParams.isCanaryResident === true)\r\n data.append('distributions', JSON.stringify(urlParams.distributions))\r\n data.append('filters', JSON.stringify(urlParams.filters ) || JSON.stringify({}))\r\n data.append('pageSize', urlParams.pageSize)\r\n data.append('pageNum', urlParams.pageNum)\r\n\r\n const postUrl = urlBase + urls.availabiltyByHotelsId;\r\n /*const postUrl = window.location.href.indexOf(\"localhost\") > 1\r\n ? `http://localhost:5000${urls.availabiltyByHotelsId}`\r\n : urls.availabiltyByHotelsId*/\r\n\r\n const response = await fetch(postUrl,\r\n {\r\n mode: 'cors',\r\n method: 'POST',\r\n body: data\r\n }) \r\n\r\n return await response.json()\r\n}\r\n\r\nexport const searchForCoordinates = async (searchParams, bounds, filtros) => {\r\n\r\n const data = new FormData()\r\n const urlParams = getParamsFormUrl()\r\n const urlBase = process.env.API_URL_BASE;\r\n\r\n data.append('northEastLat', bounds.northEastLat)\r\n data.append('northEastLng', bounds.northEastLng)\r\n data.append('southWestLat', bounds.southWestLat)\r\n data.append('southWestLng', bounds.southWestLng)\r\n\r\n data.append('language', urlParams.language)\r\n\r\n data.append('startDate', urlParams.initDate)\r\n data.append('endDate', urlParams.endDate)\r\n \r\n data.append('isCanaryResident', urlParams.isCanaryResident)\r\n \r\n data.append('distributions', JSON.stringify(urlParams.distributions)) \r\n data.append('filters', urlParams.filters)\r\n data.append('pageSize', urlParams.pageSize)\r\n data.append('pageNum', urlParams.pageNum)\r\n\r\n const postUrl = urlBase + urls.searchByCoordinates;\r\n /*const postUrl = window.location.href.indexOf(\"localhost\") > -1 \r\n ? `http://localhost:5000${urls.searchByCoordinates}`\r\n : urls.searchByCoordinates*/\r\n\r\n const response = await fetch(postUrl,\r\n { \r\n mode: 'cors',\r\n method: 'POST',\r\n body: data \r\n })\r\n \r\n return await response.json()\r\n}","import React from 'react'\r\nimport queryString from 'query-string'\r\nimport {\r\n searchForCoordinates,\r\n getHotelsByCoordinates,\r\n searchByHotelsId\r\n} from \"../../utility/SearchMapHelper\"\r\n\r\nimport {\r\n Map, \r\n Marker, \r\n InfoWindow,\r\n GoogleApiWrapper\r\n} from 'google-maps-react'\r\n\r\nimport {FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\r\nimport styles from \"./map.module.css\"\r\n\r\nimport styled from \"styled-components\"\r\n\r\n\r\n\r\nconst LoaderContainer = styled.div`\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n display: flex; \r\n justify-content: center;\r\n align-items: center;\r\n font-size: 8em;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n opacity: 0.75;\r\n`\r\n\r\nclass MapContainer extends React.Component {\r\n constructor(props){\r\n super()\r\n\r\n this.state = {\r\n coords: {\r\n lat: props.initialLat,\r\n lng: props.initialLng\r\n },\r\n loadingResults: false,\r\n allResults: {\r\n hotelIds: '', // es mas performate buscar en un string con todos los id que en un array de string\r\n hotels: [],\r\n pages: []\r\n },\r\n markers: {},\r\n searchParams: JSON.parse(queryString.parse(window.location.search).params),\r\n fitros: {}\r\n }\r\n }\r\n\r\n\r\n onZoomChanged(){\r\n console.log(\"onZoomChanged\")\r\n }\r\n\r\n onDragend(mapProps, map){\r\n const gBounds = map.getBounds()\r\n\r\n const northEast = gBounds.getNorthEast()\r\n const southWest = gBounds.getSouthWest()\r\n\r\n const bounds = {\r\n northEastLat: northEast.lat(),\r\n northEastLng: northEast.lng(),\r\n southWestLat: southWest.lat(),\r\n southWestLng: southWest.lng()\r\n }\r\n\r\n console.log(bounds)\r\n\r\n try{\r\n this.getOnePageHotels(bounds, {})\r\n } catch(err){\r\n console.log(err)\r\n }\r\n }\r\n\r\n async getOnePageHotels(bounds, filtros){\r\n console.log(\"map props \", this.props)\r\n\r\n this.setState({loadingResults: true})\r\n //var result = await searchForCoordinates(this.state.searchParams, bounds, this.state.fitros)\r\n let newHotelsArray = await getHotelsByCoordinates(bounds)\r\n\r\n // filtrar solo los hoteles que todavia non estan cargados\r\n let hotelsToAdd = newHotelsArray.filter(h =>this.state.allResults.hotelIds.indexOf(h.id) === -1) // se añade solo qos hotel que todavia no estan dentro el listado\r\n .slice(0, 20)\r\n\r\n console.log(\"hotelsToAdd \", hotelsToAdd) \r\n let newAllHotelsId = this.state.allResults.hotelIds\r\n \r\n if(hotelsToAdd.length > 0)\r\n newAllHotelsId += hotelsToAdd.reduce((acc, curr) => `${acc};${curr.id}`, \"\")\r\n\r\n let newAllResults = Object.assign({}, this.state.allResults)\r\n newAllResults.hotelIds = newAllHotelsId\r\n\r\n this.setState({allResults: newAllResults})\r\n\r\n this.addNewMarkers(hotelsToAdd)\r\n this.setState({loadingResults: false})\r\n \r\n if(hotelsToAdd.length === 0)\r\n return\r\n\r\n const newResults = await searchByHotelsId(hotelsToAdd.map(h => h.id).reduce((acc, curr) => `${acc};${curr}`), \"\")\r\n \r\n newAllResults = Object.assign({}, this.state.allResults)\r\n newAllResults.hotels = newAllResults.hotels.concat(newResults.hotels)\r\n \r\n this.props.onChangeHotels(newAllResults.hotels)\r\n\r\n this.setState({allResults: newAllResults}) \r\n }\r\n \r\n addNewMarkers(newHotels){\r\n var newMarkers = newHotels.map(h => ({\r\n lat: parseFloat(h.lat),\r\n lng: parseFloat(h.lng),\r\n minPrice: h.minPrice,\r\n name: h.name \r\n }))\r\n\r\n const markers = Object.assign({}, this.state.markers)\r\n newMarkers.map(m => markers[m.name] = m)\r\n\r\n this.setState({markers})\r\n }\r\n\r\n \r\n \r\n // onZoomChanged not fire\r\n // https://github.com/tomchentw/react-google-maps/issues/163\r\n\r\n render(){\r\n if (!this.props.google) {\r\n return
      Loading...
      ;\r\n }\r\n \r\n const google = this.props.google\r\n\r\n return ( \r\n <> \r\n \r\n { Object.keys(this.state.markers).map(m => {\r\n const marker = this.state.markers[m]\r\n return (\r\n this.props.showHotelDetails(marker.name)} \r\n /> \r\n )\r\n })} \r\n \r\n \r\n )\r\n }\r\n\r\n}\r\n\r\nexport default GoogleApiWrapper({apiKey: 'AIzaSyDGsFaj339wkwoHbhoaoZcO-0kvFxjmuU8'})(MapContainer)","import React from \"react\"\r\nimport Map from \"./map\"\r\n\r\nexport default class MapContainer extends React.Component{\r\n\r\n constructor(props){\r\n super(props)\r\n\r\n this.state = {\r\n width: 0,\r\n height: 0\r\n }\r\n \r\n this.handleUpdateSize = this.handleUpdateSize.bind(this)\r\n }\r\n\r\n componentDidMount(){\r\n window.addEventListener(\"resize\", this.handleUpdateSize)\r\n this.handleUpdateSize()\r\n }\r\n\r\n componentWillUnmount(){\r\n window.removeEventListener(\"resize\", this.handleUpdateSize)\r\n }\r\n\r\n handleUpdateSize(){\r\n this.setState({\r\n width: this.mapContainer.clientWidth,\r\n heigth: this.mapContainer.clientHeight\r\n })\r\n }\r\n\r\n render(){\r\n return (\r\n
      this.mapContainer = elem}>\r\n \r\n
      \r\n )\r\n }\r\n}","import React from 'react'\r\nimport styles from './desktop-map-filters.module.css' \r\n\r\nimport HotelsFilters from \"./../HotelsFilters/HotelsFilters\"\r\n\r\nclass DesktopMapFilters extends React.Component{\r\n\r\n render(){\r\n return(\r\n
      \r\n \r\n
      \r\n )\r\n }\r\n}\r\n \r\n\r\nexport default DesktopMapFilters;","import React, { Component } from 'react'\r\nimport Category from '../Widget/Category'\r\nimport styles from './desktop-map-results.module.css' \r\n\r\nclass DesktopMapResults extends Component {\r\n handleHotelSelected(hotel){\r\n this.props.onHotelSelected(hotel)\r\n }\r\n\r\n render() {\r\n const { hotels, selected } = this.props\r\n console.log(\"hotels \", hotels)\r\n const selectedId = selected ? selected.id : \"\"\r\n\r\n return (\r\n
      \r\n {hotels && hotels.sort(h => h.minPrice).map(hotel => \r\n
      this.handleHotelSelected(hotel)}>\r\n
      \r\n {hotel.minPrice} €\r\n
      \r\n
      \r\n \r\n
      \r\n {hotel.name}\r\n
      \r\n
      \r\n
      \r\n )}\r\n
      \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default DesktopMapResults ","import React from 'react'\r\nimport styles from './desktop-map-hotel-details.module.css'\r\n\r\nimport HotelDetailsDescription from '../HotelDetails/HotelDetailsDescription'\r\nimport HotelDeal from '../SearchResults/ResultDeal'\r\n\r\n\r\nexport default ({hotel, onClose}) => {\r\n\r\n const handleOnSelectRooms = () => {\r\n // to do\r\n }\r\n\r\n const realDistributionNumber = 0\r\n\r\n return ( hotel ?\r\n
      \r\n
      onClose(null)} \r\n style={{\r\n padding: \"1em\", \r\n cursor: \"pointer\",\r\n color: \"#fff\",\r\n backgroundColor: \"red\"\r\n }}\r\n >\r\n CLOSE HOTEL\r\n
      \r\n \r\n
      \r\n\t\t\t\t{hotel.deals.map((deal, index) => (\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t
      \r\n
      :
      \r\n )\r\n}","import React from 'react'\r\nimport queryString from 'query-string'\r\nimport Modal from 'react-responsive-modal'\r\nimport styled from 'styled-components'\r\nimport styles from './desktop-map.module.css'\r\nimport {withTranslation} from 'react-i18next'\r\nimport MapContainer from './desktop-map-container'\r\nimport DesktopMapFilters from './desktop-map-filters'\r\nimport DesktopMapResults from './desktop-map-results'\r\nimport MapHotelDetails from './desktop-map-hotel-details'\r\n\r\nconst ButtonMap = styled.div`\r\n margin: 0 20px 20px 20px;\r\n background-color: #298ed7;\r\n color: #fff;\r\n padding: 10px;\r\n text-transform: uppercase;\r\n text-align: center;\r\n cursor: pointer;\r\n`\r\n\r\nclass DesktopMap extends React.Component{\r\n constructor(){\r\n super()\r\n\r\n this.state = {\r\n showModalMap: false,\r\n showHotelDetails: false,\r\n hotels: [],\r\n selectedHotel: null\r\n }\r\n\r\n this.handleHotelsChange = this.handleHotelsChange.bind(this)\r\n this.handleHotelSelected = this.handleHotelSelected.bind(this)\r\n this.handleShowHotelDetails = this.handleShowHotelDetails.bind(this) \r\n }\r\n\r\n handleHotelsChange(hotels){\r\n console.log(\"update hotels in desktop-map\", hotels)\r\n this.setState({hotels})\r\n }\r\n\r\n handleHotelSelected(hotel){\r\n console.log(\"selected hotel \", hotel)\r\n this.setState({selectedHotel: hotel, showHotelDetails: hotel !== null })\r\n }\r\n\r\n handleShowHotelDetails(hotelName){\r\n console.log(\"marker clicked\")\r\n const hotel = this.state.hotels.find(h => h.name === hotelName)\r\n this.handleHotelSelected(hotel)\r\n }\r\n\r\n render(){\r\n const {\r\n t, \r\n initialLat, \r\n initialLng,\r\n \r\n } = this.props\r\n\r\n const searchParams = JSON.parse(queryString.parse(window.location.search).params)\r\n\r\n return(\r\n <>\r\n this.setState({showModalMap: true})}>{t(\"map.open-button\")}\r\n {this.state.showModalMap &&\r\n this.setState({showModalMap: false})} \r\n classNames={{\r\n modal: styles.root,\r\n closeButton: styles.closeButton\r\n }}\r\n >\r\n \r\n \r\n {this.state.showHotelDetails \r\n ? \r\n : \r\n }\r\n \r\n }\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withTranslation()(DesktopMap)","import React, { useState } from \"react\"\r\nimport styled from \"styled-components\"\r\nimport queryString from \"query-string\"\r\nimport { createFragmentContainer, graphql } from \"react-relay\"\r\nimport HotelsFilters from \"./../HotelsFilters/HotelsFilters\"\r\nimport ResultHotel from \"./ResultHotel\"\r\nimport HotelBlock from \"./../../utility/HotelBlock\"\r\nimport ResultPaginator from \"./ResultPaginator\"\r\nimport ResultOrder from \"./ResultOrder\"\r\nimport NoHotelResults from \"./SearchResultsNoResults\"\r\nimport SendResultsByEmail from '../../utility/SendResultsByEmail'\r\nimport { urls } from \"./../../utility/constants\"\r\nimport { Element, animateScroll as scroll } from \"react-scroll\"\r\n\r\nimport DesktopMap from \"../SearchMap/desktop-map\"\r\n\r\nimport \"react-image-lightbox/style.css\"\r\n\r\nconst Container = styled.div`\r\n\tdisplay: flex;\r\n\tbackground-color: #eee;\r\n\r\n\t@media (max-width: 1378px) {\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t}\r\n`\r\nconst LeftColumnContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n`\r\n\r\nconst Filters = styled(HotelsFilters)`\r\n\twidth: 300px;\r\n\t@media (max-width: 1378px) {\r\n\t\twidth: 100%;\r\n\t\tmax-width: 600px;\r\n\t\tmargin-bottom: 40px;\r\n\t}\r\n`\r\nconst SendEmailResults = styled(SendResultsByEmail)`\r\n width: 300px;\r\n margin-bottom: 20px;\r\n\t@media (max-width: 1378px) {\r\n\t\twidth: 100%;\r\n\t\tmax-width: 600px;\r\n\t\tmargin-bottom: 40px;\r\n\t}\r\n`\r\n\r\nconst HotelsAndOrders = styled.div`\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tflex: 1;\r\n\r\n\t@media (max-width: 1378px) {\r\n\t\tmax-width: 100%;\r\n\t}\r\n`\r\n\r\nconst Hotels = styled.div`\r\n\tflex: 1;\r\n`\r\nconst Hotel = styled(ResultHotel)`\r\n\tmargin: 0px 20px 60px 20px;\r\n\tbox-shadow: 0 0 10px #999;\r\n\tbackground-color: #fff;\r\n\r\n\t@media (max-width: 768px) {\r\n\t\tmargin: 0px 0px 60px 0px;\r\n\t\toverflow: hidden;\r\n\t}\r\n`\r\n\r\nconst SearchResults = ({\r\n\tclassName,\r\n\tsearchParams,\r\n\tavailability,\r\n\tfilterDisabled,\r\n\thistory,\r\n\tlocation,\r\n\treloadForFilterModified,\r\n\tlanguage,\r\n\tchannelCode,\r\n\tchannelKey\r\n}) => {\r\n\tlet hotels = []\r\n\tlet facilitiesFilter = {}\r\n\tlet totalResults = 0\r\n\tlet token = \"\"\r\n\r\n\tif (true && availability) {\r\n\t\thotels = availability.hotels\r\n\t\tfacilitiesFilter = availability.facilitiesFilter\r\n\t\ttotalResults = availability.totalResults\r\n\t\ttoken = availability.token\r\n\t}\r\n\r\n\tconst getHhotelBlockedUrl = params =>\r\n\t\t`{urls.hotelBlocked}?params=${JSON.stringify(params)}`\r\n\r\n\tconst [doHotelBlock, setDoHotelBlock] = useState(false)\r\n\tconst [hotelBlockDetails, setHotelBlockDetails] = useState(null)\r\n\tconst [hotelBlockOtherData, setHotelBlockOtherData] = useState(null)\r\n\tconst [scrolledUp, setScrolledUp] = useState(false)\r\n\r\n\tif (!scrolledUp) {\r\n\t\tsetScrolledUp(true)\r\n\t\tscroll.scrollTo(\"scrollTopElement\")\r\n\t}\r\n\r\n\tconst onSelectRooms = (selections, otherData) => {\r\n\t\tfor (let i in selections.rooms) {\r\n\t\t\tselections.rooms[i].initDate = searchParams.initDate\r\n\t\t\tselections.rooms[i].endDate = searchParams.endDate\r\n\t\t}\r\n\r\n\t\tfor (let i in selections.packages) {\r\n\t\t\tselections.packages[i].initDate = searchParams.initDate\r\n\t\t\tselections.packages[i].endDate = searchParams.endDate\r\n\t\t}\r\n\r\n\t\tselections.distributions = searchParams.distributions.map(d => ({\r\n\t\t\tid: d.id,\r\n\t\t\tadults: d.adults,\r\n\t\t\tchildrenAges: d.childrenAges\r\n\t\t}))\r\n\r\n\t\tsetHotelBlockDetails(selections)\r\n\t\tsetHotelBlockOtherData(otherData)\r\n\t\tsetDoHotelBlock(true)\r\n\t}\r\n\r\n\tconst handleHotelBlockReponse = response => {\r\n\t\tsetDoHotelBlock(false)\r\n\r\n\t\tconst params = {\r\n\t\t\tparam1: \"value1\",\r\n\t\t\tparam2: \"value2\"\r\n\t\t}\r\n\r\n\t\thistory.push(getHhotelBlockedUrl(params))\r\n\t}\r\n\r\n\tconst handleChangePage = pageNumber => {\r\n\t\tconst oldParams = JSON.parse(\r\n\t\t\tqueryString.parse(window.location.search).params\r\n\t\t)\r\n\t\tconst newParams = Object.assign({}, oldParams, { pageNum: pageNumber })\r\n\r\n\t\tconst newUrl = `${language === \"es\" ? \"\" : \"/\" + language}${\r\n\t\t\turls.hotelResults\r\n\t\t}?params=${JSON.stringify(newParams)}`\r\n\t\thistory.push(newUrl)\r\n\t\treloadForFilterModified(\r\n\t\t\tnull,\r\n\t\t\thotels,\r\n\t\t\tfacilitiesFilter,\r\n\t\t\tpageNumber,\r\n\t\t\ttoken\r\n\t\t)\r\n\t}\r\n\r\n\tconst handleOrderBy = orderBy => {\r\n\t\tconst oldParams = JSON.parse(\r\n\t\t\tqueryString.parse(window.location.search).params\r\n\t\t)\r\n\t\tconst newParams = Object.assign({}, oldParams, { order: orderBy })\r\n\t\tconst newUrl = `${language === \"es\" ? \"\" : \"/\" + language}${\r\n\t\t\turls.hotelResults\r\n\t\t}?params=${JSON.stringify(newParams)}`\r\n\t\thistory.push(newUrl)\r\n\t\treloadForFilterModified(\r\n\t\t\tnull,\r\n\t\t\thotels,\r\n\t\t\tfacilitiesFilter,\r\n\t\t\tnull,\r\n\t\t\ttoken,\r\n\t\t\torderBy\r\n\t\t)\r\n\t}\r\n\r\n\tconst handleReloadForFilterModified = newFilterParams =>\r\n\t\treloadForFilterModified(\r\n\t\t\tnewFilterParams,\r\n\t\t\thotels,\r\n\t\t\tfacilitiesFilter,\r\n\t\t\tnull,\r\n\t\t\ttoken\r\n\t\t)\r\n\r\n\tconst renderResultOrder = () =>\r\n\t\ttotalResults ? : null\r\n\r\n\tconst renderHotelsResults = () =>\r\n\t\t!totalResults ? (\r\n\t\t\t\r\n\t\t) : (\r\n\t\t\t\r\n\t\t\t\t{renderResultOrder()}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t{hotels &&\r\n\t\t\t\t\t\thotels.map((hotel, index) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t)\r\n\r\n\tconst renderFilters = () => {\r\n\t\tconst filterParams = JSON.parse(\r\n\t\t\tqueryString.parse(window.location.search).params\r\n\t\t).filter\r\n\t\tif(JSON.stringify(filterParams) === JSON.stringify({}) && totalResults <= 1){\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t)\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn ( // si hay un hotel block en curso muestra el componente correspondiente, sino los resultados normal\r\n\t\t\r\n\t\t\t{doHotelBlock ? (\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t<>\r\n \r\n \r\n {renderFilters()}\r\n \r\n\t\t\t\t\t{renderHotelsResults()}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t)\r\n}\r\n\r\n// exporta el Fragment de la query \"availability\", declara los datos que usa en este componente mas otro Fragment (ResultHotel_hotel)\r\nexport default createFragmentContainer(\r\n\tSearchResults,\r\n\tgraphql`\r\n\t\tfragment SearchResults_availability on AvailabilityResults {\r\n\t\t\tcurrentPage\r\n\t\t\torder\r\n\t\t\tpageSize\r\n\t\t\ttotalResults\r\n\t\t\ttoken\r\n\t\t\trealDistributionNumber\r\n\t\t\tfacilitiesFilter {\r\n\t\t\t\tname\r\n\t\t\t\tcode\r\n\t\t\t\tgroup\r\n\t\t\t}\r\n\t\t\thotels {\r\n\t\t\t\t...ResultHotel_hotel\r\n\t\t\t}\r\n\t\t}\r\n\t`\r\n)\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport HotelsFilters from './../HotelsFilters/HotelsFilters'\r\nimport ResultHotel from './ResultHotel'\r\n\r\nimport 'react-image-lightbox/style.css'\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n`\r\nconst Filters = styled(HotelsFilters)`\r\n width: 300px;\r\n`\r\n\r\nconst Hotels = styled.div`\r\n flex: 1;\r\n`\r\nconst Hotel = styled(ResultHotel)`\r\n margin: 0px 20px 100px 20px;\r\n box-shadow: 0 0 20px #555; \r\n`\r\n\r\n// este componente se utiliza cuando se cambian los parametros de la busqueda en la pagina de resultados\r\n// asì durante la actualizacion de resultados se muestran los mismos hoteles y no el listado generico de la zona\r\n// es mas sencillo obtener este resultado con un componente independiente que modificar rl SearchResult para manejar ambos casos.\r\n\r\n export default ({hotels, facilitiesFilter}) => \r\n \r\n \r\n \r\n {hotels && hotels.map((hotel, index) => \r\n \r\n )}\r\n \r\n \r\n","import React, { useState } from 'react'\r\nimport queryString from 'query-string'\r\nimport {QueryRenderer, graphql} \tfrom 'react-relay'\r\nimport env from './../../Environment'\r\nimport TempHotelResult from './TempHotelResults'\r\nimport TempHotelByCodesResult from './TempHotelByCodesResults'\r\nimport HotelIdsByFilter from './HotelIdsByFilter'\r\nimport SearchResult from './../SearchResults/SearchResults'\r\nimport SearchResultShowSameHotels from './../SearchResults/SearchResultsShowSameHotels'\r\nimport {getLanguageFromUrl} from './../../utility/LanguageHelper'\r\nimport TempHotelByCodesResults from './TempHotelByCodesResults'\r\n\r\n// RANKING, PRICE, RATING, CATEGORY_ASC, CATEGORY_DESC\r\n\r\nconst OrderStrToNum = str =>\r\n str === \"Price\" ? 1\r\n : str === \"Rating\" ? 2\r\n : str === \"Category_Asc\" ? 3\r\n : str === \"Category_Desc\" ? 4\r\n : 0\r\n\r\nconst DistributionsObjToVar = distributions => \r\n distributions.map(distribution => ({\r\n adults: distribution.adults,\r\n childrenAges: distribution.childrenAges,\r\n })) \r\n\r\n\r\nconst SearchingWrapperQuery = graphql`\r\n query SearchingWrapperQuery(\r\n $zoneCode: String, \r\n $hotelId: String, \r\n $language: String!,\r\n $startDate: String!,\r\n $endDate: String!,\r\n $canaryResident: Boolean!,\r\n $pageSize: Int!,\r\n $pageNum: Int!,\r\n $order: Int!,\r\n $roomsDistribution: [InputDistributionModelType]!,\r\n $filter: InputAvailabilityFilterType,\r\n $channelCode: String!,\r\n $channelKey: String!,\r\n ){ \r\n availability(\r\n zoneCode: $zoneCode, \r\n hotelId: $hotelId, \r\n language: $language,\r\n startDate: $startDate,\r\n endDate: $endDate,\r\n canaryResident: $canaryResident,\r\n pageSize: $pageSize,\r\n pageNum: $pageNum,\r\n order: $order,\r\n roomsDistribution: $roomsDistribution,\r\n filter: $filter,\r\n channelCode : $channelCode,\r\n channelKey: $channelKey\r\n ){ \r\n ...SearchResults_availability \r\n }\r\n } \r\n`\r\n\r\nlet hotelsIds = null;\r\n\r\nfunction fetchQuery(operation, vars)\r\n{\r\n var xhttp = new XMLHttpRequest();\r\n xhttp.onreadystatechange = function(){\r\n if(this.readyState == 4 && this.status == 200){\r\n hotelsIds = JSON.parse(this.response).data.hotelIdsByFilter;\r\n }\r\n };\r\n //The third argument \"false\" tells javascript to not make the call asynch, so it waits til the response comes\r\n //FINALLY\r\n xhttp.open(\"POST\", env.__RELAY_API_ENDPOINT__, false); \r\n xhttp.setRequestHeader(\"Content-type\", \"application/json\");\r\n xhttp.send(JSON.stringify({ \r\n query: operation, \r\n variables: vars\r\n }));\r\n /*return fetch(env.__RELAY_API_ENDPOINT__, {\r\n method: 'POST',\r\n headers: {\r\n 'content-type': 'application/json'\r\n },\r\n body: JSON.stringify({ \r\n query: operation, \r\n variables: vars\r\n })\r\n })/*.then(response => { \r\n return response; \r\n \r\n })*/\r\n}\r\n\r\nasync function getHotelIdsByFilter(fil, lang){\r\n let queryAux = `query HotelIdsByFilterQuery($filter: String!, $language: String!){ hotelIdsByFilter(filter: $filter, language: $language) }`\r\n fetchQuery(queryAux, {filter: JSON.stringify(fil), language: lang})\r\n /*let result = await fetchQuery(queryAux, {filter: JSON.stringify(fil), language: lang})\r\n if(result){\r\n let hotelsIdsAux = await result.json()\r\n if(hotelsIdsAux){\r\n hotelsIds = hotelsIdsAux.data.hotelIdsByFilter\r\n finished = 1\r\n }\r\n }*/\r\n}\r\n\r\nexport default ({location, backTosearchUrl, availability, history, channelCode, channelKey}) => {\r\n\r\n const [searchParams, setSearchParams] = useState(null)\r\n const [queryVariables, setQueryVariables] = useState(null)\r\n const [visibleHotels, setVisibleHotels] = useState(null)\r\n const [visibleFacilities, setVvisibleFacilities] = useState(null)\r\n \r\n \r\n const setQueryVariablesFromUrl = () => {\r\n // se convertien los parametros de la url en parametri por la query GraphQL\r\n if(!queryString.parse(location.search).params) return\r\n\r\n const params = queryString.parse(location.search).params\r\n const searchParams = JSON.parse(params)\r\n\r\n const qv = {\r\n zoneCode: searchParams.zoneId,\r\n hotelId: searchParams.hotelId,\r\n language: getLanguageFromUrl(),\r\n startDate: searchParams.initDate,\r\n endDate: searchParams.endDate,\r\n canaryResident: searchParams.canaryResident,\r\n pageSize: searchParams.pageSize,\r\n pageNum: searchParams.pageNum,\r\n order: OrderStrToNum(searchParams.order),\r\n roomsDistribution: DistributionsObjToVar(searchParams.distributions),\r\n filter: searchParams.filter,\r\n subfilter: searchParams.subfilter,\r\n channelCode: channelCode,\r\n channelKey: channelKey\r\n }\r\n setSearchParams(searchParams) \r\n setQueryVariables(qv)\r\n }\r\n\r\n const reloadForFilterModified = (newFilterParams, visibleHotels, visibleFacilities, nextPageNumber, token, newOrder) => {\r\n const newZoneCode = newFilterParams && newFilterParams.zoneCode ? newFilterParams.zoneCode : queryVariables.zoneCode\r\n\r\n const newQv = Object.assign({}, queryVariables)\r\n newQv.pageNum = 1 // reset to the first page\r\n\r\n if(newFilterParams){\r\n newQv.zoneCode = newZoneCode\r\n newQv.filter = newFilterParams\r\n }\r\n if(newOrder){\r\n newQv.order = OrderStrToNum(newOrder);\r\n }\r\n \r\n if(nextPageNumber) newQv.pageNum = nextPageNumber\r\n if(token) newQv.token = token\r\n\r\n setQueryVariables(newQv)\r\n setVvisibleFacilities(visibleFacilities)\r\n setVisibleHotels(visibleHotels)\r\n }\r\n\r\n if(queryVariables === null) setQueryVariablesFromUrl()\r\n\r\n if(searchParams != null){\r\n if(searchParams.subfilter != null){\r\n getHotelIdsByFilter(searchParams.subfilter, searchParams.language)\r\n }\r\n }\r\n\r\n\r\n // en base al estado se muestra:\r\n // - un mensaje de error\r\n // - el listado hoteles de la zone (en la espera que cargan los resultados)\r\n // - los mismos hoteles de una busqueda anterior mientras se estàn cargando otros resultados\r\n // - los resultaos\r\n \r\n //This here is to select which preview to use depending on what information we have\r\n let previewRendering = null;\r\n if(searchParams != null){\r\n if((searchParams.zoneCode == null || searchParams.zoneCode === \"\") &&\r\n (searchParams.hotelId == null || searchParams.hotelId === \"\") &&\r\n hotelsIds != null){\r\n searchParams.hotelId = hotelsIds\r\n queryVariables.hotelId = hotelsIds\r\n searchParams.subfilter = []\r\n queryVariables.subfilter = []\r\n hotelsIds = null;\r\n setSearchParams(searchParams)\r\n setQueryVariables(queryVariables)\r\n }\r\n if(searchParams.hotelId != null && searchParams.hotelId !== \"\"){\r\n previewRendering = ;\r\n }\r\n else{\r\n if(searchParams.zoneId != null && searchParams.zoneId !== \"\"){\r\n previewRendering = ;\r\n }\r\n }\r\n }\r\n\r\n const render = ({error, props}) => \r\n error ?
      {alert('error')}
      \r\n : !props && !visibleHotels ? previewRendering //This is the preview list of hotels when searching\r\n : !props && visibleHotels ? \r\n : \r\n\r\n // Relay executa la query con variables y hace el render de los resultados\r\n return \r\n}\r\n\r\n\r\n","import React \t\t\tfrom 'react'\r\n\r\nclass ErrorBoundary extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n componentDidCatch(error, info) {\r\n // Display fallback UI\r\n this.setState({ hasError: true });\r\n // You can also log the error to an error reporting service\r\n //logErrorToMyService(error, info);\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n // You can render any custom fallback UI\r\n return

      Something went wrong. Please refresh or contact the service if it keeps happening.

      ;\r\n }\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary","import React \t\t\tfrom 'react'\r\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom'\r\nimport \"./../translations/i18n\"\r\nimport {urls, resultTypeZone, resultTypeHotel} from './../utility/constants'\r\nimport moment from 'moment'\r\n\r\nimport './booking-process.css'\r\n\r\nimport HotelDetails from './HotelDetails'\r\n\r\nimport HotelSearchBox \t\tfrom './HotelSearch/HotelSearchBox'\r\nimport SearchingWrapper \tfrom './SearchingWrapper/SearchingWrapper'\r\nimport ErrorBoundary \t\tfrom './ErrorBoundary'\r\n\r\nimport styled from 'styled-components'\r\n\r\n\r\n\r\n// Tosos los iconos de Font Awesome deben importarse individualmente y agregarse a la library,\r\n// luego pueden usarse en los componentes.\r\n// Asì se puede incluir solo lo que se necesita y no todo el package de Font Awasome\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { faTimesCircle, faCheckCircle, faInfoCircle, faCheck, faSearch, faSync, faUsers, faPhone, \r\n\t\t faMapMarkerAlt, faClock}\tfrom '@fortawesome/free-solid-svg-icons';\r\nimport { faSquare as farSquare, faCheckSquare as farCheckSquare} from '@fortawesome/free-regular-svg-icons';\r\nlibrary.add(faTimesCircle)\r\nlibrary.add(faCheckCircle)\r\nlibrary.add(faCheck)\r\nlibrary.add(faInfoCircle)\r\nlibrary.add(faUsers)\r\nlibrary.add(faSearch)\r\nlibrary.add(faSync)\r\nlibrary.add(farSquare)\r\nlibrary.add(farCheckSquare)\r\nlibrary.add(faPhone)\r\nlibrary.add(faMapMarkerAlt)\r\nlibrary.add(faClock)\r\n\r\n\r\n\r\nconst BookingProcess = styled.div`\r\n\twidth: 100%;\t\r\n`\r\n\r\nexport default ({searchParams}) => {\r\n\r\n\t// START -- parametros que se pueden pasar por afuera, por crear una busqueda por defecto en base a la pagina donde se pone el buscador\r\n\tconst titleText = searchParams.titleText\r\n\tconst isZone = searchParams.zoneId && searchParams.zoneId.length > 0 \r\n\tconst Code = isZone ? searchParams.zoneId : searchParams.hotelId\r\n\tconst Name = searchParams.zoneName\r\n\tconst Type = isZone ? resultTypeZone : resultTypeHotel\r\n\tconst channelCode = searchParams.channelCode\r\n\tconst channelKey = searchParams.channelKey\r\n\r\n\tconst selectedItem = { Code, Name, Type }\r\n\tconst distributions = searchParams.distributionsJson && searchParams.distributionsJson.length > 1 ? JSON.parse(searchParams.distributionsJson) : null\r\n\tconst subfilter \t= searchParams.subfilter && searchParams.subfilter.length > 1 ? JSON.parse(searchParams.subfilter) : null\r\n\tconst horizontal \t= searchParams.horizontal !== undefined ? searchParams.horizontal : false\r\n\tconst startDate \t= searchParams.initDate && new moment(searchParams.initDate, searchParams.dateFormat)\r\n\tconst endDate \t\t= searchParams.endDate && new moment(searchParams.endDate, searchParams.dateFormat)\r\n\t// END ---\r\n\r\n\treturn (\r\n\t\t<>\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\t {/* en base a la url se muestran los resultados, los detalles de un hotel o el buscador */}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t \t\t\t\r\n\t\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t} />\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}","import React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport BookingProcess from './components/BookingProcess'\r\n\r\n\r\nconst bpDom = document.getElementById('booking-process')\r\nconst searchParams = {\r\n titleText : bpDom.getAttribute('data-title-text'),\r\n zoneId : bpDom.getAttribute('data-zone-id'),\r\n zoneName : bpDom.getAttribute('data-zone-name'),\r\n hotelId : bpDom.getAttribute('data-hotel-id'),\r\n initDate : bpDom.getAttribute('data-init-date'),\r\n endDate : bpDom.getAttribute('data-end-date'),\r\n dateFormat : bpDom.getAttribute('data-date-format'),\r\n distributionsJson : bpDom.getAttribute('data-distributions-json'),\r\n subfilter : bpDom.getAttribute('data-subfilter'),\r\n horizontal : bpDom.hasAttributes('data-horizontal') ? bpDom.getAttribute('data-horizontal') : \"false\",\r\n channelCode : bpDom.getAttribute('data-channel-code'),\r\n channelKey : bpDom.getAttribute('data-channel-key'),\r\n}\r\n\r\nReactDOM.render(, bpDom)\r\n"],"sourceRoot":""}