{"version":3,"sources":["assets/images/btn-prev-2.png","assets/images/btn-next-2-active.png","pages/comfort/icons/baby-seat.png","assets/images/btn-next-2.png","pages/comfort/videos/toll-service-pt.mp4","assets/images/ico-wifi.png","assets/images/btn-close-orange.png","assets/images/ico-transmission.png","assets/images/ico-ocupantes.png","assets/images/ico-portas.png","assets/images/ico-big_bag.svg","assets/images/ico-malas.png","assets/images/ico-close.png","assets/images sync /^/.//stamp/-.*/.svg$","assets/images/extras/additional-driver.png","pages/comfort/icons/additional-driver.png","pages/comfort/icons/gps.png","pages/comfort/icons/WIFI.svg","pages/comfort/icons/booster-seat.png","pages/comfort/icons/cross-border.png","pages/comfort/icons/TP.svg","pages/comfort/icons/tolls.png","pages/comfort/icons/ACDW1.svg","pages/comfort/icons/ASTOP.svg","pages/comfort/icons/PAI.svg","pages/comfort/videos/toll-service-en.mp4","assets/images/search.png","assets/images/file-arrow-down-solid.svg","assets/images/angle-left-solid.svg","assets/images/ico-info.png","assets/images/ico-franquia.png","assets/images/ico-edit.png","assets/images/ico-minus-orange.png","assets/images/ico-plus-orange.png","pages/baby-seats/icons sync /^/.//.*$","pages/baby-seats/icons/baby-seat.png","pages/baby-seats/icons/booster-seat.png","assets/images/ico-consumo.png","assets/images/ico-info-white.svg","assets/images/stamp-30.svg","assets/images/stamp-50.svg","assets/images/logo.png","assets/images/ico-info.svg","assets/images/happy.svg","assets/images/neutral.svg","assets/images/sad.svg","assets/images/logoWhite.svg","assets/images/ico-pin-map.png","assets/images/language.png","load-config.js","services/Metrics.js","services/GetGroupsDetails.js","domain-repository/GroupsImagesRepository.js","utils/utils.js","domain-repository/DomainRepository.js","utils/useDisableBodyScroll.js","components/alert-modal/AlertModal.js","components/ErrorBoundry.js","components/Footer.js","components/Loading.js","components/legal-information-section/LegalInformationPage.js","services/GetLegalInformation.js","components/legal-information-section/LegalInformation.js","components/alert-modal-wraper/alert-modal-manager.js","components/alert-modal-wraper/AlertModalContainer.js","components/ValidateSessionId.js","components/TrackingPage.js","pages/start/StartPage.js","services/localizations.js","i18n.js","components/SelectLanguage.js","pages/select-language/SelectLanguagePage.js","withLang.js","pages/get-ready/GetReadyPage.js","services/GetReservation.js","services/GetCountries.js","services/ValidateGoogleCaptcha.js","services/Stations.js","services/ValidateTaxNumber.js","pages/input-reservation-ref/InputReservationReferencePage.js","pages/input-reservation-ref/InputReservationReferenceErrorPage.js","components/review/ReviewStations.js","components/InfoTooltip.js","components/review/ReviewVehicleProperties.js","components/review/ReviewBanner.js","pages/review-reservation/ReviewReservationPage.js","services/BirthdatesConfigurations.js","pages/review-reservation/ReviewReservationExtrasPage.js","services/GetDriverInfo.js","utils/string-utils.js","pages/driver/driverInfoReducer.js","pages/driver/driverInfoStepUtils.js","services/ValidatePostalCode.js","services/ValidateDriverAddress.js","pages/driver/driver-fields-validations.js","pages/driver/components/DriverInfoDropdown.js","components/Breadcrumbs.js","components/PageHeader.js","pages/driver/components/DriverInfoPage.js","pages/driver/components/DriverInfoInput.js","components/Spacer.js","pages/driver/components/DriverInfoOptionsInput.js","pages/driver/components/DriverDateInput.js","pages/driver/DriverStep1Page.js","utils/useOnInit.js","pages/driver/DriverStep2Page.js","pages/driver/AditionalDriverPopup.js","pages/driver/DriverStep3Page.js","components/ConfirmValuesCheckBox.js","pages/driver/components/review-section.js","pages/driver/DriverInfoReviewPage.js","services/UpdateReservation.js","pages/driver/DriverInfoInvalidAddressPage.js","pages/driver/AdditionalDriverStepPage.js","pages/driver/AdditionalDriverInfoReview.js","pages/comfort/ComfortExtrasPage.js","utils/dynamic-page.js","pages/comfort/SingleExtraPage.js","pages/review-final-reservation/ReviewFinalReservationPage.js","pages/review-final-reservation/ReviewFinalReservationExtrasPage.js","pages/thank-you/ThankYouPage.js","pages/select-pickup-details/SelectStation.js","pages/select-pickup-details/datepicker/datepicker.js","pages/select-pickup-details/selectDate.js","pages/select-pickup-details/SelectPickupDetailsPage.js","pages/auto-search-reservation/AutoSearchReservationPage.js","components/AutoSearchReservation.js","pages/second-try-check-in/SecondTryCheckInPage.js","services/CancelReservation.js","pages/baby-seats/BabySeatsPage.js","pages/upselling/UpsellingPage.js","pages/safety-packs/SafetyPacksPage.js","pages/safety-packs/SafetyPackDetailed.js","pages/questions/QuestionPage.js","pages/rating/RatingPage.js","pages/exclusive-reservation/ExclusiveReservationQuestionPage.js","utils/useAxiosFetch.js","pages/review-rental-agreement/ReviewRentalAgreementPage.js","pages/review-rental-agreement/api.js","pages/push-sales/PushSalesPage.js","services/PushSales.js","pages/templates/utils.js","pages/templates/Template1.js","components/Portal.js","pages/payments/PaymentsForm.js","pages/payments/api.js","pages/payments/PaymentsPage.js","pages/payments/PaymentsErrorPage.js","services/StationObservations.js","pages/payments/PaymentsSuccessPage.js","pages/payments/PaymentsReminderPage.js","pages/keyless/keylessService.js","pages/keyless/utils.js","pages/keyless/components/KeylessButton.js","pages/keyless/components/KeylessModal.js","pages/keyless/ValidateStation.js","pages/keyless/ValidatePin.js","pages/keyless/components/ProgressBar.js","pages/keyless/KeylessValidateRA.js","pages/keyless/components/KeylessPageLayout.js","pages/keyless/KeylessRASignature.js","utils/useWindowSize.js","pages/keyless/KeylessSelfCheckout.js","components/qrcode-reader/Webcam.js","components/qrcode-reader/QRCodeReader.js","pages/keyless/KeylessVehicleReview.js","pages/keyless/KeylessTelematica.js","pages/keyless/ValidateParkingLocation.js","pages/keyless/KeylessPage.js","pages/review-rental-agreement/ExpiredRentalAgreementPage.js","TestPage.js","pages/input-reservation-ref/StartSessionPage.js","pages/keyless/components/VideoView.js","pages/keyless/convention/ConventionStation.js","pages/keyless/convention/ConventionVehicleReview.js","pages/keyless/convention/ConventionTelematica.js","pages/keyless/convention/ConventionPage.js","Root.js","index.js","assets/images/ico-check.png"],"names":["module","exports","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","axios","defaults","baseURL","process","session","v","sessionStorage","setItem","getSessionId","getItem","interceptors","request","use","headers","response","status","window","location","href","error","data","Promise","reject","message","async","saveSessionEnd","clearSession","post","err","console","setPageId","pageObj","savePackBasicAction","value","accept","getGroupsDetails","groups","get","concat","join","GroupsImagesContext","React","createContext","getSetGroupsConfigurations","GroupsImagesRepository","_ref","children","groupsConfigurations","innerSetGroupsConfigurations","useState","localStorage","JSON","parse","groupsConfigurationsLastUpdate","innerSetGroupsConfigurationsLastUpdate","createElement","Provider","res","rej","params","checkGroupsConfigurationsForUpdates","then","hasNewConfigurations","length","filters","getGroupsConfigurations","results","groupsConfigurationsObject","array","key","reduce","curr","configs","stringify","lastUpdate","moment","unix","setGroupsConfigurations","EMAIL_PATTERN","getQueryStringParams","queryString","substring","split","p","parts","prev","isPortugalCountry","country","isSafetyExtra","extraId","includes","padZero","isNaN","parseInt","Number","isPortugalCountryId","isSafari","test","navigator","userAgent","hasAtLeastXDigits","str","x","matches","match","isTestsEnv","useDebouncedValue","delay","debouncedValue","setDebouncedValue","useEffect","handler","setTimeout","clearTimeout","buildMomentFromDateString","date","isElectric","fuel","toLowerCase","getDriversFirstName","name","reverse","mapDriversPhone","phone","countryPhoneCode","replace","trim","ALWAYS_PRESENT","mapDocumentTypeToLabel","mapDocumentType","DomainContext","kioskCurrentStationId","appVersionId","reservation","setReservation","setCorporateExtrasFlow","reservationExtras","setReservationExtras","selectedExtras","addExtra","removeExtra","getQuantityOfExtra","rentalAgreementQuoteValue","availableUpsellings","upselling","setUpselling","removeUpselling","driverInfo","setDriverInfo","addDriverInfo","additionalDriverInfo","addAdditionalDriverInfo","hasAdditionalDriver","addAdditionalDriver","getCountries","setCountries","getComfortExtras","getBabySeatExtras","getVehicleForRA","getRAPickUpAndDropOffDate","getDriversCountryName","getDriversCountryISOCode","getDriversPhoneCountryCode","clearAll","rentalAgreementCreation","setRentalAgreementCreation","excess","wasDriverInfoVerified","undefined","setWasDriverInfoVerified","wasAdditionalDriverInfoVerified","setWasAdditionalDriverInfoVerified","isEligibleForYoungDriver","hasYoungDriverForMainDriver","getDriversMinimumAgeForReservation","addYoungDriver","removeYoungDriver","getUserQuestions","storeUserAnswer","userAnswers","language","setLanguage","driverInfoEditMode","setDriverInfoEditMode","setDriverInfoHasClickedBack","driverInfoHasClickedBack","setAppFlowConfigs","appFlowConfigs","setStationsConfigurations","stationsConfigurations","addVisitedRoutes","visitedRoutes","roundToTwoDecimalPlaces","num","Math","round","DomainRepository","props","innerSetKioskCurrentStationId","stationId","innerSetStationsConfigurations","pickupDate","innerSetPickupDate","kioskCurrentPOSId","innerSetKioskCurrentPOSId","posId","innerSetAppVersionId","innerSetReservationExtras","innerSetReservation","corporateExtrasFlow","innerSetCorporateExtrasFlow","innerSetAppFlowConfigs","isCorporate","innerSetIsCorporate","innerSetAvailableUpsellings","innerSetDriverInfo","innerSetAdditionalDriverInfo","innerSetRentalAgreementQuoteValue","countries","innerSetCountries","innerSetUpselling","innerSetSelectedExtras","innerSetExcess","innerSetRentalAgreementCreation","policyAndTermsVerified","setPolicyAndTermsVerified","additionalDriverPolicyAndTermsVerified","setAdditionalDriverPolicyAndTermsVerified","setUserAnswers","innerSetLanguage","lang","innerSetDriverInfoEditMode","insuranceSelectedExtras","innerSetInsuranceSelectedExtras","removedExtrasInReview","innerSetRemovedExtrasInReview","groupsDetails","innerSetGroupsDetails","sessionId","innerSetSessionId","driverPhoneValidated","innerSetDriverPhoneValidated","notifyResult","innerSetNotifyUserResult","blockedTaxNumbersList","innerSetBlockedTaxNumbersList","insuranceSelectedPack","innerSetInsuranceSelectedPack","invalidAddressAlert","innerSetInvalidAddressAlert","localizations","innerSetLocalizations","localizationAssets","innerSetLocalizationAssets","pages","innerSetPages","currentPageIndex","innerSetCurrentPageIndex","invalidBirthdates","innerSetInvalidBirthdates","sessionExtras","innerSetSessionExtras","metricsParams","innerSetMetricsParams","queryStringValues","search","useContext","t","useTranslation","setKioskCurrentStationId","setPickupDate","setRentalAgreementQuoteValue","strValue","toFixed","rentalAgreementExtras","setAvailableUpsellings","arguments","modAvailableUpsellings","filter","u","groupID","dayValueWithTax","previewValue","raQuote","nrDays","sort","u1","u2","getExcessForExtra","extra","availableExtras","find","extraID","c","countryID","startsWith","curDriverInfo","additionalInfo","curAdditionalDriverInfo","isBabySeatExtra","_extra","selectedBabySeatExtras","seats","g","GroupID","candAddBabySeat","totalPrice","updatedSelectedExtras","isUserRemovable","removedInReview","setInsuranceSelectedPack","idxOfExtra","findIndex","extraToRemoveFromSelectedExtras","idx","saveRemovedExtra","updatedRemovedExtras","price","isIncompatibleExtra","some","extAv","ea","must_not_include","mni","must_include","curCountry","ISOCode","driversBirthDate","driversLicenseIssuedDate","available","age","diff","setInsuranceSelectedExtras","setSessionId","setNotifyUserResult","setCurrentPageIndex","setDriverPhoneValidated","clearVisitedRoutes","clear","getCorporateExtras","extrasIds","_extras","internalExtra","cExtra","parseFloat","taxRate","computeExtraPrices","comfortExtras","iconName","extraByDay","pricePerDay","raCreation","useCallback","amount","vv","flowPreviousRoute","history","skipCount","index","nextPage","pathPages","canDisplayExtra","goBack","flowNextRoute","url","iExtras","config","_isCorporate","getBestPackForExtras","extras","packs","mapExtras","uniq","a","seen","item","hasOwnProperty","extrasMapped","flatMap","pack","extrasList","matchingPacks","packExtras","every","ec","obj1","obj2","obj","isExclusiveReservation","exclusiveReservationsConfigurations","extrasBlocked","presentInReservation","isIncompatible","canGoInsurancePacksPage","insurancePacksActive","allPacks","extraIncluded","setLocalizationAssets","values","setLocalizations","setPages","setInvalidBirthdates","saveSessionExtras","newValues","ee","pageId","saveSessionExtra","extraDetails","filteredCountries","useMemo","innerAddVisitedRoutes","path","removeItem","setKioskAppVersionId","setKioskCurrentPOSId","Reservation","Extras","setExtrasInReservation","cashierAmountDue","listReservation","_driverInfo","fullName","DriverShortName","Driver_Short_Name","DriverSurname","Driver_Surname","email","DriverEmail","EMail","emailConfirm","DriversCountryID","Country","address","DriverAddress","Address","doorNumber","DriverDoorNumber","postalCode","DriversPostalCode","Postal_Code","city","Drivers_City","City","DriverMobile","Mobile_Number","taxNumber","DriversTaxNumber","Tax_Number","documentID","DocumentNumber","Document_Number","documentType","Document","Document_Type","iDIssuedPlace","DocumentIssuePlace","Document_Place","iDExpireDate","DocumentDate","Document_Date","birthDate","DriverBirth","Date_of_Birth","driversLicense","DriverLicense","License_Number","DriverLicenseDate","License_Date","driversLicenseExpirationDate","DriverLicenseExpirationDate","driversLicenseIssuedPlace","DriverLicensePlace","License_Place","additionalDriverExtra","newUpselling","raQuotePrice","reservationDurationInMilliSeconds","DropOffDate","PickupDate","closestTwentyFourHoursInMilliSecondsManyfoldNumberOfDuration","ceil","realPickupDate","add","tz","format","durationUsingRealPickUpDateAndReservationDropOffDate","realDropOffDate","pickUpDate","dropOffDate","PhoneCountryCode","youngDriverExtra","youngDriver","_ref2","questionID","answer","newAnswers","getYoungDriverPrices","langKey","getInsuranceExtras","insuranceExtras","getValidSafetyExtras","groupId","incomp","RF","element","isExtraIncompatibleForReservation","getExcessForExtras","excessNoPriceReduction","changeInsurancePack","packToAdd","packToRemove","extraToRemove","priceToRemove","extraToAdd","priceToAdd","valueToAdd","valueToRemove","newValue","setRentalAgreementQuoteValueV2","isPack","push","setPage","storeSessionPage","setGroupsDetails","setBlockedTaxNumbersList","list","mapPriceForPack","valueToPack","configuredPacks","currentExtrasToCheck","packWithMatchingCurrentExtras","extraFromNextPack","extraFromCurrentPack","total","mapExtraPrice","mappedExtraNumbers","packWithMatchingNextExtras","extraFromSelectedExtras","setInvalidAddressAlert","isDriverCountryPortugal","getQuantityOfExtraInReservation","setAdditionalDriverInfo","info","DriverAddName","DriverAddBirth","DriverAddLicensePlace","DriverAddLicense","DriverAddLicenseDate","DriverAddLicenseExpirationDate","useDisableBodyScroll","isOpen","document","body","style","overflow","scrollTo","AlertModal","title","handleClick","buttonLabel","className","onClick","AlertModalWithActions","handleLeftClick","leftLabel","handleRightClick","rightLabel","ErrorBoundry","Component","constructor","state","componentDidCatch","errorInfo","_error","toString","StackTrace","fromError","Date","resNumber","pathname","errDetails","functionName","lineNumber","this","setState","render","Fragment","withTranslation","Footer","handleNextClick","handlePrevClick","prevHidden","nextHidden","nextDisabled","nextDisabledClick","src","require","alt","FooterWithPrice","totalPriceLabel","FooterWithClose","_ref3","handleCloseClick","isHidden","width","Loading","active","LoadingIcon","LegalInformationPage","handleLogoClick","policy","terms","handleAcceptClick","handleRejectClick","readOnly","loading","setLoading","content","setContent","type","getPolicyAndTerms","result","catch","finally","paddingBottom","height","textAlign","dangerouslySetInnerHTML","__html","LegalInformation","label","driverInfoVerified","setDriverInfoVerified","driverInfoVerifiedLabel","policyAndTermsLabel","policyLabel","termsLabel","pageUrl","verified","handleTermsConditionsClick","privacyReturnTo","view","PopupLabelCheckbox","onChange","SimpleCheckbox","TermsConditionsPage","setReadOnly","_props$location","_props$location$state","_props$location$state2","_props$location$state3","checked","target","AlertModalManager","EventEmitter","openModal","onCloseHandler","closeOnDimmerClick","emit","AlertModalContainer","open","componentWillMount","addListener","openHandler","componentWillUnmount","remove","args","ValidateSessionId","WrappedComponent","TrackingPage","page","checkSessionId","TrackingPageComponent","assign","Redirect","to","StartPage","getLanguages","getLocalizations","query","saveLocalStorageTranslations","translation","resources","_JSON$parse","i18n","initReactI18next","init","fallbackLng","lng","ns","interpolation","escapeValue","react","wait","useSuspense","useKeyValues","_defaultLang","isLoading","setIsLoading","defaultLang","setDefaultLang","languages","setLanguages","fetched","useRef","current","system","mapped","mapLocalizations","mediaAssets","transformLocalsArrayToObject","r","locals","setDefaultNamespace","addResourceBundle","changeLanguage","handleChangeLanguage","LanguageInputSection","optionsOpen","setOptionsOpen","isDefault","innerChangeLanguage","browserLang","userLanguage","slice","s","imageUrl","stopPropagation","ids","keyValues","row","found","entries","description","SelectLanguagePage","handleLanguageChange","withLang","LangComponent","getReservation","resNumberOrReference","resCheckOutDate","autoSearch","secondTry","paymentsSession","encodeURIComponent","referrer","originTag","stationTimeZone","nationality","validateStatus","validateGoogleCaptcha","token","getStationsConfigurations","validateTaxNumberRequest","cancelToken","isCancel","log","getBlockedTaxNumbers","func","resReference","setResReference","googleCaptchaResult","setGoogleCaptchaResult","REACT_APP_GOOGLE_RECAPTCHA_DISABLE","isValid","preventDefault","formatedResNumberOrRefMatches","groupConfig","blockedTaxNumbers","all","stationsConfigurationsRes","redirectUrl","errorMessage","getReservationFromReference","searchAlert","toUpperCase","onSubmit","htmlFor","autoComplete","event","ReCAPTCHA","hl","sitekey","success","onExpired","onErrored","InputReservationReferenceErrorPage","errorWithMessage","defaultMessage","getErrorMessage","ReviewStations","pickupStation","dropOffStation","InfoTooltip","text","position","sticky","data-tip","data-for","ReactTooltip","effect","backgroundColor","fontSize","ReviewVehicleProperties","consumption","displayExcess","excessForExtras","doors","bags","handbags","transmission","safetyDeposit","ReviewBanner","onLogoClick","displayLogo","logoImgSrc","groupImgSrc","groupType","driverName","reference","display","_groupsConfigurations","_groupsConfigurations2","_groupsConfigurations3","_moment$locale","_moment$locale2","_safeReservation$raQu","_moment$locale3","_moment$locale4","_groupsConfigurations4","_groupsConfigurations5","_safeReservation$raQu2","safeReservation","groupInfo","handleOpenExtrasClick","goToNextPage","hasCheckIn","getStationName","station","getInvalidBirthdatesConfigurations","gridAutoRows","gap","DriverName","Reference","ReviewReservationBanner","ReviewHero","ReviewLine","showExcessValue","PickupStationID","locale","DropOffStationID","count","ReviewStationsDetails","ReviewVehicleImage","ReviewVehicleDetails","ReviewVehicleGroup","ReviewInfoLine","ReservationReviewFooter","salesOnly","_ref4","_ref5","marginBottom","_ref6","_ref7","setIsOpen","margin","_ref8","_ref9","borderRadius","Extra","DOCUMENT_TYPES","getDriverInfo","docNumber","removeAccents","string","characterMap","chars","allAccents","RegExp","driverInfoReducer","action","payload","field","hasTyped","validateInputs","canNext","checkDriverInfoStepEditMode","searchUrl","validValidationObject","removePtDriversLicenceInvalidSpaces","plateNumber","end","replaceAll","mapCountryToOption","getFormatedPhoneAndCountryCode","countryPhoneCodes","matchingCode","phoneCountryCode","useGetDriverInfo","documentNumber","enabled","handleSuccess","useQuery","staleTime","onSuccess","newDriverInfo","validatePostalCodeRequest","saveSessionDriverAddressConfirmation","validateCountry","countryName","validateNotEmpty","messageKey","validateDriversLicense","isPT","number","validateDriversLicenseIssuedDate","driversLicenseIssuedDay","driversLicenseIssuedMonth","driversLicenseIssuedYear","issuedDateOptional","isInteger","validateDriversLicenseExpirationDate","driversLicenseExpirationDay","driversLicenseExpirationMonth","driversLicenseExpirationYear","expireDateOptional","issuedDateValid","isSameOrBefore","isAfter","useValidateAddress","skipAddressValidation","addressFormatted","debouncedAddress","validateAddressRes","validateDriverAddress","hasError","messageId","invalidDoorNumberAlert","refetchOnWindowFocus","DriverInfoDropdown","placeholder","options","disabled","wrapperClassName","classNamePrefix","validationObject","dropdownRef","handleLabelClick","focus","Select","ref","openMenuOnFocus","isSearchable","isDisabled","color","Breadcrumbs","progress","role","aria-valuenow","aria-valuemin","aria-valuemax","PageHeader","DriverInfoPage","DriverInfoInput","LabeledDriverInfoInput","labelComp","wrapperStyle","Spacer","paddingTop","DriverInfoOptionsInput","option","DriverDateInput","dayValue","monthValue","yearValue","dayName","monthName","yearName","onDayChange","onMonthChange","onYearChange","autoNextFocus","monthRef","yearRef","day","month","getDriversCountryIdByName","getDriversCountryNameById","cs","dispatch","useReducer","canDisplayErrors","iDExpireDay","iDExpireMonth","iDExpireYear","year","errorModal","validateCanSkip","setValidateCanSkip","selectedCountry","_state$country","taxNumberDebounced","taxNumberValidation","isLoadingTaxNumberValidation","useValidateTaxNumber","countryValidation","_state$country2","iDIssuedCountryValidation","_state$iDIssuedPlace","driversLicenseIssuedCountryValidation","_state$driversLicense","docIdDebounced","documentIDValidation","validateDocumentID","getDriverInfoSuccessCB","docDate","taxNumberDriverInfo","isLoadingTaxNumberDriverInfo","docIdDriverInfo","isLoadingDocIdDriverInfo","documentTypeValidation","iDExpireDateValidation","startOf","validateDate","countriesOptions","editMode","handleProceedNextPage","pushPage","isCountryPortugal","popupInfo","isVisible","reason","fun","onNextClick","canSkipPage","onBack","onMountRef","useOnInit","callback","referencedRun","formattedPhone","birthDay","birthMonth","birthYear","b","fullNameValidation","surname","firstName","differentReservationNameCounter","matchesReservationName","validateFullName","emailValidation","validateEmail","emailConfirmValidation","validateEmailConfirm","phoneValidation","phoneCountryCodeValidation","countriesPhoneCodes","validatePhoneCountryCode","birthDateValidation","validateBirthDate","flex","AditionalDriverPopup","handleNoClick","handleYesClick","additionalDriverPresent","add1Img","vehicleGroupId","isLicencePT","minimumLicencePopupInfo","add1PopupOpen","_reservation$configur","_reservation$configur2","configurations","driversLicenseExpirationDateCountries","_reservation$configur3","_reservation$configur4","driversLicenseEmissionDateCountries","addressValidation","isLoadingAddressValidation","postalCodeValidation","isLoadingPostalCodeValidation","useValidatePostalCode","driversLicenseValidation","cityValidation","validateCity","driversLicenseIssuedDateValidation","driversLicenseExpirationDateValidation","skipIssuedDateValidation","issuedDateEmptyValid","minimumLicenceTime","isPastPickupHour","disableSales","validatingCanSkipPage","alertModalManager","forwardRef","DriverInfoReviewSection","DriverInfoReviewSectionItem","onEditClick","additionDriverModalOpen","setAdditionDriverModalOpen","legalInfoSectionRef","handleEditClick","step","onEditAdditionalDriverClick","hadValuesInReservation","lr","updatedAlertModal","setUpdatedAlertModal","scrollIntoView","reservationInfo","driversCountryID","driversLicenseNumber","driversTitle","driversName","driversAddress","driversDoorNumber","driversPostalCode","driversEmail","driversPhone","driversIdNumber","driversIdIssuedPlace","driversIdExpireDate","driversTaxNumber","driversDocumentType","driversCity","clientID","reservationNumber","reservationPickupDate","reservationPickupStationId","reservationDropOffDate","reservationDropOffStationId","reservationReference","rateCode","RateCode","group","buildReservationInfoToUpdateDriversInfo","usersLanguageISOCode","updateReservationDriverInfo","proceedNextPage","returnToUrl","URLSearchParams","nextRoute","DriverInfoHeader","getCityIfDriverIsNotPortuguese","INVALID_ADDRESS_STYLE","marginTop","marginLeft","_state$driversLicense3","_state$driversLicense5","_state$driversLicense2","driversLicenseIssuedCountry","_state$driversLicense4","_props$history$locati","reviewUrl","iDIssuedCountry","handlePrivacyPolicyClick","returnTo","hideIfAcquired","iconNameMap","ACDW1","acdw1Icon","ASTOP","astopIcon","PAI","paiIcon","ADD1","additionalDriverIcon","GPS","gpsIcon","WIFI","wifiIcon","CBF","crossBorderIcon","BABY0","babySeatIcon","BABY1","BABY2","BSEAT","boosterSeatIcon","TP","tpIcon","TOLLS","tollsIcon","PageId","additionalDriverModalOpen","setAdditionalDriverModalOpen","order","single","ComfortExtrasItem","availabilityHint","acceptQty","AddSelectableExtraButton","returnUrl","getExtraActionButton","acquired","continueUrl","DynamicContent","onLoad","tollServicePTVideo","tollServiceENVideo","seeMoreOpen","setSeeMoreOpen","currentPage","setCurrentPage","currentExtra","setExtra","hasExtra","mediaSrc","endsWith","_currentPage","getNextStepUrl","handleContentClick","htmlContent","loop","muted","autoPlay","isValidatingSession","setIsValidatingSession","hasDriverValues","validateSessionCheckIn","checkedIn","vehicle","reservationPopupInfo","setReservationPopupInfo","handleReservationUpdateNotify","reservationUpdateNotify","ReviewFooter","bottom","hidePrice","extrasForMetrics","metainfo","sessionExtrasMapped","se","acquiredExtras","pickupStationTimeZone","dropOffStationName","DropOffStation","pickupStationName","PickupStation","vehicleType","groupUpselling","matchingPackFromReservation","revExtraValid","prepareExtras","additionalDriverName","additionalDriverBirthDate","additionalDriverLicenseNumber","additionalDriverLicenseIssuedPlace","additionalDriverLicenseIssuedDate","additionalDriverLicenseExpirationDate","additionalDriverIdNumber","additionalDriverIdCountry","additionalDriverIdExpireDate","updateReservation","skipNotify","submitUpdateReservation","Days","days","i","RemovableExtra","PackExtra","handleRemove","savedSessionId","setSavedSessionId","notificationMessage","wasEmailSent","wasSMSSent","getNotificationMessage","SelectStation","handleClose","stations","handleStationClick","inputFocus","setInputFocus","filterStation","setFilterStation","filteredStations","onBlur","onFocus","left","transform","searchIcon","flatpickr","selector","callBack","close","localization","elements","createInstance","instances","prototype","_flatpickr","destroy","nodeName","querySelectorAll","instanceConfig","wrap","uDate","equalDates","pad","formatDate","monthToStr","buildWeekdays","buildDays","buildTime","timeWrapper","updateValue","updateNavigationCurrentMonth","buildMonthNavigation","handleYearChange","documentClick","calendarClick","buildCalendar","bind","triggerChange","changeMonth","getDaysinMonth","jumpToDate","altInput","hourElement","minuteElement","am_pm","self","calendarContainer","navigationCurrentMonth","monthsNav","prevMonthNav","nextMonthNav","calendar","calendarBody","currentDate","wrapperElement","defaultConfig","dataset","defaultDate","selectedDateObj","minDate","maxDate","l10n","daysInMonth","firstDayOfWeek","timeless","setHours","date1","date2","getFullYear","getMonth","getDate","parentNode","insertBefore","appendChild","inline","classList","givenMonth","yr","currentYear","currentMonth","enableTime","hour","innerHTML","minute","dateFormat","altFormat","timeFormat","formattedDate","formats","d","j","D","weekdays","shorthand","w","l","longhand","getDay","F","n","m","M","U","getTime","y","String","Y","h","getHours","H","getMinutes","K","formatPieces","forEach","call","formatPiece","months","weekdayContainer","splice","disable","timeContainer","separator","hourIncrement","minuteIncrement","max","min","delta","wheelDelta","detail","dayNumber","cur_date","date_is_disabled","date_outside_minmax","firstOfMonth","numDays","prevMonth","prevMonthDays","calendarFragment","createDocumentFragment","shorthandCurrentMonth","prevArrow","nextArrow","contains","offset","targetDate","childNodes","am_pm_toggle","addEventListener","select","blur","dispatchEvent","Event","fireEvent","parent","removeEventListener","removeChild","replaceChild","jumpDate","redraw","setDate","triggerChangeEvent","set","dateObj","dateStr","DATE_LOCALIZATION","pt","en","SelectDate","handleDateClick","locMap","buildLocalizationObj","data-dateformat","reducer","pickupStationId","openSelectStation","openSelectDate","initialState","arg","stationsRes","stationsDetailed","validStation","displayStationName","AutoSearchReservationPage","setParams","getResourceBundle","AutoSearchReservation","handleNotFound","handleFound","handleRAFound","translations","SecondTryCheckInPage","langInput","setLangInput","setLang","searchParams","proceedCheckIn","setProceedCheckIn","cancelReservation","setCancelReservation","handleCancelClick","handlePushToStart","clientId","displaySection","CancelReservationSection","ReservationMenu","handleCheckInClick","setMessage","babySeat","mappedExtras","selectedUpselling","setSelectedVehicle","filteredConfiguredGroups","up","g1","g2","getVehicle","vehicleToRender","isReservationVehicle","isCurrentSelectedVehicle","_up","PACKS_CONFIGS","RF1","colorClass","discounts","RF2","IF1","IF2","highlight","showNoDiscountValue","IF3","setPacks","selectedPack","setSelectedPack","isSelected","onNext","isReservationPack","insurancePacks","_","_PACKS_CONFIGS$pack$e","isHighlight","packIncludedInReservation","safetyPacksPageBlocked","_packs","calculatePrice","calculatePriceAndExcessForPacks","re","exclusionExtrasList","packInReservation","_PACKS_CONFIGS$pack$e2","_PACKS_CONFIGS$pack$e3","packSelected","packColorClass","zIndex","handlePackInfoClick","_PACKS_CONFIGS$pack$e4","_PACKS_CONFIGS$pack$e5","onSelectClick","backUrl","_match$params","activeExtraId","setActiveExtraId","setPack","packExtraId","reservationPack","isReservation","_pack","activeExtraIdInUrl","filteredActiveExtraId","isActive","whiteIcon","orangeIcon","class","maxWidth","curIdx","question","q","hasRated","setHasRated","thankYou","setThankYou","observations","setObservations","onFaceClick","ratingId","createReservationCheckInRating","observationsMapped","setReservationCheckInRatingObservations","Smile","rejectedPackBasic","setRejectedPackBasic","rejectedPackBasicConfirm","setRejectedPackBasicConfirm","cdwExcess","valueToPay","useAxiosFetch","setData","setError","source","CancelToken","cancel","setReservationNumber","setPickupStation","raDetails","setRaDetails","getReservationRADetails","imgUrl","ReviewRentalAgreementPageView","raNumber","StationDetail","stationName","dropoffStationId","resDropoffStationId","dropoffDate","VehicleDetail","ExtrasSection","DocumentsSection","documents","doc","DocumentsSectionItem","isDownloading","setIsDownloading","handleDownloadClick","fileName","downloadRentalAgreementDocument","buffer","filename","mime","bom","blob","Blob","msSaveBlob","blobURL","URL","createObjectURL","webkitURL","tempLink","setAttribute","download","click","revokeObjectURL","fileDownload","Uint8Array","alert","downloadFileIcon","PushSalesPage","submitSale","setSubmitSale","_props$match","_props$match$params","decodeURIComponent","acquirePushSaleItem","templateApplyValues","template","valuesObj","valuesKeys","k","templateApplyLocalizations","texts","regex","exec","_texts$find2","replaceMedia","_texts$find","replaceTexts","buildTemplateFactory","templateString","functionKeys","templateAfterFunctions","templateApplyFunctions","clonedTemplate","myRegexp","keyConditionValue","line","templateAfterValues","tollDepositValue","tollsMessage","isTollsValueInPreAuth1","Template1Page","paymentOption","tollsCardPopup","setTollsCardPopup","tollsValueInPreAuth1","buildTemplate","Portal","rootElemRef","existingParent","querySelector","parentElem","rootContainer","createRootElement","rootElem","lastElementChild","nextElementSibling","childElementCount","getRootElem","usePortal","createPortal","usePayments","loadingPayment","setLoadingPayment","paymentRes","setPaymentRes","paymentError","setPaymentError","paymentValues","skipPayments","paymentEnabled","authEnabled","valuePaymentEnabled","valuePayment","paymentAmount","valueDepositPaymentEnabled","valueDepositPayment","authAmount","handlePaymentClick","make3CIPageKioskMobileSessionPaymentEndpoint","PaymentsForm","nextPageUrl","PaymentLine","icon","valuePaymentImg","authPaymentImg","Supplier3CiPageForm","formRef","redirectURL","submit","method","ipgSession","frameBorder","PaymentsErrorPage","saveSessionStationObservations","PaymentsSuccessPage","keylessAxios","create","keylessIdHeaders","keylessColors","errorModalImgStyle","bigImageStyle","bigModalStyle","KeylessButton","pointerEvents","opacity","buttonStyle","outline","border","justifyContent","alignItems","KeylessModal","animation","img","imgHeight","actions","imgStyle","modalStyle","animationStyle","styles","dimmer","modal","top","background","transition","minWidth","padding","flexDirection","maxHeight","fontWeight","KeylessValidateStation","handleNextStep","keylessToken","keylessSession","requestLocation","useGeolocation","openLeaveModal","setOpenLeaveModal","handleConfirmStationClick","coords","validateKeylessLocation","latitude","longitude","nextStep","handleLeaveClick","displayInitImage","setDisplayInitImage","InitView","videoSrc","logoSrc","pageContent","logo","stationImage","Trans","i18nKey","components","initSection","initVideo","initLogo","initText","fontFamily","lineHeight","geolocation","getCurrentPosition","errMsg","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","UNKNOWN_ERROR","KeylessValidatePin","hasSentPin","pinSent","setPinSent","pin","setPin","handleSendPinClick","sendKeylessPin","handleValidatePinClick","validateKeylessPin","pinSentNowOrBefore","KeylessPageLayoutView","ProgressBar","done","finishCallBack","setProgress","animationFrameId","updateProgress","prevProgress","cancelAnimationFrame","newProgress","requestAnimationFrame","useProgressBar","KeylessValidateRA","modalObj","setModalObj","hasRun","tm","validateKeylessRA","KEYLESS_STEPS","KeylessPageLayout","handleBack","footer","helpModalOpen","setHelpModalOpen","currentStep","reservationLine","reservationLineHelp","handleHelpClick","reservationLineHelpImg","backArrow","caretLeft","spacer","minHeight","items","header","breadcrumbs","breadcrumbItemActive","breadcrumbItem","breadcrumbItemImg","breadcrumbLineActive","breadcrumbLine","KeylessRASignature","heightSize","widthSize","isPortrait","useWindowSize","setWidthSize","innerWidth","setHeightSize","innerHeight","handleResize","signatureMode","setSignatureMode","drewSignature","setDrewSignature","signatureSrc","setSignatureSrc","successModalOpen","setSuccessModalOpen","canvasRef","CanvasDraw","hideGrid","canvasWidth","canvasHeight","lazyRadius","brushRadius","hideInterface","handleClearClick","canvasContainer","getContext","clearRect","handleConfirmSignature","baseCanvas","baseCanvasContex","fillStyle","fillRect","drawImage","signatureImgSrc","toDataURL","handleSubmitClick","signature","keylessSignRA","signatureImg","KeylessSelfCheckout","createSelfCheckoutUrl","_err$response$data","_err$response","KeylessSelfCheckoutConfirmPage","useKeylessToken","confirmSelfCheckoutUrl","_err$response$data2","_err$response2","VIDEO_OVERLAY_STYLE","LOADING_STYLE","CAMERA_WRAPPER_STYLE","right","cursor","CAMERA_STYLE","objectFit","ICON_BACKGROUND_STYLE","boxShadow","CAMERA_PICKER_STYLE","fill","Webcam","videoDevices","selectedVideoDeviceId","hasUserMedia","logs","hasMounted","videoStream","getVideoPermissions","cb","mediaDevices","getUserMedia","video","stream","stopVideoStream","getVideoDevices","enumerateDevices","devices","kind","savedDeviceId","storedVideoDeviceId","deviceId","preferredDeviceId","device","handleVideoChange","videoDeviceId","handleVideoDeviceSelect","disableSrcObject","that","forwardedRef","ideal","mediaStream","srcObject","handleVideoDeviceChange","currentIndex","newIndex","getVideoTracks","track","removeTrack","stop","stopAndCleanup","componentDidMount","videoHint","VideoIcon","WebcamRef","xmlns","enableBackground","viewBox","cx","cy","hints","Map","BarcodeFormat","QR_CODE","DecodeHintType","POSSIBLE_FORMATS","QRCodeReader","memo","audioRef","videoRef","codeReader","imageSrc","setImageSrc","handleSetSuccesImage","videoElement","canvas","context","decodeVideo","constraints","facingMode","getTracks","reader","BrowserMultiFormatReader","hasResult","stopAsyncDecode","decodeOnceFromConstraints","audioElem","play","getText","onplaying","reset","stopContinuousDecode","vehicleSteps","isTests","KeylessVehicleReview","setRADetails","readingQrCode","setReadingQrCode","steps","setSteps","setCurrentStep","manualPlate","setManualPlate","manualPlateValid","plate","getKeylessSessionRAReview","parkingLocation","handleQRCodeRead","qrcodeDataToSend","unitNumber","qrCode","validateKeylessVehicleQRCode","vehicleImage","brand","groupDetails","details","detailsItem","detailsItemImgWrapper","detailsItemImg","colour","_raDetails$colour","parkingImage","parkingLocationValue","qrcodeInputWrapper","filler","hint","hintIcon","justifyItems","qrcodeInputImg","qrcodeInput","KeylessTelematica","isLoadingFinalSubmit","setIsLoadingFinalSubmit","keysModalOpen","setKeysModalOpen","setErrorModal","isOpeningDoors","setIsOpeningDoors","keylessOpenDoorsClick","keylessOpenDoors","finishKeylessSessionClick","finishKeylessSession","subtitle","stationPhoneNumber","STEPS","KeylessValidateParkingLocation","handleConfirmClick","proceedNextSetp","currentView","setCurrentView","parkingTitle","vehicleParkingLocation","KeylessPage","isLoadingTranslations","innerSetCurrentStep","setKeylessSession","getKeylessSession","KeylessPageStyles","KeylessEndPage","withRouter","handleExitClick","ExpiredRentalAgreementPage","TestPage","setDone","StartSessionPage","isNextDisabled","LanguageDropdown","PickupDetails","handleStationChange","handleDateChange","wordWrap","ReCaptcha","onResponse","reload","langObj","handlePageClick","marginRight","dContext","userSelect","VideoView","hidden","onLoaded","onEnded","handleCanPlayThrough","handleEnded","playsInline","ConventionValidateStation","CONVENTION_STEPS","VEHICLE_REVIEW","onFinishVideo","isLoadingVideo","setIsLoadingVideo","ConventionVehicleReview","vehicleDetails","OPEN_CLOSE_DOORS","_vehicleDetails$group","_vehicleDetails$group2","_vehicleDetails$group3","_vehicleDetails$colou","ConventionTelematica","conventionOpenDoors","CONVENTION_TOKEN","DONE","VALIDATE_STATION","ConventionPage","setVehicleDetails","load","preloadImgs","getConventionDetails","ConventionPageStyles","imgs","Image","queryClient","QueryClient","Root","sendBeacon","queryStringParams","QueryClientProvider","client","BrowserRouter","Switch","Route","exact","component","GetReadyPage","SelectPickupDetailsPage","InputReservationReferencePage","ReviewReservationPage","ReviewReservationExtrasPage","DriverStep1Page","DriverStep2Page","DriverStep3Page","DriverInfoInvalidAddressPage","DriverInfoReviewPage","AdditionalDriverStepPage","AdditionalDriverInfoReview","BabySeatsPage","QuestionPage","ComfortExtrasPage","UpsellingPage","SafetyPacksPage","SafetyPackDetailedPage","ReviewFinalReservationPage","ReviewFinalReservationExtrasPage","ThankYouPage","RatingPage","ExclusiveReservationQuestionPage","ReviewRentalAgreementPage","PaymentsPage","PaymentsReminderPage","from","kioskApp","ReactDOM","getElementById"],"mappings":"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SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,KACL,OAAK,KACL,SAAK,IACL,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","file":"static/js/main.3d39316c.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASmSURBVHgBxZlvaBtlHMef5+4C2Zo2lzS4rFO4QlyqDOxGt0R9sbAXWhTUd1sZWvAPFWan2IrEOl84fTf3YpvIcINOkBmEqYgwUDR7IcatjMimDFvpDSZESHIpplvW9J7z97uZ85pl6T2XW/1AaC+XJ/nm9/ye7/N7fqHEJZqmKYIgRHVCFEpIVKTUb8AD71HDqDHGKozSChWEAlleVkOhkEpcQHlePD8/75dlOSmKYrIhxjG3BKtE17MgtuJ0mCOBKCwcDqeIICSJBzDDyDsVuqrAhYWFJKU0xR2x1cCIMoYi8+1eRlcRN+xV1O7EMmO53mDw7J3utxRo5lpv7x6BUoWsAYauF2DRTff399ea77UUWKlUXqaiGCVrCKx8taenZ7r5eaH5CZzWtRaHQI4rJUypJlYIhDAP3u2ca4cEn10qlVZ8viUQxMlgvCniIZ+czjyED54xos+XwjXQuJb+uyOmCKUy8Yipdw8+feX32cHG9XMju39xMg4szd+DnkuIubLNCJrRo3SQeECxXPa/tP/VMbs4gzGuHQunuhHFW1OM0fOA2bk5eeKtqbFyWbMW2aPJRHZ070ie973kSCRpCRQMQyEdguLeO/TBaLW6KNvFvf7KvnPEBWA7pkAJqxJYuR3l3oWZmeixEyd328U99eQTX42O7OGOnCUQchG1SUSSFNIBZ77+Jv75F2eeWVqqmznj8/lqzz+7N/PYrl0q6RAG5ZwEc+zalD86cTL5Xfbc443rrq6uyr4XX8gktg8ViAeAxSgoUGaEn0NHjqZ+On9hJ7GJm5qYOBXfHHNc660K7GiSgd5nGFzjmsVByVR4Y3w846k4YtqTXzIMg6vOw53BLm7jhg3qO+l05p5IuEY8BheKwDuo2XRvLi3xvwkHsIFQrm+Opvvwju2Wt5U1LTrx9tQY+iDxGJjdmgDZxz01k/vHs3aR6H9o0p6LhFOhmE6nFfg3Qjh5JJFQYd+9Oa9ejeE1+mBuZmagL9p39d6+jVXiAZSxa2L6wIEAxDJGXLBj27Zrkij+dWVuNsZ0JqHI8xcvboG8KT4Qj5dIh8Ax9bL45uSkBIdr15XMgwPx4n2bNv2Rv3Q5Vq/X/UzXpUu//rZFq1RqQ1u3/kk6wJCkrIAnft6F0kxiaKiAJo1m3Xju2+9/GD587MOdxC2Qf6F161TTIXTDyJEOQZNuFvlj7ueUW5GQfyr+NQXKgUDHAhsiD79/8Hg4JBfsInnLfkSHzoMlEKcYmj+eiIxEIrWPjx45PrD5fqvU4q2ooRbMN9oi1kDc8v5eXHyNd+trx6lPT5uLj6uihtxj9fr0bQKRhevXkxDbYfI/AtbyZSgQsL7Qim00uH59zqupdgX0aezikNv2+UAgcBbbEGSNgS23EGzRRGpZiHR3d38GNzypip0Ai1TVisXplvfaDaxWq8P6v6eruwZMa5C3/WZHq1YHIZopWOaeVipobdB2y4K4tjnvyJ+w8wB9aeyyetJ9wKiVy+Vsq35gM1wGagkVBIU3ohgxWHy5YrGYcyLMlUA72o0bCvy8AAdrOLbCwR8MXm6YvDl9UAhDx6LARFEFbyvgxk9c8A/nnvl4dxaPdgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAAA1CAYAAADh5qNwAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASxSURBVHgB7ZpbiFVVGMe/c1Sy8dKUZFlGxiSEYUSRUVEiYYmlvWlv3Z58qZGI6KHGpoeCXqJBKQqToSC6CIoX1PGCCL54GcUbeBvvOjpexst4mZnl/3P9D2e52efsc9be+5wRzg/+fDPr+q2911r722sfkRo1atSIICMeGGNGwQyHbkCdmUymP6TMfTD1UA/yu2UgAifHQguhk+ZubkJroJksNwlqg244ZU5AjdBgGSjAmWboouPkLmg5tD6QvgG6yr+7mb8T6mfaRqheqgkcyEC/0iF1/jtodKDMEGg6tM8Z3LdQnVNmArSdeeukmsCBJjpyCBoXUTYLtbL8FmhkIH8ktIP5b0o1QMdPQ11cMw0l1tE7+z8d/zIkfy7zWqQaoOOf6cDcMus1cA2dM3YHdPPGQD1Qh1QDOtULPSplgjr/8IJMD8nbyLxXJCWyYYno8AEYfRa14xlzWspnG22Y4//SzpCUyBZIz227neLHMtqwQe2gfU5SotCgemnrxI/D0ClIH8TBB24uuhgmKVFoUHqHeqCX4dRQKRNM2aswO6ER0ORA9jO0ZyUlsgWcugWzFdIBPSl+bKKdmEvABXoQ5iv+u0gqDRz43mdLd+q/zvor+b9u52uZtkqqgW65dGCxeIB6g6BL0AVu491srx16TKoBwxqNKM6LJ6i72uTphOZBj0g10eCTDo0XD4wNbA2jE693Nx+yEfmbad8QP3KbxShsPkYGAri603il/xYPUK+OcWBXJe9UUTQgha5Bx32eV2xjDS/Ms1Ihik4/TBk9g9Do4HHoKfFjH+1rUiGi1pSyhPZV8aONdpIMFDBtpnL6tIoH+kwy9tzioFSIyMVr7Gt5F3QOGosp2VekrIZUf0I/otxSJ303zAToP6hfSkPLnYDaobVo75QkCZzaw7v1RES5d3PPpUD6PBMPfVn9yZR4ElXSNovGFsDMgT7AFWstUk7PMg6IjdCfzz2bkD5Ewt+tiqHrXQPgWWIj/TFQBzQF7XZIXODUe7xif0SUa3Ku7GRJCJ3WJn+gc8wkETuikdFc7EeKlGlmp7nAVc8Bx0lCGHtS1cK22yQJTP4wsiGks6+Zdx7SF8u/+P9R6BNovHEON2P4cD90AOqDpkpc0Mh8OvphIL2J6XpePpFpQ1m+j3m3mP+WxMRZCl6vRMHGZrOxFietOTigQJ1vnEEdhqZITNDGMGPjyfhfUtBIPZ3bDw02+W1ap9xLIeVns3Ot4/X2XMSXvex7uMQFjRw09hh6UcQdehu6zDIfScIYe1avjJC4oJHfTJ5LBQY0gwPSO9QoKWDsEYGu11Ji16IN6S63wJlyL4SUcadcWgN6kT5sk7g4a6jQlJuW5pRz+lnIPuZIHNDAFxFTbiZ0hXfoM0kJk9+B9XvZwxIHTrvTBabc+86US3NAs6Dr7CuZjwth26exUfkVXr1PJWG4jnUNadzXy34+j6rnfRiidwjmd8kf9N8UewbfJ8mgvj0k9qcNyhnoY0ToK0qpWDa6KcBo4zqAH8Sel6v0m1a8bdbpRuwXkv1ijxR+4ZlJJL6/a3hH7AVpREfz73hgnxn6ljxIkqObHysqgwn89KBGjRo17iluA0EtdF3JsdxhAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAS1SURBVHgBxZlvaBt1GMef390VujVtLmlwWTbhCnGJY2A2tjZTwTBEi4LsnRtDCv5hwpyClalJdS90vnHzhQ5E2KDzjRZhWqSwF75IX4hxKyMwlW2t5orriJA/V71u6Zq783kyE69ZmuYu1+4Dob37JXffPL/n973n94SBTYrFosRxnF8DkBiAn2es08AXjTHDKOm6ruiMKYzjslAuyx6PRwYbMCtvzmQynaIoRnmej1bFtMxdwTJoWhLFKq1+rCWBJMzr9caA46LgALphpFsVuqrA+fn5KGMsZjliq0ER1XUSmW72NraKuEGnorYSZV1P9brdF1Yabyiwkmu9vQc4xiRYBwxNy+KiG+3r6yvVjzUUqCjKq4zn/bCO4MqXe3p6RuvPc/UnaFrXWxyBOS7lKaXqWCYQwxxZ65xrhoD3zufzy+5fE4jiRDTeGFjgy6/GHqEXOAjf0RGjNVA9Fv4f4WPAmAgtQsLGJyb20//Xpq9LJ95/bxwcAC2ts4c8F6CysisRrESPsYiF64Ch67UFdvX6dOSVo28czuUKjnglTXU1inenmKJnkaFDB9N7+/dMVo8LxaJ/eCRxeHpmpuVZaIbo80VrAjnDkMAGb71+NGkWqaoL4ocnTw05IRJtpyKQp6oEbcX2yn10YEDOFQqLGXk2SMd37ix1pqamwgF/YHZrYLMKNsFcFN4+dkzm3xkZiWAySdAG/bt23RB4/q+rM9NBXdMFEnnx8uUdmNe5h0OhPNgES7ksH4/HKXo+aJPt4VDuwS1bfk9f+SW4tLTUqWuacOXX33YUFaW0e+fOObABpl6ZT8TjjxsALnCArYGAuj0UvkZTTCLp3B8ZOTh38ybs7e+fBatwnMC/m0g8CWY/bBNfr7dUL/LPG3OSHZGGYVAUDWfrPCS0Lah8cuKDL7weMVs992Pq55jVpw6ZNgdrBcfRHZadMpt7qwiosuR0FMkHyQ/JF6vnHosOJMncLVyGprjE4QIpgYOsJO7N145MWr0WzoAioEzKE0ceT5empvynz5x93izuuWefGR86eMBS5Gr6cN8i4HOYtoJhaJPz30+Evvn2/H4yaTru6OgovfjCobGn9u2TwSY67qkFfXExywntucznZ85Gf0hOPl097urqUo68/NLYwJ7dWWgHQZAF2vH/raq2F8rJTz+L/XTx0hNmcYnh4XNkNdAOmH+eDRvkis1ohpECG9SLwy+bdUQcVPJPpr8VgaLLZVkgma5Z3OZNm+SPjh93RByhYeehJpC8EJs/lkSaTTe87aH06VMfn3vA53XEsrAWTFfbIrXVgbmT/GdhIdJqLppN16oBN1fHFK1cTtYOzWPzt25FMbaDcB/BDth3Hper9oWXPYvdGzemrE61o2CfxiyOuKdYcLlcF6gNAesMPnKz7gZNpIbVTHd399c40J7JWgAXqVzM5UYbjjX7oKqqg9p/u6s1A6fVbbX9ZqaoqhGMZgyLCkcKitqNqcxDr0NxTXO+pQKSOg/Yl6Yuq6Xuw4pg1AqFQrJRP7AeSxVuTSjHSVYjShHDxZfK5XKpVoTZEmimePu2hD8vSOj0fizvRTR4sWrylenDQhg3PFkdyzn0tiw9+MEG/wKcshQhRanXiwAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/toll-service-pt.5e2c7935.mp4\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPuSURBVHgB7ZpZqI1bHMD/59zruqd7ce5FeDkk85C5CElKnsgTL8gLZS5DZinDgxcZEpGU8qDk4YjIEIcjRInMw8k8D5mn5bdaa2f52tjn7G999ndav/q17Xx7rfX/1vrW+q/1HZFAIBAIBAKBhCiSBFBK1eWjA5bhv1jH/tdnfIPP8RZeKSoqUuIRLwETYCkfw7CXtZt8C/JnPMJzeBT3YiU34JMUIgT5F47GbfhOxcN1XIVdJSby7mEao4foVBwnZsi6fMRKMb12Hu/jUzFD+AuWiBniDbCNmNHQTszwj1KBi+jxA/I7INA/cSbejfTKa9xke7uB1AB+1wmn4HH8Ein/GPaQJKHCnrYxLjdxLv4nMUJ5XXADvnLq+oRrsLH4xPbqAvX9M3ofZ+Pf4hHKb20D/+jUfRX7iw8ouAnuitzl5XH3aA7t6IonnXZ8wHkY34pDYZ3xmlPJDRwkvwnqroPzIyNtqzITaN6FD8BHTsHbsZEUALSjL1Y5bdsp+UABpfjYKXCZfo6lgKA9ZXjKtu+e5AMF1FVm9v2Ms6RA0fOIMstY/hMYhTTDNlJL8L55UCavHoztsRX+j/WxGD/gKzEbhxN4Fs/43kDEDkHWw2lYbpeN6nARV2IX8UCsPWxn7yk4GUuzXPIEL+FL+11vG5uIyaOjk6Hu5SM4jx6vkEJCmQxMp5VPIr2lv69VJq9u/pPf6xHRT5kE4mSWXi8vmHlEmZTvcKSBp3EilkgNUCZ/3ohvnTKf4gQVZ0ZVg4aNiPTqbRtoscQA5bTHnZGbqTOq+pI0ymwN3UR+tfKUV1PucLzj1FWJDSUpqGykU7ne/04Sz1BHC/X9lnS8JAWVzbGV6hx7oCSEHsr22T6o5w5JCmXOr4ZiSwkECopE1zRlDvVGY08xGdYf+BDLcTcZ1XOpDehkQZlzr2fqx+ht6ChJO8qknesjwb3EQ1hh/+2yVNIMASx2gtFn2JOVc8KpzKnKJHzgXDdD0ogyB+rvbRD6SLX5L67NBP0Cm0naoNHrbAD67UHvHK4f6/TyQkkbNPqCbfyxHK8vxsv2N/vFA7HsarKhzBLU1n7NaQPPsqRfsGVuTjfxgLeAxZxmZNb56qyv7+2nl1c3PgPWxzmZxpdV43ct7GeVpA2G9R77POrZ958cri9z1uUdkjZo9HRn1l2Sw/VbnOuHSNqg0SXOTK2XpkUqy6sanYjgCidYfaLh5XFL4iBev63fh5njH33YvhkvipnYOuIYMUe1mrs4gBn7qqQVgu6jzObgV+jR0EFqAwTSVJkX6NkCr7LDvZ54JvEzXoLSf6/VXcx+WD+nN/GsTToCgUAgEAgEag9fAYqCQACnRdEAAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAARDSURBVHgB1ZrPbxtFFMe/b9bOjyKBTYpET7jihFQJVwIJwo86B3psIw5wowl/AHXASttLG8OlUk1jjlyoy40bucIB916JROKKal/gAGlcCdQ0tmf63jixNm78a3a3WX+kKPbubDIfz8x788OEkPg7j0wyiRy0yioy50BIwfAPKNUtRKbG12ra0BaM3mxqVE+VUUMIEALwII/UiwlcJqIlGMrABWNqGrTRbOtyECknkX8KyHmgG/x4DiFiDCp7bV10ERpLRLrPdJLW+dNfRIS4CI0swq2Q32+FFJ4H0uWMKZ68jcooxUcS2S5gnaDyOAYMUJ4r6ZVh5QaKyGB+KUG/cbEsjhWzSS2zkC6j0a9EX5H4SBwwWEb1eyxeEgJlja3T0RwpImMiXhIHUHa7oNaPvNN74d8vsaSUuoMYY6BX5koo+68dErF5wuPmI8og3jSetPRZf5451LWSnlqbAAkhZROzj26L2NZIqAeYINrQC6+UUJXX3RaxrTFhdGYaHayItIYiXIIDNBNsxjL9wRc48ckPcINyO3nYCliRKc9t+jF74TZS32xj6q3P4MLs+es4cWEd029fAs26fSA60am7FSGYi3BA79Tt7xc+vTO2jEjMfNTpGf//9DnM4wZcINPpSRR0kM+ev8EVur5foWXs3f9xhGcOS+zdv4sgUEuf9q7NY5FXeM7ri9af9zhiExKvn8PUmUVupRraf231LR+2hKChtrwr82qJ6/EOAjCqTBQS+9S9q+/hCjdOBgEZJhOhBEhhxludV0XOiqGs+vrJRClhMdilhwVlEDL+AND8YwPJM52gGIlEh0YkIoJfRohQwqIQGWbI+3AREbdMNAD/mJCuJbgkzXGQfvUIIdI7sP+7+zF2f/3avo9Mhrdhea5odhAS/aLT41+K0coQ1b3Vd9UbQROiMCzEjjsDGAfemdzwVt9Xr3IeCbQFOmqeiErGKPreu/ahaUCT8y7iuMkuChmV0CsqfRM1HvB1OOCasUMdM4SaOBzkkQoC4JLsemVcF1ZGw8Z3u/kgy0WTUE7RSyrguigSZAbgnXrThmmn/5/Qp6VFursoDwt2izSHCYKHWiV9Sy/L6+4UpQ1TxKTh6W6duyJ2f4jMz5gQbGvc7LPTSJ6RA5XQ516hw5HK3xrCIZH9UBz7LsanwEV/awjPTOP5mKvMKf87xBSp28lb7Urv9b4nVhzFfo/hGcnmyyV99qgbfRdWcswlx12ID3z0phf63Rx4GNpJlLE4grMSToehfra/UmUOd5dxDMiYmPtWD53UjrRmlz+kiZZt2Ht+NDiCrowiIYz1FY6dq8jollrjh5yOIEaFJDFzTusNsQOfgQPRCdE9Aq2lS60qxiTQ15ysUFPlecvyIm8AZOBGnbtQRbV0edBgHkYgET8i1W57OdImyytAjnImw5df8xWRSj5iYen7VaVoE81kNV3erSEEngLKhvZEg+L7VQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ico-big_bag.3d2216c2.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASGSURBVHgB7ZtdbBRVFMfPubMf1AVirAVMaLalNq2SaCJNNCGWrUKa6INpIj5ogkoKpe5CREyMppqVGF8aCA1ttSKIvpg0JsQniBrKNiEGkoJC1ZBI2QXFUmhMwa3d3Zl7PDNdEx7Ybe+004XM/B56z8zce+b8Z+6ce6d3FsDDwxUgOEjXdytrhV97AYAWq7QTiGPCLwfb114ZBodwTHhvoupVAupjMwj2yJDEtlhT8ktwAEeEHxisfixL8jSbAUQ8LKUcVWmPCDX8dyP3lGxQ1+pan72UgnnGBw6gI0WAICgBDm5vTLaCDXoGwmPc52MZn3yRN/fAPCPAAQyi5ZZB8hewC+KI5YKoHBzAEeH3Ap5wt+EJdxtzHse/+nl56OZ4YD1fw2bU6AEi0HjsXs2HHmHvZ0jSCNhACKxlX4/zsHiBJ0LnrWCFuCHJOBoILTva1jCUgzlgW3hf3xq/UXf9dR6r97LQECwso3zePeOyel+86YQONrAlvKe/YjFVlH2DApvzu/5mT0NkwAUEshXITBBigMf2VQKogQCssZ3LI9rU1Lb25mtjoIitmRutYNE0LZq7Yyfbe6NNSaVpqV06T9YsC+n6BxJhCxK0yEVBwTG08DSXVPwo3/H9x6u2Cs16+TBpja5LHYQS0H08vBk16GUzSBK2xJpSn6u0V8rq8XjEJwTsnN6irlKJNok9kzrEz/kB00ZB7/b3b9RU2isJL28ceRKQ6tnMiSn/x1BiAlmtw4yFpa8ae/BURKWtknBNwGrLIBhub76onFDmm7YNIxOcZM6ZtvBRrUpbJeGTk3KFWXIWuQh3CZztk2aZnsi/Ec4SpayenpCiLKSZV6vokNV98qEwZAOtuiG631x/6dqd6nyaqN5kkJ6LRq58fafjX5ytuj9909jlD+ldbQ1/3Sh0LkGQI07Rk/9IpUTtyJRV5IKbUUAHGbmXCtUxQH7GWalgckzfgtcQREduMrgdnIgRHECStP7Pls2QNsO5RREn1jE0SClbzxbv7cxteMLdhifcbXjC3YYn3G14wt2GJ9xteMLdhifcbXjC3YYn3G14wt3GXS+clxWUFvxni9La2X1LNMMsOZJAUacB/NbQYcPSJeKHgpUIDvMyU8H1Lt8iOmZk4BWu+D0UgdfNrFiWlk/HNlsUhYurebOuWL1ta1M/crGmWJ1oJLW1qI+nLv86kw8L5Fj4TvgDviQooNTVDTTOT1tU3zOw8mEoMYcSNZUs2lqzJ9J/U2mrJHxH4x+n+eKeA0QNffhhPF7aHPEvGB/lzTOxyOUhlbbKgaPEd8ySpHi5IlIZJ3L25x2F6DkRfp+j2GTFZOBbiOjsV0/WSRPhTi7ezm8eAanvjjb9+RMsAPsHKht8QntPArWY23zd98XWJXeq+rElvH/40cD18bT58c+u23af5ShGwakP/Pj54mBrrWT2/z6CT2KR1Btggzl1097B8PPcv3ZzVE/AwnIKBMajTyePgU3m/Hyaz3hvorKBi3qBGDYkOfI7F77dksVeBdQH5a2y1I7nfs+Ah4fHTPwHrTh0aXFZymMAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGdSURBVHgBpVTNTsJAEF6KhlAR/2K1BmL0QOTEG5B44WKi8Wn0xM1H4ER694SHxpNy8t7EU59AY1uaamPwh0acsbtmWbZQ4Eu+FHY6385+s50MkUMBrgHzwBxwma5/AiPgOzCUJWYkaytAnYpOwgDoi8JZ4aVtoJawkQjMLQCHwA9+kWETuEVmh0ri0/R5wSKtbF6g1+jvgPk0VplhGEeyzHa7XbUs61wS2qWV/lVX4QkJF0OA4zgdfh3EzqIoCjEGG56KecB1FNwTA3wiE+XXXNftSMQqVIvsy4K8QBAEdynEkAfYlB2ZV6Zp9srl8kOtVjtRVbWqKErO87wbTdMuSTKy0y7vCKDAVO8dkilH9n3/XvQ0gWjfeFOazeax6JmsUSShKRtiwLbtK1kDUlybIjblm8T35//7bbVaj6VSqVuv1695b7BR8LjVdf2p0Wh0BetwWDhMpMDKXQAvwJB9y1gldjxP5gOOsVf8wU+bPn2qZDYEwB77I85DnGvoRU4SE/EDfGaVMUwapDg0VoFLdAMEjv8vEp/mjYqO4BeQiN6frCvcFQAAAABJRU5ErkJggg==\"","var map = {\n\t\"./stamp-30.svg\": 338,\n\t\"./stamp-50.svg\": 339\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 206;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDgtMTlUMTU6Mzk6MTIrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA4LTE5VDE2OjMwOjUwKzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA4LTE5VDE2OjMwOjUwKzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjRhMGE0NGRhLTE1MzUt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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDgtMTlUMTU6Mzk6MTIrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA4LTE5VDE2OjMwOjUwKzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA4LTE5VDE2OjMwOjUwKzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjRhMGE0NGRhLTE1MzUt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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQBSURBVHgB7ZpLSFVRFIbX7WGvgT3o/TB7ghI9sCcagtGgyLBJBAWBEDUwMhxFURkRkTWooEHkyLLQIoSCsgQHlQ3ERhVmZhK9SNIyLb26+xdnXdwdzlWv53jb93I++Nn37MdhLfbZa++9lMjHx8fHx8dzAhQllFJzUWyD1kEp0GSoHWqAaqDKQCBQR7EKHJwMXYV+qP7phcqhJRRrwOgcqEVzpBo6CmVBq6EMaB9UCnVJvw6okGIFGLsH6hHjX0ArB+ifBJVoM3yWTAdGboC6xeDLEY7Nh37K2BNkKjBuHNQghl6hIYBxufI1sBaTicgaZBqhSQ7tE6FNUIF83kvDvOeWvKeCTANGjYBeiYHbHdo3Qp/UvzgGH9Slan3mk0nAoDViGEfaMba2RZqTH6Bi6JHmzHGH91VIWx6ZhLK2CqbMoe2utN3ndazV75L6IDTbNiZP2m6SS0aQtyRL2aRXimPp8piPE1BnqA2/S1Hcg0ZCW23va5RyBrnEa0dDn2vQVp8IjYd6oHqHca+ltDvULuVYconXjrZKOdVW3wJ9I2vWsvQGDmAosuWx1jZukZRtZBIwOlPWVIND2+lQm7KOhmOhhdANqX8vTutjyqTtGJkEDEqEvohxGba2mdBjLcpyBG6X33yKyrH1T4Z+S5BKJtOAUUVifJ1D2yToDPRL+vDJ5xm0yqFveShKk4nAsFnQdzGyIEwfPljMhSaEad8i4/nGk0KmAuP2iqF89VoQ4dgkWa/MOTIdGFklxtbyLA9yDAeoahn3RNlOV0YCI2ervnPvbXtEDTOmUIvAEX0J/xUOMlrgOTJA32wtQO2nWANG75Rtgh04GKbPAtWXcjlFsQqMPylOtEFptrYE2WKYpxTrKCsTyDRDqVr9Nannq9tMinWUdVio0SLxFF6L2rpcTvECnJkPNYlzfC/tlN+HaJjxLFMPY1eg4PMqpzUn9NOVE9RztOdi3ElzKRaAk+fV0HgJTaQoMIpcAkMvouCcDt8Zi6AKGtz9kWf9M2azlUxHWQmvoOyB5l2lNNxmGDLJyhpUYGbekcG4dTSUy/lK8Qw+13QJKvUqzN0yLlDWBTp0HePDwHrIdYAbDlzvo3BsOopKaJlU/YG6yFq7kTqtpOS0KKdAL0ElWP9BcoknBwZl3TUPQLuhJLIcDFDk7w+KeO1PkTpOge6As83kAs//hwFOJ6AYLY+RBrtusmaTx/NJi/+2yietKjiaRfGKshJtbyQGrCUXeJ2p9xTM4kcUd+QxjVxgtKNCopS9FK8oK8USyvzPIxdEdc+DsTw7gzGY7doMHYamQRfcRt2oAkcfqsjhK6Dr3SHap5gHUMIg+nVAb6Hr0HPMpiIfHx8fHx/z+AscR4pEsC/+QQAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/WIFI.a6041713.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAA3CAYAAACo29JGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKfSURBVHgB7Zk9a1RBFEDvitGoiEgaxagRgpBCVIyCiI2o2IhoZSM2apUfIIIasBQJVoKIf8BSTGMsFBtBQ7ASo0QhET+KqMFEErPjGfY+8hAzL/u+dl6YA4fZ2Z2d3Ls3+97MrEggEAgEAoGAb9SSBhhjTtN0STYMTuDDWq32W3yAxPpNvnzCY1ISzsoRyJg0qvYIv0l61uBR7MB5PEQFX0grIblx/cQPSEaYYz0O6XxDUgIrpCSo1BTNTe32kGC7FExpySkd2v5RC6W05KjUTprr2n1OJQtPbqWkhGA7afpwN67CNp0vMt5fh5v1rV/xsrSaxS4o9Lvwg2mOOj6175WSSFu5ftyO9lZxA2ekcYm3N+u6Pq5rP3r8EUf5d5wXH3BU7qU+f0Y8Jm3l7FJqH14iwWHaqX9eXy3psJWexe+FV9hRuSM4Z4rDfj/f4gAelCIwjhUKz53ENxpIM8wl+D8GsUfyxCxh+cVrbdjehEnr2bXYixdMY7n2S2OYxmuYz73Z5Li2zBCDXao9iFXxTi4J+pBcLJYrOKPx3JKs+JSchTguxip4QrLgW3IWYrmvMb02WXYWnia3BX9oXIddY8ve8mSGm7tdQAxq96xrbOWSU55o2+saVNXkxrTd5BpU1eRmtXXGX9Xktmk76RpU1eSiq6TzeLByyXH530hzXLuPXWOrWLlzuAPHZeGW0DweLr+6Y7uEq5IFzxbOu3BU4xnG1Cd30YTvdLJT0iLs/g/P4xeN5b3J4wSNSe7GJuyUEuHvbcA+fGYWdvsjuHWpcyTtiu1B6itpHKjaG6c9DJqWYrGHS/aDtElEF7yfeBsHWFtOSl6Q4H6tXCv4jPewW1KQ+MtqLMk9NHulHOxvgSM4QaWMBAKBQCAQCCwb/gKNNvba9kC7IwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAA8CAYAAAA+CQlPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPmSURBVHgB7ZlLSFVBGMe/a1oa4ZMss9Aky+yBkNkme4ASJEEtgmzRyk0gBLVoGRG1CCKI2tQmql0GURRJEQZlqRmRjyJMxIqklLKH4nP6f53v6Hhfcb1z9Bbzgz/fnTPf+c7MmblnvjmHyGKxWCwWi8VisVgsFovFYrFYLJaI8fkfUErtgUmR4jBU6/P5+qSO/fdDCUFitcGvSYuzFqY4iF8/VAffr+IXD7MPivdvCvQCfi1azK0wy4PE7IXuwFeJXybMTq2er3UP9UMUDJxQqgI5r9WXqdAMQPPELw5qD+N7UIt5KIxfu9xs9kuCfoXxrdBinglSv0Hvq/9dboVuQQulzCN+W6tvg25CiyiQZ+4dhR3HhS7i514KnFU/ocda+b5ogZ8fj951dxRhBxHzAn5uDrz0n1n0XCvfhbijc6XMM/Y9WSwWi8Xyf+Ejj8HamwGzDdoEZdFk7uCjyevHQWPQJ+gh1IB1+zP9i6DD8dBpqE9FzhfoCBRHHuHJiKPBeTA3oCJolJxssJ6c7GlYcx13TyFnJuRCu6At0ByoGSp38/qYBp1Ohxpk5F5BRRGG4BjrodcSoxGaT7EOGnlJGtyiZNMyzTiZ0EuJdYxiGTRwGcQblB4ol6IEMQqhH9AItIQMYvrhUUXOc4N3VV0UJYjRDvOAnP//bjKI6Y6XiK0hc1wVW0oGMd3xVLG9ZI5OsWlkENMddzf+w2QOJTaBDGK64+66bDI/UOQBnmVGsU48mWU8VIVyXhpmQ5y78zu7dKnqF/VA3XiSj9IMYLrjLhNTXdZzfqtaBhVCiSHO4SndAf9a2BrcgEfa8SkxTWC64xONlBG+BlXSZKM5535CzlN/UI5xOsqjn6+pmtNecnZ1Lp7vJKcFp6eSpjIFnF9DQ1I+CeXLzQgXY7HsykblvJXQOvnN6WsKxRJoUAn0TttWFsjxeinviCCW29FuKedrcTsjieUpaEix5OdMnZr6leSUHD8XQbzDcs5ZKfNXmQP835fjg7PeeeV81nkjDTqu/LaPKK/SRoo7kAYthVbI36FQfHKgDCgBapZzyoJc76jUtc7qtMfFK6QhDWF83opPl3LexoyoQHjG8Hexj1L+rpyPicHiNYlPOUVBtE/1jWLz0BD3q+YHqBLL0TcpX4FOQDnkpLK8XvO3rAFy1n3esyeTs7a7W8/L7nouI8vf1rKkLlnsdjk+86BR1So4q/38cqBU9fenOq8M2VCidqwwxDWqaLbAxefI/zVfbKM0ag0ZQuv4U7l5KVASRUlUUx3TkV8Jd9BkIwfJPG5SNKb9faLG9CbFk52UYDRz86rjdltqEKNt/Q3v58jSNSHrWwAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/TP.a04b9d55.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4hJREFUeNrsWv11mzAQt/P8f+kEZYOSCUw2YIOQCepOYGcCZwPcCXAmwJkAdwLYwHQCKtKT372LBFQ6GeNw7+nJiI/TT3e6L3k2m2iiiSaayD3Vde2LthItE+1U/6MCrptx71aAeqJt625qFmF1C2BzBKqRZtxIG+4HcI2fScYMOEfSi4h6R+TZ1ahBi0lvENiAgE3gnk/eiRHocGyqLA3TSgNIUqBZqHxMgCNphcn4CUn9vdcs1nkx7kaCeQn9noxT13NPX5zP5xV6LxwLYKmmb2T8hQD/oXn/t3zubmS2qyLS+ym6ppUwtKLWmtJYAJdE0mfXI7qdaL8U2oDp29hckvSpKXFHKgoV7xfy3pwrrhWdzwVQqOpB8X1poe/F/SOMpUSiT+Lejvpi0TWBRyXufbUFGkB4x00f4mAUXOQ0MZC+tsN/b94X0was6DJkIQ9MAsbashNSeUJSzoHfHqRZobkEWLpEA46iPcjnTQEXuhVn3LM1iZkDkgrGGqluSFAS2E4oRkw9R4ZKGRIC6IJsgQw1TDmNr00nk+B94TB+luRppFhobECukj6HOjvNQFA6GHVUPkLUPO5J+LpA3QHgLXc+axJpRcxWuY1eZdA/ZNST0rzUMb9aldyb0qIrDxXdI/K1JVrtw4XW+AA81wR0kzm9WPlWAjZsi4QGKO2oKHOhuimAj5AzTy4IOEAAt2gutSqctFHpNlXxXfrgFvpjnZi0qTTEytdMB7GHH1gAI6OVkkR8z7HS/0lfwB1io/XMarRItbC+hmMLklSELhikrmNmC6udXr3TZw5ta5P3u/ZwDSWXucaoPcK+eoNkvWQA1GQ5S/juK3y36jsvFgm3pIe0LBNZpoO55rtBn3k5AUzOc7ZwnaHJeZZ78wS/8bFnPiTgTGXIUI4cGfIqFCUdXIQLOADbFOJp8iDPb0zrRz7sy/P5EezdI1yyJPYmgCuao4IaS8kcDedSSl+LLTLiU85ck0alcTCSkNpSwZQVbUnlMRtsD5PSS6s1NeCXaApyHhdgGz8cIDWuVP7SNA/HakyPTgbxw1cQbQ1ipUdJi74G5VYA99rDVzt5gz286PncM7lea8a5ad3B/2Ju6SLGzAX/T2e0JsAT4E/mh5sMxYfgXf4Lbnmx7EXN/zvJ2litZNxyrhO5RtvBP2YPPFBOGpN8eM9RsOsJmvKfAf/jbKKJPtBfAQYAYF9Oggoz7nAAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/ACDW1.27127a94.svg\";","module.exports = __webpack_public_path__ + \"static/media/ASTOP.96ce337c.svg\";","module.exports = __webpack_public_path__ + \"static/media/PAI.996d036d.svg\";","module.exports = __webpack_public_path__ + \"static/media/toll-service-en.aebe59f7.mp4\";","module.exports = \"data:image/png;base64,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CBSBCEAAEIEiEAEIACJQBApAAEAEikABCACIQBEoAAEAESgCBSAAIAJFoAAEAESgCBSAACACEYECEABEICJQAAKACEQECkAAEIGIQAEIACIQESgAAUAEIgIFIACIQBGIAAQAESgCEYAAIAJFoAAEAESgCBSAAIAIFIECEAAQgSJQAAIAIlAECkAAQASKQAEIAIhAESgAAQARKAIFIAAgAkWgAAQAESgCRaAABAARiAgUgAAgAhGBAhAARCAiUAACgAgkcQQKQAAQgSSLQAEIACKQZBEoAAFABJIsAgUgAIhAkkWgAAQAEUiyCBSAACACSRaBAhAARCDJIlAAAoAIJFkECkAAEIEki0ABCAAikGQRKAABQASSLAIFIACIQJJFoAAEABFIsggUgAAgAkkWgQIQAEQgySJQAAKACCRZBApAABCBJItAAQgAIlAEJotAAQgAIlAEJotAAQgAIlAEJotAAQgAiMBkESgAAQARmCwCBSAAIAKTRaAABABEYLIIFIAAgAhMFoECEAAQgckiUAACACIwWQQKQABABCaLQAEIAIjAZBEoAAEAEZgsAgUgACACk0WgAAQARGCyCBSAAIAITBaBAhAAEIHJIlAAAgAiMFkECkAAQAQmi0ABCACIwGQRKAABABGYLAIFIAAgApNFoAAEAERgsggUgACACEwWgQIQABCBySJQAAIAIjBZBApAAEAEJovAR7YbALBNXaCcd3+ed68LW6Mnn4lNAADsgpHAjTMFDACIQPEnAAEAESj+BCAAIAJzx58ABABEYLL4E4AAgAhMFn8CEAAQgcniTwACACIwWfwJQABABCaLPwEIAIjAZPEnAAEAEZgs/gQgACACk8WfAAQARGCy+BOAAIAITBZ/AhAAEIHJ4k8AAgAiMFn8CUAAQAQmiz8BCACIwGTxJwABABGYLP4EIAAgApPFnwAEAERgsvgTgACACEwWfwAAISKwe/3fvL8++pQAAPJEoPgDAEgUgeIPACBRBIo/AIBEESj+AAASRaD4AwBIFIHiDwAgUQSKPwCARBEo/gAAEkWg+AMASBSB4g8AIFEEij8AgEQRKP4AABJFoPgDAEgUgeIPACBRBIo/AIBEESj+AAASRaD4AwBIFIHiDwAgUQSKPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADW9/8CDAA2Iq3ZX/XFdgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/file-arrow-down-solid.ab8481ad.svg\";","module.exports = __webpack_public_path__ + \"static/media/angle-left-solid.6e589c88.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAOpSURBVHgBlVVbSJRBFJ6Zf5cQMYSUiCyWEDW6aCk+FMESVuruymrYUxdL6Mkg66EIvDwEBoXlU2ShINKLStteXOwimhEUpd0EUSIjgw2CLLc03Znpm19Xt2X/XRsYzv/P+c453zlzZoaSOMNut1sppacpIQfwmxapk1J+ha5fct7j6e3tMfJBYy06HI79EFeh3L20NAqPL+F0Ck5D+M8klG4lK/pJIkSd2+frTBgArK8xSs/jMwhlM5ey1ev1folFxOl0Wjjn9cBV6b4ovex2u+sMA5Q5HHcgqgFUbI94PJ6PZBVDBUKpPJKQ7ULKNhCqDuu0ZedlZQ0Q5wDqCYVCdp/P942scoyNjU3vzM1t5aFQDkp4NCs72zw+Pt6/nAGcZ6LGE2A+KYTYBga/YzkC7iFwe0HiFrKrjdaXlJSsNZvNT4HZAYwVmEGmR5GyWUnGWJGRc+yNE4ZF+EwCq7MIVhCN8fv9P1HaM/qPlI26T5vNtgXRHFjocLlcH4jBMBEyHbXEY+EUa5SpD9PqtNnymUbpMT0SIR0kznB5vQMo4QUQeQRCteiWESMsFeKKkkLTSk0qEtJagIN+I4Myu70GIg2Gc5CP0fNxG8CclPT8z9xcEGT2MEnpJjB7g3UZC1xZWakByLFBJ4BtUhPf1+MF6OrqmoWYwsxhMF6PDH7FAXOc0JvAPAiv4XuUJBhohABEmuqiIMqkJTIAMGvFmr4lqxtzKsAM5uZESJQmLyJYwgxQbwvEZ1WiZyoADkm6EbiiomIDcKnhf56gRMXFxRYIC8o0rjZ5SC2aGDtlZCDm57OjloZJnGFmzLpEpJdpmtaDmk5jH2qQxZpYBjyiPMhkyui0hwfVtAaU6BM+uxlOrzqhLQiSgWAXYxkwKX+sWNMMnItOXBUjmCnR2KVL04JOa1dE9LsId9ANddHhHbiEqyM/2mie87tgfpsstl5ABUHGx3GaZ6Kc75JCNChfpmCwRecTVpaXl+cKzgdxmwqP17uOGBw8o6GeVxC8R9VYWMh3+f36vWYKA/AyBcDyO9Tp/+PcarWmpqSkNKgbVu0l5qGw838CoGZNVPUupfXLhsnJVegyC+XcPTM7OzwwMDC9xDYN+DzUt5QydhJLqXDwDq/ZYdR9IpKAXiJHaWkVdr4dtAN4G7rV00cXOyc1UQZw8B7ZtxQUFrY1NjaKGHqd0UHUr295kdJZMHwBRj501hMRCu0D01yw3Aj1PGYAmb1mQry67/MNxSPwF2RNoG02ED8/AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAF+SURBVHgB7ZZPTsJQEMa/maLr4r/EHUfAG9ATyBH0Bo1g4g7ZGcWkNwBv4A3gCPUEdmeigmwNr2+ch0oQWdDSuJHfoq9vks733rzpvCEs8NJEjcE15MTCDvY7GMzbaN65J9QFUQXrIpK8pxIcRkhmIlMBcF9nCQmfwpi4HGGMjLyF8NMtr86QFgS+IRsc3CCeiowa9Agm0MQe5XH+S+wCFUl10bqjnY4E9HqGE2buEjgod8wABfEdnRQ2YCKuqm1cpICjZBC7UZOoynoOvsZv7RAtMhd2n/EHbEQyUVpm1PQLPdAxMkIivfIt7lYSIUs1/TlryIgFPehzNRFvW0IYL0JGKDXxMvtSkfKVK2wmQUFsUvgfi8RaiSvP56iiQNx94kZhipmN7en7uARqoUA++wUke9fpPbu6L0AbQvVhg7tPISpYA/f9qEl915BoBWg726xbGTb5Uidfu5EB8uGry+lN6xa+27HRDxGHawDshEMiyns+6lxiPYJoviH5AI5GifDLKiYuAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHFSURBVHgB7VbLTcNAEH0zNpwdfhK3lBA6iCsAOoAODOTADbghCMIdBDqgA1KCqQBz4sAvV8R6h9lAUEgMsU0OCPEkW/J4d97OZ2eGMIK7FpoMbqIiLGx3sY3usIyGlXtCHRDV8VOIpM+ZhMsx0g+SPgH4Ur9SEt6EMUktRg8l8RQhyGa8NYbsQRAYsuHSMZI+yeMOXYMJ9GJXqigfI9tFXTI9tFo015aQ7rexwcwdAoe1tuliShh4J4MNfSJuqKxXhEA3Rh5olYysT7LYN0jEBzSJGqxxCNR/hVzkCDSMTcygPmnt0CECRhWIH5RZXo2kJP4OiZ8nHGRRzi+XiZon2elji8aShUTOaic4L0RCVjOI9fkS1MiTWtCVvouReLMSwXjxqNxZ4AgE2NL8T8aoM5Pk6cslqR26wmbSUfnARY6gTHX4T+HfR+KXWWyJz8niZu6kXEughxZH2rlOtYutuC6GKWHQTyzTOrOxZyrr+aA9TBFv8wLShaPsgl3d18t1AKG1hx3u3EaTe8V3cPv1Pl26gUQrwIGTfUwr6rZ9/Xi3RrqohuC95PQPPt+28ScSBzcA2BeNEeXXpgJQ5ZJoCOLh9vwKH4SsIha0pOkAAAAASUVORK5CYII=\"","var map = {\n\t\"./baby-seat.png\": 334,\n\t\"./booster-seat.png\": 335\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 333;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAAA1CAYAAADh5qNwAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASxSURBVHgB7ZpbiFVVGMe/c1Sy8dKUZFlGxiSEYUSRUVEiYYmlvWlv3Z58qZGI6KHGpoeCXqJBKQqToSC6CIoX1PGCCL54GcUbeBvvOjpexst4mZnl/3P9D2e52efsc9be+5wRzg/+fDPr+q2911r722sfkRo1atSIICMeGGNGwQyHbkCdmUymP6TMfTD1UA/yu2UgAifHQguhk+ZubkJroJksNwlqg244ZU5AjdBgGSjAmWboouPkLmg5tD6QvgG6yr+7mb8T6mfaRqheqgkcyEC/0iF1/jtodKDMEGg6tM8Z3LdQnVNmArSdeeukmsCBJjpyCBoXUTYLtbL8FmhkIH8ktIP5b0o1QMdPQ11cMw0l1tE7+z8d/zIkfy7zWqQaoOOf6cDcMus1cA2dM3YHdPPGQD1Qh1QDOtULPSplgjr/8IJMD8nbyLxXJCWyYYno8AEYfRa14xlzWspnG22Y4//SzpCUyBZIz227neLHMtqwQe2gfU5SotCgemnrxI/D0ClIH8TBB24uuhgmKVFoUHqHeqCX4dRQKRNM2aswO6ER0ORA9jO0ZyUlsgWcugWzFdIBPSl+bKKdmEvABXoQ5iv+u0gqDRz43mdLd+q/zvor+b9u52uZtkqqgW65dGCxeIB6g6BL0AVu491srx16TKoBwxqNKM6LJ6i72uTphOZBj0g10eCTDo0XD4wNbA2jE693Nx+yEfmbad8QP3KbxShsPkYGAri603il/xYPUK+OcWBXJe9UUTQgha5Bx32eV2xjDS/Ms1Ihik4/TBk9g9Do4HHoKfFjH+1rUiGi1pSyhPZV8aONdpIMFDBtpnL6tIoH+kwy9tzioFSIyMVr7Gt5F3QOGosp2VekrIZUf0I/otxSJ303zAToP6hfSkPLnYDaobVo75QkCZzaw7v1RES5d3PPpUD6PBMPfVn9yZR4ElXSNovGFsDMgT7AFWstUk7PMg6IjdCfzz2bkD5Ewt+tiqHrXQPgWWIj/TFQBzQF7XZIXODUe7xif0SUa3Ku7GRJCJ3WJn+gc8wkETuikdFc7EeKlGlmp7nAVc8Bx0lCGHtS1cK22yQJTP4wsiGks6+Zdx7SF8u/+P9R6BNovHEON2P4cD90AOqDpkpc0Mh8OvphIL2J6XpePpFpQ1m+j3m3mP+WxMRZCl6vRMHGZrOxFietOTigQJ1vnEEdhqZITNDGMGPjyfhfUtBIPZ3bDw02+W1ap9xLIeVns3Ot4/X2XMSXvex7uMQFjRw09hh6UcQdehu6zDIfScIYe1avjJC4oJHfTJ5LBQY0gwPSO9QoKWDsEYGu11Ji16IN6S63wJlyL4SUcadcWgN6kT5sk7g4a6jQlJuW5pRz+lnIPuZIHNDAFxFTbiZ0hXfoM0kJk9+B9XvZwxIHTrvTBabc+86US3NAs6Dr7CuZjwth26exUfkVXr1PJWG4jnUNadzXy34+j6rnfRiidwjmd8kf9N8UewbfJ8mgvj0k9qcNyhnoY0ToK0qpWDa6KcBo4zqAH8Sel6v0m1a8bdbpRuwXkv1ijxR+4ZlJJL6/a3hH7AVpREfz73hgnxn6ljxIkqObHysqgwn89KBGjRo17iluA0EtdF3JsdxhAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAA3CAYAAACo29JGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKfSURBVHgB7Zk9a1RBFEDvitGoiEgaxagRgpBCVIyCiI2o2IhoZSM2apUfIIIasBQJVoKIf8BSTGMsFBtBQ7ASo0QhET+KqMFEErPjGfY+8hAzL/u+dl6YA4fZ2Z2d3Ls3+97MrEggEAgEAoGAb9SSBhhjTtN0STYMTuDDWq32W3yAxPpNvnzCY1ISzsoRyJg0qvYIv0l61uBR7MB5PEQFX0grIblx/cQPSEaYYz0O6XxDUgIrpCSo1BTNTe32kGC7FExpySkd2v5RC6W05KjUTprr2n1OJQtPbqWkhGA7afpwN67CNp0vMt5fh5v1rV/xsrSaxS4o9Lvwg2mOOj6175WSSFu5ftyO9lZxA2ekcYm3N+u6Pq5rP3r8EUf5d5wXH3BU7qU+f0Y8Jm3l7FJqH14iwWHaqX9eXy3psJWexe+FV9hRuSM4Z4rDfj/f4gAelCIwjhUKz53ENxpIM8wl+D8GsUfyxCxh+cVrbdjehEnr2bXYixdMY7n2S2OYxmuYz73Z5Li2zBCDXao9iFXxTi4J+pBcLJYrOKPx3JKs+JSchTguxip4QrLgW3IWYrmvMb02WXYWnia3BX9oXIddY8ve8mSGm7tdQAxq96xrbOWSU55o2+saVNXkxrTd5BpU1eRmtXXGX9Xktmk76RpU1eSiq6TzeLByyXH530hzXLuPXWOrWLlzuAPHZeGW0DweLr+6Y7uEq5IFzxbOu3BU4xnG1Cd30YTvdLJT0iLs/g/P4xeN5b3J4wSNSe7GJuyUEuHvbcA+fGYWdvsjuHWpcyTtiu1B6itpHKjaG6c9DJqWYrGHS/aDtElEF7yfeBsHWFtOSl6Q4H6tXCv4jPewW1KQ+MtqLMk9NHulHOxvgSM4QaWMBAKBQCAQCCwb/gKNNvba9kC7IwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ico-info-white.7a6dec1c.svg\";","module.exports = __webpack_public_path__ + \"static/media/stamp-30.2d3f7017.svg\";","module.exports = __webpack_public_path__ + \"static/media/stamp-50.2d3f7017.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGUAAAA/CAYAAAD5aQZeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABdvSURBVHgB7VwJeFRFtj5V93Z3VhIgYZd9UQRBwEgSEhJ84BNwEB0XFBlGFAUctiAgjhgdB0QCQVAGBxVX9ENRYFQMsmRnC4KARvZ1CEtYsne6+1a9cyrToTvpDgGDk4f58/XX99Z2655TZ63qMKgm5iZFNOLBvCkXpoBSaUgQRh4DOD6tT0YB3OCYmxHRiAnWUdN5cZ5V2x0fm+yA6whWVWXi5qgeBrChIFgMtrwFJPhzBiYJkklgJdj5EmOwCRxyrQ2M9OlRGcfhBkJ8fIzu31+OxXd8gYEMwdcW+OZJJg6TJvROPQDXCR6Zkpga1VRq2jScwCi8DYDqQEIOYyLR31z81tO9dhTDDYDErTH3CUOsRDJx9xqZ0SOcx8Sy6yMxvGIBSYfQ+ffIkAlQXYYQGDTF4eYU2gMz52/r0xZuAKCWvqcyQwis++5MuBmuE3TXG5SQHobk61F86sM1QBJrpOzCDHMw3ABANW3zrEykYeXSgOuE8lUQv6lzgNT5ymtliAtmTQrf+APcANAlf5sBO1+xXEq2cmrv1F/gOqGcKYHm0L/jSm/tvakUaPAOSimT8DoJmZeNq6jUtQXW7xHS8ibcIJgQmbzXMOARvNyOnwtIn1No7P/uKDZNwneVcJ2g1FfitpjuhkOO8uqKMdjOJJ+Zb4Xk+NgUKxWt2Pug+VjhhZs1YQxDMR+HjPKXDKY/F7nurLNb4qbuwYbu3wW4Vs58qTN7Pa0wC50Bu7NsStJt/o3qBXXngmnOMnJzAqSxd2xU+sWK03lpy531gpnPIMMhwpFIzRlnfrh8begpnsa5rmf+F799rtvuItc+b+2NCSi8ZO+iMc18udRRMiUykwgO8zOjuwqAZ5HYLXBMdPeND/NL9WQhS/M56M8LqYVK5ijkwPP9Ah2B2CVv7tboNswBN7k+x/A1Dk7rkXGKruNXdDb7Nw/uybnpDmkImxCwx6cwJ2v8wIOlcCWmCEOORob4g0d+wGar3W/IjOi151zLH+ryOepb2E2fuWl9VnGu3RnXO+Vb1zbCEjQZ+7/oNp4BskgEjsXLJc6yxkEN7uVCfuqqvjW8LgbtJbx8xbX//C2xQ9AjmiMYdGJkg519kJr/4ehoKKq/fc6WmPHTeidvcfYryTcida5/5/52evGcTTGddDPECJBLcSgf5/pnXAM/H+OsJs0Z1JAzqtDU8+xCfo0393IHW4L3A1xH1Er0TPyKfGtbTJNSQyaiZnkIx+SMc8CladiCmu9dkNFs/MTI1FTwAh6/KUbHTkM81jIoxtk8VJEhFfFcVPrWuMiUhZVrpK+nUdFE+rhNQspA8Ajh5v3N2xz9khTiK6R/J6gad2hIODcvUDAPi46ZdYvohzNarBjiOnOHyHSXKpe6/7SVHCrVYxznl5AR0arELtOlJNXn5r1pOPduBmPrMCDtAl7A/cy2VvjdyFMlk2zh+N7JJ6EWIGFLZH9UK1PhCgGvE9ioobBrS+ekRwZ6bSSpGSNJrtzGpG2BawAyzITx9TIkfrsqmlkYM7288EB7i6dKZKxG/rbu+QFiBdQCoDQHM6G/gZd+Hqov4OcIkjevYgUSpp/O9OFeBy7TeO09lDvyzvvuh2vDrdg/thrtBhadDGnqqYIzTW/lrZdDBB+EWoAAkxiEX7dULEcHaAM3iy6Tw1PaAdfDUF0cqtSZycfgaiHZvpcHrs2H6whSlxbN5JH2OhMiyEu/4ml91nhMNsZnDfbzN9m8qpFWtwVZH2Kf11xwxWCYh9JCh+RTpvZKzpmkbjfsn5fRdx5eLK7QN5wSitV0YLOQIzsMITdBzSAfswKz0ZKMQ2K1qFgpNQjx1EmXZDk8zdiLH56QFtOH2QrSwAZecWLLWZKwDlADWHjgznqOc6xH5cmwMw69+ASptvISEIdkRZMj0e8R5jDMJULVYEkFpTAYXf4aymdJAQKGTYlK/TYho283nNYjFVug26956snRv/csplL6xR+J8alYXOhb8IOQcjqGEUtQXZwAz7iqNIvE2XmrE5f8mkpPOTgm2lgM372BFpnt/ADnyz2Oz0UzqBpnMfP7ZE2m5BljHxRE8nV0jYb7SivCDbpwyIOaiXkcNuAMuxUvdriWxpdlgOfQdUJWTAg67U/jY59HJvrDNQINcldvdUKgu8zAUklupXI1m7gVSS86irNgMGQueHs+sFk16mUyOI3r7PX4a8wic823crqkvFKIh6vsbLOIghO5c6XBRuDtNW12JWT1DEGVc5+3elw0DGT13OBrAbLxPDMbNepl4tpYMyUi+ZpzY5w57Ln41h6DQ5S50QkbIrx6Z2AUhQXeFLqTg20fej9jkXJXbdyZLWCMJyNYDk1gukTa4ddAQI63Ksbk1km90nKgBoH0/AB+BfjkiM0lAjnreXAI4n6mN2kr2OsIEjpLpq+RUJqNKyQJrgIJqVGdsf/4qtpw4TiN6iWv8mPhPGYGRqAQDa3qg9Z0SEGedbW38XHOhVDDwO2PX7XJp4JGqYm3meBPQIVUg6qTMJgH6l8uSI0aOzE6bbdrnYMzf+U+MGjLDG25BO0pTORFX+mhuDpDZ60Pa8h0/j7ehlTVFhfNhYSM6Gw0nE0rjFEfXU1rXETyKk/9Fn7b3uKa+EtIv+K0ag0UU4pKtJ8DzXIxEney52Ys0qFDckJmdCYyaRdaWAe2DcEVPKjctDLoiGvkPqxfiIZ7tCrjzO7J78Cc0Wgff98HsW213GZMDq5GF62f+yAMU2Ywe9726INxd6TudBYvxAyyXViG2SUb/npGo5FTIzMPwf8DLNhzV+PSHKs2bUDGKcUUcgXfTY+Mv8S0/0USdPbUCRlAm1+DkOCDnGWyUht4BjO4EzB7W+Z1SO2ERzMjAY171RLi1twql6P/NRXHb+72PMov2dmOeZl90VmRhTimr02wTtjOTJPBlPsMbDYKajkS0qOeNAqNhlqg6fS8zOjL+xyj+mQUYH55EAVlcO3w5Tr7CxLoG7oRukjDrysbaXQh8eM1HJ0Sm5yLE/2LUqaeegPgQmJhuHC6KoaUV7AH52dGhUEtBkk2N/F9eOnDhOxhMLnL7VDApPDkowYYD+MK/BXHZ5AwjB2mq6JCILfwSsbfKqUYg2rOVlUjnNsqJPJSgKva8QtELTcBajEEBPiCIUoxgPZDul/SHLpR6aTG1Ii0FJvD8T/46vNZdVa5C2iLGJM2L9oNxyK6J7VoSG0iXu7x2EECueOj4sJTV2O2pxKxkbnC5VrqoX7j8XssNqxOoIcBDssAk/6O6s+FzXMj5n0xaMJj/IZTtZV9e1xI0sTd+0nJPLwbRV+ydGLvDWcMAWGCGWkOLrfiPCM9puz/c6guLmFL7HI0sH/CIe+HCvr88uiQj0/YyKWx2mzVvhgXm+zmYk6N3HgoMSvqbsPG/oREegCLaKvAjjPdiOH6jMlR6fsn4yAJW2MfFAY0dhtbk+tcb8d3WEsvu2RBVuS3Rqnpz7jO7sVn02ZR2b6ERAPG5BGc1DYkxFcFNlgVH7FB2TeHkCmciWHovrttTKG3sA28oKCQZwf7yUdtBnfbrNOZoRwLafAZQoNP3OrAcOT17ofq6PLGol3aZ2M6fh3A5VQXNwxDO+VQ76fbtY8NC7sTB/SHf9uWVStSjpfx3Jy+vr2Zae3QDW0ghcF00C86DMeJXlHaz9frUFp1gPLFEnYP8Cuym+VLPf9VQhIFdahDHX4HuG6JvprEgqz/aWkvtDcvkmy7t/T6Cvmg9u/Mc12FrhXH3bnhqrdyEzbFhEgduj8Xlbye7ucm3ebPgxp05SXwy6TY5EvOdvGZ4Q0CDS0iLir9a0/jJG6OvsVs5Scq2tarAYdaDgysnnHY7COlWXYI0LSOK1aAFr+pdXk6KH7vg8pwn0s+5yuYnMkMxyOYlomjsrezepqkS4Y5fm9nc9mY0X96LSuypbMMU/6YeoAApolezrY8sP5i3DXsIC2sG93TOTfyl3xLLX6g8b6V5pkWPYEOaegmjr6Ew0Rt568IL3cQaB40H/XMTTG6OkXkBbVaUih/ZQtq+nFcRNpDzhOJczOip2GQ20ZjjmXobk/DVziE+a/n3toUE2DzkYscYHzChNZfN/P3HDaBWQDc59G12RgLvIRvex6pk8aAj0AvdT/u8C0SUhuGTlsYMmQ8elP3T4lIfY2eg4z9GPcFl98UkLv+eH7oA7hR1dswoIHZkK8gyUdLkOsZmAqEFG1xi4NLzibjs74SwA+ZzPbt6B1Owh0fq5DGIZy5nWs8ChO/9aHEPob7mhYJYJmF4ZDgac+lVkuKpVGQhgQsdDKEvEAOLB8JW+QA/WYszp8cnjzV2R4DsFCkznSNl/5D2ug8FzKBMRMToiX6ZOuFTc7COKoTEjTFJtl8s8YvohtahGu7YcVD6Q6LeRzuE/U9nhc6EZ9zV76VvYQPX2M3a2pDjhvIVkNwdLNxSoAbaCKV+/E36N7h0Nui1BZNjkieiGP3AdqRZuwf2P9rrplaYvsSTdh/9LYJVquZon7ngq8+LyNmOB0r9dm8kY7v9MfgbSsYhgk1guF6phfvc1A/PGeAZbzBxGGsOoZB2euaYEcExg8mDA6kUiTS5sPsHawOMRD7n8Ao84Bdwz1OgIZOdaeVFvcUjH+LozZDop70NYloVHO32aVxBHN79blJL2Qm6IUueE9BZ2wZM4xSuzpgxw12DscNSMyI6I5xDB2BogygQxjS4TBJXyEgQWr6CLVz6wG13qb41Gs8kQiKG5B9hGY9xQz4CNVRqdBZiiYvH309Fxpq0zW+ZHxE6k4kyL+kf146rWAu9Fswlj9pL4b1Vl/fPFQvnzHJV6LaasnNvmslHcTT2HJfWbIfmLY9NjmmLMLjJn8Uvc6BFv6qhWuLUNKCMUeV0u5kY9y+EBQIHmB2mSclX+MT4LPTMMT7mIBth3TPCAk0Z4OZJRrS3NtskTMpuJa6ns10U7LFAUdQvDpj5nvplF7JuVCHOtShDnWoQx1+X0DvUraHOvw3cdh134jAUs7sy9t1qWb+J4Hll1woPXoW6lA9DBo06HS7du3uQKa4HR3WvzjxQ71F+zdATSBk+R7I/Xor1KF6aNGiRTEypVKsWOuDx98j6phSBVCtgK7r8FujjileEBwcDBs2bIADBw7A888/D78lqsUUHXPQrfwbQu+GbaFvaCdoFxAKgboP/Bp8/PHHsG/fPoiPj4faCLPZDA0aNAB/f38ICKj+v6ipCVxRNoe06A7DWoZBkVFKh9tA0OYAbiw08akH+wvOwF/3rAa78HxuwmQyQVBQEFy4cAGEcD+/2rRpU+jYsSM0btzYY19SHR06dICGDRtCfn6+WrE2W5VHw8DPzw9KSkoq/U6F5lGvXj01jt1e9akpjvl1X19fOHv2LISFhUFgYCCcP+/+n0BIpYWEhKh3OnfunMffxWiaBm3atIFGjRrBxYsX4ciRI2C1WqE64N4rGCzr/Wd4rHVvoKS4hZvgcOE5yM7LgUKHFS5h2rWRbyBs7BcHTX3KfjY5c+ZfIScnB3bs2AErV66EvLw8NemioiJYvXo13H777fDwww9DQUEB9O1btnk3atQodU8fWpWkNubPnw/Hjh1TkpSZmQl79+6FS5cuwbJly9SLEqZOnaraZGRkwNNPPw179uyBwsJCiIuLU9JH8/jqq6/UPGjs3NxcNZ+UlBS47777yhmwZcsWNc6iRYtgwYIFihk0TqtWrSArK0s9e8yYMar94MGDYePGjWocGv/MmTNqwX344YcQGhqq2hCzXnvtNTh+/LhaSDS/n3/+WdGB2rVte+V/8ORVUv7aZTBcLC2CHg1awuitH8HW84fd6gNNFnjnjpGw4+IxWBL2ODyc8bZaVU2aNFGrPzU1FR5//HGlAl544QX4wx/+ALfeeiv88Y9/VIQbP368uieikCojWCwWWLt2rVqh9PKTJk2Cn376SY1HY40cORLuuece6NGjh2Jey5Yt1YcY9eWXXyom/Pjjj6oNzYOIv2rVKnj00UcVU6Ojo2HChAmq3dixY2Hp0qVKYmmMcePGKQL+85//VKu8uLhYEZrGocVC3/QMkrrvv/8elixZouZAcyIJoHJSed99952aHzGfnkUMIWmnOTzxxBNw9913Q69eveDEiRPemfJoqzDo2aClWyGpqa71W6jdHpLMMR36qk9FNPGth/uddugW3AKa+VzeuPvll18U4Z0qi1TKRx99BM2bN1crjF6cJIaYQkSne8KIESMUQ2iF0aoyUE3efHPZv9X65ptvFFFJpT355JPlzyotLYV+/fqpZzpBTCFs3rxZEY1WNoEYffDgQTWXV155RTHHia1bt0L//v29qhiSKlKfRHxSSfQuP/zwAzz22GPqnRwOh3pWz549lYTTO1EZqWhCUlISxMbGQqdOnWD48OEwe/Zs8MoU+glopZ8T4t+PF71z0olDqM7IxhwpylXMcYJ0qKsNIV3uBNkKb6AJEzCgglmzZnlsc+rUKWV46YUJpEJcGeIKYoCTIU7QIiCQBJNkO0GqqiqdT88dOnSoUrdEeGIqSQq9K6nOV199tZwBGBRCQkKC13Hq16/6v3fpnx7dBp4i+qEtboeb/BrAHQ1bw+s/J8GevOr/TrOiUa8KtPKcIFVGxCYbQKonOzvbrR1JFoFUwpQpU674LFIVxOBDhw6VjzF6dNlPZw4fPqwY6oSTyVWBJI3sJdlIUmedO3eGd999V0lwYmIizJgxQ7Uj5j7wwAPKHjlBzgMxjRbl7t27q3yOV5uy4Uw2pPefDhtzsuHtsOGwJfcwbM49BDZhQIfARnBXk1sgI/cg3N3kVngRPbDkM/vgakArhnDvvffCiy++qCZNq+2NN95QujgtLU2prP3796tVTaJPqmvbtm2UM6rWM8jo7tq1Sxl7Mt4RERHK2SCVN23aNFVWXbRv3x4+/fRTJc3vv/++Ijhdk7QQaJ5r1qxRTCJpWr9+vWIiSSZJxoABA5Tt2759O9x1111VPssrU/LtVrhn0xswu/tQOFqYC6E+ATCybSRuZ3OsKwGrYYfo0I7wenYSpJwtO/u2b98BSDpmdVshBDKypFNpBTkJQTqVDCDpZjLipAZIJZBXRYQkZpGn0rVrV+XG0sp+77334J133lGeFK1+Cu5Onz7t7RXgiy++KHdtyTUnVfbBBx/Am2++qVY8rVpSW2TDXKXSCaojop88eVLZjc8//xyGDBminJZhw4YpW0mORXp6OsybN0/1eeqpp5TDQAuHPDiyiWSLyM6Qd/fJJ58oTVAV2F+yPpVXSkhSTNKrQWtoExACHF/kTEk+ZOefhoOFZ6HIcfnU/7UkJCm2IG+HGFYxhiB14+Pjoww+1VdXLZJLTZ7bwoULldRRXEGS6OkZVYGMO4G8P2KKs4wYTHOjsUiVeYufnPOneZM3VzGeQQk+ff/999+Ci+OSa3m1Ejunrfnw9andcD1Ak/UGeumrIaI3OO2UE+Tikn0iRpGRJtXUunVrSE5OVgwkNdOsWTPYuXOncospPpo5cyasWLGinMDh4eHKhSfX1xUkGaRmyW5Q0BkTE6NsF2mPbt3UYUuluik28obfPtv2G4C8LlIpFEV7AqkVIjARmtRkVFSUcm9JpVL88cgjj8DLL7+sYq1nnnlGMZHsEKktWv0UY5ArTMykuIviF5J4Mv4DBw5ULneXLl0UA8k979Onj3Lxn332WZgzZ0651HkDJwd1QJPO0DGwMdwoWLx4sSI06XBvoAj7s88+U6uYPhSBk3Em951cbDLapO6IwRS1k/0gYtIqJ+ISc8gOESPIrpHdccYyZLvomhhL9orqyekgaSWGHT16tMr56366GYPAICjF/BXlsn4PIAJOnz5dqUZyZcmjo6ieUkHklJCHRKD0DTkU5H6TGlu3ruyHZSQptPqJuKTuSM0RyHmgD6kvclZImsjJ+Nvf/qZUGTkm1cl/sS+OZcnsghzlbVmNX/eDLL+sE1D805WDzjqUAV3n02hnKhl6OjgRA3X4b4Hig13IFDdp+D/OxrRl6VcGUAAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/ico-info.44cdc70b.svg\";","module.exports = __webpack_public_path__ + \"static/media/happy.cdee949d.svg\";","module.exports = __webpack_public_path__ + \"static/media/neutral.a5372a15.svg\";","module.exports = __webpack_public_path__ + \"static/media/sad.c3fa0497.svg\";","module.exports = __webpack_public_path__ + \"static/media/logoWhite.04b5aa56.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJJSURBVHgB7ZZLSFVRFIbXcRJGLwuamBFlT4oCB0E1iIKoSbMgcBDhSBRBEcTRVQRHCiKCKPgAEXUkDhVfE0VFEEFEUTg+UHGigiKi4vbf3P/iYd+j3n0fiuAPH0f/vdba++zXuSLXumQ5YimlVBIen0kqOAKrYMBxnDFJlNDxPRAAm+p0rYA8HRtp3YhmAAXf4tEJ0sE2/54Ey2AfvATvQCZruuA7ZsSVWIXOM8AW37AWpJwRmwaaGLsGXkssQoEnYJEFsy3yAszRuY8kWiG5jYVKxFLIqQjNmkQjJL5nAdenTW/IcjAHpkGjni0j5g5YYo3nYisk1TH5n+HrZVlQ4VoFH4zYArYFxFZImmDyY8Pvpl8FHoD7oJjevBH7gr79/cA3WjC8ZBac9YnvYdsbw9/0W8aQkuR0JYMdw0vlc8QnfpjPNMPfkWjEddajdzzeDb7lOrhtxE+y7ZnH05v1CEyJrZDUy4JfDb+efh/4AX6CBnqjRuxf+s1iKyT9ZnKL4eu3GlfhmlHhR3GWbRliKyTdVCfH7ZPR5oBM0K6Cl1WWMj5A+D+Xuf0SrZD8i0X0hXPLIk/fFfpbcAieSixCgQ4OojrCeD07Q8yxv4B8Cuor1WXBwgjiSxk7KPGSCt5ooU/ytzPi/jDGNTdkPAYROhUbynPWPe163fX9sAu+SCKEwvmeTZni8e/Si8+6nzOIGnbU5fEq6bVKoqWC1/EoOywDRZ51fygXIRX87bfMjg+4QdPlIoUOX4E9DiJHLkPo+CP4L9e6yjoGOX0YBRQWdfUAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAACsklEQVRIS4XVW8jVVRAF8J+QISXSS5QXSA2i0FLxxR4ske5QIlphUFKEooFdHoKCxIqvNLKym2VhqD3oUxQUJV2giG5WEF3MHkqLzBISCw3DiBXzl83xdL4Nh3POzOy1Z69ZM3uE4dd5uAhX4S+8iPfx/aCtIwY4b8VSHMZEHMFRjMWP+Aqbsa0fRj/g8XgOuyqrM3AHnsC3eBKbsB1X1oE39IL3Al+GjZiBE/AqptemFngUvsaZ5X8d1+Gt7oAWOJl+g/W4F8/ijeI08S1w/t+Hv/E8tmAWRvcDfg03VpHWYS9W4O3iuQU+CfPxQAEtw6HKeklsXcYp1CTcVoHhLIX7HWdhDE7EP5Vl7KnB1AL7uPa9iQdDSQccvsLvngp4Gp/ghfp/Gh7FL3iovuMKyD48VnGX42YsCHB0+hRmN5VNxe/BR42tl+O4crNwu7yJ+xWnB/h6XFxBnf8HXIjdwwBfitvrtl3ojtAY4MdxPj5sQJLJ1tJoZ74AB/BFExeKkvHLjS2HrQlwOJuJlxpnuBvCn43t6uLz3cYWHadJOo7jikKGAnxtURHSu/V5ySmUdKsfx8ku+3Jot97DLQHOHHin5NY500HJOBoeBJyiTQlQBZ1ctxrdye0V3I0vK+D+kl5mRvQ9GXfiYHXkd1XYNEh+d7JcUEVf0QHHsAgLC/gm3IWRlcEfdUDG5s/VuqfiFISOT2vfTszLsGpnRU5NY1wTgdfsvQIdz70cz8XDmFDfP+FsrMwhvdMtV30Eq+qT/o9qsnqBn8EHNUIzrMbh3K4gvcA5PVXN7Ajvv+Ec7O8BnlPtHP1npqRrU5fM6//W/70guWKeo+g5Gr0EmVrZ+Bk2lG9t+Vc36hkIHOe00ujiRkp5mjILslKTvCYZQsetQW9eG5zxmEEVRYT/Y1fuBxrbv7Ptqje91BNCAAAAAElFTkSuQmCC\"","import axios from 'axios';\n\naxios.defaults.baseURL = process.env.REACT_APP_WEB_API_URL;\n\nconst sessionIdKey = 'kiosk-mobile-session'\n\nexport const session = {\n setSessionId: (v) => {\n sessionStorage.setItem(sessionIdKey, v)\n },\n getSessionId: () => sessionStorage.getItem(sessionIdKey)\n}\n\n// intercept requests to set sessionId\naxios.interceptors.request.use((request) => {\n request.headers = { 'X-session-id': session.getSessionId() }\n return request;\n});\n\n// intercept response for error handling\naxios.interceptors.response.use((response) => {\n if (response && response.status === 403) {\n return window.location.href = '/'\n }\n return response;\n}, (error) => {\n if (error.response && error.response.status === 403) {\n return window.location.href = '/'\n }\n if (error.response && error.response.data) {\n return Promise.reject(error.response.data);\n }\n return Promise.reject(error.message);\n});\n","import axios from 'axios';\n\nexport async function storeSessionPage(pageObj) {\n try {\n const res = await axios.post(\n `/session-pages`,\n { pageObj },\n );\n return res.data;\n } catch (err) {\n console.error(err);\n }\n}\n\nexport async function saveSessionEnd(clearSession) {\n try {\n const res = await axios.post('/session-end', { clearSession });\n return res.data;\n } catch (err) {\n console.error(err);\n }\n}\n\nexport async function setPageId(pageObj) {\n try {\n const res = await axios.post(\n `/session-pages`,\n { pageObj },\n );\n return res.data;\n } catch (err) {\n console.error(err);\n }\n}\n\nexport const createReservationCheckInRating = async (ratingId) => {\n return (await axios.post(`/reservation-check-in-rate`, { ratingId })).data\n}\n\nexport const setReservationCheckInRatingObservations = async (observations) => {\n return (await axios.post(`/reservation-check-in-rate/observations`, { observations })).data\n}\n\nexport async function savePackBasicAction(value) {\n try {\n const res = await axios.post(\n `/pack-basic-response`,\n {\n accept: value\n }\n );\n return res.data;\n } catch (err) {\n console.error(err);\n }\n}\n","import axios from 'axios';\n\nexport async function getGroupsDetails(groups) {\n return (await axios.get(`/groups-details?groups=${groups.join(',')}`)).data\n}\n\nexport const getGroupsConfigurations = async (filters) => {\n const res = (await axios.get('/groups-configurations', { params: { ...filters } })).data\n return res;\n}\n\nexport const checkGroupsConfigurationsForUpdates = async (groupsConfigurationsLastUpdate) => {\n const res = (await axios.get('/groups-configurations-last-update', { params: { groupsConfigurationsLastUpdate } })).data\n return res;\n}\n","import React, { useState } from 'react';\nimport moment from 'moment'\n\nimport { getGroupsConfigurations, checkGroupsConfigurationsForUpdates } from '../services/GetGroupsDetails'\n\nexport const GroupsImagesContext = React.createContext({\n getSetGroupsConfigurations: () => { },\n})\n\nfunction GroupsImagesRepository({ children }) {\n\n const [groupsConfigurations, innerSetGroupsConfigurations] = useState(\n localStorage.getItem('groupsConfigurations') ? JSON.parse(localStorage.getItem('groupsConfigurations')) : {}\n );\n\n const [groupsConfigurationsLastUpdate, innerSetGroupsConfigurationsLastUpdate] = useState(localStorage.getItem('groupsConfigurationsLastUpdate') || 0)\n\n function setGroupsConfigurations(configs) {\n localStorage.setItem('groupsConfigurations', JSON.stringify(configs))\n innerSetGroupsConfigurations(configs)\n\n const lastUpdate = moment().unix()\n localStorage.setItem('groupsConfigurationsLastUpdate', lastUpdate)\n innerSetGroupsConfigurationsLastUpdate(lastUpdate)\n }\n\n function getSetGroupsConfigurations() {\n return new Promise((res, rej) => {\n // check if new version of configs!\n checkGroupsConfigurationsForUpdates(groupsConfigurationsLastUpdate)\n .then(hasNewConfigurations => {\n if (!hasNewConfigurations && Object.keys(groupsConfigurations).length > 0) {\n return res(groupsConfigurations);\n }\n getGroupsConfigurations()\n .then(results => {\n const groupsConfigurationsObject = createObjectByKey(results.groupsConfigurations, 'groupId')\n setGroupsConfigurations(groupsConfigurationsObject)\n return res(groupsConfigurationsObject);\n })\n })\n })\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport const GroupsImagesContextConsumer = (WrappedComponent) => (props) => {\n\n return (\n \n {context => }\n \n )\n}\n\nexport default GroupsImagesRepository;\n\nfunction createObjectByKey(array, key) {\n if (array.length === 0) return {}\n return array.reduce((curr, value) => {\n curr[value[key]] = value\n return curr\n }, {})\n}","import moment from 'moment';\nimport { useEffect, useState } from 'react';\n\nexport const EMAIL_PATTERN = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nexport const DATE_FORMAT = 'YYYY-MM-DD'\n\nexport const COUNTRY_CODE_PREFIX = '+'\n\nexport const getFormatedPhoneAndCountryCode = (phone, countryPhoneCodes) => {\n if (!phone || !countryPhoneCodes || !phone.startsWith('+')) return { phone };\n \n if (phone.startsWith('+')) {\n const matchingCode = countryPhoneCodes.map(c => '+' + c.PhoneCountryCode).find(c => phone.startsWith(c));\n return { phone: phone.replace(matchingCode, '').replace(/ /g, '').trim(), phoneCountryCode: matchingCode };\n } else if (phone.startsWith('00')) {\n const matchingCode = countryPhoneCodes.map(c => '00' + c.PhoneCountryCode).find(c => phone.startsWith(c));\n return { phone: phone.replace(matchingCode, '').replace(/ /g, '').trim(), phoneCountryCode: matchingCode.replace('00', COUNTRY_CODE_PREFIX) };\n }\n return { phone }\n}\n\nexport const getQueryStringParams = (queryString) => {\n return queryString ?\n queryString.substring(1)\n .split('&')\n .map(p => {\n const parts = p.split('=')\n return parts && parts.length === 2 ? { [parts[0]]: parts[1] } : {}\n })\n .reduce((prev, curr) => ({ ...prev, ...curr }), {})\n : null\n}\n\nexport function validPortugueseDriversLicence(number) {\n return /^[a-zA-Z]{1,2}-\\d{1,7} \\d{1}$/g.test(number) \n}\n\nexport function isPortugalCountry(country) {\n return country === 'Portugal'\n}\n\nexport function capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function isSafetyExtra(extraId) {\n return ['TP', 'CDW', 'ACDW', 'ACDW1', 'ASTOP', 'PAI', 'RF', 'RF1', 'RF2', 'IF', 'IF1', 'IF2', 'IF3'].includes(extraId)\n}\n\nexport function padZero(value) {\n if(!value || isNaN(parseInt(value))) return value\n return Number(value) < 10 ? `0${Number(value)}` : value\n}\n\nexport const PORTUGAL_COUNTRY_ID = '33'\n\nexport function isPortugalCountryId(id) { return id === PORTUGAL_COUNTRY_ID }\n\nexport function buildFieldsValidationErrors(validationsArray) {\n return validationsArray.filter(v => !v.isValid)\n}\n\nexport const isSafari = () => /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n\nexport function useUrlQuery() {\n return new URLSearchParams(window.location.search)\n}\n\nexport function fileDownload(data, filename, mime, bom) {\n var blobData = (typeof bom !== 'undefined') ? [bom, data] : [data]\n var blob = new Blob(blobData, {type: mime || 'application/octet-stream'});\n if (typeof window.navigator.msSaveBlob !== 'undefined') {\n // IE workaround for \"HTML7007: One or more blob URLs were\n // revoked by closing the blob for which they were created.\n // These URLs will no longer resolve as the data backing\n // the URL has been freed.\"\n window.navigator.msSaveBlob(blob, filename);\n }\n else {\n var blobURL = (window.URL && window.URL.createObjectURL) ? window.URL.createObjectURL(blob) : window.webkitURL.createObjectURL(blob);\n var tempLink = document.createElement('a');\n tempLink.style.display = 'none';\n tempLink.href = blobURL;\n tempLink.setAttribute('download', filename);\n\n // Safari thinks _blank anchor are pop ups. We only want to set _blank\n // target if the browser does not support the HTML5 download attribute.\n // This allows you to download files in desktop safari if pop up blocking\n // is enabled.\n if (typeof tempLink.download === 'undefined') {\n tempLink.setAttribute('target', '_blank');\n }\n\n document.body.appendChild(tempLink);\n tempLink.click();\n\n // Fixes \"webkit blob resource error 1\"\n setTimeout(function() {\n document.body.removeChild(tempLink);\n window.URL.revokeObjectURL(blobURL);\n }, 200)\n }\n}\n\nexport function hasAtLeastXDigits(str, x) {\n const digitPattern = /\\d/g;\n const matches = str.match(digitPattern);\n return matches && matches.length >= x;\n}\n\nexport function isTestsEnv() {\n return process.env.REACT_APP_WEB_API_URL.includes(':9443') \n || process.env.REACT_APP_WEB_API_URL.includes(':8443') \n}\n\nexport function getLocalTimeZone() {\n return 'Europe/Lisbon' // Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n\nexport function useDebouncedValue(value, delay) {\n const [debouncedValue, setDebouncedValue] = useState(value)\n useEffect(\n () => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n return () => {\n clearTimeout(handler)\n }\n },\n [value, delay]\n )\n return debouncedValue\n}\n\nexport function buildMomentFromDateString(date) {\n if (!date) return moment()\n return moment(date, \"YYYY-MM-DD\");\n}\n\nexport function isValidPlateNumber(plate) {\n return plate && ((plate.length === 6 && !plate.includes('-')) || (plate.length === 8 && plate.split('-').length - 1 === 2))\n}\n\nexport function isElectric(fuel) {\n return fuel?.toLowerCase() === 'electric';\n}\n","import moment from 'moment-timezone';\nimport React, { useCallback, useContext, useEffect, useState, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { storeSessionPage } from '../services/Metrics';\n\nimport { GroupsImagesContext } from './GroupsImagesRepository';\n\nimport { getLocalTimeZone, getQueryStringParams } from '../utils/utils';\nimport { session } from '../load-config';\n\nexport const CORPORATE_TYPE_ID = {\n ASSISTENCE: 1,\n EMPRESAS_DIRECTO: 2,\n EMPRESAS_FATURACAO: 3,\n GESTORA_FROTA: 4,\n}\n\nexport const MINIMUM_AGE = 21\nexport const SPECIAL_GROUP_MINIMUM_AGE = 25\n\nexport function getDriversFirstName(name) {\n return name && name.split(',').reverse()[0]\n}\n\nexport function mapDriversPhone(phone, countryPhoneCode) {\n return phone ? phone.replace(' ', '').trim() === `+${countryPhoneCode}` ? '' : phone.replace(' ', '').trim() : ''\n}\n\nexport const ALWAYS_PRESENT = ['TP', 'CDW']\n\nexport function mapDocumentTypeToLabel(id) {\n switch (id) {\n case 2: return 'passport'\n case 1: return 'idCard'\n default:\n return ''\n }\n}\n\nexport function mapDocumentType(value) {\n switch (value) {\n case 'Passport':\n return 2;\n case 'Identity card':\n return 1;\n case 1:\n case '1':\n return 1 \n case 2:\n case '2':\n return 2 \n default:\n return 1;\n }\n}\n\nexport const DomainContext = React.createContext({\n kioskCurrentStationId: '',\n appVersionId: '',\n reservation: {},\n setReservation: () => { },\n setCorporateExtrasFlow: () => { },\n reservationExtras: [],\n setReservationExtras: () => { },\n selectedExtras: [],\n addExtra: () => { },\n removeExtra: () => { },\n getQuantityOfExtra: () => { },\n rentalAgreementQuoteValue: '',\n availableUpsellings: [],\n upselling: {},\n setUpselling: () => { },\n removeUpselling: () => { },\n driverInfo: {},\n setDriverInfo: () => { },\n addDriverInfo: () => { },\n additionalDriverInfo: {},\n addAdditionalDriverInfo: () => { },\n hasAdditionalDriver: () => { },\n addAdditionalDriver: () => { },\n getCountries: () => { },\n setCountries: () => { },\n getComfortExtras: () => { },\n getBabySeatExtras: () => { },\n getVehicleForRA: () => { },\n getRAPickUpAndDropOffDate: () => { },\n getDriversCountryName: () => { },\n getDriversCountryISOCode: () => { },\n getDriversPhoneCountryCode: () => { },\n clearAll: () => { },\n rentalAgreementCreation: {},\n setRentalAgreementCreation: () => { },\n excess: '',\n wasDriverInfoVerified: undefined,\n setWasDriverInfoVerified: () => { },\n wasAdditionalDriverInfoVerified: undefined,\n setWasAdditionalDriverInfoVerified: () => { },\n isEligibleForYoungDriver: () => { },\n hasYoungDriverForMainDriver: () => { },\n getDriversMinimumAgeForReservation: () => { },\n addYoungDriver: () => { },\n removeYoungDriver: () => { },\n getUserQuestions: () => { },\n storeUserAnswer: () => { },\n userAnswers: [],\n language: '',\n setLanguage: () => { },\n driverInfoEditMode: false,\n setDriverInfoEditMode: () => { },\n setDriverInfoHasClickedBack: () => { },\n driverInfoHasClickedBack: false,\n setAppFlowConfigs: () => { },\n appFlowConfigs: null,\n setStationsConfigurations: () => { },\n stationsConfigurations: [],\n addVisitedRoutes: () => {},\n visitedRoutes: [],\n});\n\nfunction DomainRepository({ children, ...props }) {\n const [kioskCurrentStationId, innerSetKioskCurrentStationId] = useState(\n localStorage.getItem('kioskCurrentStationId') ? JSON.parse(localStorage.getItem('kioskCurrentStationId')).stationId : '23'\n );\n const [stationsConfigurations, innerSetStationsConfigurations] = useState(\n localStorage.getItem('stationsConfigurations') ? JSON.parse(localStorage.getItem('stationsConfigurations')) : []\n );\n const [pickupDate, innerSetPickupDate] = useState(\n localStorage.getItem('pickupDate') || ''\n );\n const [kioskCurrentPOSId, innerSetKioskCurrentPOSId] = useState(\n localStorage.getItem('kioskCurrentPOSId') ? JSON.parse(localStorage.getItem('kioskCurrentPOSId')).posId : 1\n );\n const [appVersionId, innerSetAppVersionId] = useState(\n localStorage.getItem('appVersionId') ? JSON.parse(localStorage.getItem('appVersionId')).appVersionId : 2\n );\n const [reservationExtras, innerSetReservationExtras] = useState(\n JSON.parse(localStorage.getItem('rentalAgreementExtras'))\n );\n const [reservation, innerSetReservation] = useState(\n JSON.parse(localStorage.getItem('reservation'))\n );\n const [corporateExtrasFlow, innerSetCorporateExtrasFlow] = useState(\n JSON.parse(localStorage.getItem('corporateExtrasFlow'))\n );\n const [appFlowConfigs, innerSetAppFlowConfigs] = useState(\n JSON.parse(localStorage.getItem('appFlowConfigs'))\n );\n const [isCorporate, innerSetIsCorporate] = useState(\n JSON.parse(localStorage.getItem('isCorporate'))\n );\n const [availableUpsellings, innerSetAvailableUpsellings] = useState(\n JSON.parse(localStorage.getItem('availableUpsellings'))\n );\n const [driverInfo, innerSetDriverInfo] = useState(\n JSON.parse(localStorage.getItem('driverInfo')) || {}\n );\n const [additionalDriverInfo, innerSetAdditionalDriverInfo] = useState(\n JSON.parse(localStorage.getItem('additionalDriverInfo')) || {}\n );\n const [rentalAgreementQuoteValue, innerSetRentalAgreementQuoteValue] = useState(\n JSON.parse(localStorage.getItem('rentalAgreementQuoteValue')) || 0\n );\n const [countries, innerSetCountries] = useState(\n JSON.parse(localStorage.getItem('countries')) || []\n );\n const [upselling, innerSetUpselling] = useState(\n JSON.parse(localStorage.getItem('upselling')) || {}\n );\n const [selectedExtras, innerSetSelectedExtras] = useState(\n JSON.parse(localStorage.getItem('selectedExtras')) || []\n );\n const [excess, innerSetExcess] = useState(\n JSON.parse(localStorage.getItem('excess'))\n );\n\n const [rentalAgreementCreation, innerSetRentalAgreementCreation] = useState(\n JSON.parse(localStorage.getItem('rentalAgreementCreation')) || {}\n );\n\n const [wasDriverInfoVerified, setWasDriverInfoVerified] = useState(false);\n const [wasAdditionalDriverInfoVerified, setWasAdditionalDriverInfoVerified] = useState(false);\n const [policyAndTermsVerified, setPolicyAndTermsVerified] = useState(false);\n const [additionalDriverPolicyAndTermsVerified, setAdditionalDriverPolicyAndTermsVerified] = useState(false);\n\n const [userAnswers, setUserAnswers] = useState(\n JSON.parse(localStorage.getItem('userAnswers')) || {}\n );\n\n const [language, innerSetLanguage] = useState(\n localStorage.getItem('language') ? JSON.parse(localStorage.getItem('language')).lang : 'pt'\n );\n\n const [driverInfoEditMode, innerSetDriverInfoEditMode] = useState(\n JSON.parse(localStorage.getItem('driverInfoEditMode')) || false\n );\n\n const [driverInfoHasClickedBack, setDriverInfoHasClickedBack] = useState(\n JSON.parse(localStorage.getItem('driverInfoHasClickedBack')) || false\n );\n\n const [insuranceSelectedExtras, innerSetInsuranceSelectedExtras] = useState(\n JSON.parse(localStorage.getItem('insuranceSelectedExtras')) || []\n );\n\n const [removedExtrasInReview, innerSetRemovedExtrasInReview] = useState(\n JSON.parse(localStorage.getItem('removedExtrasInReview')) || []\n );\n\n const [groupsDetails, innerSetGroupsDetails] = useState(\n JSON.parse(localStorage.getItem('groupsDetails')) || []\n );\n\n const [sessionId, innerSetSessionId] = useState(\n localStorage.getItem('sessionId')\n );\n\n const [driverPhoneValidated, innerSetDriverPhoneValidated] = useState(\n JSON.parse(localStorage.getItem('driverPhoneValidated')) || null\n );\n\n const [notifyResult, innerSetNotifyUserResult] = useState(\n JSON.parse(localStorage.getItem('notifyResult')) || null\n );\n\n const [blockedTaxNumbersList, innerSetBlockedTaxNumbersList] = useState(\n JSON.parse(localStorage.getItem('blockedTaxNumbersList')) || []\n );\n\n const [insuranceSelectedPack, innerSetInsuranceSelectedPack] = useState(\n JSON.parse(localStorage.getItem('insuranceSelectedPack')) || null\n );\n\n const [invalidAddressAlert, innerSetInvalidAddressAlert] = useState(\n localStorage.getItem('invalidAddressAlert') || null\n );\n\n const [localizations, innerSetLocalizations] = useState(\n JSON.parse(localStorage.getItem('localizations')) || []\n )\n\n const [localizationAssets, innerSetLocalizationAssets] = useState(\n JSON.parse(localStorage.getItem('localizationAssets')) || {}\n )\n\n const [pages, innerSetPages] = useState(\n JSON.parse(localStorage.getItem('pages')) || {}\n )\n\n const [currentPageIndex, innerSetCurrentPageIndex] = useState(\n Number(localStorage.getItem('currentPageIndex')) || -1\n )\n\n const [invalidBirthdates, innerSetInvalidBirthdates] = useState(\n JSON.parse(localStorage.getItem('invalidBirthdates')) || []\n )\n\n const [sessionExtras, innerSetSessionExtras] = useState(\n JSON.parse(sessionStorage.getItem('sessionExtras')) || []\n )\n\n const [metricsParams, innerSetMetricsParams] = useState(\n sessionStorage.getItem('metricsParams') ? JSON.parse(sessionStorage.getItem('metricsParams')) : undefined\n );\n\n useEffect(() => {\n const queryStringValues = getQueryStringParams(\n window.location.search\n )\n innerSetMetricsParams(queryStringValues)\n sessionStorage.setItem('metricsParams', JSON.stringify(queryStringValues))\n }, [])\n\n const { groupsConfigurations } = useContext(GroupsImagesContext);\n\n const { t } = useTranslation();\n\n function setKioskCurrentStationId(stationId) {\n localStorage.setItem('kioskCurrentStationId', JSON.stringify({ stationId }));\n innerSetKioskCurrentStationId(stationId)\n }\n\n function setPickupDate(date) {\n localStorage.setItem('pickupDate', date);\n innerSetPickupDate(date)\n }\n\n function setKioskCurrentPOSId(posId) {\n localStorage.setItem('kioskCurrentPOSId', JSON.stringify({ posId }));\n innerSetKioskCurrentPOSId(posId)\n }\n\n function setKioskAppVersionId(appVersionId) {\n localStorage.setItem('appVersionId', JSON.stringify({ appVersionId }));\n innerSetAppVersionId(appVersionId)\n }\n\n function setReservation(reservation) {\n const sessionId = session.getSessionId()\n clearAll()\n session.setSessionId(sessionId)\n \n localStorage.setItem('resNumber', reservation.Reservation)\n localStorage.setItem('reservation', JSON.stringify(reservation));\n innerSetReservation(reservation);\n setExtrasInReservation(reservation);\n setRentalAgreementQuoteValue(reservation.raQuote.cashierAmountDue);\n setAvailableUpsellings(reservation.availableUpsellings, reservation);\n }\n\n function setCorporateExtrasFlow(config) {\n const _isCorporate = config !== null\n localStorage.setItem('corporateExtrasFlow', JSON.stringify(config));\n localStorage.setItem('isCorporate', _isCorporate);\n innerSetCorporateExtrasFlow(config)\n innerSetIsCorporate(_isCorporate)\n }\n\n function setRentalAgreementQuoteValue(value) {\n const valueAsNumber = !value || Number(value) < 0 ? Number(0) : Number(value);\n const strValue = valueAsNumber.toFixed(2);\n localStorage.setItem(\n 'rentalAgreementQuoteValue',\n JSON.stringify(strValue)\n );\n innerSetRentalAgreementQuoteValue(strValue);\n }\n\n function setRentalAgreementQuoteValueV2(valueToAdd, valueToRemove = 0) {\n innerSetRentalAgreementQuoteValue(v => {\n const newValue = Number(v) - Number(valueToRemove) + Number(valueToAdd)\n const valueAsNumber = newValue < 0 ? 0 : newValue;\n const strValue = valueAsNumber.toFixed(2);\n sessionStorage.setItem('rentalAgreementQuoteValue', JSON.stringify(strValue));\n return strValue\n });\n }\n\n function setExtrasInReservation(reservation) {\n const extrasInReservation = reservation.Extras.split(\",\").map(\n extra => reservation.availableExtras.find(e => e.extraID === extra)\n );\n setReservationExtras(extrasInReservation);\n }\n\n function setReservationExtras(rentalAgreementExtras) {\n localStorage.setItem(\n 'rentalAgreementExtras',\n JSON.stringify(rentalAgreementExtras)\n );\n innerSetReservationExtras(rentalAgreementExtras);\n }\n\n function setAvailableUpsellings(availableUpsellings, res = reservation) {\n const modAvailableUpsellings = availableUpsellings\n .filter(u => groupsConfigurations[u.groupID])\n .map(u => ({\n ...u,\n dayValueWithTax: roundToTwoDecimalPlaces(\n u.previewValue / res.raQuote.nrDays\n ).toFixed(2)\n }))\n .sort((u1, u2) => Number(u1.previewValue) - Number(u2.previewValue))\n .filter(u => u.groupID !== '01' && u.groupID !== 'P') // Groups not upsold - Set by Guerin \n\n localStorage.setItem(\n 'availableUpsellings',\n JSON.stringify(modAvailableUpsellings)\n );\n innerSetAvailableUpsellings(modAvailableUpsellings);\n }\n\n function setDriverInfo(listReservation, _driverInfo = {}) {\n const curDriverInfo = {\n fullName: `${listReservation.DriverShortName || _driverInfo.Driver_Short_Name || ''} ${listReservation.DriverSurname || _driverInfo.Driver_Surname || ''}`,\n email: listReservation.DriverEmail || _driverInfo.EMail,\n emailConfirm: '',\n countryID:\n listReservation.DriversCountryID == 0 ? _driverInfo.Country : listReservation.DriversCountryID || _driverInfo.Country,\n address: listReservation.DriverAddress || _driverInfo.Address,\n doorNumber: listReservation.DriverDoorNumber || '',\n postalCode: listReservation.DriversPostalCode || _driverInfo.Postal_Code,\n city: listReservation.Drivers_City || _driverInfo.City,\n phone: listReservation.DriverMobile || _driverInfo.Mobile_Number,\n taxNumber: listReservation.DriversTaxNumber || _driverInfo.Tax_Number,\n documentID: listReservation.DocumentNumber || _driverInfo.Document_Number,\n documentType: mapDocumentType(listReservation.Document || _driverInfo.Document_Type),\n iDIssuedPlace: listReservation.DocumentIssuePlace || _driverInfo.Document_Place,\n iDExpireDate: listReservation.DocumentDate || _driverInfo.Document_Date,\n birthDate: listReservation.DriverBirth || _driverInfo.Date_of_Birth,\n driversLicense:\n listReservation.DriverLicense == 0 ? _driverInfo.License_Number || '' : listReservation.DriverLicense || _driverInfo.License_Number || '',\n driversLicenseIssuedDate: listReservation.DriverLicenseDate || _driverInfo.License_Date,\n driversLicenseExpirationDate: listReservation.DriverLicenseExpirationDate || _driverInfo.DriverLicenseExpirationDate,\n driversLicenseIssuedPlace: listReservation.DriverLicensePlace || _driverInfo.License_Place\n };\n addDriverInfo(curDriverInfo);\n }\n\n function setAdditionalDriverInfo(info) {\n\n const mappedInfo = {\n fullName: info.DriverAddName || '',\n birthDate: info.DriverAddBirth || '',\n driversLicenseIssuedPlace: info.DriverAddLicensePlace || '',\n driversLicense: info.DriverAddLicense || '',\n driversLicenseIssuedDate: info.DriverAddLicenseDate || '',\n driversLicenseExpirationDate: info.DriverAddLicenseExpirationDate || ''\n }\n addAdditionalDriverInfo(mappedInfo)\n }\n\n function hasAdditionalDriver() {\n return (\n reservation.Extras.includes('ADD1') ||\n selectedExtras.find(e => e.extraID === 'ADD1')\n );\n }\n\n function getExcessForExtra(extraId) {\n const extra = reservation.availableExtras.find(e => e.extraID === extraId)\n return extra ? Number(extra.excess) : null\n }\n\n function getExcessForExtras(extras) {\n const _extras = extras.map(e => e.extraID)\n if (['IF', 'IF1', 'IF2', 'IF3'].some(id => _extras.includes(id))) {\n return getExcessForExtra('IF')\n }\n if (['RF', 'RF1', 'RF2'].some(id => _extras.includes(id))) {\n return getExcessForExtra('RF')\n }\n if (['CDW', 'PE'].some(id => _extras.includes(id))) {\n return getExcessForExtra('CDW')\n }\n return reservation.isExclusiveReservation ? reservation.excessNoPriceReduction : getExcessForExtra('CDW')\n }\n\n function getCountries() {\n return countries.filter(c => c.countryID && !c.name.startsWith('country_'))\n }\n\n function setCountries(countries) {\n localStorage.setItem('countries', JSON.stringify(countries));\n innerSetCountries(countries);\n }\n\n function addDriverInfo(additionalDriverInfo) {\n const curDriverInfo = { ...driverInfo, ...additionalDriverInfo };\n localStorage.setItem('driverInfo', JSON.stringify(curDriverInfo));\n innerSetDriverInfo(curDriverInfo);\n }\n\n function addAdditionalDriverInfo(additionalInfo) {\n const curAdditionalDriverInfo = {\n ...additionalDriverInfo,\n ...additionalInfo\n };\n localStorage.setItem(\n 'additionalDriverInfo',\n JSON.stringify(curAdditionalDriverInfo)\n );\n innerSetAdditionalDriverInfo(curAdditionalDriverInfo);\n }\n\n function setUpselling(newUpselling) {\n let raQuotePrice = Number(rentalAgreementQuoteValue);\n if (upselling.groupID) {\n raQuotePrice -= Number(upselling.previewValue);\n }\n setRentalAgreementQuoteValue(\n raQuotePrice + Number(newUpselling.previewValue)\n );\n localStorage.setItem('upselling', JSON.stringify(newUpselling));\n innerSetUpselling(newUpselling);\n }\n\n function removeUpselling() {\n if (!upselling.groupID) {\n return;\n }\n setRentalAgreementQuoteValue(\n Number(rentalAgreementQuoteValue) - Number(upselling.previewValue)\n );\n localStorage.setItem('upselling', JSON.stringify({}));\n innerSetUpselling({});\n }\n\n function addExtra(extra) {\n if (isBabySeatExtra(extra) && !candAddBabySeat(extra)) return\n\n setRentalAgreementQuoteValue(\n Number(rentalAgreementQuoteValue) + Number(extra.totalPrice)\n );\n\n const updatedSelectedExtras = selectedExtras.concat({ ...extra, isUserRemovable: extra.isUserRemovable === false ? false : true });\n localStorage.setItem(\n 'selectedExtras',\n JSON.stringify(updatedSelectedExtras)\n );\n innerSetSelectedExtras(updatedSelectedExtras);\n\n function isBabySeatExtra(_extra) {\n return !!(getBabySeatExtras().find(e => e.extraID === _extra.extraID))\n }\n\n function candAddBabySeat(_extra) {\n const selectedBabySeatExtras = selectedExtras.filter(e => isBabySeatExtra(e))\n let seats = Number((groupsDetails.find(g => g.id === reservation.GroupID) || {}).seats) || 0\n if (upselling && upselling.groupID) {\n seats = Number((groupsDetails.find(g => g.id === upselling.groupID) || {}).seats) || 0\n }\n return selectedBabySeatExtras.length + 1 < seats\n }\n }\n\n function addAdditionalDriver() {\n const additionalDriverExtra = getComfortExtras().find(e => e.id === 'ADD1');\n if (additionalDriverExtra) {\n addExtra(additionalDriverExtra);\n }\n }\n\n function removeExtra(extra, removedInReview = false) {\n // if the extra removed is part of a insurance pack, remove selected pack\n if (insuranceSelectedPack && insuranceSelectedPack.extraId === extra.extraID) {\n setInsuranceSelectedPack(null)\n }\n\n\n const idxOfExtra = selectedExtras.findIndex(\n e => e.extraID === extra.extraID\n );\n if (idxOfExtra === -1) {\n return;\n }\n const extraToRemoveFromSelectedExtras = selectedExtras[idxOfExtra]\n\n setRentalAgreementQuoteValue(\n Number(rentalAgreementQuoteValue) - Number(extraToRemoveFromSelectedExtras.totalPrice)\n );\n const updatedSelectedExtras = selectedExtras.filter(\n (e, idx) => idx !== idxOfExtra\n );\n localStorage.setItem(\n 'selectedExtras',\n JSON.stringify(updatedSelectedExtras)\n );\n innerSetSelectedExtras(updatedSelectedExtras);\n\n if (removedInReview)\n saveRemovedExtra(extraToRemoveFromSelectedExtras)\n }\n\n function saveRemovedExtra(extra) {\n const updatedRemovedExtras = removedExtrasInReview.concat({ extraId: extra.extraID, price: extra.totalPrice })\n localStorage.setItem(\n 'removedExtrasInReview',\n JSON.stringify(updatedRemovedExtras)\n );\n innerSetRemovedExtrasInReview(updatedRemovedExtras);\n\n }\n\n function changeInsurancePack(packToAdd, packToRemove) {\n const extraToRemove = packToRemove ? packToRemove.extraId : null\n const extraToRemoveMapped = reservation.availableExtras.find(e => e.extraID === extraToRemove)\n const priceToRemove = extraToRemoveMapped ? packToRemove.totalPrice : 0\n\n const extraToAdd = packToAdd ? packToAdd.extraId : null\n const extraToAddMapped = reservation.availableExtras.find(e => e.extraID === extraToAdd)\n const priceToAdd = extraToAddMapped ? packToAdd.totalPrice : 0\n\n setRentalAgreementQuoteValueV2(priceToAdd, priceToRemove);\n\n innerSetSelectedExtras(v => {\n const updatedSelectedExtras = v.filter(e => extraToRemove !== e.extraID);\n if (extraToAdd) {\n const extra = {\n extraID: extraToAdd,\n id: extraToAdd,\n name: extraToAdd,\n isPack: true,\n totalPrice: priceToAdd,\n isUserRemovable: true\n };\n updatedSelectedExtras.push(extra);\n }\n localStorage.setItem('selectedExtras', JSON.stringify(updatedSelectedExtras));\n return updatedSelectedExtras\n });\n }\n\n function isIncompatibleExtra(extra, array) {\n return array.some(e => {\n const extAv = reservation.availableExtras.find(ea => ea.extraID === e)\n if (!extAv) return false\n if (\n (extAv.must_not_include && extAv.must_not_include.split(',').find(mni => mni === extra.extraID) !== undefined) ||\n (extAv.must_include && extAv.must_include.split(',').find(mni => mni === extra.extraID) !== undefined)\n ) {\n return true\n }\n return false\n })\n }\n\n function isExtraIncompatibleForReservation(id) {\n const incompatibilities = {\n RF: ['IF'],\n }\n const incomp = incompatibilities[id]\n if (!incomp) return false\n\n return incomp.some((element, index, array) => {\n return [...reservationExtras.map(e => e.extraID)].includes(element)\n })\n }\n\n function getValidSafetyExtras() {\n const groupId = getVehicleForRA()\n // safety extras can be configured by Group or by exclusive rules by other extras in the reservation\n const extrasIdsByGroup = ['01', '02', '03', '04', '05'].includes(groupId) ? ['TP', 'CDW', 'ACDW1', 'IF', 'PAI', 'ASTOP'] : ['TP', 'CDW', 'ACDW1', 'RF', 'IF', 'PAI', 'ASTOP']\n\n return extrasIdsByGroup.filter(e => !isExtraIncompatibleForReservation(e))\n }\n\n function getRAPickUpAndDropOffDate() {\n const twentyFourHoursMilliSeconds = 24 * 60 * 60 * 1000;\n const reservationDurationInMilliSeconds = moment(\n reservation.DropOffDate\n ).diff(reservation.PickupDate);\n const closestTwentyFourHoursInMilliSecondsManyfoldNumberOfDuration =\n Math.ceil(\n reservationDurationInMilliSeconds / twentyFourHoursMilliSeconds\n ) * twentyFourHoursMilliSeconds;\n const realPickupDate = moment()\n .add(2, 'minutes')\n .tz(getLocalTimeZone())\n .format('YYYY-MM-DD HH:mm');\n const durationUsingRealPickUpDateAndReservationDropOffDate = moment(\n reservation.DropOffDate\n ).diff(realPickupDate);\n const realDropOffDate = (function getRealDropOffDate() {\n if (\n closestTwentyFourHoursInMilliSecondsManyfoldNumberOfDuration <\n durationUsingRealPickUpDateAndReservationDropOffDate\n ) {\n return moment(realPickupDate)\n .add(closestTwentyFourHoursInMilliSecondsManyfoldNumberOfDuration)\n .format('ddd D MMM / HH:mm');\n }\n if (\n closestTwentyFourHoursInMilliSecondsManyfoldNumberOfDuration >\n durationUsingRealPickUpDateAndReservationDropOffDate &&\n reservationDurationInMilliSeconds % twentyFourHoursMilliSeconds === 0\n ) {\n return moment(realPickupDate)\n .add(closestTwentyFourHoursInMilliSecondsManyfoldNumberOfDuration)\n .format('ddd D MMM / HH:mm');\n }\n return moment(reservation.DropOffDate)\n .add(2, 'minutes')\n .format('ddd D MMM / HH:mm');\n })();\n return {\n pickUpDate: realPickupDate,\n dropOffDate: realDropOffDate\n };\n }\n\n function getDriversCountryName() {\n if (driverInfo.countryID) {\n const curCountry = getCountries().find(\n c => driverInfo.countryID === c.countryID\n );\n return curCountry ? curCountry.name : '';\n }\n return '';\n }\n\n function getDriversCountryISOCode() {\n if (driverInfo.countryID) {\n const curCountry = getCountries().find(\n c => driverInfo.countryID === c.countryID\n );\n return curCountry ? curCountry.ISOCode : '';\n }\n return '';\n }\n\n function getDriversPhoneCountryCode() {\n if (driverInfo.countryID) {\n const curCountry = getCountries().find(\n c => driverInfo.countryID === c.countryID\n );\n return curCountry ? curCountry.PhoneCountryCode : '';\n }\n return '';\n }\n\n function isEligibleForYoungDriver(\n driversBirthDate,\n driversLicenseIssuedDate\n ) {\n const isYoungDriverAvailable = reservation.availableExtras.find(\n extra => extra.extraID === 'YADDD' && extra.available === 'true'\n );\n if (!isYoungDriverAvailable) {\n return false;\n }\n const age = moment().diff(driversBirthDate, 'years');\n if (age < 18 || age >= MINIMUM_AGE) {\n return false;\n }\n const yearsWithLicense = moment().diff(driversLicenseIssuedDate, 'years');\n if (yearsWithLicense < 1) {\n return false;\n }\n return ['MINI', 'C', 'P', 'E', 'E1', 'SUVM'].includes(reservation.GroupID);\n }\n\n function hasYoungDriverForMainDriver(\n driversBirthDate,\n driversLicenseIssuedDate\n ) {\n if (isEligibleForYoungDriver(driversBirthDate, driversLicenseIssuedDate)) {\n return (\n reservation.Extras.includes('YADDD') ||\n selectedExtras.find(e => e.extraID === 'YADDD')\n );\n }\n return false;\n }\n\n function addYoungDriver() {\n const youngDriverExtra = reservation.availableExtras.find(\n extra => extra.extraID === 'YADDD' && extra.available === 'true'\n );\n if (youngDriverExtra) {\n addExtra({\n ...youngDriverExtra,\n ...computeExtraPrices(youngDriverExtra),\n id: 'YADDD',\n isUserRemovable: false\n });\n }\n }\n\n function getYoungDriverPrices() {\n const youngDriverExtra = reservation.availableExtras.find(\n extra => extra.extraID === 'YADDD' && extra.available === 'true'\n );\n return computeExtraPrices(youngDriverExtra)\n }\n\n function removeYoungDriver() {\n const youngDriver = selectedExtras.find(e => e.extraID === 'YADDD');\n if (youngDriver) {\n removeExtra(youngDriver);\n }\n }\n\n function getDriversMinimumAgeForReservation() {\n return ['G', 'H', 'L', 'N', 'O'].includes(reservation.GroupID) ? SPECIAL_GROUP_MINIMUM_AGE : MINIMUM_AGE;\n }\n\n function clearAll() {\n innerSetReservationExtras([]);\n innerSetReservation({});\n innerSetAvailableUpsellings([]);\n innerSetDriverInfo({});\n innerSetAdditionalDriverInfo({});\n innerSetRentalAgreementQuoteValue(0);\n innerSetUpselling({});\n innerSetSelectedExtras([]);\n innerSetExcess('');\n innerSetCountries([]);\n innerSetIsCorporate(false);\n innerSetCorporateExtrasFlow([]);\n setWasDriverInfoVerified(false);\n setWasAdditionalDriverInfoVerified(false);\n setPolicyAndTermsVerified(false);\n setAdditionalDriverPolicyAndTermsVerified(false);\n setUserAnswers({});\n setDriverInfoEditMode(false);\n setDriverInfoHasClickedBack(false);\n setInsuranceSelectedExtras([])\n setRentalAgreementCreation(null)\n setSessionId(null);\n innerSetRemovedExtrasInReview([]);\n innerSetGroupsDetails([]);\n setNotifyUserResult(null)\n setAppFlowConfigs(null)\n setPickupDate('')\n setKioskCurrentStationId('')\n setInsuranceSelectedPack(null)\n setCurrentPageIndex(null)\n innerSetSessionExtras([])\n setDriverPhoneValidated(false)\n clearVisitedRoutes()\n sessionStorage.clear()\n }\n\n function getCorporateExtras(extrasIds = []) {\n const _extras = [\n {\n id: 'GPS',\n name: 'GPS',\n isUserRemovable: true\n },\n {\n id: 'CBF',\n name: 'Cross Border',\n isUserRemovable: true\n },\n {\n id: 'ASTOP',\n name: 'AssistĆŖncia em Viagem Top',\n isUserRemovable: true\n },\n {\n id: 'ADD1',\n name: 'Additional Driver',\n isUserRemovable: true\n },\n {\n id: 'UPSELLING',\n name: 'UPSELLING',\n internalExtra: true,\n },\n {\n id: 'BABY0',\n name: 'Baby Seat (Grp 0+)',\n isUserRemovable: true\n },\n {\n id: 'BABY1',\n name: 'Baby Seat (Grp 1)',\n isUserRemovable: true\n },\n {\n id: 'BABY2',\n name: 'Baby Seat (Grp 2/3)',\n isUserRemovable: true\n },\n {\n id: 'BSEAT',\n name: 'Booster Seat',\n isUserRemovable: true\n },\n {\n id: 'TP',\n name: 'Theft protection',\n isUserRemovable: true\n },\n {\n id: 'CDW',\n name: 'Damage Management Fee',\n isUserRemovable: true\n },\n {\n id: 'ACDW1',\n name: 'ACDW Plus',\n isUserRemovable: true\n },\n {\n id: 'RF',\n name: 'Excess Reduction',\n isUserRemovable: true\n },\n {\n id: 'IF',\n name: 'SCDW',\n isUserRemovable: true\n },\n {\n id: 'PAI',\n name: 'For driverā€™s protection and as well for the other passengers',\n isUserRemovable: true\n },\n ]\n\n return _extras\n .filter(cExtra => extrasIds.length === 0 || extrasIds.includes(cExtra.id))\n .filter(cExtra =>\n cExtra.internalExtra || reservation.availableExtras.find(\n e => e.available === 'true' && e.extraID === cExtra.id\n )\n )\n .filter(cExtra => !reservationExtras.find(e => e.extraID === cExtra.id))\n .map(cExtra => ({\n ...cExtra,\n ...reservation.availableExtras.find(e => e.extraID === cExtra.id)\n }))\n .map(cExtra => ({\n ...cExtra,\n value: cExtra.value ? parseFloat(cExtra.value) : null,\n taxRate: cExtra.taxRate ? parseFloat(cExtra.taxRate) : null\n }))\n .map(cExtra => ({\n ...cExtra,\n ...computeExtraPrices(cExtra)\n }));\n }\n\n function getComfortExtras(extrasIds = []) {\n const comfortExtras = [\n {\n id: 'GPS',\n name: 'GPS',\n iconName: 'gps.svg',\n isUserRemovable: true\n },\n {\n id: 'CBF',\n name: 'Cross Border',\n iconName: 'cross-border.svg',\n isUserRemovable: true\n },\n {\n id: 'ADD1',\n name: 'Additional Driver',\n iconName: 'additional-driver.svg',\n isUserRemovable: true\n },\n {\n id: 'PE',\n isUserRemovable: false\n },\n ];\n return comfortExtras\n .filter(cExtra => extrasIds.length === 0 || extrasIds.includes(cExtra.id))\n .filter(cExtra =>\n reservation.availableExtras.find(\n e => e.available === 'true' && e.extraID === cExtra.id\n )\n )\n .filter(cExtra => !reservationExtras.find(e => e.extraID === cExtra.id))\n .map(cExtra => ({\n ...cExtra,\n ...reservation.availableExtras.find(e => e.extraID === cExtra.id)\n }))\n .map(cExtra => ({\n ...cExtra,\n value: parseFloat(cExtra.value),\n taxRate: parseFloat(cExtra.taxRate)\n }))\n .map(cExtra => ({\n ...cExtra,\n ...computeExtraPrices(cExtra)\n }));\n }\n\n function getInsuranceExtras(extrasIds = []) {\n const insuranceExtras = [\n {\n id: 'TP',\n isUserRemovable: true\n },\n {\n id: 'CDW',\n isUserRemovable: true\n },\n {\n id: 'ACDW',\n isUserRemovable: true\n },\n {\n id: 'RF',\n isUserRemovable: true\n },\n {\n id: 'IF',\n isUserRemovable: true\n },\n {\n id: 'PAI',\n isUserRemovable: true\n }\n ];\n return insuranceExtras\n .filter(cExtra => extrasIds.length === 0 || extrasIds.includes(cExtra.id))\n .filter(cExtra =>\n reservation.availableExtras.find(\n e => e.available === 'true' && e.extraID === cExtra.id\n )\n )\n .filter(cExtra => !reservationExtras.find(e => e.extraID === cExtra.id))\n .map(cExtra => ({\n ...cExtra,\n ...reservation.availableExtras.find(e => e.extraID === cExtra.id)\n }))\n .map(cExtra => ({\n ...cExtra,\n value: parseFloat(cExtra.value),\n taxRate: parseFloat(cExtra.taxRate)\n }))\n .map(cExtra => ({\n ...cExtra,\n ...computeExtraPrices(cExtra)\n }));\n }\n\n function getBabySeatExtras() {\n const babySeatExtras = [\n {\n id: 'BABY0',\n name: 'Baby Seat (Grp 0+)',\n iconName: 'baby-seat.png',\n isUserRemovable: true\n },\n {\n id: 'BABY1',\n name: 'Baby Seat (Grp 1)',\n iconName: 'baby-seat.png',\n isUserRemovable: true\n },\n {\n id: 'BABY2',\n name: 'Baby Seat (Grp 2/3)',\n iconName: 'baby-seat.png',\n isUserRemovable: true\n },\n {\n id: 'BSEAT',\n name: 'Booster Seat',\n iconName: 'booster-seat.png',\n isUserRemovable: true\n }\n ];\n return babySeatExtras\n .filter(cExtra =>\n reservation.availableExtras.find(\n e => e.available === 'true' && e.extraID === cExtra.id\n )\n )\n // .filter(cExtra => !reservationExtras.find(e => e.extraID === cExtra.id))\n .map(cExtra => ({\n ...cExtra,\n ...reservation.availableExtras.find(e => e.extraID === cExtra.id)\n }))\n .map(cExtra => ({\n ...cExtra,\n value: parseFloat(cExtra.value),\n taxRate: parseFloat(cExtra.taxRate)\n }))\n .map(cExtra => ({\n ...cExtra,\n ...computeExtraPrices(cExtra)\n }));\n }\n\n function getQuantityOfExtra(extra) {\n return selectedExtras.filter(e => e.extraID === extra.extraID).length;\n }\n\n function computeExtraPrices(extra) {\n const value = extra.value ? parseFloat(extra.value) : 0\n const taxRate = extra.taxRate ? parseFloat(extra.taxRate) : 0\n\n if (extra.internalExtra) return { totalPrice: null }\n if (extra.extraByDay === 'true') {\n return {\n totalPrice: roundToTwoDecimalPlaces(\n value * reservation.raQuote.nrDays +\n (value * reservation.raQuote.nrDays * taxRate) / 100\n ).toFixed(2),\n pricePerDay: roundToTwoDecimalPlaces(\n value + (value * taxRate) / 100\n ).toFixed(2)\n };\n }\n return {\n totalPrice: roundToTwoDecimalPlaces(\n extra.value + (extra.value * extra.taxRate) / 100\n ).toFixed(2)\n };\n }\n\n function getVehicleForRA() {\n return upselling && upselling.groupID ? upselling.groupID : reservation ? reservation.GroupID : null;\n }\n\n function setRentalAgreementCreation(raCreation) {\n localStorage.setItem(\n 'rentalAgreementCreation',\n JSON.stringify(raCreation)\n );\n innerSetRentalAgreementCreation(raCreation);\n }\n\n function getUserQuestions() {\n const userQuestions = [\n {\n id: 'babySeat',\n key: 'babySeatQuestion'\n },\n ]\n return userQuestions\n }\n\n function storeUserAnswer({ questionID, answer }) {\n const newAnswers = { ...userAnswers, [questionID]: answer };\n setUserAnswers(newAnswers);\n localStorage.setItem('userAnswers', JSON.stringify(newAnswers));\n }\n\n function setLanguage(langKey) {\n innerSetLanguage(langKey)\n localStorage.setItem('language', JSON.stringify({ lang: langKey }))\n }\n\n const setCurrentPageIndex = useCallback((v, amount = 1) => {\n if (v === null) {\n innerSetCurrentPageIndex(-1)\n localStorage.setItem('currentPageIndex', -1)\n } else if (v === 1) {\n innerSetCurrentPageIndex(vv => vv + amount)\n localStorage.setItem('currentPageIndex', currentPageIndex + amount)\n } else if (v === -1) {\n innerSetCurrentPageIndex(vv => vv - 1)\n localStorage.setItem('currentPageIndex', currentPageIndex - amount)\n }\n }, [currentPageIndex])\n\n const flowPreviousRoute = useCallback((history) => {\n let skipCount = 1\n let index = currentPageIndex - 1\n do {\n const nextPage = reservation.pathPages[index]\n\n const canDisplayExtraPage = nextPage && nextPage.extraId ? getCorporateExtras([nextPage.extraId]).filter(canDisplayExtra) : true\n if (canDisplayExtraPage) {\n setCurrentPageIndex(-1, skipCount)\n history.goBack()\n return undefined\n }\n index--\n skipCount++\n } while (index >= 0)\n\n setCurrentPageIndex(null)\n history.goBack()\n }, [setCurrentPageIndex])\n\n const flowNextRoute = useCallback(() => {\n if (currentPageIndex === reservation.pathPages.length - 1) {\n return '/review-final-reservation'\n }\n let index = currentPageIndex + 1\n let skipCount = 1\n do {\n const nextPage = reservation.pathPages[index]\n\n const canDisplayExtraPage = nextPage && nextPage.extraId ? getCorporateExtras([nextPage.extraId]).some(canDisplayExtra) : true\n if (canDisplayExtraPage) {\n setCurrentPageIndex(1, skipCount)\n return nextPage.url\n }\n index++\n skipCount++\n } while (index < reservation.pathPages.length)\n\n return '/review-final-reservation'\n }, [reservation, currentPageIndex, setCurrentPageIndex])\n\n /*\n const flowPreviousRoute = useCallback((history) => {\n setCurrentPageIndex(-1)\n history.goBack()\n }, [setCurrentPageIndex])\n\n const flowNextRoute = useCallback((currentUrl) => {\n if (currentPageIndex === reservation.pathPages.length) {\n return '/review-final-reservation'\n }\n const nextPage = reservation.pathPages[currentPageIndex + 1]\n setCurrentPageIndex(1)\n return nextPage.url\n }, [reservation, currentPageIndex, setCurrentPageIndex])\n */\n\n function setInsuranceSelectedExtras(iExtras) {\n innerSetInsuranceSelectedExtras(iExtras)\n localStorage.setItem('insuranceSelectedExtras', JSON.stringify(iExtras));\n }\n\n function setSessionId(id) {\n if (!id) {\n innerSetSessionId(null)\n session.setSessionId(null)\n } else {\n innerSetSessionId(id)\n session.setSessionId(id)\n }\n }\n\n function setPage(pageObj) {\n storeSessionPage(pageObj)\n }\n\n function setDriverPhoneValidated(value) {\n localStorage.setItem('driverPhoneValidated', value);\n innerSetDriverPhoneValidated(value)\n }\n\n function setNotifyUserResult(value) {\n localStorage.setItem('notifyResult', JSON.stringify(value));\n innerSetNotifyUserResult(value)\n }\n\n function setGroupsDetails(groups) {\n localStorage.setItem('groupsDetails', JSON.stringify(groups));\n innerSetGroupsDetails(groups)\n }\n\n function setAppFlowConfigs(config) {\n const _isCorporate = config ? config.isCorporate : false\n localStorage.setItem('appFlowConfigs', JSON.stringify(config));\n localStorage.setItem('isCorporate', _isCorporate);\n innerSetAppFlowConfigs(config)\n innerSetIsCorporate(_isCorporate)\n }\n\n function setBlockedTaxNumbersList(list) {\n localStorage.setItem('blockedTaxNumbersList', JSON.stringify(list));\n innerSetBlockedTaxNumbersList(list)\n }\n\n function mapPriceForPack(pack) {\n let valueToPack = null\n\n const configuredPacks = (reservation && reservation.packs ? reservation.packs : [])\n const currentExtrasToCheck = [...selectedExtras.map(e => e.extraID), ...reservationExtras.map(e => e.extraID)]\n .filter(e => !insuranceSelectedPack || (insuranceSelectedPack && insuranceSelectedPack.extraId !== e))\n\n const packWithMatchingCurrentExtras = insuranceSelectedPack ? null : getBestPackForExtras(currentExtrasToCheck, configuredPacks, true)\n\n if (pack) {\n const extraFromNextPack = reservation.availableExtras.find(e => e.extraID === pack.extraId)\n if (!extraFromNextPack) return null\n\n if (!packWithMatchingCurrentExtras) {\n valueToPack =\n pack.extrasList\n .filter(e => currentExtrasToCheck.find(c => c === e))\n .reduce((total, curr) => {\n const currExtra = reservation.availableExtras.find(e => e.extraID === curr)\n return total - currExtra.value\n }, extraFromNextPack.value)\n } else {\n const extraFromCurrentPack = reservation.availableExtras.find(e => e.extraID === packWithMatchingCurrentExtras.extraId)\n if (extraFromCurrentPack) {\n valueToPack = extraFromNextPack.value - extraFromCurrentPack.value\n }\n }\n }\n return valueToPack\n }\n\n function getBestPackForExtras(extras, packs, mapExtras = false) {\n function uniq(a) {\n const seen = {};\n return a.filter(function (item) {\n return seen.hasOwnProperty(item) ? false : (seen[item] = true);\n });\n }\n\n const extrasMapped = mapExtras ? uniq(extras.flatMap(e => {\n const pack = packs.find(p => p.extraId === e)\n return pack ? pack.extrasList : [e]\n })) : extras\n\n const matchingPacks = packs\n .map(p => {\n const packExtras = p.extrasList.filter(e => !ALWAYS_PRESENT.includes(e))\n return packExtras.every(e => extrasMapped.find(ec => e === ec))\n ? { pack: p, matches: packExtras.length } : null\n })\n .filter(p => p)\n .sort((obj1, obj2) => obj2.matches - obj1.matches)\n\n return matchingPacks && matchingPacks.length > 0 ? matchingPacks[0].pack : null\n }\n\n function setInsuranceSelectedPack(pack) {\n innerSetInsuranceSelectedPack(pack)\n localStorage.setItem('insuranceSelectedPack', JSON.stringify(pack));\n }\n\n function canDisplayExtra(obj) {\n if (!obj || !obj.extraID) return false\n const extraAvailable = reservation.availableExtras ? reservation.availableExtras.find(\n e => e.available === 'true' && e.extraID === obj.extraID\n ) : null\n\n if (!extraAvailable) return false\n \n const rejectedPackBasic = reservation.isExclusiveReservation && getQuantityOfExtra({ extraID: 'PE' }) === 0\n const extraBlockedByRejectedPackBasic = rejectedPackBasic && reservation?.exclusiveReservationsConfigurations ?\n reservation.exclusiveReservationsConfigurations.extrasBlocked.includes(obj.extraID) : false\n if (extraBlockedByRejectedPackBasic) {\n return false\n }\n\n const presentInReservation = (reservationExtras.find(e => e.extraID === obj.extraID)) !== undefined\n\n const isIncompatible = isIncompatibleExtra(obj, [...selectedExtras.map(e => e.extraID), ...reservationExtras.map(e => e.extraID)])\n\n return !presentInReservation && !isIncompatible\n }\n\n function mapExtraPrice(obj) {\n if (!obj || !obj.extraID) return null\n\n const extra = reservation.availableExtras.find(e => e.extraID === obj.extraID)\n if (!extra) return null\n\n const mappedExtraNumbers = {\n ...extra,\n ...obj,\n value: Number(extra.value),\n taxRate: Number(extra.taxRate)\n }\n\n // check if by adding this extra, it matches an existing pack and change the value according to the diference of packs\n const configuredPacks = (reservation && reservation.packs ? reservation.packs : [])\n\n const currentExtrasToCheck = [...selectedExtras.map(e => e.extraID), ...reservationExtras.map(e => e.extraID)]\n const packWithMatchingCurrentExtras = getBestPackForExtras(currentExtrasToCheck, configuredPacks)\n\n const nextExtrasToCheck = [...currentExtrasToCheck, obj.extraID]\n const packWithMatchingNextExtras = getBestPackForExtras(nextExtrasToCheck, configuredPacks)\n\n let valueToPack = null\n\n if (canGoInsurancePacksPage() && packWithMatchingNextExtras) {\n const extraFromNextPack = reservation.availableExtras.find(e => e.extraID === packWithMatchingNextExtras.extraId)\n if (!extraFromNextPack) return null\n\n if (!packWithMatchingCurrentExtras) {\n valueToPack =\n packWithMatchingNextExtras.extrasList\n .filter(e => currentExtrasToCheck.find(c => c === e))\n .reduce((total, curr) => {\n const currExtra = reservation.availableExtras.find(e => e.extraID === curr)\n return total - currExtra.value\n }, extraFromNextPack.value)\n } else {\n const extraFromCurrentPack = reservation.availableExtras.find(e => e.extraID === packWithMatchingCurrentExtras.extraId)\n if (extraFromCurrentPack) {\n valueToPack = extraFromNextPack.value - extraFromCurrentPack.value\n }\n }\n }\n\n const extraFromSelectedExtras = selectedExtras.find(\n e => e.extraID === extra.extraID\n );\n if (extraFromSelectedExtras) {\n mappedExtraNumbers.value = extraFromSelectedExtras.value\n } else {\n mappedExtraNumbers.value = valueToPack || mappedExtraNumbers.value\n }\n\n return { ...mappedExtraNumbers, ...computeExtraPrices(mappedExtraNumbers) }\n }\n\n function setInvalidAddressAlert(message) {\n innerSetInvalidAddressAlert(message)\n localStorage.setItem('invalidAddressAlert', message);\n }\n\n function setDriverInfoEditMode(value) {\n innerSetDriverInfoEditMode(value)\n localStorage.setItem('driverInfoEditMode', JSON.stringify(value));\n }\n\n function canGoInsurancePacksPage() {\n if (!appFlowConfigs.insurancePacksActive) {\n return false\n }\n const allPacks = (reservation && reservation.packs ? reservation.packs : [])\n const packIncludedInReservation = reservation.availableExtras\n .filter(e => e.extraIncluded === 'true')\n .some(e => allPacks.find(p => p.extraId === e.extraID) !== undefined)\n return !packIncludedInReservation\n }\n\n function canGoInsurancePacksPage() {\n const allPacks = (reservation && reservation.packs ? reservation.packs : [])\n const packInReservation = getBestPackForExtras(reservationExtras.map(e => e.extraID), allPacks, true)\n return packInReservation === null\n }\n\n function isDriverCountryPortugal() {\n return getDriversCountryISOCode() === 'PT'\n }\n\n function getQuantityOfExtraInReservation(extraId) {\n if (reservationExtras.length === 0) return 0\n return reservationExtras.reduce((prev, curr) => {\n return curr.extraID === extraId ? prev + 1 : prev\n }, 0)\n }\n\n const setLocalizationAssets = useCallback((values) => {\n localStorage.setItem('localizationAssets', JSON.stringify(values));\n innerSetLocalizationAssets(values)\n }, [innerSetLocalizationAssets])\n\n const setLocalizations = useCallback((values) => {\n localStorage.setItem('localizations', JSON.stringify(values));\n innerSetLocalizations(values)\n }, [innerSetLocalizations])\n\n const setPages = useCallback((values) => {\n localStorage.setItem('pages', JSON.stringify(values));\n innerSetPages(values)\n }, [])\n\n const setInvalidBirthdates = useCallback((values) => {\n localStorage.setItem('invalidBirthdates', JSON.stringify(values));\n innerSetInvalidBirthdates(values)\n }, [])\n\n const saveSessionExtras = useCallback((extras) => {\n const newValues = [...sessionExtras.filter(e => !extras.some(ee => ee.pageId === e.pageId)), ...extras]\n innerSetSessionExtras(newValues)\n sessionStorage.setItem('sessionExtras', JSON.stringify(newValues));\n }, [sessionExtras])\n\n const saveSessionExtra = useCallback((extraDetails) => {\n const newValues = [...sessionExtras.filter(e => e.pageId !== extraDetails.pageId), extraDetails]\n innerSetSessionExtras(newValues)\n sessionStorage.setItem('sessionExtras', JSON.stringify(newValues));\n }, [sessionExtras])\n\n const setStationsConfigurations = useCallback((configs) => {\n innerSetStationsConfigurations(configs)\n localStorage.setItem('stationsConfigurations', JSON.stringify(configs))\n }, [])\n\n const filteredCountries = useMemo(() => {\n return countries.filter(c => c.countryID)\n }, [countries])\n\n const [visitedRoutes, innerAddVisitedRoutes] = useState(\n JSON.parse(localStorage.getItem('visitedRoutes')) || []\n )\n const addVisitedRoutes = useCallback((path) => {\n if (!visitedRoutes.includes(path)) {\n innerAddVisitedRoutes(v => [...v, path])\n localStorage.setItem('visitedRoutes', JSON.stringify([...visitedRoutes, path]))\n }\n }, [visitedRoutes])\n\n const clearVisitedRoutes = useCallback(() => {\n innerAddVisitedRoutes([])\n localStorage.removeItem('visitedRoutes')\n }, [])\n\n return (\n \n {children}\n \n );\n}\n\nfunction roundToTwoDecimalPlaces(num) {\n return Math.round(num * 100) / 100;\n}\n\nexport const DomainContextConsumer = (WrappedComponent) => (props) => {\n\n return (\n \n {context => }\n \n )\n}\n\nexport default DomainRepository;\n","import React, { useEffect } from \"react\";\n\nexport function useDisableBodyScroll(isOpen) {\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n window.scrollTo(0, 0);\n } else {\n document.body.style.overflow = '';\n }\n\n return () => {\n document.body.style.overflow = '';\n }\n }, [isOpen]);\n}\n","import React from 'react'\n\nimport './AlertModal.css'\nimport { useDisableBodyScroll } from '../../utils/useDisableBodyScroll'\n\nexport function AlertModal({ isOpen, title, message, handleClick, buttonLabel }) {\n\n useDisableBodyScroll(isOpen)\n\n return isOpen ? (\n
\n
\n
{title}
\n
{message}
\n
\n \n
\n
\n
\n ) : null\n}\n\nexport function AlertModalWithActions({ isOpen, title, message, handleLeftClick, leftLabel, handleRightClick, rightLabel, }) {\n return isOpen ? (\n
\n
\n
{title}
\n {message &&
{message}
}\n
\n \n \n
\n
\n
\n ) : null\n}\n","import React, { Component } from 'react'\nimport { withTranslation } from 'react-i18next'\nimport StackTrace from \"stacktrace-js\"\n\nimport { AlertModal } from './alert-modal/AlertModal'\n\nimport sendErrorAlert from '../services/ErrorsAlert'\n\nclass ErrorBoundry extends Component {\n\n state = {\n error: false\n }\n\n componentDidCatch(error, errorInfo) {\n const _error = error ? error.toString() : null\n StackTrace.fromError(error).then(err => {\n if (_error) {\n const values = {\n sessionId: localStorage.sessionId,\n date: new Date(),\n resNumber: localStorage.resNumber,\n url: window.location.pathname,\n errDetails: err.length > 0 && err[0] ? { functionName: err[0].functionName, lineNumber: err[0].lineNumber } : null,\n }\n if (values.sessionId || values.resNumber) {\n // sendErrorAlert(_error, errorInfo, JSON.stringify(values))\n }\n }\n })\n this.setState({ error: true })\n }\n\n render() {\n const { t } = this.props\n\n return (\n \n {this.state.error ?\n
\n this.setState({ error: false }, () => {\n window.location.pathname = '/'\n })}\n />\n
\n : this.props.children}\n
\n )\n }\n}\n\nexport default withTranslation()(ErrorBoundry);\n","import React from 'react'\n\nfunction Footer({ handleNextClick, handlePrevClick, prevHidden, nextHidden = false, nextDisabled = false, nextDisabledClick = null }) {\n\n return (\n
\n
\n
\"Back\"
\n
Next
\n
\n
\n )\n}\nexport default Footer\n\nexport function FooterWithPrice({ handleNextClick, handlePrevClick, prevHidden, nextHidden, totalPrice, totalPriceLabel, nextDisabled }) {\n return (\n
\n
\n
\"Back\"
\n
{totalPriceLabel} ā‚¬ {totalPrice || 0}
\n
Next
\n
\n
\n )\n}\n\nexport function FooterWithClose({ handleCloseClick, isHidden }) {\n return !isHidden ? (\n
\n
\n
\"\"
\n
\n
\n ) : null\n}\n","import React from \"react\";\nimport { useDisableBodyScroll } from \"../utils/useDisableBodyScroll\";\n\nfunction Loading({ active, message }) {\n\n useDisableBodyScroll(active)\n\n return active ? (\n
\n
\n
\n

{message}

\n \n
\n
\n
\n ) : null;\n}\n\nexport default Loading;\n\nexport function LoadingIcon() {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n}\n","import React, { memo, useContext, useEffect, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { getPolicyAndTerms } from '../../services/GetLegalInformation'\n\nimport { setPageId } from '../../services/Metrics'\n\nimport { FooterWithClose } from '../Footer'\nimport Loading from '../Loading'\n\nfunction LegalInformationPage({ handleLogoClick, policy, terms, handleCloseClick, pageId, handleAcceptClick, handleRejectClick, readOnly }) {\n const { t } = useTranslation()\n\n const {\n language,\n } = useContext(DomainContext)\n\n const [loading, setLoading] = useState(true)\n const [content, setContent] = useState(null)\n\n useEffect(() => {\n setPageId({ pageId })\n }, [])\n\n useEffect(() => {\n const func = () => {\n setLoading(true)\n getPolicyAndTerms(language || 'en')\n .then(result => {\n setContent(result.data)\n })\n .catch(e => {\n handleAcceptClick()\n })\n .finally(() => {\n setLoading(false)\n })\n }\n\n func()\n }, [])\n\n return (\n
\n
\n
\n
\n
\n
\n \"Guerin\"\n
\n
\n
\n
\n
\n
\n
\n \n

{t('mobileTermsConditionsTitle')}

\n
\n
\n
\n
\n {!loading && !readOnly ?\n
\n \n \n
\n : null}\n
\n
\n \n
\n
\n )\n}\n\nexport default LegalInformationPage\n","import axios from 'axios';\n\nexport async function getPolicyAndTerms(lang) {\n return (await axios.post(`/policy-terms`, {\n lang, type: 'text/html'\n }))\n}\n","import React, { useState, useEffect, useCallback, useContext } from 'react'\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport './LegalInformation.css'\n\nimport LegalInformationPage from './LegalInformationPage'\n\nfunction LegalInformation(props) {\n const {\n label,\n driverInfoVerified, setDriverInfoVerified, driverInfoVerifiedLabel,\n policyAndTermsVerified, setPolicyAndTermsVerified, policyAndTermsLabel, policyLabel, termsLabel,\n history, search, state, pageUrl\n } = props\n\n useEffect(() => {\n if (state?.verified && !policyAndTermsVerified) {\n setPolicyAndTermsVerified(true)\n }\n if (!policyAndTermsVerified && !state?.verified) {\n props.history.push({ pathname: '/terms-conditions', search, state })\n }\n }, [])\n\n const handleTermsConditionsClick = useCallback(() => {\n props.history.push({ pathname: '/terms-conditions', search, state: { ...state, privacyReturnTo: pageUrl, view: 'read' } })\n }, [state, pageUrl])\n\n return (\n
\n
{label}
\n
\n { }}\n >\n
\n {termsLabel}\n /\n {policyLabel}\n
\n \n \n
\n
\n )\n}\n\nexport default LegalInformation\n\nexport function TermsConditionsPage(props) {\n\n const [readOnly, setReadOnly] = useState(false)\n\n useEffect(() => {\n setReadOnly(props.location?.state?.view === 'read' || false)\n }, [])\n\n const handleAcceptClick = useCallback(() => {\n props.history.push({\n pathname: props.location.state?.privacyReturnTo || '/driver-info-review',\n search: props.location.search,\n state: { ...props.location.state, verified: true }\n })\n }, [props.location])\n\n const handleRejectClick = useCallback(() => {\n props.history.push('/start')\n }, [])\n\n const handleCloseClick = useCallback(() => {\n props.history.push({\n pathname: props.location.state?.privacyReturnTo || '/driver-info-review',\n search: props.location.search,\n state: props.location.state \n })\n }, [props.location])\n\n return (\n props.history.push('/start')}\n handleCloseClick={handleCloseClick}\n terms={true}\n pageId={73}\n handleAcceptClick={handleAcceptClick}\n handleRejectClick={handleRejectClick}\n readOnly={readOnly}\n />\n )\n}\n\nexport function SimpleCheckbox({ value, onChange, label }) {\n\n return (\n
\n onChange(e.target.checked)}\n />\n onChange(!value)}\n >\n {label}\n \n
\n )\n}\n\nfunction PopupLabelCheckbox({ value, onChange, label, children }) {\n return (\n
\n onChange(e.target.checked)}\n />\n onChange(!value)}\n >\n {label}\n \n {children}\n
\n )\n}\n","import { EventEmitter } from 'events'\n\nclass AlertModalManager extends EventEmitter {\n\n openModal(content, onCloseHandler, closeOnDimmerClick) {\n this.emit('open', { content, onCloseHandler, closeOnDimmerClick })\n }\n}\n\nexport default new AlertModalManager()","import React, { Component } from 'react'\nimport AlertModalManager from './alert-modal-manager'\nimport { AlertModal } from '../alert-modal/AlertModal'\nimport { saveSessionEnd } from '../../services/Metrics'\n\nclass AlertModalContainer extends Component {\n\n state = {\n content: null,\n open: false,\n onCloseHandler: null,\n closeOnDimmerClick: false\n }\n\n componentWillMount = () => AlertModalManager.addListener('open', this.openHandler)\n\n componentWillUnmount = () => AlertModalManager.remove('open', this.openHandler)\n\n openHandler = (args) => {\n this.setState({ content: args.content, open: true, onCloseHandler: args.onCloseHandler, closeOnDimmerClick: args.closeOnDimmerClick })\n }\n\n onCloseHandler = () => {\n this.setState({ open: false })\n this.state.onCloseHandler && this.state.onCloseHandler()\n }\n\n render() {\n const { content, open, onCloseHandler } = this.state\n return (\n {\n saveSessionEnd()\n window.location.href = \"/\"\n }\n }\n />\n )\n }\n}\n\nexport default AlertModalContainer\n\n","import React from 'react'\n\nimport { session } from '../load-config'\n\nfunction ValidateSessionId(WrappedComponent) {\n return (props) => {\n const sessionId = session.getSessionId()\n\n if (!sessionId) {\n return window.location.href = '/'\n }\n\n return (\n \n )\n }\n}\n\nexport default ValidateSessionId\n","import React, { useEffect } from 'react'\nimport { Redirect } from 'react-router-dom'\nimport { setPageId } from '../services/Metrics'\nimport { session } from '../load-config'\n\nfunction TrackingPage(page, pageId, checkSessionId = true) {\n\n return (props) => {\n return (\n \n )\n }\n}\n\nexport default TrackingPage\n\n\nfunction TrackingPageComponent(props) {\n const { WrappedComponent, pageId, checkSessionId } = props\n\n useEffect(() => {\n if (pageId) {\n setPageId({ pageId })\n }\n }, [])\n\n function handleSetPageId(id) {\n setPageId({ pageId: id })\n }\n \n return !checkSessionId || (checkSessionId && session.getSessionId()) ? (\n \n ) : \n}\n","import React, { useContext, useEffect } from 'react'\n\nimport { GroupsImagesContext } from '../../domain-repository/GroupsImagesRepository'\nimport { DomainContext } from '../../domain-repository/DomainRepository'\nimport { saveSessionEnd } from '../../services/Metrics'\nimport { session } from '../../load-config'\n\nfunction StartPage({ history }) {\n const { setKioskAppVersionId, setSessionId } = useContext(DomainContext)\n\n useEffect(() => {\n localStorage.clear()\n \n // Preserve metricsParams from redirect from brokers and other sources, that were saved from the query params in the url\n const metricsParams = JSON.parse(sessionStorage.getItem('metricsParams'))\n sessionStorage.clear()\n if(metricsParams !== null) {\n sessionStorage.setItem('metricsParams', JSON.stringify(metricsParams))\n }\n\n if (session.getSessionId()) {\n setSessionId(null)\n saveSessionEnd()\n }\n setKioskAppVersionId(2)\n }, [])\n\n return (\n
history.push('/init')}>\n
\n
\n \"\"\n
\n
\n
\n
\n
\n

A sua Viagem comeƧa Aqui

\n

Your Journey starts here

\n
\n
\n
Next
\n
\n
\n )\n}\n\nexport default StartPage","import axios from 'axios'\n\nexport const getLanguages = async (filters) => {\n const res = (await axios.get(`/languages`, { params: filters })).data\n return res;\n}\n\nexport const getLocalizations = async (query) => {\n const res = (await axios.get(`/localizations`, { params: query })).data\n return res;\n}\n\nexport const getLocalizationsLastUpdate = async () => {\n const res = (await axios.get(`/localizations-last-upload`)).data\n return res;\n}\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\n\nexport function saveLocalStorageTranslations(key, values) {\n localStorage.setItem('i18n_resources', JSON.stringify({ [key]: { translation: values } }))\n}\n\nconst resources = JSON.parse(localStorage.getItem('i18n_resources')) || {}\n\nconst language = JSON.parse(localStorage.getItem('language'))?.lang\n\ni18n\n .use(initReactI18next).init({\n fallbackLng: 'en',\n lng: language,\n ns: 'translation',\n resources,\n interpolation: {\n escapeValue: false,\n },\n react: {\n wait: true,\n useSuspense: false,\n },\n })\n\nexport default i18n\n","import React, { useCallback, useContext, useEffect, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DomainContext } from '../domain-repository/DomainRepository'\n\nimport { mapLocalizations, transformLocalsArrayToObject } from '../pages/select-language/SelectLanguagePage'\nimport { getLanguages, getLocalizations } from '../services/localizations'\n\nimport Loading from '../components/Loading'\n\nimport { saveLocalStorageTranslations } from '../i18n'\n\nexport function useKeyValues(_defaultLang, onChange) {\n const { i18n } = useTranslation()\n const { setLanguage, setLocalizationAssets, setLocalizations } = useContext(DomainContext)\n\n const [isLoading, setIsLoading] = useState(true)\n const [defaultLang, setDefaultLang] = useState(_defaultLang)\n const [languages, setLanguages] = useState([])\n\n const fetched = useRef(false)\n\n useEffect(() => {\n if (!defaultLang || fetched.current) { return () => {} }\n setIsLoading(true)\n\n function positiveHandler(locals) {\n setLanguage(defaultLang)\n i18n.setDefaultNamespace('translations')\n saveLocalStorageTranslations(defaultLang, locals)\n i18n.addResourceBundle(defaultLang, 'translations', locals, true, true)\n i18n.changeLanguage(defaultLang).then(r => {\n if (onChange) {\n onChange(defaultLang)\n }\n })\n }\n\n getLocalizations({ lang: defaultLang, system: 'KIOSK' })\n .then(res => {\n fetched.current = true\n\n const mapped = mapLocalizations(defaultLang, defaultLang, res)\n setLocalizations(mapped)\n\n const mediaAssets = transformLocalsArrayToObject(mapped.filter(r => r.type === 'MEDIA'))\n setLocalizationAssets(mediaAssets)\n\n const texts = mapped.filter(r => r.type === 'TEXT')\n const obj = transformLocalsArrayToObject(texts)\n positiveHandler(obj)\n })\n .finally(() => setIsLoading(false))\n\n }, [defaultLang, fetched])\n\n const handleChangeLanguage = useCallback((key) => {\n setDefaultLang(key)\n }, [])\n\n return { isLoading, handleChangeLanguage }\n}\n\nexport default function LanguageInputSection({ onChange, handleLogoClick }) {\n const { i18n } = useTranslation()\n\n const { setLanguage, setLocalizationAssets, setLocalizations } = useContext(DomainContext)\n\n const [isLoading, setIsLoading] = useState(false)\n\n const [defaultLang, setDefaultLang] = useState('en')\n const [languages, setLanguages] = useState([])\n const [optionsOpen, setOptionsOpen] = useState(false)\n\n useEffect(() => {\n if (isLoading) { return null }\n setIsLoading(true)\n getLanguages().then(res => {\n setLanguages(res)\n\n const lang = res.find(r => r.isDefault)\n setDefaultLang(lang?.id || 'en')\n setIsLoading(false)\n })\n }, [setLanguages, setIsLoading, setDefaultLang])\n\n const innerChangeLanguage = (key) => {\n setOptionsOpen(false)\n\n if (isLoading) { return null }\n setIsLoading(true)\n\n function positiveHandler(locals) {\n setLanguage(key)\n i18n.setDefaultNamespace('translations')\n saveLocalStorageTranslations(key, locals)\n i18n.addResourceBundle(key, 'translations', locals, true, true)\n i18n.changeLanguage(key).then(r => {\n onChange(key)\n })\n }\n\n getLocalizations({ lang: key, system: 'KIOSK' })\n .then(res => {\n const mapped = mapLocalizations(key, defaultLang, res)\n setLocalizations(mapped)\n\n const mediaAssets = transformLocalsArrayToObject(mapped.filter(r => r.type === 'MEDIA'))\n setLocalizationAssets(mediaAssets)\n\n const texts = mapped.filter(r => r.type === 'TEXT')\n const obj = transformLocalsArrayToObject(texts)\n positiveHandler(obj)\n })\n };\n\n function delay(func, time) {\n setTimeout(func, time)\n }\n\n function handlePageClick(e) {\n const element = e.target\n setOptionsOpen((s) => element.id === \"dropdown-input\" ? !s : false)\n }\n\n const browserLang = (navigator.language || navigator.userLanguage).slice(0, 2)\n\n return (\n
\n \n
\n
\n \"Guerin\"\n
\n
\n \n
\n
{browserLang === 'pt' ? 'Escolher idioma' : 'Select language'}
\n
\n {languages.map(lang => (\n
{ innerChangeLanguage(lang.id); e.stopPropagation(); }} value={lang.id}>{lang.label}
\n ))}\n
\n
\n
\n
\n
\n )\n}\n","import React, { useCallback, useContext, useEffect, useState } from 'react'\n\nimport { useTranslation } from 'react-i18next'\nimport LanguageInputSection from '../../components/SelectLanguage'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { saveLocalStorageTranslations } from '../../i18n'\n\nimport { getLanguages, getLocalizations } from '../../services/localizations'\n\nexport function transformLocalsArrayToObject(array) {\n return array\n .reduce((prev, curr) => ({ ...prev, [curr.key]: curr.value }), {})\n}\n\nexport function mapLocalizations(lang, defaultLang, values) {\n const ids = {};\n const keyValues = [];\n for (const row of values) {\n if (!ids[row.id]) {\n ids[row.id] = true;\n const found = row.entries.find(r => r.lang === lang) || row.entries.find(r => r.lang === defaultLang) || row.entries[0];\n keyValues.push({\n key: row.key,\n type: row.type,\n description: row.description,\n pageId: row.pageId,\n lang: found.lang,\n value: found.value,\n });\n }\n }\n return keyValues\n}\n\nexport function SelectLanguagePage(props) {\n const { i18n } = useTranslation()\n\n const [isLoading, setIsLoading] = useState(false)\n\n const [defaultLang, setDefaultLang] = useState('en')\n const [languages, setLanguages] = useState([])\n\n const handleLanguageChange = useCallback(() => {\n props.history.push('/select-pickup-details')\n }, [])\n\n return (\n props.history.push('/start')}\n />\n )\n}\n\nexport default SelectLanguagePage","import React, { useEffect, useContext } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DomainContext } from './domain-repository/DomainRepository'\n\nfunction withLang(WrappedComponent) {\n\n function LangComponent(props) {\n const { i18n } = useTranslation()\n const { setLanguage, language } = useContext(DomainContext)\n\n useEffect(() => {\n const lang = language || 'en'\n if (i18n.language !== language) {\n i18n.changeLanguage(lang)\n setLanguage(lang)\n }\n }, [language, setLanguage, i18n])\n\n return \n }\n\n return (props) => \n}\n\nexport default withLang","import React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport Footer from '../../components/Footer'\nimport withLang from '../../withLang'\n\nfunction GetReadyPage(props) {\n const { t } = useTranslation()\n\n return (\n
\n
\n
\n
\n
props.history.push('/start')}>\n \"Guerin\"\n
\n
\n
\n
\n
\n
\n
\n {t('getReadyMessageMobile1')}{t('getReadyMessageMobile2')}\n
\n
\n
\n
{t('getReadyReservationReference')}
\n
\n
\n
{t('getReadyIDDocument')}
\n
\n
\n
{t('getReadyDriversLicense')}
\n
\n
\n
\n
\n
\n
\n props.history.goBack()}\n handleNextClick={() => props.history.push('/select-pickup-details')}\n />\n
\n )\n}\n\nexport default withLang(GetReadyPage)","import axios from 'axios'\n\nimport { session } from '../load-config';\nimport { getLocalTimeZone } from '../utils/utils';\n\nfunction randomString(n = 6) {\n var s = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n return Array(n).join().split(',').map(function () { return s.charAt(Math.floor(Math.random() * s.length)); }).join('');\n}\n\nexport async function getReservation({\n resNumberOrReference,\n stationId,\n resCheckOutDate,\n appVersionId,\n language,\n autoSearch = false,\n secondTry = false,\n paymentsSession = false,\n}) {\n const referrer = encodeURIComponent(document.referrer)\n\n const metricsParams = JSON.parse(sessionStorage.getItem('metricsParams'))\n const originTag = metricsParams?.originTag || undefined\n \n const res = await axios.get('/reservation-mobile', {\n params: {\n resNumberOrReference,\n resCheckOutDate,\n stationTimeZone: getLocalTimeZone(),\n stationId,\n appVersionId,\n nationality: language,\n autoSearch,\n secondTry,\n originTag,\n paymentsSession,\n },\n validateStatus: (status) => (status >= 200 && status < 300) || (status >= 400 && status < 500)\n })\n if (res.status >= 400 && res.status < 500) {\n throw new Error(res.data);\n }\n\n if (res.status >= 200 && res.status < 300) {\n if (res.data.sessionId) {\n session.setSessionId(res.data.sessionId)\n }\n return res.data;\n }\n\n throw new Error();\n}\n","import axios from 'axios'\n\nexport async function getCountries() {\n return (await axios.get('/countries')).data\n}\n","import axios from 'axios'\n\nexport async function validateGoogleCaptcha(value) {\n return (await axios.post('/kiosk-mobile/reCaptcha-validate', { token: value })).data\n}\n","import axios from 'axios'\n\nexport const getStationsConfigurations = async (filters) => {\n const res = (await axios.get(`/stations-configurations`, { params: filters })).data\n return res\n}\n\nexport const getStationConfigurationLocals = async (stationId) => {\n const res = (await axios.get(`/stations-configurations/${stationId}/locals`)).data\n return res;\n}","import axios from 'axios';\n\nasync function validateTaxNumberRequest(countryID, taxNumber, cancelToken) {\n try {\n const res = await axios.post(\n `/validateTaxNumber?countryID=${countryID}&taxNumber=${taxNumber}`,\n {},\n { cancelToken }\n );\n return res.data;\n } catch (err) {\n if (axios.isCancel(err)) {\n console.log('Request canceled', err.message);\n } else {\n console.error(err);\n throw err;\n }\n }\n}\n\nexport default validateTaxNumberRequest;\n\nexport async function getBlockedTaxNumbers() {\n return (await axios.get(`/blocked-tax-numbers`)).data;\n}\n","import React, { useState, useContext, useEffect } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport ReCAPTCHA from \"react-google-recaptcha\"\nimport moment from 'moment'\n\nimport './InputReservationReferencePage.css'\n\nimport { getReservation } from '../../services/GetReservation'\nimport { getCountries } from '../../services/GetCountries'\nimport { getGroupsDetails } from '../../services/GetGroupsDetails'\nimport { validateGoogleCaptcha } from '../../services/ValidateGoogleCaptcha'\nimport { getStationsConfigurations } from '../../services/Stations'\nimport { verifyReservationWithRA } from '../review-rental-agreement/api'\n\nimport { GroupsImagesContext } from '../../domain-repository/GroupsImagesRepository'\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport Loading from '../../components/Loading'\nimport Footer from '../../components/Footer'\nimport withLang from '../../withLang'\nimport { getBlockedTaxNumbers } from '../../services/ValidateTaxNumber'\nimport { saveSessionEnd } from '../../services/Metrics'\nimport { session } from '../../load-config'\n\nfunction invalidSearchReferences(reference) {\n if (reference.toUpperCase().startsWith('DC-')) {\n return 'insertConfirmationNumberAlert'\n }\n return null\n}\n\nfunction InputReservationReferencePage(props) {\n const { t } = useTranslation()\n\n const { getSetGroupsConfigurations } = useContext(GroupsImagesContext)\n const {\n setReservation,\n setCountries,\n setDriverInfo,\n language,\n setAppFlowConfigs,\n appVersionId,\n setSessionId,\n setGroupsDetails,\n pickupDate,\n kioskCurrentStationId,\n setBlockedTaxNumbersList,\n setStationsConfigurations,\n setAdditionalDriverInfo,\n } = useContext(DomainContext);\n\n useEffect(() => {\n async function func() {\n if (session.getSessionId()) {\n await saveSessionEnd()\n setSessionId(null)\n }\n }\n\n func()\n }, [])\n\n const [resReference, setResReference] = useState('')\n const [googleCaptchaResult, setGoogleCaptchaResult] = useState(process.env.REACT_APP_GOOGLE_RECAPTCHA_DISABLE === 'TRUE' ? { isValid: true } : null)\n const [isLoading, setIsLoading] = useState(false)\n\n function handleResReferenceChange(event) { setResReference(event.target.value) }\n\n function onCaptchaChange(value) {\n if (!value) { return }\n validateGoogleCaptcha(value)\n .then(res => {\n if (!res.success) {\n // reset captcha?\n }\n setGoogleCaptchaResult({ isValid: res.success })\n })\n .catch(err => {\n console.log(err)\n setGoogleCaptchaResult({ isValid: false })\n // reset captcha?\n })\n }\n\n function onCaptchaExpire() {\n setGoogleCaptchaResult(null)\n }\n\n function onCaptchaError() {\n // setGoogleCaptchaResult(null)\n }\n\n function handleNextClick(e) {\n if (e) {\n e.preventDefault()\n }\n if (!resReference || !kioskCurrentStationId || !pickupDate || !googleCaptchaResult || !googleCaptchaResult.isValid) { return }\n\n setIsLoading(true)\n getReservationFromReference()\n }\n\n async function getReservationFromReference() {\n setIsLoading(true)\n\n let formatedResNumberOrRefMatches = resReference.match(/(.*)count$/i)\n\n const groupConfig = await getSetGroupsConfigurations()\n\n const blockedTaxNumbersList = await getBlockedTaxNumbers()\n setBlockedTaxNumbersList(blockedTaxNumbersList.blockedTaxNumbers)\n\n Promise.all([\n getReservation({ resNumberOrReference: formatedResNumberOrRefMatches && formatedResNumberOrRefMatches.length > 1 ? formatedResNumberOrRefMatches[1] : resReference, stationId: kioskCurrentStationId, resCheckOutDate: pickupDate, appVersionId, language }),\n getCountries(),\n getGroupsDetails(Object.keys(groupConfig)),\n getStationsConfigurations(),\n ])\n .then(([reservation, countries, groups, stationsConfigurationsRes]) => {\n setIsLoading(false)\n\n if (!reservation || !countries || !groups || groups.length === 0) {\n props.history.push(`/input-reservation-ref-error?resReference=${resReference}`)\n } else {\n if (!reservation.redirectUrl) {\n setReservation(reservation)\n setDriverInfo(reservation.listReservation)\n setAdditionalDriverInfo(reservation.listReservation)\n setAppFlowConfigs(reservation.appFlowConfigs)\n setSessionId(reservation.sessionId)\n }\n setCountries(countries.map(c => ({ ...c, name: t(`country_${c.countryID}`) })))\n setGroupsDetails(groups.groupsDetails)\n setStationsConfigurations(stationsConfigurationsRes.stationsConfigurations)\n\n if (reservation.redirectUrl) {\n return props.history.push(reservation.redirectUrl)\n }\n props.history.push('/review-reservation');\n }\n })\n .catch(err => {\n setIsLoading(false)\n const errorMessage = err?.message || err || null\n props.history.push({ pathname: `/input-reservation-ref-error`, search: `resReference=${resReference}`, state: { errorMessage } })\n });\n }\n\n const searchAlert = invalidSearchReferences(resReference);\n\n return (\n
\n
\n \n
\n
\n
props.history.push('/start')}>\n \"Guerin\"\n
\n
\n
\n
\n
\n
\n
\n \n \n {searchAlert !== null &&\n
\n

{t(searchAlert)}

\n
\n }\n
\n \n
\n
\n
\n
\n
\n
\n props.history.goBack()}\n nextDisabled={!resReference || !googleCaptchaResult || !googleCaptchaResult.isValid}\n handleNextClick={handleNextClick}\n />\n
\n )\n}\n\nexport default withLang(InputReservationReferencePage)\n","import React from 'react'\n\nimport { useTranslation } from 'react-i18next'\n\nfunction getErrorMessage(errorMessage) {\n const defaultMessage = {\n title: 'reservationNotFoundTitle',\n message: 'mobileReservationNotFoundMessage',\n }\n if (!errorMessage) return defaultMessage\n\n if (errorMessage.includes('Invalid reservation status')) {\n return { title: 'mobileInvalidReservationStatusTitle' }\n }\n if (errorMessage.includes(`THE PICKUP DATE CAN'T BE PREVIOUS THAN CURRENT DATE!`)) {\n return { title: 'mobilePickupHasPassedTitle' }\n }\n\n return defaultMessage\n}\n\nfunction InputReservationReferenceErrorPage(props) {\n const { t } = useTranslation()\n\n const resReference = props.location.search.replace('?resReference=', '') || \"\"\n\n const errorWithMessage = getErrorMessage(props.location?.state?.errorMessage)\n return (\n
\n
\n
\n
\n
props.history.push('/start')}>\n \"Guerin\"\n
\n
\n
\n
\n
\n
\n
\n

{t(errorWithMessage.title)}

\n
\n
\n {errorWithMessage.message ?

{t(errorWithMessage.message, { resReference })}

: null}\n
\n \n \n
\n
\n
\n
\n
\n )\n}\n\n\nexport default InputReservationReferenceErrorPage","import React from 'react'\nimport { useTranslation } from \"react-i18next\"\n\nfunction ReviewStations({ pickupStation, pickupDate, dropOffStation, dropOffDate, children }) {\n const { t } = useTranslation()\n\n return (\n
\n
\n
{t('pickup')}
\n

{pickupStation}
{pickupDate}

\n
\n
\n
{t('dropoff')}
\n

{dropOffStation}
{dropOffDate}

\n
\n {children}\n
\n )\n}\n\nexport default ReviewStations","import React from \"react\";\nimport ReactTooltip from \"react-tooltip\";\n\nexport function InfoTooltip({ id, text, position = \"top\", sticky = true }) {\n return (\n <>\n \n \n {text}\n \n \n );\n}\n","import React from 'react'\nimport { useTranslation } from \"react-i18next\"\n\nimport { InfoTooltip } from '../InfoTooltip'\nimport { isElectric } from '../../utils/utils';\n\nfunction ReviewVehicleProperties({ localizationAssets, seats, fuel, consumption, displayExcess, excessForExtras, doors, bags, handbags, transmission, safetyDeposit, style }) {\n const { t } = useTranslation();\n return (\n
\n
\n
\n
\n
\"\"
\n
{isElectric(fuel) ? t('range') : t('consumption')}:{consumption}
\n
\n
\n
\"\"
\n
{t('transmisson')}: {t('vehicles-' + transmission, '')}
\n
\n {displayExcess ?\n
\n
\"\"
\n
{t('excess')}:\n {excessForExtras ? 'ā‚¬ ' + excessForExtras : t('noExcess')}\n \n
\n
\n : ''}\n
\n
\n
\n
\"\"
\n
{t('seats')}: {seats}
\n
\n
\n
\"\"
\n
{t('doors')}: {doors}
\n
\n
\n
\"\"
\n
{t('bags')}: {bags}
\n
\n
\n
\"\"
\n
{t('handbags')}: {handbags}
\n
\n \n
\n
\n
\n )\n}\n\nexport default ReviewVehicleProperties","import React from 'react'\nimport { useTranslation } from \"react-i18next\"\n\nfunction ReviewBanner({\n onLogoClick,\n displayLogo = true,\n logoImgSrc,\n groupImgSrc,\n groupId,\n groupType,\n driverName,\n reference,\n display\n}) {\n const { t } = useTranslation();\n\n return (\n
\n
\n {displayLogo &&\n
\n \"Guerin\"\n
\n }\n {`vehicle\n
\n
\n
\n {t('hi')} {driverName}\n {t('thisIsYourReservation')} {reference}\n
\n
\n {t('group')} {groupId}\n
\n {groupType}\n
\n {t('orSimilar')}\n
\n
\n
\n )\n}\n\nexport default ReviewBanner","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from \"react-i18next\"\nimport moment from 'moment-with-locales-es6'\n\nimport './ReviewReservationPage.css'\n\nimport { DomainContext, CORPORATE_TYPE_ID, getDriversFirstName } from '../../domain-repository/DomainRepository'\nimport { GroupsImagesContext } from '../../domain-repository/GroupsImagesRepository'\n\nimport { FooterWithPrice } from '../../components/Footer'\nimport ReviewStations from '../../components/review/ReviewStations'\nimport ReviewVehicleProperties from '../../components/review/ReviewVehicleProperties'\nimport ReviewBanner from '../../components/review/ReviewBanner'\nimport withLang from '../../withLang'\nimport TrackingPage from '../../components/TrackingPage'\nimport { getPages } from '../../services/Pages'\nimport { getInvalidBirthdatesConfigurations } from '../../services/BirthdatesConfigurations'\nimport { isSafari } from '../../utils/utils'\nimport { useDisableBodyScroll } from '../../utils/useDisableBodyScroll'\n\nfunction ReviewReservationPage(props) {\n const {\n reservation,\n reservationExtras,\n getExcessForExtras,\n rentalAgreementQuoteValue,\n setDriverInfoHasClickedBack,\n setDriverInfoEditMode,\n appFlowConfigs,\n isCorporate,\n groupsDetails,\n flowNextRoute,\n setPages,\n setInvalidBirthdates,\n stationsConfigurations,\n localizationAssets,\n } = useContext(DomainContext)\n\n const safeReservation = reservation || {}\n\n const groupInfo = groupsDetails.find(g => g.id === safeReservation.GroupID) || {}\n\n const { groupsConfigurations } = useContext(GroupsImagesContext)\n\n const { t, i18n } = useTranslation()\n\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n if (safeReservation) {\n setPages(safeReservation.pathPages)\n }\n }, [safeReservation])\n\n useEffect(() => {\n setIsLoading(true)\n getInvalidBirthdatesConfigurations()\n .then(res => {\n setInvalidBirthdates(res)\n setIsLoading(false)\n }).catch(e => {\n setIsLoading(false)\n })\n }, [])\n\n function handleOpenExtrasClick() {\n props.history.push('/review-reservation-extras')\n }\n\n function goToNextPage() {\n if (safeReservation.hasCheckIn) {\n return;\n }\n setDriverInfoHasClickedBack(false)\n setDriverInfoEditMode(false)\n props.history.push(flowNextRoute(props.match.path))\n }\n\n function getStationName(stationId) {\n const station = stationsConfigurations.find(s => s.stationId === stationId)\n const name = station ? t(station.name) : `Station ${stationId}`\n return name \n }\n\n return (\n
\n
\n
\n
\n
\n props.history.push('/start')}\n logoImgSrc={require(`../../assets/images/logo.png`)}\n groupId={safeReservation.GroupID}\n groupType={groupInfo.type}\n groupImgSrc={groupsConfigurations[safeReservation.GroupID] && groupsConfigurations[safeReservation.GroupID]?.imageUrl}\n driverName={getDriversFirstName(safeReservation.DriverName)}\n reference={safeReservation.Reference}\n />\n
\n props.history.push('/start')}\n logoImgSrc={require(`../../assets/images/logo.png`)}\n groupId={safeReservation.GroupID}\n groupType={groupInfo.type}\n groupImgSrc={groupsConfigurations[safeReservation.GroupID] && groupsConfigurations[safeReservation.GroupID]?.imageUrl}\n driverName={getDriversFirstName(safeReservation.DriverName)}\n reference={safeReservation.Reference}\n />\n \n
\n\n \n\n
\n
\n \n
\n
\n \n
\n

{t('reservationOverview')}

\n
\n
\n
\"\"
\n {t('dayCount', { count: safeReservation.raQuote?.nrDays })}\n
\n
\n
{t('included')}
\n
\n
\n
\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n \n
\n
\n
\n props.history.goBack()}\n handleNextClick={goToNextPage}\n nextDisabled={isLoading}\n nextHidden={safeReservation.hasCheckIn}\n />\n
\n )\n}\n\nconst PAGE_ID = 5\nexport default withLang(TrackingPage(ReviewReservationPage, 60))\n\nexport function ReservationReviewFooter({ handleNextClick, handlePrevClick, prevHidden, nextHidden, label, nextDisabled }) {\n return (\n
\n
\n
\"Back\"
\n
{label}
\n
Next
\n
\n
\n )\n}\n\nfunction ReviewReservationBanner({\n onLogoClick,\n displayLogo = true,\n logoImgSrc,\n groupImgSrc,\n groupId,\n groupType,\n driverName,\n reference,\n display\n}) {\n const { t } = useTranslation();\n\n return (\n
\n
\n {displayLogo &&\n
\n \"Guerin\"\n
\n }\n
\n
\n
\n {t('hi')} {driverName}\n {t('thisIsYourReservation')} {reference}\n
\n
\n
\n )\n}\n\nfunction ReviewHero({ handleClick, hasCheckIn }) {\n const { t } = useTranslation();\n return (\n
\n
{t('mobileResReviewHeader')}
\n
\n
\n
X{t('mobileResReviewAdvantage1')}
\n
X{t('mobileResReviewAdvantage2')}
\n
X{t('mobileResReviewAdvantage3')}
\n
\n {hasCheckIn ? null : \n
{t('mobileResReviewHeaderBtn')}
\n }\n
\n {hasCheckIn ? null : \n
{t('mobileResReviewSubHeader1')} {t('mobileResReviewSubHeader2')}
\n }\n
\n )\n}\n\nfunction ReviewLine({ text }) {\n return (\n
\n {text}\n
\n )\n}\n\nfunction ReviewStationsDetails({ pickupStation, pickupDate, dropOffStation, dropOffDate }) {\n const { t } = useTranslation();\n return (\n
\n
\n
{t('pickup')}
\n

{pickupStation}
{pickupDate}

\n
\n
\n
{t('dropoff')}
\n

{dropOffStation}
{dropOffDate}

\n
\n
\n )\n}\n\nfunction ReviewVehicleImage({ groupImgSrc }) {\n return (\n
\n \n
\n )\n}\n\nfunction ReviewVehicleDetails({ fuel, localizationAssets, seats, consumption, displayExcess, excessForExtras, doors, bags, handbags, transmission, safetyDeposit }) {\n const { t } = useTranslation();\n \n const [isOpen, setIsOpen] = useState(false)\n\n useDisableBodyScroll(isOpen)\n\n return (\n
\n
setIsOpen(v => !v)}>{t('mobileResReviewVehicleDetails')}
\n
setIsOpen(false)}>\n
e.stopPropagation()}>\n \n
\n \n
\n
\n )\n}\n\nfunction ReviewVehicleGroup({ groupId, groupType }) {\n const { t } = useTranslation()\n return (\n
\n
{t('group')} {groupId}
\n
{groupType}
\n
{t('orSimilar')}
\n
\n )\n}\n\nfunction ReviewInfoLine({ handleOpenExtrasClick, nrDays }) {\n const { t } = useTranslation()\n return (\n
\n

{t('reservationOverview')}

\n
\n
\"\"
\n {t('dayCount', { count: nrDays })}\n
\n
\n
{t('included')}
\n
\n
\n )\n}","import axios from 'axios'\n\nexport const getInvalidBirthdatesConfigurations = async () => {\n const res = (await axios.get(`/invalid-birthdates`)).data\n return res;\n}","import React, { useContext } from 'react'\nimport { useTranslation } from \"react-i18next\"\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport withLang from '../../withLang'\n\nimport { FooterWithClose } from '../../components/Footer'\nimport TrackingPage from '../../components/TrackingPage'\nimport { InfoTooltip } from '../../components/InfoTooltip'\n\nfunction ReviewReservationExtrasPage(props) {\n const {\n reservationExtras,\n } = useContext(DomainContext)\n\n const { t } = useTranslation()\n\n return (\n
\n
\n
\n
\n
props.history.push('/start')}>\n \"Guerin\"\n
\n
\n
\n
\n
\n

{t('reservationViewIncluded')}

\n
\n {reservationExtras.map(extra => )}\n
\n
\n
\n
\n props.history.goBack()}\n />\n
\n )\n}\n\nexport default withLang(TrackingPage(ReviewReservationExtrasPage, 61))\n\nfunction Extra({ extra }) {\n const { t } = useTranslation()\n\n return (\n
\n
\"\"
\n
\n {t(extra.extraID + 'Name')}\n \n
\n
\n )\n}\n","import axios from 'axios';\n\nexport const DOCUMENT_TYPES = {\n TAX_NUMBER: 0,\n ID: 1,\n PASSAPORT: 2,\n}\n\nexport async function getDriverInfo(docNumber, documentType = DOCUMENT_TYPES.ID) {\n return (await axios.get(`/driver-info/${docNumber}?documentType=${documentType}`)).data\n}\n","export const removeAccents = (string) => {\n\n const characterMap = {\n \"ƀ\": \"A\",\n \"Ɓ\": \"A\",\n \"Ƃ\": \"A\",\n \"ƃ\": \"A\",\n \"Ƅ\": \"A\",\n \"ƅ\": \"A\",\n \"įŗ¤\": \"A\",\n \"įŗ®\": \"A\",\n \"įŗ²\": \"A\",\n \"įŗ“\": \"A\",\n \"įŗ¶\": \"A\",\n \"Ɔ\": \"AE\",\n \"įŗ¦\": \"A\",\n \"įŗ°\": \"A\",\n \"Ȃ\": \"A\",\n \"Ƈ\": \"C\",\n \"įøˆ\": \"C\",\n \"ƈ\": \"E\",\n \"Ɖ\": \"E\",\n \"Ɗ\": \"E\",\n \"Ƌ\": \"E\",\n \"įŗ¾\": \"E\",\n \"įø–\": \"E\",\n \"į»€\": \"E\",\n \"įø”\": \"E\",\n \"įøœ\": \"E\",\n \"Ȇ\": \"E\",\n \"ƌ\": \"I\",\n \"ƍ\": \"I\",\n \"Ǝ\": \"I\",\n \"Ə\": \"I\",\n \"įø®\": \"I\",\n \"Ȋ\": \"I\",\n \"Ɛ\": \"D\",\n \"Ƒ\": \"N\",\n \"ƒ\": \"O\",\n \"Ɠ\": \"O\",\n \"Ɣ\": \"O\",\n \"ƕ\": \"O\",\n \"Ɩ\": \"O\",\n \"Ƙ\": \"O\",\n \"į»\": \"O\",\n \"į¹Œ\": \"O\",\n \"į¹’\": \"O\",\n \"Ȏ\": \"O\",\n \"ƙ\": \"U\",\n \"ƚ\": \"U\",\n \"ƛ\": \"U\",\n \"Ɯ\": \"U\",\n \"Ɲ\": \"Y\",\n \"Ć \": \"a\",\n \"Ć”\": \"a\",\n \"Ć¢\": \"a\",\n \"Ć£\": \"a\",\n \"Ƥ\": \"a\",\n \"Ć„\": \"a\",\n \"įŗ„\": \"a\",\n \"įŗÆ\": \"a\",\n \"įŗ³\": \"a\",\n \"įŗµ\": \"a\",\n \"įŗ·\": \"a\",\n \"Ʀ\": \"ae\",\n \"įŗ§\": \"a\",\n \"įŗ±\": \"a\",\n \"ȃ\": \"a\",\n \"Ƨ\": \"c\",\n \"įø‰\": \"c\",\n \"ĆØ\": \"e\",\n \"Ć©\": \"e\",\n \"ĆŖ\": \"e\",\n \"Ć«\": \"e\",\n \"įŗæ\": \"e\",\n \"įø—\": \"e\",\n \"į»\": \"e\",\n \"įø•\": \"e\",\n \"įø\": \"e\",\n \"ȇ\": \"e\",\n \"Ƭ\": \"i\",\n \"Ć­\": \"i\",\n \"Ć®\": \"i\",\n \"ĆÆ\": \"i\",\n \"įøÆ\": \"i\",\n \"ȋ\": \"i\",\n \"Ć°\": \"d\",\n \"Ʊ\": \"n\",\n \"Ć²\": \"o\",\n \"Ć³\": \"o\",\n \"Ć“\": \"o\",\n \"Ƶ\": \"o\",\n \"ƶ\": \"o\",\n \"Ćø\": \"o\",\n \"į»‘\": \"o\",\n \"į¹\": \"o\",\n \"į¹“\": \"o\",\n \"ȏ\": \"o\",\n \"Ć¹\": \"u\",\n \"Ćŗ\": \"u\",\n \"Ć»\": \"u\",\n \"Ć¼\": \"u\",\n \"Ć½\": \"y\",\n \"Ćæ\": \"y\",\n \"Ā\": \"A\",\n \"ā\": \"a\",\n \"Ă\": \"A\",\n \"ă\": \"a\",\n \"Ą\": \"A\",\n \"ą\": \"a\",\n \"Ć\": \"C\",\n \"ć\": \"c\",\n \"Ĉ\": \"C\",\n \"ĉ\": \"c\",\n \"Ċ\": \"C\",\n \"ċ\": \"c\",\n \"Č\": \"C\",\n \"č\": \"c\",\n \"CĢ†\": \"C\",\n \"cĢ†\": \"c\",\n \"Ď\": \"D\",\n \"ď\": \"d\",\n \"Đ\": \"D\",\n \"đ\": \"d\",\n \"Ē\": \"E\",\n \"ē\": \"e\",\n \"Ĕ\": \"E\",\n \"ĕ\": \"e\",\n \"Ė\": \"E\",\n \"ė\": \"e\",\n \"Ę\": \"E\",\n \"ę\": \"e\",\n \"Ě\": \"E\",\n \"ě\": \"e\",\n \"Ĝ\": \"G\",\n \"Ē“\": \"G\",\n \"ĝ\": \"g\",\n \"Ēµ\": \"g\",\n \"Ğ\": \"G\",\n \"ğ\": \"g\",\n \"Ä \": \"G\",\n \"Ä”\": \"g\",\n \"Ä¢\": \"G\",\n \"Ä£\": \"g\",\n \"Ĥ\": \"H\",\n \"Ä„\": \"h\",\n \"Ħ\": \"H\",\n \"ħ\": \"h\",\n \"įøŖ\": \"H\",\n \"įø«\": \"h\",\n \"ÄØ\": \"I\",\n \"Ä©\": \"i\",\n \"ÄŖ\": \"I\",\n \"Ä«\": \"i\",\n \"Ĭ\": \"I\",\n \"Ä­\": \"i\",\n \"Ä®\": \"I\",\n \"ÄÆ\": \"i\",\n \"Ä°\": \"I\",\n \"ı\": \"i\",\n \"IJ\": \"IJ\",\n \"ij\": \"ij\",\n \"Ä“\": \"J\",\n \"ĵ\": \"j\",\n \"Ķ\": \"K\",\n \"Ä·\": \"k\",\n \"įø°\": \"K\",\n \"įø±\": \"k\",\n \"KĢ†\": \"K\",\n \"kĢ†\": \"k\",\n \"Ĺ\": \"L\",\n \"Äŗ\": \"l\",\n \"Ä»\": \"L\",\n \"ļ\": \"l\",\n \"Ľ\": \"L\",\n \"ľ\": \"l\",\n \"Äæ\": \"L\",\n \"ŀ\": \"l\",\n \"Ł\": \"l\",\n \"ł\": \"l\",\n \"įø¾\": \"M\",\n \"įøæ\": \"m\",\n \"MĢ†\": \"M\",\n \"mĢ†\": \"m\",\n \"Ń\": \"N\",\n \"ń\": \"n\",\n \"Ņ\": \"N\",\n \"ņ\": \"n\",\n \"Ň\": \"N\",\n \"ň\": \"n\",\n \"ʼn\": \"n\",\n \"NĢ†\": \"N\",\n \"nĢ†\": \"n\",\n \"Ō\": \"O\",\n \"ō\": \"o\",\n \"Ŏ\": \"O\",\n \"ŏ\": \"o\",\n \"Ő\": \"O\",\n \"ő\": \"o\",\n \"Œ\": \"OE\",\n \"œ\": \"oe\",\n \"PĢ†\": \"P\",\n \"pĢ†\": \"p\",\n \"Ŕ\": \"R\",\n \"ŕ\": \"r\",\n \"Ŗ\": \"R\",\n \"ŗ\": \"r\",\n \"Ř\": \"R\",\n \"ř\": \"r\",\n \"RĢ†\": \"R\",\n \"rĢ†\": \"r\",\n \"Ȓ\": \"R\",\n \"ȓ\": \"r\",\n \"Ś\": \"S\",\n \"ś\": \"s\",\n \"Ŝ\": \"S\",\n \"ŝ\": \"s\",\n \"Ş\": \"S\",\n \"Ș\": \"S\",\n \"ș\": \"s\",\n \"ş\": \"s\",\n \"Å \": \"S\",\n \"Å”\": \"s\",\n \"Å¢\": \"T\",\n \"Å£\": \"t\",\n \"ț\": \"t\",\n \"Ț\": \"T\",\n \"Ť\": \"T\",\n \"Å„\": \"t\",\n \"Ŧ\": \"T\",\n \"ŧ\": \"t\",\n \"TĢ†\": \"T\",\n \"tĢ†\": \"t\",\n \"ÅØ\": \"U\",\n \"Å©\": \"u\",\n \"ÅŖ\": \"U\",\n \"Å«\": \"u\",\n \"Ŭ\": \"U\",\n \"Å­\": \"u\",\n \"Å®\": \"U\",\n \"ÅÆ\": \"u\",\n \"Å°\": \"U\",\n \"ű\": \"u\",\n \"Ų\": \"U\",\n \"ų\": \"u\",\n \"Ȗ\": \"U\",\n \"ȗ\": \"u\",\n \"VĢ†\": \"V\",\n \"vĢ†\": \"v\",\n \"Å“\": \"W\",\n \"ŵ\": \"w\",\n \"įŗ‚\": \"W\",\n \"įŗƒ\": \"w\",\n \"XĢ†\": \"X\",\n \"xĢ†\": \"x\",\n \"Ŷ\": \"Y\",\n \"Å·\": \"y\",\n \"Åø\": \"Y\",\n \"YĢ†\": \"Y\",\n \"yĢ†\": \"y\",\n \"Ź\": \"Z\",\n \"Åŗ\": \"z\",\n \"Å»\": \"Z\",\n \"ż\": \"z\",\n \"Ž\": \"Z\",\n \"ž\": \"z\",\n \"Åæ\": \"s\",\n \"ʒ\": \"f\",\n \"Ę \": \"O\",\n \"Ę”\": \"o\",\n \"ĘÆ\": \"U\",\n \"Ę°\": \"u\",\n \"Ē\": \"A\",\n \"ĒŽ\": \"a\",\n \"Ē\": \"I\",\n \"Ē\": \"i\",\n \"Ē‘\": \"O\",\n \"Ē’\": \"o\",\n \"Ē“\": \"U\",\n \"Ē”\": \"u\",\n \"Ē•\": \"U\",\n \"Ē–\": \"u\",\n \"Ē—\": \"U\",\n \"Ē˜\": \"u\",\n \"Ē™\": \"U\",\n \"Ēš\": \"u\",\n \"Ē›\": \"U\",\n \"Ēœ\": \"u\",\n \"į»Ø\": \"U\",\n \"į»©\": \"u\",\n \"į¹ø\": \"U\",\n \"į¹¹\": \"u\",\n \"Ēŗ\": \"A\",\n \"Ē»\": \"a\",\n \"Ē¼\": \"AE\",\n \"Ē½\": \"ae\",\n \"Ē¾\": \"O\",\n \"Ēæ\": \"o\",\n \"ƞ\": \"TH\",\n \"Ć¾\": \"th\",\n \"į¹”\": \"P\",\n \"į¹•\": \"p\",\n \"į¹¤\": \"S\",\n \"į¹„\": \"s\",\n \"XĢ\": \"X\",\n \"xĢ\": \"x\",\n \"Šƒ\": \"Š“\",\n \"ѓ\": \"Š³\",\n \"ŠŒ\": \"Šš\",\n \"ќ\": \"Šŗ\",\n \"AĢ‹\": \"A\",\n \"aĢ‹\": \"a\",\n \"EĢ‹\": \"E\",\n \"eĢ‹\": \"e\",\n \"IĢ‹\": \"I\",\n \"iĢ‹\": \"i\",\n \"Ēø\": \"N\",\n \"Ē¹\": \"n\",\n \"į»’\": \"O\",\n \"į»“\": \"o\",\n \"į¹\": \"O\",\n \"į¹‘\": \"o\",\n \"į»Ŗ\": \"U\",\n \"į»«\": \"u\",\n \"įŗ€\": \"W\",\n \"įŗ\": \"w\",\n \"į»²\": \"Y\",\n \"į»³\": \"y\",\n \"Ȁ\": \"A\",\n \"ȁ\": \"a\",\n \"Ȅ\": \"E\",\n \"ȅ\": \"e\",\n \"Ȉ\": \"I\",\n \"ȉ\": \"i\",\n \"Ȍ\": \"O\",\n \"ȍ\": \"o\",\n \"Ȑ\": \"R\",\n \"ȑ\": \"r\",\n \"Ȕ\": \"U\",\n \"ȕ\": \"u\",\n \"BĢŒ\": \"B\",\n \"bĢŒ\": \"b\",\n \"ČĢ£\": \"C\",\n \"čĢ£\": \"c\",\n \"ƊĢŒ\": \"E\",\n \"ĆŖĢŒ\": \"e\",\n \"FĢŒ\": \"F\",\n \"fĢŒ\": \"f\",\n \"Ē¦\": \"G\",\n \"Ē§\": \"g\",\n \"Ȟ\": \"H\",\n \"ȟ\": \"h\",\n \"JĢŒ\": \"J\",\n \"Ē°\": \"j\",\n \"ĒØ\": \"K\",\n \"Ē©\": \"k\",\n \"MĢŒ\": \"M\",\n \"mĢŒ\": \"m\",\n \"PĢŒ\": \"P\",\n \"pĢŒ\": \"p\",\n \"QĢŒ\": \"Q\",\n \"qĢŒ\": \"q\",\n \"ŘĢ©\": \"R\",\n \"řĢ©\": \"r\",\n \"į¹¦\": \"S\",\n \"į¹§\": \"s\",\n \"VĢŒ\": \"V\",\n \"vĢŒ\": \"v\",\n \"WĢŒ\": \"W\",\n \"wĢŒ\": \"w\",\n \"XĢŒ\": \"X\",\n \"xĢŒ\": \"x\",\n \"YĢŒ\": \"Y\",\n \"yĢŒ\": \"y\",\n \"AĢ§\": \"A\",\n \"aĢ§\": \"a\",\n \"BĢ§\": \"B\",\n \"bĢ§\": \"b\",\n \"įø\": \"D\",\n \"įø‘\": \"d\",\n \"ČØ\": \"E\",\n \"Č©\": \"e\",\n \"ʐĢ§\": \"E\",\n \"ɛĢ§\": \"e\",\n \"įøØ\": \"H\",\n \"įø©\": \"h\",\n \"IĢ§\": \"I\",\n \"iĢ§\": \"i\",\n \"ʗĢ§\": \"I\",\n \"ÉØĢ§\": \"i\",\n \"MĢ§\": \"M\",\n \"mĢ§\": \"m\",\n \"OĢ§\": \"O\",\n \"oĢ§\": \"o\",\n \"QĢ§\": \"Q\",\n \"qĢ§\": \"q\",\n \"UĢ§\": \"U\",\n \"uĢ§\": \"u\",\n \"XĢ§\": \"X\",\n \"xĢ§\": \"x\",\n \"ZĢ§\": \"Z\",\n \"zĢ§\": \"z\",\n };\n\n const chars = Object.keys(characterMap).join('|');\n const allAccents = new RegExp(chars, 'g');\n\n function matcher(match) {\n return characterMap[match];\n }\n\n return string.replace(allAccents, matcher);\n};\n\nexport const escapeRegExp = (text) => {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport function capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n","\nexport function driverInfoReducer(state, action) {\n switch (action.type) {\n\n case 'FIELD':\n return { ...state, [action.payload.field]: action.payload.value }\n\n case 'SET_VALUES':\n return { ...state, ...action.payload, hasTyped: true }\n\n case 'TOGGLE_VALIDATIONS':\n return { ...state, validateInputs: !state.validateInputs };\n\n case 'SET_CAN_NEXT':\n return { ...state, canNext: action.payload };\n\n case 'SET_IS_LOADING':\n return { ...state, isLoading: action.payload };\n\n case 'SET_LOADING':\n return { ...state, loading: action.payload };\n\n case 'RESET':\n return { ...state, loading: false, canNext: false, validateInputs: false };\n\n default:\n return state;\n }\n}","import React from 'react'\nimport { useQuery } from 'react-query';\n\nimport { buildFieldsValidationErrors, padZero } from '../../utils/utils'\nimport { removeAccents } from '../../utils/string-utils'\n\nimport { DOCUMENT_TYPES, getDriverInfo } from '../../services/GetDriverInfo';\n\nexport function checkDriverInfoStepEditMode(searchUrl) {\n return searchUrl.includes('?edit=true')\n}\n\nexport const validValidationObject = { isValid: true };\n\nexport function DriverFieldsErrors({ fieldsValidation }) {\n const fieldsValidationFiltered = buildFieldsValidationErrors(fieldsValidation)\n\n return fieldsValidationFiltered.length > 0 ? (\n
\n {fieldsValidationFiltered.map(v =>\n

{v.message}

\n )}\n
\n ) : null\n}\n\nexport function removePtDriversLicenceInvalidSpaces(plateNumber) {\n if(!plateNumber) return plateNumber\n const index = plateNumber.search(/[0-9]/g)\n const init = plateNumber.slice(0, index)\n const end = plateNumber.slice(index)\n return init.replaceAll(' ', '') + end\n}\n\nexport const MIN_DOCUMENT_ID_DIGITS = 1\n\n\nexport function filterCountries(list, value) {\n if (!value) {\n return list;\n }\n return list\n .filter(c =>\n removeAccents(c.name)\n .toLowerCase()\n .startsWith(removeAccents(value).toLowerCase())\n )\n .slice(0, 4);\n}\n\nexport function mapCountryToOption(country) {\n return {\n label: country.name,\n value: country.countryID\n };\n}\n\nexport const COUNTRY_CODE_PREFIX = '+';\n\nexport const getFormatedPhoneAndCountryCode = (phone, countryPhoneCodes) => {\n if (!phone || !countryPhoneCodes || !phone.startsWith('+')) return { phone };\n\n if (phone.startsWith('+')) {\n const matchingCode = countryPhoneCodes.map(c => '+' + c.PhoneCountryCode).find(c => phone.startsWith(c));\n return {\n phone: phone\n .replace(matchingCode, '')\n .replace(/ /g, '')\n .trim(),\n phoneCountryCode: matchingCode\n };\n } else if (phone.startsWith('00')) {\n const matchingCode = countryPhoneCodes.map(c => '00' + c.PhoneCountryCode).find(c => phone.startsWith(c));\n return {\n phone: phone\n .replace(matchingCode, '')\n .replace(/ /g, '')\n .trim(),\n phoneCountryCode: matchingCode.replace('00', COUNTRY_CODE_PREFIX)\n };\n }\n return { phone };\n};\n\nexport function isInvalidBirthDate(day, month, year, invalidBirthdates) {\n if (day && month && year) {\n const birthDate = `${year}-${padZero(month)}-${padZero(day)}`;\n return invalidBirthdates.some(b => b === birthDate);\n }\n return false;\n}\n\nexport function isPortugalCountry(country) {\n return country === 'Portugal';\n}\n\nexport function hasDriverValues(driverInfo) {\n if (\n driverInfo.countryID &&\n driverInfo.driversLicense &&\n driverInfo.fullName &&\n driverInfo.birthDate &&\n driverInfo.address &&\n driverInfo.postalCode &&\n driverInfo.email &&\n driverInfo.documentID &&\n driverInfo.iDIssuedPlace\n )\n return true\n\n return false\n}\n\nexport function useGetDriverInfo(documentNumber, documentType = DOCUMENT_TYPES.ID, enabled = false, handleSuccess) {\n return useQuery(\n ['get-driver-info', 'type', documentType, documentNumber],\n () => getDriverInfo(documentNumber, documentType),\n { \n enabled,\n staleTime: 60 * 1000,\n onSuccess: (newDriverInfo) => {\n handleSuccess(newDriverInfo)\n }\n }\n )\n}\n","import axios from 'axios';\n\nasync function validatePostalCodeRequest(countryID, postalCode, cancelToken) {\n try {\n const res = await axios.post(\n `/validatePostalCode?countryID=${countryID}&postalCode=${postalCode}`,\n {},\n { cancelToken }\n );\n return res.data;\n } catch (err) {\n if (axios.isCancel(err)) {\n console.log('Request canceled', err.message);\n } else {\n console.error(err);\n throw err;\n }\n }\n}\n\nexport default validatePostalCodeRequest;\n","import axios from 'axios';\n\nexport async function validateDriverAddress(address) {\n const res = await axios.post(\n `/validateDriverAddress`,\n { address },\n );\n return res.data;\n}\n\nexport async function saveSessionDriverAddressConfirmation() {\n const res = await axios.post(\n `/session-validate-address`\n );\n return res.data;\n}\n","import moment from 'moment';\nimport { useQuery } from 'react-query';\n\nimport validateTaxNumberRequest from '../../services/ValidateTaxNumber';\n\nimport { buildMomentFromDateString, hasAtLeastXDigits, isPortugalCountryId, padZero, PORTUGAL_COUNTRY_ID, useDebouncedValue } from '../../utils/utils';\nimport { escapeRegExp, removeAccents } from '../../utils/string-utils';\nimport validatePostalCodeRequest from '../../services/ValidatePostalCode';\nimport { validateDriverAddress } from '../../services/ValidateDriverAddress';\n\nexport const MIN_DRIVER_LICENCE_PT_DIGITS = 1;\n\nconst EMAIL_PATTERN = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nconst MIN_DOCUMENT_ID_DIGITS = 1;\nexport function validateDocumentID(t, documentID) {\n return documentID\n ? hasAtLeastXDigits(documentID, MIN_DOCUMENT_ID_DIGITS)\n ? { isValid: true }\n : { isValid: false, message: t('invalidDocumentID') }\n : { isValid: false, message: t('emptyDocumentID') };\n}\n\nexport function validateCountry(t, countryName, countries) {\n if (!countryName) {\n return { isValid: false, message: t('emptyCountry') };\n }\n const selectedCountry = countries.find(c => c.name.toLowerCase() === countryName.toLowerCase());\n if (!selectedCountry) {\n return { isValid: false, message: t('invalidCountry') };\n }\n return { isValid: true };\n}\n\nfunction isCoporporateNif(num) {\n return (num + '').startsWith('5') || (num + '').startsWith('6');\n}\n\nexport function useValidateTaxNumber(t, taxNumber, blockedTaxNumbersList, countryID) {\n return useQuery(\n ['validateTaxNumber', taxNumber, 'country', countryID],\n async () => {\n if (!countryID) {\n return Promise.resolve({ isValid: false });\n }\n if (countryID && !isPortugalCountryId(countryID)) {\n return Promise.resolve({ isValid: true });\n }\n if (!taxNumber || taxNumber.length !== 9 || taxNumber === '999999999') {\n return Promise.resolve({ isValid: false, message: t('invalidTaxNumber') });\n }\n if (blockedTaxNumbersList.find(t => t === taxNumber)) {\n return Promise.resolve({ isValid: false, message: t('invalidTaxNumber') });\n }\n if (isCoporporateNif(taxNumber)) {\n return Promise.resolve({ isValid: false, message: t('invalidCorporateTaxNumber') });\n }\n\n const isValid = await validateTaxNumberRequest('33', taxNumber);\n return { isValid, message: isValid ? undefined : t('invalidTaxNumber') };\n },\n {\n refetchOnWindowFocus: false,\n staleTime: 60 * 1000,\n }\n );\n}\n\nexport function validateNotEmpty(t, value, messageKey) {\n return value ? { isValid: true } : { isValid: false, message: t(messageKey) };\n}\n\nexport function validateDate(t, day, month, year, messageKey) {\n const date = `${year}-${month}-${day}`;\n if (\n day &&\n month &&\n year &&\n Number.isInteger(Number(day)) &&\n Number.isInteger(Number(month)) &&\n Number.isInteger(Number(year)) &&\n year.toString().length === 4 &&\n buildMomentFromDateString(date).isValid() &&\n buildMomentFromDateString(date)\n .startOf('day')\n .isAfter(moment().startOf('day'))\n ) {\n return { isValid: true };\n }\n return { isValid: false, message: t(messageKey) };\n}\n\nexport function isMaxDayToInput(day) {\n return !day ? false : Number(day) > 3 || day.length === 2;\n}\n\nexport function isMaxMonthToInput(month) {\n return !month ? false : Number(month) > 1 || month.length === 2;\n}\n\nconst COUNTRY_CODE_PREFIX = '+';\n\nexport function validatePhoneCountryCode(t, phoneCountryCode, countries) {\n const countriesPhoneCodes = countries\n .filter(c => c.PhoneCountryCode)\n .map(c => `${COUNTRY_CODE_PREFIX}${c.PhoneCountryCode}`);\n\n return phoneCountryCode && !countriesPhoneCodes.includes(phoneCountryCode.trim())\n ? { isValid: false, message: t('phoneCountryCodeInvalid') }\n : { isValid: true };\n}\n\nexport function validateFullName(t, fullName, surname, firstName, differentReservationNameCounter, dispatch) {\n const resDriverNameParts = `${firstName} ${surname}`.split(' ').filter(v => v !== '');\n const matchesReservationName =\n resDriverNameParts.find(\n s => removeAccents(fullName).match(new RegExp(escapeRegExp(removeAccents(s)), 'gi')) === null\n ) === undefined;\n\n if (fullName && !matchesReservationName) {\n if (differentReservationNameCounter === 2) {\n dispatch({ type: 'SET_VALUE', payload: { errorModal: true } });\n }\n dispatch({ type: 'INCREMENT_DIFFERENT_RESERVATION_NAME_COUNTER' });\n }\n\n return !fullName\n ? { isValid: false, message: t('emptyFullName') }\n : matchesReservationName\n ? { isValid: true }\n : { isValid: false, message: t('fullNameReservationMismatch') };\n}\n\nexport function validateTitle() {\n return { isValid: true };\n}\n\nexport function validateEmail(t, email) {\n if (!email) {\n return { isValid: false, message: t('emptyEmail') };\n }\n return email.match(EMAIL_PATTERN) ? { isValid: true } : { isValid: false, message: t('invalidEmail') };\n}\n\nexport function validateEmailConfirm(t, email, emailConfirm) {\n if (!emailConfirm) {\n return { isValid: false, message: t('emptyEmail') };\n }\n if (!emailConfirm.match(EMAIL_PATTERN)) {\n return { isValid: false, message: t('invalidEmail') };\n }\n if (email && emailConfirm && email.toUpperCase() !== emailConfirm.toUpperCase()) {\n return { isValid: false, message: t('invalidEmailsMatch') };\n }\n return { isValid: true };\n}\n\nfunction validPortugueseDriversLicence(number) {\n return /^[a-zA-Z]{1,2}-\\d{1,7} \\d{1}$/g.test(number);\n}\n\nexport function validateDriversLicense(t, driversLicense, isPT) {\n return driversLicense\n ? {\n isValid: isPT\n ? validPortugueseDriversLicence(driversLicense)\n : hasAtLeastXDigits(driversLicense, MIN_DRIVER_LICENCE_PT_DIGITS),\n message: t('invalidDriversLicense', isPT ? { format: 'Ex: AA-1234567 8' } : {})\n }\n : { isValid: false, message: t('emptyDriversLicense') };\n}\n\nexport function validateDriversLicenseIssuedDate(\n t,\n driversLicenseIssuedDay,\n driversLicenseIssuedMonth,\n driversLicenseIssuedYear,\n issuedDateOptional\n) {\n if (\n issuedDateOptional &&\n !driversLicenseIssuedDay &&\n !driversLicenseIssuedMonth &&\n !driversLicenseIssuedYear\n ) {\n return { isValid: true };\n }\n if (\n driversLicenseIssuedDay &&\n driversLicenseIssuedMonth &&\n driversLicenseIssuedYear &&\n Number.isInteger(Number(driversLicenseIssuedDay)) &&\n Number.isInteger(Number(driversLicenseIssuedMonth)) &&\n Number.isInteger(Number(driversLicenseIssuedYear)) &&\n driversLicenseIssuedYear.toString().length === 4\n ) {\n const driversLicenseIssuedDate = `${driversLicenseIssuedYear}-${driversLicenseIssuedMonth}-${driversLicenseIssuedDay}`;\n if (moment().diff(driversLicenseIssuedDate, 'years') < 1) {\n return { isValid: false, message: t('notExperiencedEnoughToDrivre') };\n }\n return buildMomentFromDateString(driversLicenseIssuedDate).isValid()\n ? { isValid: true }\n : { isValid: false, message: t('invalidDriversLicenseIssuedDate') };\n }\n return { isValid: false, message: t('invalidDriversLicenseIssuedDate') };\n}\n\nexport function validateDriversLicenseExpirationDate(\n t,\n driversLicenseExpirationDay,\n driversLicenseExpirationMonth,\n driversLicenseExpirationYear,\n expireDateOptional,\n driversLicenseIssuedDay,\n driversLicenseIssuedMonth,\n driversLicenseIssuedYear,\n issuedDateOptional,\n issuedDateValid,\n) {\n if (\n expireDateOptional &&\n !driversLicenseExpirationDay &&\n !driversLicenseExpirationMonth &&\n !driversLicenseExpirationYear\n ) {\n return { isValid: true };\n }\n\n if (\n driversLicenseExpirationDay &&\n driversLicenseExpirationMonth &&\n driversLicenseExpirationYear &&\n Number.isInteger(Number(driversLicenseExpirationDay)) &&\n Number.isInteger(Number(driversLicenseExpirationMonth)) &&\n Number.isInteger(Number(driversLicenseExpirationYear)) &&\n driversLicenseExpirationYear.toString().length === 4\n ) {\n const driversLicenseExpirationDate = `${driversLicenseExpirationYear}-${driversLicenseExpirationMonth}-${driversLicenseExpirationDay}`;\n const driversLicenseIssuedDate = issuedDateOptional && !issuedDateValid ? null\n : `${driversLicenseIssuedYear}-${driversLicenseIssuedMonth}-${driversLicenseIssuedDay}`;\n\n if (driversLicenseIssuedDate && buildMomentFromDateString(driversLicenseExpirationDate).isSameOrBefore(buildMomentFromDateString(driversLicenseIssuedDate))) {\n return { isValid: false, message: t('driversLicenseExpirationDateBeforeIssuedDate') };\n }\n const res =\n buildMomentFromDateString(driversLicenseExpirationDate).isValid() && buildMomentFromDateString(driversLicenseExpirationDate).isAfter(moment());\n return res ? { isValid: true } : { isValid: false, message: t('invalidDriversLicenseExpirationDate') };\n }\n return { isValid: false, message: t('invalidDriversLicenseExpirationDate') };\n}\n\nexport function useValidatePostalCode(t, postalCode, countryID) {\n return useQuery(\n ['validatePostalCode', postalCode],\n async () => {\n if (!postalCode || postalCode.trim().length === 0) {\n return Promise.resolve({ isValid: false, message: t('emptyPostalCode') });\n }\n\n if (countryID === PORTUGAL_COUNTRY_ID) {\n return postalCode && postalCode.length === 8 && (await validatePostalCodeRequest(countryID, postalCode))\n ? Promise.resolve({ isValid: true })\n : Promise.resolve({\n isValid: false,\n message: t('invalidPostalCode')\n });\n }\n return Promise.resolve({ isValid: true });\n },\n {\n refetchOnWindowFocus: false,\n staleTime: 60 * 1000\n }\n );\n}\n\nexport function useValidateAddress(t, address, doorNumber, skipAddressValidation) {\n const getInvalidAdressMessageType = message => {\n const types = {\n [\"Falta Morada - campo em branco ou '0' ou '.'.\"]: 'emptyAddress',\n ['Morada incompleta - se nĆ£o contiver no mĆ­nimo 5 letras + 1 espaƧo em branco + 1 algarismo.']:\n 'invalidAddressIncomplete',\n ['Falta nĀŗ de Porta - Tem morada mas nĆ£o contĆ©m algarismos.']: 'invalidAddressDoorNumber'\n };\n return types[message] || 'InvalidAddressResponse';\n };\n\n const addressFormatted = doorNumber ? `${address} ${doorNumber}` : address\n const debouncedAddress = useDebouncedValue(addressFormatted, 800)\n\n return useQuery(\n ['validateAddress', debouncedAddress, skipAddressValidation],\n async () => {\n if (skipAddressValidation) {\n return Promise.resolve({ isValid: true });\n }\n\n if (!address) {\n return Promise.resolve({ isValid: false, message: t('emptyAddress') });\n }\n\n const validateAddressRes = await validateDriverAddress(addressFormatted);\n if (validateAddressRes.hasError) {\n const messageId = getInvalidAdressMessageType(validateAddressRes.message);\n const missingDoorNumberAlert = !doorNumber && !/\\d/.test(address) && messageId === 'invalidAddressIncomplete';\n if (missingDoorNumberAlert) {\n return { isValid: false, invalidDoorNumberAlert: true, message: t(messageId) };\n }\n return { isValid: false, invalidAddressAlert: true, message: t(messageId) };\n }\n return { isValid: true };\n },\n {\n refetchOnWindowFocus: false,\n staleTime: 60 * 1000\n }\n );\n}\n\nexport function validateCity(t, city, countryID) {\n if (countryID === PORTUGAL_COUNTRY_ID) {\n return { isValid: true };\n }\n return city ? { isValid: true } : { isValid: false, message: t('emptyCity') };\n}\n\nexport function additionalDriverFieldsPresent(values) {\n return values && values.fullName && values.birthDate && values.driversLicenseIssuedPlace && values.driversLicense\n && values.driversLicenseIssuedDate && values.driversLicenseExpirationDate\n}\n","import React, { useCallback, useRef } from 'react'\n\nimport Select from 'react-select'\n\nfunction DriverInfoDropdown({ name, label, placeholder, value, onChange, options, disabled, search, wrapperClassName, classNamePrefix = 'dropdown', validationObject }) {\n const dropdownRef = useRef()\n\n const handleLabelClick = useCallback(() => {\n if (dropdownRef.current) {\n dropdownRef.current.focus()\n }\n }, [dropdownRef])\n\n const hasError = (!validationObject?.isValid) || false\n \n return (\n
\n \n \n {hasError &&
{validationObject?.message}
}\n
\n )\n}\n\nexport default DriverInfoDropdown\n","import React from 'react'\n\nfunction Breadcrumbs({ title, active, progress, }) {\n return (\n
\n
\n
\n
    \n
  • 1
  • \n
  • 2
  • \n
  • 3
  • \n
  • 4
  • \n
\n
\n
{title}
\n
\n )\n}\n\nexport default Breadcrumbs","import React from 'react'\n\nimport Breadcrumbs from './Breadcrumbs'\n\nfunction PageHeader({ title, active, progress, handleLogoClick }) {\n return (\n
\n
\n
\n
\n
\n \"Guerin\"\n
\n
\n \n
\n
\n
\n )\n}\n\nexport default PageHeader","import React from \"react\";\n\nimport Loading from \"../../../components/Loading\";\n\nexport function DriverInfoPage({ isLoading, children }) {\n return isLoading ? (\n \n ) : (\n children\n );\n}\n","import React from \"react\";\n\nfunction DriverInfoInput({\n name,\n id,\n placeholder,\n value,\n onChange,\n type = \"text\",\n autoComplete,\n className,\n error,\n disabled,\n}) {\n return (\n \n );\n}\n\nexport default DriverInfoInput;\n\nexport function LabeledDriverInfoInput({\n type = \"text\",\n name,\n id,\n label,\n labelComp,\n value,\n onChange,\n validationObject,\n placeholder,\n autoComplete,\n disabled,\n className,\n wrapperStyle,\n}) {\n const hasError = (!validationObject?.isValid) || false\n return (\n
\n \n onChange(e.target.value)}\n id={id}\n name={name}\n error={hasError}\n placeholder={placeholder}\n autoComplete={autoComplete}\n disabled={disabled}\n className={className}\n />\n {hasError &&
{validationObject?.message}
}\n
\n );\n}\n","import React from 'react'\n\nexport function Spacer() {\n return
\n}\n","import React from 'react'\n\nfunction DriverInfoOptionsInput({ name, options, value, onChange, className, error, disabled }) {\n return (\n
\n {options.map(option =>\n
!disabled && onChange(option.value)} className={`drivers-info__options-input-item ${value === option.value ? 'selected' : ''}`}>\n {option.text}\n
\n )}\n
\n )\n}\n\nexport default DriverInfoOptionsInput\n","import React from \"react\";\n\nimport DriverInfoInput from \"./DriverInfoInput\";\nimport { isMaxDayToInput, isMaxMonthToInput } from \"../driver-fields-validations\";\n\nfunction DriverDateInput({\n t,\n label,\n labelComp,\n dayValue,\n monthValue,\n yearValue,\n dayName,\n monthName,\n yearName,\n onDayChange,\n onMonthChange,\n onYearChange,\n validationObject,\n disabled,\n autoNextFocus,\n}) {\n const hasError = (!validationObject?.isValid) || false\n\n const monthRef = React.useRef()\n const yearRef = React.useRef()\n\n return (\n
\n \n
\n
\n \n {\n const value = e.target.value\n onDayChange(value)\n isMaxDayToInput(value) && monthRef.current.focus()\n }}\n id={dayName}\n type=\"numeric\"\n placeholder=\"DD\"\n error={!validationObject?.isValid}\n disabled={disabled}\n />\n
\n
\n \n {\n const value = e.target.value\n onMonthChange(value)\n isMaxMonthToInput(value) && yearRef.current.focus()\n }}\n id={monthName}\n type=\"numeric\"\n error={!validationObject.isValid}\n placeholder=\"MM\"\n disabled={disabled}\n />\n
\n
\n \n onYearChange(e.target.value)}\n id={yearName}\n type=\"numeric\"\n placeholder=\"YYYY\"\n error={!validationObject.isValid}\n disabled={disabled}\n />\n
\n
\n {hasError &&
{validationObject?.message}
}\n
\n );\n}\n\nexport default DriverDateInput;\n","import axios from \"axios\";\nimport moment from \"moment-with-locales-es6\";\nimport React, {\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useState,\n useCallback,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DOCUMENT_TYPES, getDriverInfo } from \"../../services/GetDriverInfo\";\n\nimport { removeAccents } from \"../../utils/string-utils\";\nimport { DomainContext, mapDocumentType } from \"../../domain-repository/DomainRepository\";\nimport { driverInfoReducer } from \"./driverInfoReducer\";\nimport {\n checkDriverInfoStepEditMode,\n DriverFieldsErrors,\n filterCountries,\n mapCountryToOption,\n useGetDriverInfo,\n validValidationObject,\n} from \"./driverInfoStepUtils\";\nimport {\n useValidateTaxNumber,\n validateCountry,\n validateDate,\n validateDocumentID,\n validateNotEmpty,\n} from \"./driver-fields-validations\";\nimport { isPortugalCountryId, PORTUGAL_COUNTRY_ID, useDebouncedValue } from \"../../utils/utils\";\n\nimport { AlertModalWithActions } from \"../../components/alert-modal/AlertModal\";\nimport DriverInfoDropdown from \"./components/DriverInfoDropdown\";\nimport PageHeader from \"../../components/PageHeader\";\nimport Footer from \"../../components/Footer\";\nimport Loading from \"../../components/Loading\";\nimport TrackingPage from \"../../components/TrackingPage\";\nimport withLang from \"../../withLang\";\nimport { DriverInfoPage } from \"./components/DriverInfoPage\";\nimport { LabeledDriverInfoInput } from \"./components/DriverInfoInput\";\nimport { Spacer } from \"../../components/Spacer\";\nimport DriverInfoOptionsInput from \"./components/DriverInfoOptionsInput\";\nimport DriverDateInput from \"./components/DriverDateInput\";\n\nexport function getDriversCountryIdByName(countries, name) {\n const country = countries.find((c) => c.name === name);\n return country ? country.countryID : name;\n}\n\nfunction getDriversCountryNameById(countries, id) {\n const country = countries.find((c) => c.countryID === id);\n return country ? country.name : id;\n}\n\nfunction DriverStep1Page(props) {\n const { t, i18n } = useTranslation();\n\n const {\n addDriverInfo,\n setDriverInfo,\n driverInfo,\n getCountries,\n driverInfoHasClickedBack,\n setDriverInfoHasClickedBack,\n driverInfoEditMode,\n setDriverInfoEditMode,\n reservation,\n flowPreviousRoute,\n visitedRoutes,\n addVisitedRoutes,\n blockedTaxNumbersList,\n } = useContext(DomainContext);\n const safeReservation = reservation || {};\n\n const countries = useMemo(() => {\n const cs = getCountries();\n const ptCountry = cs.find((o) => o.countryID === PORTUGAL_COUNTRY_ID);\n return [\n ptCountry,\n ...cs.filter((o) => o.countryID !== PORTUGAL_COUNTRY_ID),\n ].filter((o) => o !== undefined);\n }, [getCountries]);\n\n const [state, dispatch] = useReducer(driverInfoReducer, {\n canDisplayErrors: false,\n country: driverInfo.countryID\n ? {\n value: driverInfo.countryID,\n label: getDriversCountryNameById(countries, driverInfo.countryID),\n }\n : null,\n driversLicenseIssuedPlace: driverInfo.driversLicenseIssuedPlace\n ? {\n value: getDriversCountryIdByName(\n countries,\n driverInfo.driversLicenseIssuedPlace\n ),\n label: driverInfo.driversLicenseIssuedPlace,\n }\n : null,\n iDIssuedPlace: driverInfo.iDIssuedPlace\n ? {\n value: getDriversCountryIdByName(countries, driverInfo.iDIssuedPlace),\n label: driverInfo.iDIssuedPlace,\n }\n : null,\n\n taxNumber: driverInfo.taxNumber || \"\",\n documentID: driverInfo.documentID || \"\",\n documentType: driverInfo.documentType || \"\",\n iDExpireDay:\n (driverInfo.iDExpireDate && moment(driverInfo.iDExpireDate).date()) || \"\",\n iDExpireMonth:\n (driverInfo.iDExpireDate &&\n moment(driverInfo.iDExpireDate).month() + 1) ||\n \"\",\n iDExpireYear:\n (driverInfo.iDExpireDate && moment(driverInfo.iDExpireDate).year()) || \"\",\n\n errorModal: null,\n isLoading: null,\n });\n\n const [validateCanSkip, setValidateCanSkip] = useState(\n !visitedRoutes.includes(window.location.pathname) && !driverInfoEditMode && !driverInfoHasClickedBack\n );\n\n const selectedCountry = useMemo(\n () => countries.find((c) => c.countryID === state.country?.value),\n [countries, state.country]\n );\n\n const taxNumberDebounced = useDebouncedValue(state.taxNumber, 600)\n const { data: taxNumberValidation, isLoading: isLoadingTaxNumberValidation } =\n useValidateTaxNumber(\n t,\n taxNumberDebounced,\n blockedTaxNumbersList,\n selectedCountry?.countryID\n );\n\n const countryValidation = useMemo(\n () => validateCountry(t, state.country?.label, countries),\n [countries, state.country, t]\n );\n\n const iDIssuedCountryValidation = useMemo(\n () => validateCountry(t, state.iDIssuedPlace?.label, countries),\n [countries, state.iDIssuedPlace, t]\n );\n\n const driversLicenseIssuedCountryValidation = useMemo(\n () => validateCountry(t, state.driversLicenseIssuedPlace?.label, countries),\n [countries, state.driversLicenseIssuedPlace, t]\n );\n\n const docIdDebounced = useDebouncedValue(state.documentID, 600)\n const documentIDValidation = useMemo(\n () => validateDocumentID(t, docIdDebounced),\n [docIdDebounced, t]\n );\n\n const getDriverInfoSuccessCB = useCallback((newDriverInfo) => {\n const docDate = newDriverInfo?.Document_Date ? moment(newDriverInfo.Document_Date) : null;\n dispatch({\n type: 'SET_VALUES',\n payload: {\n taxNumber: state.taxNumber || newDriverInfo?.Tax_Number || '',\n documentID: state.documentID || newDriverInfo?.Document_Number || '',\n documentType: state.documentType || mapDocumentType(newDriverInfo?.Document_Type) || '',\n iDExpireYear: docDate?.year() || '',\n iDExpireMonth: docDate ? docDate.month() + 1 : '',\n iDExpireDay: docDate?.date() || '',\n }\n });\n }, [t, state.taxNumber, state.documentID, state.documentType]);\n\n const { data: taxNumberDriverInfo, isLoading: isLoadingTaxNumberDriverInfo } = useGetDriverInfo(\n taxNumberDebounced,\n DOCUMENT_TYPES.TAX_NUMBER,\n selectedCountry?.countryID && isPortugalCountryId(selectedCountry?.countryID) && taxNumberValidation?.isValid,\n getDriverInfoSuccessCB\n )\n\n const { data: docIdDriverInfo, isLoading: isLoadingDocIdDriverInfo } = useGetDriverInfo(\n docIdDebounced,\n state.documentType,\n selectedCountry?.countryID && !isPortugalCountryId(selectedCountry?.countryID) && documentIDValidation?.isValid,\n getDriverInfoSuccessCB\n )\n\n const documentTypeValidation = useMemo(\n () => validateNotEmpty(t, state.documentType, \"emptyDocumentType\"),\n [state.documentType, t]\n );\n\n const iDExpireDateValidation = useMemo(\n () =>\n validateDate(\n t,\n state.iDExpireDay,\n state.iDExpireMonth,\n state.iDExpireYear,\n \"invalidDriversIDExpireDate\"\n ),\n [state.iDExpireDay, state.iDExpireMonth, state.iDExpireYear, t]\n );\n\n const canNext = useCallback(() => {\n return (\n countryValidation.isValid &&\n iDIssuedCountryValidation.isValid &&\n driversLicenseIssuedCountryValidation.isValid &&\n documentTypeValidation.isValid &&\n documentIDValidation.isValid &&\n taxNumberValidation?.isValid &&\n iDExpireDateValidation.isValid &&\n !isLoadingTaxNumberValidation &&\n !isLoadingTaxNumberDriverInfo &&\n !isLoadingDocIdDriverInfo\n );\n }, [\n countryValidation,\n iDIssuedCountryValidation,\n driversLicenseIssuedCountryValidation,\n selectedCountry,\n documentTypeValidation,\n documentIDValidation,\n iDExpireDateValidation,\n taxNumberValidation,\n isLoadingTaxNumberValidation,\n isLoadingTaxNumberDriverInfo,\n isLoadingDocIdDriverInfo\n ]);\n\n const countriesOptions = useMemo(() => {\n return countries.map(mapCountryToOption);\n }, [countries]);\n\n useEffect(() => {\n const editMode = checkDriverInfoStepEditMode(props.location.search);\n setDriverInfoEditMode(editMode);\n }, []);\n\n const handleProceedNextPage = useCallback(\n (type) => {\n function pushPage() {\n const url =\n type === \"review\" ? \"/driver-info-review\" : \"/driver-info-step/2\";\n setDriverInfoHasClickedBack(false);\n if (type === \"redirect\") {\n props.history.replace(url);\n } else {\n props.history.push(url);\n }\n }\n\n async function fun() {\n try {\n dispatch({ type: \"SET_IS_LOADING\", payload: true });\n\n const isCountryPortugal = isPortugalCountryId(\n selectedCountry?.countryID\n );\n\n if (driverInfoEditMode) {\n addDriverInfo({\n taxNumber: state.taxNumber,\n documentID: state.documentID,\n documentType: state.documentType,\n iDIssuedPlace: state.iDIssuedPlace.label,\n driversLicenseIssuedPlace: state.driversLicenseIssuedPlace.label,\n countryID: selectedCountry?.countryID,\n iDExpireDate: `${state.iDExpireYear}-${state.iDExpireMonth}-${state.iDExpireDay}`,\n });\n pushPage();\n return null;\n }\n\n setDriverInfo(\n {\n ...reservation.listReservation,\n DriversCountryID: selectedCountry?.countryID,\n DocumentIssuePlace: state.iDIssuedPlace.label,\n DriverLicensePlace: state.driversLicenseIssuedPlace.label,\n DriversTaxNumber: state.taxNumber,\n DocumentNumber: state.documentID,\n Document: state.documentType,\n DocumentDate: `${state.iDExpireYear}-${state.iDExpireMonth}-${state.iDExpireDay}`,\n },\n (isCountryPortugal ? taxNumberDriverInfo : docIdDriverInfo) || {}\n );\n\n pushPage();\n } catch (err) {\n setValidateCanSkip(false);\n\n dispatch({\n type: \"SET_VALUES\",\n payload: {\n isLoading: false,\n popupInfo: {\n isVisible: true,\n title: t(\"errorTitle\"),\n message: t(\"errorMessage\"),\n reason: \"Erro ao obter informaƧƵes do condutor.\",\n },\n },\n });\n }\n }\n\n fun();\n },\n [\n countries,\n setDriverInfo,\n setDriverInfoHasClickedBack,\n selectedCountry,\n reservation.listReservation,\n state,\n props.history,\n t,\n taxNumberDriverInfo,\n docIdDriverInfo,\n ]\n );\n\n const onNextClick = useCallback(\n (type) => {\n const canSkipPage = canNext();\n dispatch({ type: \"SET_VALUES\", payload: { canDisplayErrors: true } });\n if (canSkipPage) {\n handleProceedNextPage(type);\n }\n },\n [handleProceedNextPage, canNext]\n );\n\n const onBack = useCallback(() => {\n flowPreviousRoute(props.history);\n }, [flowPreviousRoute, setDriverInfoHasClickedBack]);\n\n const onMountRef = React.useRef(false);\n useEffect(() => {\n if (\n !onMountRef.current &&\n taxNumberValidation !== undefined &&\n !visitedRoutes.includes(window.location.pathname) &&\n !driverInfoEditMode && !driverInfoHasClickedBack\n ) {\n onMountRef.current = true;\n const canSkipPage = canNext();\n if (canSkipPage) {\n handleProceedNextPage(\"redirect\");\n } else {\n setValidateCanSkip(false);\n addVisitedRoutes(window.location.pathname);\n }\n }\n }, [taxNumberValidation, canNext, handleProceedNextPage]);\n\n const isLoading = state.isLoading || isLoadingTaxNumberDriverInfo || isLoadingDocIdDriverInfo\n\n return (\n \n props.history.push(\"/start\")}\n />\n
\n
\n \n
\n
\n {t(\"checkInEndorseMessage\", {\n pickupDate: moment(\n safeReservation.PickupDate,\n \"YYYY-MM-DD HH:mm\"\n )\n .locale(i18n.language)\n ?.format(\"D MMMM\"),\n })}\n
\n \n
\n \n dispatch({\n type: \"SET_VALUES\",\n payload: {\n country: value,\n driversLicenseIssuedPlace:\n state.driversLicenseIssuedPlace || value,\n iDIssuedPlace: state.iDIssuedPlace || value,\n },\n })\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseIssuedPlace: value },\n })\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { iDIssuedPlace: value },\n })\n }\n />\n \n \n {t(\"taxNumber\")}{\" \"}\n {selectedCountry &&\n !isPortugalCountryId(selectedCountry.countryID) ? (\n \n {\" \"}\n ({t(\"optional\")}){\" \"}\n \n ) : null}\n \n }\n name=\"taxNumber\"\n autoComplete=\"off\"\n value={state.taxNumber}\n onChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { taxNumber: value },\n })\n }\n disabled={!state.country || !countryValidation.isValid}\n validationObject={\n state.canDisplayErrors\n ? taxNumberValidation\n : validValidationObject\n }\n />\n \n
\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { documentType: value },\n })\n }\n name=\"id_doc_type\"\n options={[\n { value: 1, text: t(\"idCard\") },\n { value: 2, text: t(\"passport\") },\n ]}\n error={!documentTypeValidation.isValid}\n />\n
\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { documentID: value },\n })\n }\n disabled={!state.country || !countryValidation.isValid}\n validationObject={\n state.canDisplayErrors\n ? documentIDValidation\n : validValidationObject\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { iDExpireDay: value },\n })\n }\n onMonthChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { iDExpireMonth: value },\n })\n }\n onYearChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { iDExpireYear: value },\n })\n }\n />\n \n
\n
\n !isLoading && !isLoadingTaxNumberValidation && onNextClick()}\n handlePrevClick={onBack}\n />\n
\n
\n );\n}\n\nexport default withLang(TrackingPage(DriverStep1Page, 2004));\n","import React, { useEffect, useRef } from \"react\";\n\n// Should not be used often. Last resort\nexport function useOnInit(callback: VoidFunction): void {\n const referencedRun = useRef(callback);\n useEffect(() => {\n referencedRun.current();\n }, []);\n}\n","import axios from \"axios\";\nimport moment from \"moment-with-locales-es6\";\nimport React, {\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useState,\n useCallback,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DOCUMENT_TYPES, getDriverInfo } from \"../../services/GetDriverInfo\";\n\nimport { removeAccents } from \"../../utils/string-utils\";\nimport { useOnInit } from \"../../utils/useOnInit\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport { driverInfoReducer } from \"./driverInfoReducer\";\nimport {\n checkDriverInfoStepEditMode,\n COUNTRY_CODE_PREFIX,\n DriverFieldsErrors,\n filterCountries,\n getFormatedPhoneAndCountryCode,\n validValidationObject,\n} from \"./driverInfoStepUtils\";\nimport {\n validateCountry,\n validateDate,\n validateDocumentID,\n validateEmail,\n validateEmailConfirm,\n validateFullName,\n validateNotEmpty,\n validatePhoneCountryCode,\n} from \"./driver-fields-validations\";\nimport { isPortugalCountryId, padZero } from \"../../utils/utils\";\n\nimport { AlertModalWithActions } from \"../../components/alert-modal/AlertModal\";\nimport DriverInfoDropdown from \"./components/DriverInfoDropdown\";\nimport PageHeader from \"../../components/PageHeader\";\nimport Footer from \"../../components/Footer\";\nimport Loading from \"../../components/Loading\";\nimport TrackingPage from \"../../components/TrackingPage\";\nimport withLang from \"../../withLang\";\nimport { DriverInfoPage } from \"./components/DriverInfoPage\";\nimport { LabeledDriverInfoInput } from \"./components/DriverInfoInput\";\nimport { Spacer } from \"../../components/Spacer\";\nimport DriverInfoOptionsInput from \"./components/DriverInfoOptionsInput\";\nimport DriverDateInput from \"./components/DriverDateInput\";\n\nfunction DriverStep2Page(props) {\n const { t, i18n } = useTranslation();\n\n const {\n addDriverInfo,\n setDriverInfo,\n driverInfo,\n getCountries,\n driverInfoHasClickedBack,\n setDriverInfoHasClickedBack,\n driverInfoEditMode,\n setDriverInfoEditMode,\n reservation,\n flowPreviousRoute,\n visitedRoutes,\n addVisitedRoutes,\n invalidBirthdates,\n isEligibleForYoungDriver,\n getDriversMinimumAgeForReservation,\n getDriversPhoneCountryCode,\n } = useContext(DomainContext);\n const safeReservation = reservation || {};\n\n const countries = getCountries();\n\n const countryPhoneCodes = countries.filter((c) => c.PhoneCountryCode);\n const formattedPhone = getFormatedPhoneAndCountryCode(\n driverInfo.phone,\n countryPhoneCodes\n );\n\n const [state, dispatch] = useReducer(driverInfoReducer, {\n canDisplayErrors: false,\n\n fullName: driverInfo.fullName || \"\",\n email: driverInfo.email || \"\",\n emailConfirm: driverInfo.emailConfirm || \"\",\n birthDay:\n (driverInfo.birthDate && moment(driverInfo.birthDate).date()) || \"\",\n birthMonth:\n (driverInfo.birthDate && moment(driverInfo.birthDate).month() + 1) || \"\",\n birthYear:\n (driverInfo.birthDate && moment(driverInfo.birthDate).year()) || \"\",\n\n phone: formattedPhone.phone,\n phoneCountryCode:\n formattedPhone.phoneCountryCode ||\n `${COUNTRY_CODE_PREFIX}${getDriversPhoneCountryCode()}`,\n isLoading: null,\n });\n\n const [validateCanSkip, setValidateCanSkip] = useState(\n !visitedRoutes.includes(window.location.pathname) && !driverInfoEditMode && !driverInfoHasClickedBack\n );\n\n useEffect(() => {\n if (state.birthDay && state.birthMonth && state.birthYear) {\n const birthDate = `${state.birthYear}-${padZero(\n state.birthMonth\n )}-${padZero(state.birthDay)}`;\n if (invalidBirthdates.some((b) => b === birthDate)) {\n dispatch({\n type: \"SET_VALUES\",\n payload: { birthDay: \"\", birthMonth: \"\", birthYear: \"\" },\n });\n }\n }\n }, [invalidBirthdates, state.birthDay, state.birthMonth, state.birthYear]);\n\n const fullNameValidation = useMemo(\n () =>\n validateFullName(\n t,\n state.fullName,\n reservation.listReservation.DriverSurname || \"\",\n reservation.listReservation.DriverShortName || \"\",\n state.differentReservationNameCounter,\n dispatch\n ),\n [\n t,\n state.fullName,\n reservation.listReservation.DriverSurname,\n reservation.listReservation.DriverShortName,\n state.differentReservationNameCounter,\n dispatch,\n ]\n );\n\n const emailValidation = useMemo(\n () => validateEmail(t, state.email),\n [state.email]\n );\n\n const emailConfirmValidation = useMemo(\n () => validateCanSkip ? { isValid: true } : validateEmailConfirm(t, state.email, state.emailConfirm),\n [validateCanSkip, state.email, state.emailConfirm]\n );\n\n const phoneValidation = useMemo(\n () => validateNotEmpty(t, state.phone, \"emptyPhone\"),\n [state.phone]\n );\n\n const phoneCountryCodeValidation = useMemo(\n () => validatePhoneCountryCode(t, state.phoneCountryCode, countries),\n [state.phoneCountryCode, countries]\n );\n\n const birthDateValidation = useMemo(() => {\n function validateBirthDate() {\n if (\n state.birthDay &&\n state.birthMonth &&\n state.birthYear &&\n Number.isInteger(Number(state.birthDay)) &&\n Number.isInteger(Number(state.birthMonth)) &&\n Number.isInteger(Number(state.birthYear))\n ) {\n const birthDate = `${state.birthYear}-${padZero(\n state.birthMonth\n )}-${padZero(state.birthDay)}`;\n if (!moment(birthDate, \"YYYY-MM-DD\").isValid()) {\n return { isValid: false, message: t(\"invalidBirthDate\") };\n }\n if (\n moment().diff(birthDate, \"years\") <\n getDriversMinimumAgeForReservation() &&\n !isEligibleForYoungDriver(\n birthDate,\n driverInfo.driversLicenseIssuedDate\n )\n ) {\n return { isValid: false, message: t(\"tooYoungToDrive\") };\n }\n if (invalidBirthdates.some((b) => b === birthDate)) {\n return { isValid: false, message: t(\"invalidBirthDate\") };\n }\n return { isValid: true };\n }\n return { isValid: false, message: t(\"invalidBirthDate\") };\n }\n return validateBirthDate();\n }, [\n state.birthDay,\n state.birthMonth,\n state.birthYear,\n driverInfo.driversLicenseIssuedDate,\n invalidBirthdates,\n t,\n ]);\n\n const selectedCountry = useMemo(\n () => countries.find((c) => c.countryID === state.country?.value),\n [countries, state.country]\n );\n\n const canNext = useCallback(() => {\n return (\n fullNameValidation.isValid &&\n birthDateValidation.isValid &&\n emailValidation.isValid &&\n emailConfirmValidation.isValid &&\n phoneValidation.isValid &&\n phoneCountryCodeValidation.isValid &&\n birthDateValidation.isValid\n );\n }, [\n fullNameValidation,\n selectedCountry,\n emailConfirmValidation,\n emailValidation,\n birthDateValidation,\n phoneValidation,\n phoneCountryCodeValidation,\n ]);\n\n useEffect(() => {\n const editMode = checkDriverInfoStepEditMode(props.location.search);\n setDriverInfoEditMode(editMode);\n }, []);\n\n const handleProceedNextPage = useCallback(\n (type) => {\n const url =\n type === \"review\" ? \"/driver-info-review\" : \"/driver-info-step/3\";\n setDriverInfoHasClickedBack(false);\n\n const birthDate = `${state.birthYear}-${state.birthMonth}-${state.birthDay}`;\n addDriverInfo({\n phone: `${state.phoneCountryCode}${state.phone}`,\n fullName: state.fullName,\n email: state.email,\n emailConfirm: state.emailConfirm,\n birthDate,\n });\n\n if (type === \"redirect\") {\n props.history.replace(url);\n } else {\n props.history.push(url);\n }\n },\n [\n countries,\n addDriverInfo,\n setDriverInfoHasClickedBack,\n state,\n props.history,\n t,\n ]\n );\n\n const onNextClick = useCallback(\n (type) => {\n const canSkipPage = canNext();\n dispatch({ type: \"SET_VALUES\", payload: { canDisplayErrors: true } });\n if (canSkipPage) {\n handleProceedNextPage(type);\n }\n },\n [handleProceedNextPage, canNext]\n );\n\n const onBack = useCallback(() => {\n setDriverInfoHasClickedBack(true);\n props.history.goBack();\n }, [props.history, setDriverInfoHasClickedBack]);\n\n useOnInit(() => {\n if (!visitedRoutes.includes(window.location.pathname) && !driverInfoEditMode && !driverInfoHasClickedBack) {\n const canSkipPage = canNext();\n if (canSkipPage) {\n handleProceedNextPage(\"redirect\");\n } else {\n addVisitedRoutes(window.location.pathname);\n }\n }\n setValidateCanSkip(false);\n });\n\n return (\n \n props.history.push(\"/start\")}\n />\n
\n
\n
\n
\n \n dispatch({\n type: \"SET_VALUES\",\n payload: { fullName: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? fullNameValidation\n : validValidationObject\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { birthDay: value },\n })\n }\n onMonthChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { birthMonth: value },\n })\n }\n onYearChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { birthYear: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? birthDateValidation\n : validValidationObject\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { email: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? emailValidation\n : validValidationObject\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { emailConfirm: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? emailConfirmValidation\n : validValidationObject\n }\n />\n \n
\n \n dispatch({\n type: \"SET_VALUES\",\n payload: { phoneCountryCode: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? phoneCountryCodeValidation\n : validValidationObject\n }\n />\n \n dispatch({\n type: \"SET_VALUES\",\n payload: { phone: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? phoneValidation\n : validValidationObject\n }\n />\n
\n\n \n \n
\n
\n \n
\n
\n );\n}\n\nexport default withLang(TrackingPage(DriverStep2Page, 2005));\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport add1Img from \"../../assets/images/extras/additional-driver.png\";\n\nfunction AditionalDriverPopup({\n isOpen,\n handleNoClick,\n handleYesClick,\n additionalDriverPresent,\n}) {\n const { t } = useTranslation();\n\n return isOpen ? (\n
\n
\n
\n
\n
\n \n
\n
\n {additionalDriverPresent ? (\n

{t(\"additionalDriverFillDetailsQuestion\")}

\n ) : (\n

{t(\"additionalDriverQuestion\")}

\n )}\n \n \n
\n
\n
\n
\n {additionalDriverPresent ? null : (\n {t(\"additionalDriverAlertMessage\")}\n )}\n
\n
\n
\n
\n ) : null;\n}\n\nexport default AditionalDriverPopup;\n","import axios from \"axios\";\nimport moment from \"moment-with-locales-es6\";\nimport React, {\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useState,\n useCallback,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DOCUMENT_TYPES, getDriverInfo } from \"../../services/GetDriverInfo\";\nimport { saveSessionDriverAddressConfirmation } from \"../../services/ValidateDriverAddress\";\n\nimport { removeAccents } from \"../../utils/string-utils\";\nimport { useOnInit } from \"../../utils/useOnInit\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport { driverInfoReducer } from \"./driverInfoReducer\";\nimport {\n checkDriverInfoStepEditMode,\n COUNTRY_CODE_PREFIX,\n DriverFieldsErrors,\n filterCountries,\n getFormatedPhoneAndCountryCode,\n removePtDriversLicenceInvalidSpaces,\n validValidationObject,\n} from \"./driverInfoStepUtils\";\nimport {\n additionalDriverFieldsPresent,\n useValidateAddress,\n useValidatePostalCode,\n validateCity,\n validateCountry,\n validateDate,\n validateDocumentID,\n validateDriversLicense,\n validateDriversLicenseExpirationDate,\n validateDriversLicenseIssuedDate,\n validateNotEmpty,\n} from \"./driver-fields-validations\";\nimport {\n buildMomentFromDateString,\n isPortugalCountry,\n isPortugalCountryId,\n padZero,\n} from \"../../utils/utils\";\n\nimport {\n AlertModal,\n AlertModalWithActions,\n} from \"../../components/alert-modal/AlertModal\";\nimport DriverInfoDropdown from \"./components/DriverInfoDropdown\";\nimport PageHeader from \"../../components/PageHeader\";\nimport Footer from \"../../components/Footer\";\nimport Loading from \"../../components/Loading\";\nimport TrackingPage from \"../../components/TrackingPage\";\nimport withLang from \"../../withLang\";\nimport { DriverInfoPage } from \"./components/DriverInfoPage\";\nimport { LabeledDriverInfoInput } from \"./components/DriverInfoInput\";\nimport { Spacer } from \"../../components/Spacer\";\nimport DriverInfoOptionsInput from \"./components/DriverInfoOptionsInput\";\nimport DriverDateInput from \"./components/DriverDateInput\";\nimport { getDriversCountryIdByName } from \"./DriverStep1Page\";\nimport AditionalDriverPopup from \"./AditionalDriverPopup\";\nimport alertModalManager from '../../components/alert-modal-wraper/alert-modal-manager'\n\nfunction DriverStep3Page(props) {\n const { t, i18n } = useTranslation();\n\n const {\n addDriverInfo,\n setDriverInfo,\n driverInfo,\n getCountries,\n driverInfoHasClickedBack,\n setDriverInfoHasClickedBack,\n driverInfoEditMode,\n setDriverInfoEditMode,\n reservation,\n flowPreviousRoute,\n visitedRoutes,\n addVisitedRoutes,\n invalidBirthdates,\n isEligibleForYoungDriver,\n getDriversMinimumAgeForReservation,\n getDriversPhoneCountryCode,\n hasAdditionalDriver,\n setInvalidAddressAlert,\n additionalDriverInfo,\n groupsDetails,\n } = useContext(DomainContext);\n const safeReservation = reservation || {};\n\n const vehicleGroupId = safeReservation.GroupID;\n const groupInfo = groupsDetails.find(g => g.id === vehicleGroupId) || {};\n\n const countries = getCountries();\n\n const countryPhoneCodes = countries.filter((c) => c.PhoneCountryCode);\n const formattedPhone = getFormatedPhoneAndCountryCode(\n driverInfo.phone,\n countryPhoneCodes\n );\n\n const isLicencePT = useMemo(\n () => isPortugalCountry(driverInfo.driversLicenseIssuedPlace),\n [driverInfo.driversLicenseIssuedPlace]\n );\n\n const [state, dispatch] = useReducer(driverInfoReducer, {\n canDisplayErrors: false,\n\n address: driverInfo.address || \"\",\n doorNumber: driverInfo.doorNumber || \"\",\n postalCode: driverInfo.postalCode || \"\",\n city: driverInfo.city || \"\",\n\n driversLicense: isLicencePT\n ? removePtDriversLicenceInvalidSpaces(driverInfo.driversLicense)\n : driverInfo.driversLicense,\n\n driversLicenseIssuedDay:\n (driverInfo.driversLicenseIssuedDate &&\n buildMomentFromDateString(driverInfo.driversLicenseIssuedDate).date()) ||\n \"\",\n driversLicenseIssuedMonth:\n (driverInfo.driversLicenseIssuedDate &&\n buildMomentFromDateString(driverInfo.driversLicenseIssuedDate).month() + 1) ||\n \"\",\n driversLicenseIssuedYear:\n (driverInfo.driversLicenseIssuedDate &&\n buildMomentFromDateString(driverInfo.driversLicenseIssuedDate).year()) ||\n \"\",\n\n driversLicenseExpirationDay:\n (driverInfo.driversLicenseExpirationDate &&\n buildMomentFromDateString(driverInfo.driversLicenseExpirationDate).date()) ||\n \"\",\n driversLicenseExpirationMonth:\n (driverInfo.driversLicenseExpirationDate &&\n buildMomentFromDateString(driverInfo.driversLicenseExpirationDate).month() + 1) ||\n \"\",\n driversLicenseExpirationYear:\n (driverInfo.driversLicenseExpirationDate &&\n buildMomentFromDateString(driverInfo.driversLicenseExpirationDate).year()) ||\n \"\",\n\n popupInfo: {\n isVisible: false,\n message: \"\",\n title: \"\",\n },\n minimumLicencePopupInfo: {\n isVisible: false,\n message: '',\n title: ''\n },\n errorModal: null,\n isLoading: null,\n\n add1PopupOpen: false,\n\n skipAddressValidation: false,\n invalidAddressAlert: null,\n invalidDoorNumberAlert: false,\n });\n\n const [validateCanSkip, setValidateCanSkip] = useState(\n !visitedRoutes.includes(window.location.pathname) && !driverInfoEditMode && !driverInfoHasClickedBack\n );\n\n const expireDateOptional = useMemo(() => {\n return (\n reservation.configurations?.driversLicenseExpirationDateCountries?.includes(\n getDriversCountryIdByName(\n countries,\n driverInfo.driversLicenseIssuedPlace\n )\n ) || false\n );\n }, [\n reservation.configurations,\n countries,\n driverInfo.driversLicenseIssuedPlace,\n ]);\n\n const issuedDateOptional = useMemo(() => {\n return (\n reservation.configurations?.driversLicenseEmissionDateCountries?.includes(\n getDriversCountryIdByName(countries, driverInfo.driversLicenseIssuedPlace)\n ) || false\n );\n }, [reservation.configurations, countries, driverInfo.driversLicenseIssuedPlace]);\n\n const { data: addressValidation, isLoading: isLoadingAddressValidation } =\n useValidateAddress(t, state.address, state.doorNumber, state.skipAddressValidation);\n\n const {\n data: postalCodeValidation,\n isLoading: isLoadingPostalCodeValidation,\n } = useValidatePostalCode(t, state.postalCode, driverInfo.countryID);\n\n const driversLicenseValidation = useMemo(\n () => validateDriversLicense(t, state.driversLicense, isLicencePT),\n [state.driversLicense, isLicencePT, t]\n );\n\n const cityValidation = useMemo(\n () => validateCity(t, state.city, driverInfo.countryID),\n [state.city, driverInfo.countryID, t]\n );\n\n const driversLicenseIssuedDateValidation = useMemo(\n () =>\n validateDriversLicenseIssuedDate(\n t,\n state.driversLicenseIssuedDay,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedYear,\n issuedDateOptional,\n ),\n [\n state.driversLicenseIssuedDay,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedYear,\n t,\n issuedDateOptional,\n ]\n );\n\n const driversLicenseExpirationDateValidation = useMemo(\n () =>\n validateDriversLicenseExpirationDate(\n t,\n state.driversLicenseExpirationDay,\n state.driversLicenseExpirationMonth,\n state.driversLicenseExpirationYear,\n expireDateOptional,\n state.driversLicenseIssuedDay,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedYear,\n issuedDateOptional,\n ),\n [\n state.driversLicenseExpirationDay,\n state.driversLicenseExpirationMonth,\n state.driversLicenseExpirationYear,\n state.driversLicenseIssuedDay,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedYear,\n expireDateOptional,\n issuedDateOptional,\n t,\n ]\n );\n\n const canNext = useCallback(() => {\n return (\n addressValidation?.isValid &&\n postalCodeValidation?.isValid &&\n cityValidation.isValid &&\n driversLicenseValidation.isValid &&\n driversLicenseIssuedDateValidation.isValid &&\n driversLicenseExpirationDateValidation.isValid\n );\n }, [\n addressValidation,\n postalCodeValidation,\n cityValidation,\n driversLicenseValidation,\n driversLicenseIssuedDateValidation,\n driversLicenseExpirationDateValidation,\n ]);\n\n useEffect(() => {\n const editMode = checkDriverInfoStepEditMode(props.location.search);\n setDriverInfoEditMode(editMode);\n }, [props.location.search]);\n\n const handleProceedNextPage = useCallback(\n (type, skipIssuedDateValidation) => {\n const issuedDateEmptyValid = issuedDateOptional && !state.driversLicenseIssuedDay && !state.driversLicenseIssuedMonth && !state.driversLicenseIssuedYear\n if (!skipIssuedDateValidation && issuedDateEmptyValid) {\n dispatch({\n type: 'SET_VALUES',\n payload: {\n minimumLicencePopupInfo: {\n isVisible: true,\n title: t('minimumYearsLicenceTitle', { minimumLicenceTime: groupInfo.minimumLicenceTime }),\n message: ''\n }\n }\n });\n return null;\n }\n\n addDriverInfo({\n address: state.address,\n doorNumber: state.doorNumber,\n postalCode: state.postalCode,\n city: state.city,\n\n driversLicense: state.driversLicense,\n driversLicenseIssuedDate: state.driversLicenseIssuedYear ? \n `${state.driversLicenseIssuedYear}-${state.driversLicenseIssuedMonth}-${state.driversLicenseIssuedDay}` : undefined,\n driversLicenseExpirationDate: state.driversLicenseExpirationYear\n ? `${state.driversLicenseExpirationYear}-${state.driversLicenseExpirationMonth}-${state.driversLicenseExpirationDay}`\n : undefined,\n });\n setDriverInfoHasClickedBack(false);\n\n if (\n !safeReservation.isPastPickupHour &&\n !safeReservation.disableSales &&\n (!additionalDriverFieldsPresent(additionalDriverInfo))\n ) {\n dispatch({\n type: \"SET_VALUES\",\n payload: { add1PopupOpen: true },\n });\n setValidateCanSkip(false)\n } else {\n const url = \"/driver-info-review\";\n if (type === \"redirect\") {\n props.history.replace(url);\n } else {\n props.history.push(url);\n }\n }\n },\n [\n setDriverInfoHasClickedBack,\n state,\n props.history,\n t,\n ]\n );\n\n const onNextClick = useCallback(\n (type) => {\n if (isLoadingAddressValidation || isLoadingPostalCodeValidation) {\n return null\n }\n const canSkipPage = canNext();\n dispatch({ type: \"SET_VALUES\", payload: { canDisplayErrors: true } });\n if (canSkipPage) {\n handleProceedNextPage(type);\n } else {\n if (postalCodeValidation?.isValid && cityValidation.isValid && driversLicenseValidation.isValid && driversLicenseIssuedDateValidation.isValid && driversLicenseExpirationDateValidation.isValid) {\n if (addressValidation.invalidDoorNumberAlert) {\n dispatch({ type: 'SET_VALUES', payload: { invalidDoorNumberAlert: true } });\n } else if (addressValidation.invalidAddressAlert) {\n dispatch({ type: 'SET_VALUES', payload: { invalidAddressAlert: addressValidation.message } });\n }\n }\n }\n },\n [handleProceedNextPage, canNext, isLoadingAddressValidation, isLoadingPostalCodeValidation, postalCodeValidation, cityValidation, driversLicenseValidation, driversLicenseIssuedDateValidation, driversLicenseExpirationDateValidation, addressValidation]\n );\n\n const onBack = useCallback(() => {\n setDriverInfoHasClickedBack(true);\n props.history.goBack();\n }, [props.history, setDriverInfoHasClickedBack]);\n\n const onMountRef = React.useRef(false);\n useEffect(() => {\n if (\n !onMountRef.current &&\n addressValidation !== undefined &&\n postalCodeValidation !== undefined &&\n !state.hasTyped &&\n !visitedRoutes.includes(window.location.pathname) &&\n !driverInfoEditMode && !driverInfoHasClickedBack\n ) {\n onMountRef.current = true;\n\n const canSkipPage = canNext();\n if (canSkipPage) {\n handleProceedNextPage(\"redirect\");\n } else {\n addVisitedRoutes(window.location.pathname);\n setValidateCanSkip(false);\n }\n }\n }, [\n addressValidation,\n postalCodeValidation,\n driverInfoEditMode,\n driverInfoHasClickedBack,\n handleProceedNextPage,\n canNext,\n state.validatingCanSkipPage,\n state.hasTyped,\n ]);\n\n function handleAdditionalDriverNo() {\n props.history.push(\"/driver-info-review\");\n }\n\n function handleAdditionalDriverYes() {\n props.history.push({\n pathname: \"/additional-driver-info-step/1\",\n search: `returnTo=/driver-info-review`,\n state: { privacyReturnTo: \"/driver-info-review\" },\n });\n }\n\n const additionalDriverPresent = hasAdditionalDriver();\n\n async function handleConfirmAddressClick() {\n await saveSessionDriverAddressConfirmation();\n dispatch({ type: \"SET_VALUES\", payload: { skipAddressValidation: true, invalidDoorNumberAlert: false } });\n }\n\n function onMinimumLicenYearsPopupPositiveClick() {\n dispatch({ type: 'SET_VALUE', payload: { minimumLicencePopupInfo: { isVisible: false } } });\n handleProceedNextPage(null, true)\n }\n\n function onMinimumLicenYearsPopupNegativeClick() {\n alertModalManager.openModal({ title: t('mobileMinimumYearsLicenceAlertTitle') })\n }\n\n return (\n \n props.history.push(\"/start\")}\n />\n
\n
\n \n
\n
\n \n {t(\"address\")}\n \n ({t(\"addressHint\")})\n \n \n }\n id=\"address\"\n value={state.address}\n onChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { address: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? addressValidation\n : validValidationObject\n }\n />\n \n
\n \n dispatch({\n type: \"SET_VALUES\",\n payload: { doorNumber: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? { ...addressValidation, message: '' }\n : validValidationObject\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { postalCode: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? postalCodeValidation\n : validValidationObject\n }\n />\n
\n {!isPortugalCountryId(driverInfo.countryID) && (\n <>\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { city: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? cityValidation\n : validValidationObject\n }\n />\n \n )}\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicense: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? driversLicenseValidation\n : validValidationObject\n }\n />\n \n \n {t('driversLicenseIssuedDate')} {'(' + t('optional') + ')'}\n \n ) : (\n undefined\n )\n }\n dayValue={state.driversLicenseIssuedDay}\n dayName=\"driversLicenseIssuedDay\"\n monthValue={state.driversLicenseIssuedMonth}\n monthName=\"driversLicenseIssuedMonth\"\n yearValue={state.driversLicenseIssuedYear}\n yearName=\"driversLicenseIssuedYear\"\n onDayChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseIssuedDay: value },\n })\n }\n onMonthChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseIssuedMonth: value },\n })\n }\n onYearChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseIssuedYear: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? driversLicenseIssuedDateValidation\n : validValidationObject\n }\n />\n \n \n {t('driversLicenseExpirationDate')} {'(' + t('optional') + ')'}\n \n ) : (\n undefined\n )\n }\n label={t(\"driversLicenseExpirationDate\")}\n dayValue={state.driversLicenseExpirationDay}\n dayName=\"driversLicenseExpirationDay\"\n monthValue={state.driversLicenseExpirationMonth}\n monthName=\"driversLicenseExpirationMonth\"\n yearValue={state.driversLicenseExpirationYear}\n yearName=\"driversLicenseExpirationYear\"\n onDayChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseExpirationDay: value },\n })\n }\n onMonthChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseExpirationMonth: value },\n })\n }\n onYearChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseExpirationYear: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? driversLicenseExpirationDateValidation\n : validValidationObject\n }\n />\n \n
\n
\n \n
\n dispatch({ type: 'SET_VALUES', payload: { invalidDoorNumberAlert: false } })}\n leftLabel={t('changeAddressButton')}\n handleRightClick={handleConfirmAddressClick}\n rightLabel={t('confirmAddressButton')}\n />\n \n \n
\n );\n}\n\nexport default withLang(TrackingPage(DriverStep3Page, 2006));\n","import React, { forwardRef } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nconst ConfirmValuesCheckBox = forwardRef(({ checked, handleClick }, ref) => {\n const { t } = useTranslation()\n\n return (\n
\n \n
\n )\n})\n\nexport default ConfirmValuesCheckBox\n","import React from 'react'\n\nexport function DriverInfoReviewSection({ title, children }) {\n return (\n \n

{title}

\n
    \n {children}\n
\n
\n )\n}\n\nexport function DriverInfoReviewSectionItem({ label, value, onEditClick }) {\n return (\n
  • \n {label}: {value}\n {onEditClick &&
    \"\"
    }\n
  • \n )\n}","import React, { useContext, useState, useRef, useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n DomainContext,\n mapDocumentTypeToLabel,\n mapDriversPhone,\n} from \"../../domain-repository/DomainRepository\";\n\nimport DriverInfoHeader from \"../../components/PageHeader\";\nimport Footer from \"../../components/Footer\";\nimport ConfirmValuesCheckBox from \"../../components/ConfirmValuesCheckBox\";\nimport withLang from \"../../withLang\";\nimport {\n AlertModal,\n AlertModalWithActions,\n} from \"../../components/alert-modal/AlertModal\";\nimport {\n DriverInfoReviewSection,\n DriverInfoReviewSectionItem,\n} from \"./components/review-section\";\nimport LegalInformation from \"../../components/legal-information-section/LegalInformation\";\nimport TrackingPage from \"../../components/TrackingPage\";\nimport AditionalDriverPopup from \"./AditionalDriverPopup\";\nimport { updateReservationDriverInfo } from \"../../services/UpdateReservation\";\nimport Loading from \"../../components/Loading\";\nimport { EMAIL_PATTERN, getLocalTimeZone } from \"../../utils/utils\";\nimport { Spacer } from \"../../components/Spacer\";\n\nfunction DriverInfoReviewPage(props) {\n const { t, i18n } = useTranslation();\n\n const {\n additionalDriverInfo,\n driverInfo,\n getDriversCountryName,\n wasDriverInfoVerified,\n setWasDriverInfoVerified,\n policyAndTermsVerified,\n setPolicyAndTermsVerified,\n getDriversCountryISOCode,\n setDriverInfoEditMode,\n isCorporate,\n hasAdditionalDriver,\n language,\n flowNextRoute,\n reservation,\n getDriversPhoneCountryCode,\n } = useContext(DomainContext);\n\n const safeReservation = reservation || {};\n\n const {\n fullName,\n email,\n birthDate,\n address,\n postalCode,\n doorNumber,\n city,\n phone,\n documentID,\n documentType,\n driversLicense,\n driversLicenseIssuedPlace,\n driversLicenseIssuedDate,\n driversLicenseExpirationDate,\n taxNumber,\n iDIssuedPlace,\n iDExpireDate,\n } = driverInfo;\n\n const [additionDriverModalOpen, setAdditionDriverModalOpen] = useState(false);\n\n const [loading, setLoading] = useState(false);\n\n const country = getDriversCountryName();\n\n const legalInfoSectionRef = useRef(null);\n\n function getCityIfDriverIsNotPortuguese() {\n if (getDriversCountryISOCode() !== \"PT\") {\n return (\n handleEditClick(2)}\n />\n );\n }\n return undefined;\n }\n\n function handleEditClick(step) {\n setDriverInfoEditMode(true);\n props.history.push(`/driver-info-step/${step}?edit=true`);\n }\n\n function onEditAdditionalDriverClick() {\n props.history.push(\"/additional-driver-info-step/1?edit=true\");\n }\n\n const hadValuesInReservation = useCallback(() => {\n const lr = reservation.listReservation;\n return (\n lr.DriversCountryID &&\n lr.DriverLicensePlace &&\n lr.DocumentIssuePlace &&\n lr.DriverName &&\n lr.DriverBirth &&\n lr.DriverLicense &&\n lr.DriverLicenseDate &&\n lr.DriverLicenseExpirationDate &&\n lr.DriverEmail &&\n lr.DriverEmail.match(EMAIL_PATTERN) &&\n lr.DocumentNumber &&\n lr.DocumentDate &&\n lr.DriverAddress &&\n lr.DriversPostalCode\n );\n }, [reservation.listReservation]);\n\n const [updatedAlertModal, setUpdatedAlertModal] = useState(false);\n\n function handleNextClick() {\n if (!wasDriverInfoVerified || !policyAndTermsVerified) {\n legalInfoSectionRef.current.scrollIntoView();\n return;\n }\n\n const reservationInfo = buildReservationInfoToUpdateDriversInfo(\n driverInfo,\n mapDriversPhone(driverInfo.phone, getDriversPhoneCountryCode()),\n safeReservation\n );\n\n setLoading(true);\n updateReservationDriverInfo(reservationInfo, i18n.language)\n .then((res) => {\n if (hadValuesInReservation() || safeReservation.disableSales) {\n proceedNextPage();\n } else {\n setUpdatedAlertModal(true);\n }\n })\n .catch((e) => {\n proceedNextPage();\n });\n }\n\n function proceedNextPage() {\n setLoading(false);\n setUpdatedAlertModal(false);\n\n const params = new URLSearchParams(props.location.search);\n const returnToUrl = params.get(\"returnTo\");\n\n if (returnToUrl) {\n props.history.push(`/${returnToUrl}`);\n } else {\n const nextRoute = flowNextRoute(props.match.path);\n props.history.push(nextRoute);\n }\n }\n\n return (\n
    \n \n props.history.push(\"/start\")}\n />\n
    \n
    \n
    \n
    \n
    \n

    {t(\"reviewInfo\")}

    \n
    \n
    \n
    \n \n handleEditClick(\"2\")}\n label={t(\"name\")}\n value={fullName}\n />\n handleEditClick(\"2\")}\n label={t(\"email\")}\n value={email}\n />\n handleEditClick(\"2\")}\n label={t(\"birthDate\")}\n value={birthDate}\n />\n handleEditClick(\"1\")}\n label={t(\"country\")}\n value={country}\n />\n handleEditClick(\"3\")}\n label={t(\"address\")}\n value={address}\n />\n handleEditClick(\"3\")}\n label={t(\"doorNumber\")}\n value={doorNumber}\n />\n {getCityIfDriverIsNotPortuguese()}\n handleEditClick(\"3\")}\n label={t(\"postalCode\")}\n value={postalCode}\n />\n handleEditClick(\"2\")}\n label={t(\"phone\")}\n value={phone}\n />\n \n \n handleEditClick(\"1\")}\n />\n handleEditClick(\"1\")}\n />\n handleEditClick(\"1\")}\n />\n handleEditClick(\"1\")}\n />\n handleEditClick(\"3\")}\n />\n handleEditClick(\"1\")}\n />\n handleEditClick(\"3\")}\n />\n handleEditClick(\"3\")}\n />\n handleEditClick(\"1\")}\n />\n \n
    \n \n {hasAdditionalDriver() ? (\n <>\n
    \n
    \n

    {t(\"reviewAdditionalDriverInfo\")}

    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n \n ) : null}\n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n );\n}\n\nconst pageId = 75;\nexport default withLang(TrackingPage(DriverInfoReviewPage, pageId));\n\nfunction buildReservationInfoToUpdateDriversInfo(\n driverInfo,\n phone,\n reservation\n) {\n const reservationInfo = {\n stationTimeZone: getLocalTimeZone(),\n driversCountryID: driverInfo.countryID,\n driversLicenseNumber: driverInfo.driversLicense,\n driversLicenseIssuedPlace:\n driverInfo.driversLicenseIssuedPlace ||\n driverInfo.iDIssuedPlace ||\n \"Default\",\n driversLicenseIssuedDate: driverInfo.driversLicenseIssuedDate,\n driversLicenseExpirationDate: driverInfo.driversLicenseExpirationDate,\n driversTitle: driverInfo.title,\n driversName: driverInfo.fullName,\n driversBirthDate: driverInfo.birthDate,\n driversAddress: driverInfo.address,\n driversDoorNumber: driverInfo.doorNumber,\n driversPostalCode: driverInfo.postalCode,\n driversEmail: driverInfo.email || \"\",\n driversPhone: phone,\n driversIdNumber: driverInfo.documentID,\n driversIdIssuedPlace: driverInfo.iDIssuedPlace || \"\",\n driversIdExpireDate: driverInfo.iDExpireDate || \"\",\n driversTaxNumber: driverInfo.taxNumber || \"\",\n driversDocumentType: driverInfo.documentType || \"\",\n driversCity: driverInfo.city || \"\",\n clientID: reservation.clientID,\n reservationNumber: reservation.Reservation,\n reservationPickupDate: reservation.PickupDate,\n reservationPickupStationId: reservation.PickupStationID,\n reservationDropOffDate: reservation.DropOffDate,\n reservationDropOffStationId: reservation.DropOffStationID,\n reservationReference: reservation.Reference || \"\",\n rateCode: reservation.RateCode,\n group: reservation.GroupID,\n };\n return reservationInfo;\n}\n","import axios from 'axios'\n\nexport async function updateReservation(values, usersLanguageISOCode) {\n const configs = {\n headers: {\n 'Accept-Language': usersLanguageISOCode\n }\n };\n const res = await axios.post('/reservation-check-in', values, configs);\n return res.data;\n}\n\nexport const reservationUpdateNotify = async () => {\n return (await axios.post(`/reservation-check-in-notify`)).data\n}\n\nexport async function updateReservationDriverInfo(values, usersLanguageISOCode) {\n const configs = {\n headers: {\n 'Accept-Language': usersLanguageISOCode\n }\n };\n const res = await axios.post('/reservation-update', values, configs);\n return res.data;\n}\n\nexport const validateSessionCheckIn = async () => {\n return (await axios.get(`/reservation-check-in-validate`)).data\n}","import React, { useContext, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DriverInfoHeader from \"../../components/PageHeader\";\n\nimport { saveSessionDriverAddressConfirmation } from \"../../services/ValidateDriverAddress\";\n\nimport { checkDriverInfoStepEditMode } from \"./driverInfoStepUtils\";\n\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport TrackingPage from \"../../components/TrackingPage\";\n\nconst INVALID_ADDRESS_STYLE = {\n color: \"gray\",\n marginTop: \"15px\",\n marginLeft: \"15px\",\n};\n\nfunction DriverInfoInvalidAddressPage(props) {\n const { t } = useTranslation();\n const code = new URLSearchParams(props.location.search).get(\"code\");\n\n const { driverInfoEditMode, invalidAddressAlert } = useContext(DomainContext);\n\n function handleChangeAddressClick() {\n props.history.replace('/driver-info-step/3');\n }\n\n async function handleConfirmAddressClick() {\n await saveSessionDriverAddressConfirmation();\n props.history.push(\n driverInfoEditMode ? \"/driver-info-review\" : \"/driver-info-step/3\"\n );\n }\n\n return (\n
    \n props.history.push(\"/start\")}\n />\n {invalidAddressAlert ? (\n
    \n
    \n
    \n
    \n
    \n {code ? (\n
    \n

    \n {t(\"confirmDoorNumber\")}\n

    \n
    \n ) : (\n <>\n
    \n

    \n {t(\"confirmAddressTitle\")}\n

    \n
    \n
    \n
    \n {t(\"confirmAddressMessage\")}{\" \"}\n
    \n
  • {invalidAddressAlert}
  • \n
    \n
    \n
    \n \n )}\n
    \n
    \n
    \n \n {t(\"confirmAddressButton\")}\n
    \n
    \n
    \n \n {t(\"changeAddressButton\")}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n ) : null}\n \n );\n}\n\nexport default TrackingPage(DriverInfoInvalidAddressPage, 40);\n","import axios from \"axios\";\nimport moment from \"moment-with-locales-es6\";\nimport React, {\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useState,\n useCallback,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DOCUMENT_TYPES, getDriverInfo } from \"../../services/GetDriverInfo\";\n\nimport { removeAccents } from \"../../utils/string-utils\";\nimport { useOnInit } from \"../../utils/useOnInit\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport { driverInfoReducer } from \"./driverInfoReducer\";\nimport {\n checkDriverInfoStepEditMode,\n DriverFieldsErrors,\n filterCountries,\n isPortugalCountry,\n mapCountryToOption,\n validValidationObject,\n} from \"./driverInfoStepUtils\";\nimport {\n validateCountry,\n validateDriversLicense,\n validateDriversLicenseExpirationDate,\n validateDriversLicenseIssuedDate,\n validateNotEmpty,\n} from \"./driver-fields-validations\";\nimport { isPortugalCountryId, padZero, PORTUGAL_COUNTRY_ID } from \"../../utils/utils\";\n\nimport DriverInfoDropdown from \"./components/DriverInfoDropdown\";\nimport PageHeader from \"../../components/PageHeader\";\nimport Footer from \"../../components/Footer\";\nimport Loading from \"../../components/Loading\";\nimport TrackingPage from \"../../components/TrackingPage\";\nimport withLang from \"../../withLang\";\nimport { DriverInfoPage } from \"./components/DriverInfoPage\";\nimport { LabeledDriverInfoInput } from \"./components/DriverInfoInput\";\nimport { Spacer } from \"../../components/Spacer\";\nimport DriverInfoOptionsInput from \"./components/DriverInfoOptionsInput\";\nimport DriverDateInput from \"./components/DriverDateInput\";\nimport alertModalManager from '../../components/alert-modal-wraper/alert-modal-manager'\nimport { AlertModalWithActions } from \"../../components/alert-modal/AlertModal\";\n\nexport function getDriversCountryIdByName(countries, name) {\n const country = countries.find((c) => c.name === name);\n return country ? country.countryID : name;\n}\n\nfunction getDriversCountryNameById(countries, id) {\n const country = countries.find((c) => c.countryID === id);\n return country ? country.name : id;\n}\n\nfunction AdditionalDriverStepPage(props) {\n const { t, i18n } = useTranslation();\n\n const {\n additionalDriverInfo,\n setDriverInfo,\n driverInfoHasClickedBack,\n setDriverInfoHasClickedBack,\n driverInfoEditMode,\n setDriverInfoEditMode,\n reservation,\n flowPreviousRoute,\n visitedRoutes,\n addVisitedRoutes,\n getDriversMinimumAgeForReservation,\n addAdditionalDriverInfo,\n getCountries,\n invalidBirthdates,\n addAdditionalDriver,\n hasAdditionalDriver,\n groupsDetails,\n } = useContext(DomainContext);\n const safeReservation = reservation || {};\n\n const vehicleGroupId = safeReservation.GroupID;\n const groupInfo = groupsDetails.find(g => g.id === vehicleGroupId) || {};\n\n const countries = useMemo(() => {\n const cs = getCountries();\n const ptCountry = cs.find((o) => o.countryID === PORTUGAL_COUNTRY_ID);\n return [ptCountry, ...cs.filter((o) => o.countryID !== PORTUGAL_COUNTRY_ID)].filter(\n (o) => o !== undefined\n );\n }, [getCountries]);\n\n const [state, dispatch] = useReducer(driverInfoReducer, {\n validatingCanSkipPage: true,\n canDisplayErrors: false,\n\n fullName: additionalDriverInfo.fullName || \"\",\n birthDay:\n (additionalDriverInfo.birthDate &&\n moment(additionalDriverInfo.birthDate, \"YYYY-MM-DD\").date()) ||\n \"\",\n birthMonth:\n (additionalDriverInfo.birthDate &&\n moment(additionalDriverInfo.birthDate, \"YYYY-MM-DD\").month() + 1) ||\n \"\",\n birthYear:\n (additionalDriverInfo.birthDate &&\n moment(additionalDriverInfo.birthDate, \"YYYY-MM-DD\").year()) ||\n \"\",\n\n driversLicenseIssuedPlace: additionalDriverInfo.driversLicenseIssuedPlace\n ? {\n value: getDriversCountryIdByName(\n countries,\n additionalDriverInfo.driversLicenseIssuedPlace\n ),\n label: additionalDriverInfo.driversLicenseIssuedPlace,\n }\n : null, \n driversLicense: additionalDriverInfo.driversLicense,\n driversLicenseIssuedDay:\n (additionalDriverInfo.driversLicenseIssuedDate &&\n moment(additionalDriverInfo.driversLicenseIssuedDate).date()) ||\n \"\",\n driversLicenseIssuedMonth:\n (additionalDriverInfo.driversLicenseIssuedDate &&\n moment(additionalDriverInfo.driversLicenseIssuedDate).month() + 1) ||\n \"\",\n driversLicenseIssuedYear:\n (additionalDriverInfo.driversLicenseIssuedDate &&\n moment(additionalDriverInfo.driversLicenseIssuedDate).year()) ||\n \"\",\n\n driversLicenseExpirationDay:\n (additionalDriverInfo.driversLicenseExpirationDate &&\n moment(additionalDriverInfo.driversLicenseExpirationDate).date()) ||\n \"\",\n driversLicenseExpirationMonth:\n (additionalDriverInfo.driversLicenseExpirationDate &&\n moment(additionalDriverInfo.driversLicenseExpirationDate).month() +\n 1) ||\n \"\",\n driversLicenseExpirationYear:\n (additionalDriverInfo.driversLicenseExpirationDate &&\n moment(additionalDriverInfo.driversLicenseExpirationDate).year()) ||\n \"\",\n\n minimumLicencePopupInfo: {\n isVisible: false,\n message: '',\n title: ''\n },\n\n isLoading: null,\n });\n\n const countriesOptions = useMemo(() => {\n return countries.map(mapCountryToOption);\n }, [countries]);\n\n const isLicencePT = useMemo(\n () => isPortugalCountry(state.driversLicenseIssuedPlace?.label),\n [state.driversLicenseIssuedPlace]\n );\n\n const expireDateOptional = useMemo(() => {\n return (\n reservation.configurations?.driversLicenseExpirationDateCountries?.includes(\n getDriversCountryIdByName(\n countries,\n state.driversLicenseIssuedPlace?.label\n )\n ) || false\n );\n }, [\n reservation.configurations,\n countries,\n state.driversLicenseIssuedPlace?.label,\n ]);\n\n const issuedDateOptional = useMemo(() => {\n return (\n reservation.configurations?.driversLicenseEmissionDateCountries?.includes(\n getDriversCountryIdByName(countries, state.driversLicenseIssuedCountry)\n ) || false\n );\n }, [reservation.configurations, countries, state.driversLicenseIssuedCountry]);\n\n const fullNameValidation = useMemo(() => {\n return validateNotEmpty(t, state.fullName, \"emptyFullName\");\n }, [t, state.fullName]);\n\n const birthDateValidation = useMemo(() => {\n function validateBirthDate() {\n if (\n state.birthDay &&\n state.birthMonth &&\n state.birthYear &&\n Number.isInteger(Number(state.birthDay)) &&\n Number.isInteger(Number(state.birthMonth)) &&\n Number.isInteger(Number(state.birthYear))\n ) {\n const birthDate = `${state.birthYear}-${padZero(\n state.birthMonth\n )}-${padZero(state.birthDay)}`;\n if (!moment(birthDate, \"YYYY-MM-DD\").isValid()) {\n return { isValid: false, message: t(\"invalidBirthDate\") };\n }\n if (moment().diff(birthDate, \"years\") > 80) {\n return { isValid: false, message: t(\"tooOldToDrive\") };\n }\n if (\n moment().diff(birthDate, \"years\") <\n getDriversMinimumAgeForReservation()\n ) {\n return { isValid: false, message: t(\"tooYoungToDrive\") };\n }\n if (invalidBirthdates.some((b) => b === birthDate)) {\n return { isValid: false, message: t(\"invalidBirthDate\") };\n }\n return { isValid: true };\n }\n return { isValid: false, message: t(\"invalidBirthDate\") };\n }\n return validateBirthDate();\n }, [state.birthDay, state.birthMonth, state.birthYear, invalidBirthdates, t]);\n\n const driversLicenseValidation = useMemo(\n () => validateDriversLicense(t, state.driversLicense, isLicencePT),\n [state.driversLicense, isLicencePT, t]\n );\n\n const driversLicenseIssuedCountryValidation = useMemo(\n () => validateCountry(t, state.driversLicenseIssuedPlace?.label, countries),\n [countries, state.driversLicenseIssuedPlace, t]\n );\n\n const driversLicenseIssuedDateValidation = useMemo(\n () =>\n validateDriversLicenseIssuedDate(\n t,\n state.driversLicenseIssuedDay,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedYear,\n issuedDateOptional\n ),\n [\n state.driversLicenseIssuedDay,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedYear,\n t,\n issuedDateOptional,\n ]\n );\n\n const driversLicenseExpirationDateValidation = useMemo(\n () =>\n validateDriversLicenseExpirationDate(\n t,\n state.driversLicenseExpirationDay,\n state.driversLicenseExpirationMonth,\n state.driversLicenseExpirationYear,\n expireDateOptional,\n state.driversLicenseIssuedDay,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedYear,\n issuedDateOptional,\n driversLicenseIssuedDateValidation.isValid\n ),\n [\n state.driversLicenseExpirationDay,\n state.driversLicenseExpirationMonth,\n state.driversLicenseExpirationYear,\n state.driversLicenseIssuedDay,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedYear,\n expireDateOptional,\n issuedDateOptional,\n driversLicenseIssuedDateValidation.isValid,\n t,\n ]\n );\n\n const canNext = useCallback(() => {\n return (\n fullNameValidation.isValid &&\n birthDateValidation.isValid &&\n driversLicenseIssuedCountryValidation.isValid &&\n driversLicenseValidation.isValid &&\n driversLicenseIssuedDateValidation.isValid &&\n driversLicenseExpirationDateValidation.isValid\n );\n }, [\n fullNameValidation,\n birthDateValidation,\n driversLicenseIssuedCountryValidation,\n driversLicenseValidation,\n driversLicenseIssuedDateValidation,\n driversLicenseExpirationDateValidation,\n ]);\n\n const handleProceedNextPage = useCallback((type, skipIssuedDateValidation) => {\n const issuedDateEmptyValid = issuedDateOptional && !state.driversLicenseIssuedDay && !state.driversLicenseIssuedMonth && !state.driversLicenseIssuedYear\n if (!skipIssuedDateValidation && issuedDateEmptyValid) {\n dispatch({\n type: 'SET_VALUE',\n payload: {\n minimumLicencePopupInfo: {\n isVisible: true,\n title: t('minimumYearsLicenceTitle', { minimumLicenceTime: groupInfo.minimumLicenceTime }),\n message: ''\n }\n }\n });\n return null;\n }\n\n addAdditionalDriverInfo({\n fullName: state.fullName,\n birthDate: `${state.birthYear}-${state.birthMonth}-${state.birthDay}`,\n driversLicense: state.driversLicense,\n driversLicenseIssuedPlace: state.driversLicenseIssuedPlace.label,\n driversLicenseIssuedDate: state.driversLicenseIssuedYear\n ? `${state.driversLicenseIssuedYear}-${state.driversLicenseIssuedMonth}-${state.driversLicenseIssuedDay}` : undefined,\n driversLicenseExpirationDate: state.driversLicenseExpirationYear\n ? `${state.driversLicenseExpirationYear}-${state.driversLicenseExpirationMonth}-${state.driversLicenseExpirationDay}`\n : undefined,\n });\n\n if (!hasAdditionalDriver()) {\n addAdditionalDriver()\n }\n \n props.history.push({\n pathname: props.history.location.state?.reviewUrl || \"/driver-info-review\",\n state: props.history.location.state,\n });\n }, [\n state.fullName,\n state.birthYear,\n state.birthMonth,\n state.birthDay,\n state.driversLicenseIssuedPlace,\n state.driversLicenseIssuedYear,\n state.driversLicenseIssuedMonth,\n state.driversLicenseIssuedDay,\n state.driversLicenseExpirationYear,\n state.driversLicenseExpirationMonth,\n state.driversLicenseExpirationDay,\n state.driversLicense,\n issuedDateOptional,\n ]);\n\n useEffect(() => {\n const editMode = checkDriverInfoStepEditMode(props.location.search);\n setDriverInfoEditMode(editMode);\n }, []);\n\n const onNextClick = useCallback(\n (type) => {\n const canSkipPage = canNext();\n dispatch({ type: \"SET_VALUES\", payload: { canDisplayErrors: true } });\n if (canSkipPage) {\n handleProceedNextPage(type);\n }\n },\n [handleProceedNextPage, canNext]\n );\n\n const onBack = useCallback(() => {\n props.history.goBack();\n }, []);\n\n const [validateCanSkip, setValidateCanSkip] = useState(\n !visitedRoutes.includes(window.location.pathname)\n );\n useOnInit(() => {\n const editMode = checkDriverInfoStepEditMode(props.location.search);\n if (!editMode && !visitedRoutes.includes(window.location.pathname)) {\n const canSkipPage = canNext();\n if (canSkipPage) {\n handleProceedNextPage(\"redirect\");\n } else {\n addVisitedRoutes(window.location.pathname);\n }\n }\n setValidateCanSkip(false);\n });\n\n function onMinimumLicenYearsPopupPositiveClick() {\n dispatch({ type: 'SET_VALUE', payload: { minimumLicencePopupInfo: { isVisible: false } } });\n handleProceedNextPage(null, true)\n }\n\n function onMinimumLicenYearsPopupNegativeClick() {\n alertModalManager.openModal({ title: t('mobileMinimumYearsLicenceAlertTitle') })\n }\n\n return (\n \n props.history.push(\"/start\")}\n />\n
    \n
    \n
    \n
    \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { fullName: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? fullNameValidation\n : validValidationObject\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { birthDay: value },\n })\n }\n onMonthChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { birthMonth: value },\n })\n }\n onYearChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { birthYear: value },\n })\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: {\n driversLicenseIssuedPlace: value,\n },\n })\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicense: value },\n })\n }\n placeholder={isPortugalCountry(state.driversLicenseIssuedPlace?.label) ? 'Ex: AA-1234567 8' : ''}\n disabled={!state.driversLicenseIssuedPlace || !driversLicenseIssuedCountryValidation.isValid}\n validationObject={\n state.canDisplayErrors\n ? driversLicenseValidation\n : validValidationObject\n }\n />\n \n \n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseIssuedDay: value },\n })\n }\n onMonthChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseIssuedMonth: value },\n })\n }\n onYearChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseIssuedYear: value },\n })\n }\n />\n \n \n {t('driversLicenseExpirationDate')} {'(' + t('optional') + ')'}\n \n ) : (\n undefined\n )\n }\n dayValue={state.driversLicenseExpirationDay}\n dayName=\"driversLicenseExpirationDay\"\n monthValue={state.driversLicenseExpirationMonth}\n monthName=\"driversLicenseExpirationMonth\"\n yearValue={state.driversLicenseExpirationYear}\n yearName=\"driversLicenseExpirationYear\"\n onDayChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseExpirationDay: value },\n })\n }\n onMonthChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseExpirationMonth: value },\n })\n }\n onYearChange={(value) =>\n dispatch({\n type: \"SET_VALUES\",\n payload: { driversLicenseExpirationYear: value },\n })\n }\n validationObject={\n state.canDisplayErrors\n ? driversLicenseExpirationDateValidation\n : validValidationObject\n }\n disabled={!state.driversLicenseIssuedPlace || !driversLicenseIssuedCountryValidation.isValid}\n />\n \n
    \n
    \n \n
    \n \n
    \n );\n}\n\nexport default withLang(TrackingPage(AdditionalDriverStepPage, 2007));\n","import React, { useContext } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport DriverInfoHeader from '../../components/PageHeader'\nimport Footer from '../../components/Footer'\nimport ConfirmValuesCheckBox from '../../components/ConfirmValuesCheckBox'\nimport { DriverInfoReviewSection, DriverInfoReviewSectionItem } from './components/review-section'\nimport LegalInformation from '../../components/legal-information-section/LegalInformation'\nimport TrackingPage from '../../components/TrackingPage'\n\nfunction AdditionalDriverInfoReview(props) {\n const { t } = useTranslation()\n\n const {\n language,\n additionalDriverInfo,\n hasAdditionalDriver,\n addAdditionalDriver,\n wasAdditionalDriverInfoVerified,\n setWasAdditionalDriverInfoVerified,\n additionalDriverPolicyAndTermsVerified,\n setAdditionalDriverPolicyAndTermsVerified,\n flowNextRoute,\n } = useContext(DomainContext)\n\n const {\n fullName,\n birthDate,\n driversLicense,\n driversLicenseIssuedPlace,\n driversLicenseIssuedDate,\n driversLicenseExpirationDate,\n documentID,\n iDIssuedCountry,\n iDExpireDate,\n } = additionalDriverInfo\n\n function handleNextClick() {\n if (!wasAdditionalDriverInfoVerified || !additionalDriverPolicyAndTermsVerified) { return; }\n\n if (!hasAdditionalDriver()) {\n addAdditionalDriver()\n }\n props.history.push({\n pathname: props.history.location.state?.returnTo || \"/driver-info-review\",\n state: props.history.location.state,\n });\n }\n\n function onEditClick() {\n props.history.push(\"/additional-driver-info-step/1?edit=true\");\n }\n\n return (\n
    \n props.history.push('/start')}\n />\n
    \n
    \n
    \n
    \n
    \n

    {t(\"reviewAdditionalDriverInfo\")}

    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n props.history.push('/privacy-policy')}\n handleTermsConditionsClick={() => props.history.push('/terms-conditions')}\n pageUrl={'/additional-driver-info-review'}\n history={props.history}\n search={props.location.search}\n state={props.location.state}\n />\n
    \n
    \n
    \n props.history.push('/additional-driver-info-step/1')}\n nextDisabled={!wasAdditionalDriverInfoVerified || !additionalDriverPolicyAndTermsVerified}\n handleNextClick={handleNextClick}\n />\n
    \n
    \n )\n}\n\nexport default TrackingPage(AdditionalDriverInfoReview, 78)","import React, { useContext, useState, useCallback } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport additionalDriverIcon from './icons/additional-driver.png'\nimport gpsIcon from './icons/gps.png'\nimport wifiIcon from './icons/WIFI.svg'\nimport babySeatIcon from './icons/baby-seat.png'\nimport boosterSeatIcon from './icons/booster-seat.png'\nimport crossBorderIcon from './icons/cross-border.png'\nimport tpIcon from './icons/TP.svg'\nimport tollsIcon from './icons/tolls.png'\nimport acdw1Icon from './icons/ACDW1.svg'\nimport astopIcon from './icons/ASTOP.svg'\nimport paiIcon from './icons/PAI.svg'\n\nimport DriverInfoHeader from '../../components/PageHeader'\nimport { FooterWithPrice } from '../../components/Footer'\nimport withLang from '../../withLang'\nimport { AlertModal } from '../../components/alert-modal/AlertModal'\nimport TrackingPage from '../../components/TrackingPage'\n\nconst hideIfAcquired=['ADD1']\n\nconst iconNameMap = {\n ACDW1: acdw1Icon,\n ASTOP: astopIcon,\n PAI: paiIcon,\n ADD1: additionalDriverIcon,\n GPS: gpsIcon,\n WIFI: wifiIcon,\n CBF: crossBorderIcon,\n BABY0: babySeatIcon,\n BABY1: babySeatIcon,\n BABY2: babySeatIcon,\n BSEAT: boosterSeatIcon,\n TP: tpIcon,\n TOLLS: tollsIcon,\n};\n\nfunction ComfortExtrasPage(props) {\n const { t } = useTranslation();\n\n const {\n getComfortExtras,\n addExtra,\n removeExtra,\n getQuantityOfExtra,\n isCorporate,\n appFlowConfigs,\n getCorporateExtras,\n flowNextRoute,\n isIncompatibleExtra,\n rentalAgreementQuoteValue,\n canDisplayExtra,\n mapExtraPrice,\n getQuantityOfExtraInReservation,\n flowPreviousRoute,\n saveSessionExtras,\n } = useContext(DomainContext)\n\n const [additionalDriverModalOpen, setAdditionalDriverModalOpen] = useState(false)\n\n function getExtrasIDs() {\n const extras = appFlowConfigs.list.map(e => ({ extraID: e.id, order: e.order }))\n .filter(canDisplayExtra)\n .filter(e => appFlowConfigs.single.some(s => e.id === s.id) ? getQuantityOfExtra(e) === 0 : true)\n .map(mapExtraPrice)\n .filter(e => !!e)\n .filter(e => hideIfAcquired.includes(e.extraID) ? getQuantityOfExtra(e) === 0 : true)\n .sort((a, b) => a.order - b.order)\n return extras\n }\n\n const comfortExtras = getExtrasIDs() || []\n\n function getExtraActionButton(extra) {\n if (extra.acceptQty === 'true' && extra.extraID !== 'ADD1') {\n return (\n
    \n { if (getQuantityOfExtra(extra) > 0) { removeExtra(extra) } }}>\n \"\"\n \n {getQuantityOfExtra(extra) + getQuantityOfExtraInReservation(extra.extraID)}\n addExtra(extra)}>\"\"\n
    \n )\n }\n if (getQuantityOfExtra(extra)) {\n return \n }\n\n if (extra.extraID === 'ADD1') {\n return (\n \n )\n }\n\n return (\n \n \n \n )\n }\n\n function ComfortExtrasItem({ extra, active, availabilityHint }) {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n {iconNameMap[extra.extraID] &&\n
    \n {`${extra.extraID}\n
    \n }\n
    \n

    {t(`${extra.extraID}Name`)}

    {availabilityHint ? ({t(`${extra.extraID}Hint`)}) : ''}\n
    \n
    \n
    \n

    \n {t(`${extra.extraID}ShortDescription`, t(`${extra.extraID}Description`))}\n

    \n
    \n
    \n
    \n ā‚¬{extra.pricePerDay || extra.totalPrice}/{extra.pricePerDay ? t('day') : t('total')}\n {getExtraActionButton(extra)}\n
    \n
    \n
    \n )\n }\n\n function nextRoute() {\n return flowNextRoute()\n }\n\n const handleNextClick = useCallback(() => {\n const extrasMapped = comfortExtras.map(extra => ({\n extraId: extra.extraID,\n price: extra.pricePerDay || extra.totalPrice,\n acquired: getQuantityOfExtra(extra) > 0,\n removedInReview: false,\n pageId: PageId,\n }))\n\n saveSessionExtras(extrasMapped)\n\n props.history.push(nextRoute())\n }, [comfortExtras, props.history, saveSessionExtras, getQuantityOfExtra])\n\n return comfortExtras.length > 0 ? (\n
    \n props.history.push('/start')}\n />\n
    \n
    \n
    \n
    \n
    \n

    {t('conformExtrasTitle')}

    \n
    \n
    \n
    \n {comfortExtras.map(extra =>\n \n )}\n
    \n
    \n
    \n flowPreviousRoute(props.history)}\n />\n {\n setAdditionalDriverModalOpen(false)\n props.history.push({\n pathname: '/additional-driver-info-step/1',\n state: { returnTo: '/comfort-extras', reviewUrl: '/additional-driver-info-review', privacyReturnTo: '/additional-driver-info-review' }\n })\n }}\n />\n
    \n
    \n ) : \n}\n\nconst PageId = 83\nexport default withLang(TrackingPage(ComfortExtrasPage, PageId))\n\nfunction AddSelectableExtraButton({ extra, history, children, returnUrl }) {\n const [isOpen, setIsOpen] = useState(false)\n const { addExtra } = useContext(DomainContext)\n const { t } = useTranslation()\n\n function onSelectExtra() {\n if (extra.extraID === 'ADD1') {\n setIsOpen(true)\n }\n\n else if (extra.extraID === 'UPSELLING') {\n history.push({\n pathname: '/upselling',\n state: { continueUrl: returnUrl }\n })\n } else if (extra.extraID === 'INSURANCE') {\n history.push({\n pathname: '/safety-packs',\n state: { continueUrl: returnUrl }\n })\n } else if (extra.extraID === 'BABYSEAT') {\n history.push({\n pathname: '/baby-seats',\n state: { continueUrl: returnUrl }\n })\n }\n\n else {\n addExtra(extra)\n }\n }\n\n return (\n
    \n {children}\n
    \n )\n}\n","import React, { useEffect } from 'react'\n\nexport function DynamicContent({ content, onClick, onLoad = () => { } }) {\n useEffect(() => {\n if (content) {\n onLoad()\n }\n }, [content])\n\n return (\n
    \n )\n}\n","import React, { useCallback, useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\nimport withLang from '../../withLang'\n\nimport DriverInfoHeader from '../../components/PageHeader'\nimport { FooterWithPrice } from '../../components/Footer'\n\nimport tollServicePTVideo from './videos/toll-service-pt.mp4'\nimport tollServiceENVideo from './videos/toll-service-en.mp4'\nimport { setPageId } from '../../services/Metrics'\nimport { DynamicContent } from '../../utils/dynamic-page'\n\nconst EXTRAS_MEDIA_SRC = {\n TOLLS: { default: tollServicePTVideo, pt: tollServicePTVideo, en: tollServiceENVideo },\n};\n\nfunction SingleExtraPage({ history, match }) {\n const { t } = useTranslation()\n\n const {\n getQuantityOfExtra,\n rentalAgreementQuoteValue,\n addExtra,\n removeExtra,\n getCorporateExtras,\n appFlowConfigs,\n reservation,\n isCorporate,\n getComfortExtras,\n flowNextRoute,\n language,\n localizationAssets,\n flowPreviousRoute,\n pages\n } = useContext(DomainContext)\n\n const [seeMoreOpen, setSeeMoreOpen] = useState(false)\n\n const [currentPage, setCurrentPage] = useState(null)\n\n const [currentExtra, setExtra] = useState(null)\n\n const extraId = currentExtra ? currentExtra.extraID : ''\n const hasExtra = currentExtra ? getQuantityOfExtra(currentExtra) > 0 : false\n\n const mediaSrc = currentExtra ? localizationAssets[`mobile${currentExtra.extraID}Video`] : null\n const isVideo = mediaSrc ? mediaSrc.endsWith('.mp4') : null\n\n useEffect(() => {\n if (pages) {\n const _currentPage = pages.find(p => p.url === '/single-extra/TOLLS')\n setPageId({ pageId: _currentPage.id })\n setCurrentPage(_currentPage)\n }\n }, [pages])\n\n useEffect(() => {\n if (currentPage && !currentExtra) {\n const extraId = currentPage.extraId\n const extra = getCorporateExtras([extraId])[0]\n if (!extra) {\n history.push(getNextStepUrl())\n } else {\n setExtra(extra)\n }\n }\n }, [currentPage, getCorporateExtras, history])\n\n const getNextStepUrl = useCallback(() => {\n return flowNextRoute(match.path);\n }, [match, flowNextRoute])\n\n const handleContentClick = useCallback((e) => {\n if (e.target.id === '_ADD-EXTRA_') {\n if (hasExtra) {\n removeExtra(currentExtra)\n } else {\n addExtra(currentExtra)\n }\n }\n }, [hasExtra, removeExtra, addExtra, currentExtra])\n\n return currentExtra ? (\n
    \n history.push('/start')}\n />\n
    \n
    \n
    \n
    \n
    \n
    \n {currentPage ?\n \n : null}\n
    \n

    {t(`${extraId}Name`)}

    \n {t(`${extraId}SubTitle`)}\n
    \n

    {t(`${extraId}Description`)}

    \n
    \n \n
    \n
    \n
    \n ā‚¬{currentExtra.pricePerDay || currentExtra.totalPrice}/{currentExtra.pricePerDay ? t('day') : t('totalLC')}\n {hasExtra ?\n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n history.push(getNextStepUrl())}\n handlePrevClick={() => flowPreviousRoute(history)}\n />\n
    \n
    \n ) : null\n}\n\nexport default withLang(SingleExtraPage)\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport moment from 'moment'\n\nimport { updateReservation, reservationUpdateNotify, validateSessionCheckIn } from '../../services/UpdateReservation'\n\nimport { DomainContext, getDriversFirstName, mapDriversPhone } from '../../domain-repository/DomainRepository'\nimport { GroupsImagesContext } from '../../domain-repository/GroupsImagesRepository'\n\nimport DriverInfoHeader from '../../components/PageHeader'\nimport ReviewBanner from '../../components/review/ReviewBanner'\nimport ReviewStations from '../../components/review/ReviewStations'\nimport ReviewVehicleProperties from '../../components/review/ReviewVehicleProperties'\nimport { AlertModal } from '../../components/alert-modal/AlertModal'\nimport withLang from '../../withLang'\nimport Loading from '../../components/Loading'\nimport { saveSessionEnd } from '../../services/Metrics'\nimport alertModalManager from '../../components/alert-modal-wraper/alert-modal-manager'\nimport TrackingPage from '../../components/TrackingPage'\nimport { getLocalTimeZone } from '../../utils/utils'\nimport { hasDriverValues } from '../driver/driverInfoStepUtils'\n\nfunction ReviewFinalReservationPage(props) {\n const { t, i18n } = useTranslation();\n\n const {\n reservation,\n selectedExtras,\n reservationExtras,\n rentalAgreementQuoteValue,\n getVehicleForRA,\n driverInfo,\n additionalDriverInfo,\n upselling,\n getExcessForExtras,\n hasAdditionalDriver,\n getDriversPhoneCountryCode,\n isIncompatibleExtra,\n appFlowConfigs,\n removedExtrasInReview,\n groupsDetails,\n setNotifyUserResult,\n language,\n getBestPackForExtras,\n setSessionId,\n canGoInsurancePacksPage,\n sessionExtras,\n stationsConfigurations,\n localizationAssets,\n } = useContext(DomainContext)\n\n const safeReservation = reservation || {}\n const safeDriverInfo = driverInfo || {}\n\n const [isValidatingSession, setIsValidatingSession] = useState(false)\n\n useEffect(() => {\n setIsValidatingSession(true)\n \n if (!hasDriverValues(driverInfo)) {\n alertModalManager.openModal({ title: t('errorTitle'), message: t('errorMessage') })\n setIsValidatingSession(false)\n } else {\n\n }\n\n validateSessionCheckIn()\n .then((checkedIn) => {\n if (checkedIn) {\n alertModalManager.openModal({ title: t('errorTitle'), message: t('errorMessage') })\n }\n })\n .finally((res) => {\n setIsValidatingSession(false)\n })\n }, [])\n\n const vehicle = getVehicleForRA()\n\n const { groupsConfigurations } = useContext(GroupsImagesContext)\n\n const groupInfo = groupsDetails.find(g => g.id === vehicle) || {}\n\n const [loading, setIsLoading] = useState(false)\n\n const [reservationPopupInfo, setReservationPopupInfo] = useState({\n isVisible: false,\n message: '',\n title: ''\n })\n\n function handleOpenExtrasClick() {\n props.history.push('/review-final-reservation-extras')\n }\n\n function handleNextClick() {\n submitUpdateReservation()\n }\n\n function submitUpdateReservation() {\n function prepareExtras() {\n const ALWAYS_PRESENT = ['TP', 'CDW']\n const configuredPacks = (reservation && safeReservation.packs ? safeReservation.packs : [])\n\n const currentExtrasToCheck = [...selectedExtras.map(e => e.extraID), ...reservationExtras.map(e => e.extraID)]\n\n if (!canGoInsurancePacksPage()) {\n return currentExtrasToCheck.join(',')\n }\n\n /*\n const packWithMatchingCurrentExtras = getBestPackForExtras(currentExtrasToCheck, configuredPacks, true)\n\n if (packWithMatchingCurrentExtras) {\n const packSelectedInKiosk = packWithMatchingCurrentExtras.extrasList.some(e => selectedExtras.find(se => se.extraID === e)) || selectedExtras.find(se => se.extraID === packWithMatchingCurrentExtras.extraId)\n if (packSelectedInKiosk) {\n const extraAvail = safeReservation.availableExtras.find(e => e.extraID === packWithMatchingCurrentExtras.extraId)\n const validExtras = currentExtrasToCheck.filter(e =>\n !packWithMatchingCurrentExtras.extrasList.filter(e => !ALWAYS_PRESENT.includes(e)).includes(e) &&\n (extraAvail && extraAvail.must_not_include && extraAvail.must_not_include.split(',').find(mni => mni === e) === undefined) &&\n packWithMatchingCurrentExtras.extraId !== e\n )\n return [packWithMatchingCurrentExtras.extraId, ...validExtras].join(',')\n }\n }\n */\n\n const matchingPackFromReservation = configuredPacks.find(p => p.extraId !== 'IF' && p.extraId !== 'RF' && currentExtrasToCheck.find(e => e === p.extraId) !== undefined)\n const revExtraValid = matchingPackFromReservation ?\n reservationExtras\n .filter(r => !matchingPackFromReservation.extrasList.filter(e => !ALWAYS_PRESENT.includes(e)).includes(r.extraID)) : reservationExtras\n\n return [...selectedExtras.map(e => e.extraID), ...revExtraValid.map(e => e.extraID)].join(',')\n }\n\n if (loading) { return; }\n const extrasForMetrics = selectedExtras.map(e => ({ extraId: e.extraID, price: e.totalPrice }))\n\n if (upselling?.groupID) {\n extrasForMetrics.push({ extraId: 'UPSELLING', price: upselling.previewValue, metainfo: JSON.stringify({ group: upselling.groupID }) })\n }\n\n const sessionExtrasMapped = sessionExtras.map(se => ({\n ...se,\n removedInReview: removedExtrasInReview.some(e => e.extraId === se.extraId),\n acquired: removedExtrasInReview.some(e => e.extraId === se.extraId) ? false : se.acquired,\n }))\n\n const reservationInfo = {\n removedExtrasInReview,\n acquiredExtras: extrasForMetrics,\n sessionExtras: sessionExtrasMapped,\n driversCountryID: driverInfo.countryID,\n driversLicenseNumber: driverInfo.driversLicense,\n driversLicenseIssuedPlace: driverInfo.driversLicenseIssuedPlace || driverInfo.iDIssuedPlace || 'Default',\n driversLicenseIssuedDate: driverInfo.driversLicenseIssuedDate,\n driversLicenseExpirationDate: driverInfo.driversLicenseExpirationDate,\n driversName: driverInfo.fullName,\n driversBirthDate: driverInfo.birthDate,\n driversAddress: driverInfo.address,\n driversDoorNumber: driverInfo.doorNumber,\n driversPostalCode: driverInfo.postalCode,\n driversEmail: driverInfo.email || '',\n driversPhone: mapDriversPhone(driverInfo.phone, getDriversPhoneCountryCode()),\n driversIdNumber: driverInfo.documentID,\n driversIdIssuedPlace: driverInfo.iDIssuedPlace || '',\n driversIdExpireDate: driverInfo.iDExpireDate || '',\n driversTaxNumber: driverInfo.taxNumber || '',\n driversDocumentType: driverInfo.documentType || '',\n driversCity: driverInfo.city || '',\n clientID: safeReservation.clientID,\n reservationNumber: safeReservation.Reservation,\n reservationPickupDate: safeReservation.PickupDate,\n pickupStationTimeZone: getLocalTimeZone(),\n reservationPickupStationId: safeReservation.PickupStationID,\n reservationDropOffDate: safeReservation.DropOffDate,\n reservationDropOffStationId: safeReservation.DropOffStationID,\n dropOffStationName: safeReservation.DropOffStation,\n pickupStationName: safeReservation.PickupStation,\n vehicleType: groupInfo.type || '',\n reservationReference: safeReservation.Reference || '',\n rateCode: safeReservation.RateCode,\n group: safeReservation.GroupID,\n groupUpselling: upselling.groupID,\n extras: prepareExtras(),\n nationality: language,\n isPastPickupHour: safeReservation.isPastPickupHour,\n salesOnly: safeReservation.salesOnly,\n disableSales: safeReservation.disableSales,\n };\n\n if (hasAdditionalDriver()) {\n reservationInfo.additionalDriverName = additionalDriverInfo.fullName;\n reservationInfo.additionalDriverBirthDate = additionalDriverInfo.birthDate;\n reservationInfo.additionalDriverLicenseNumber = additionalDriverInfo.driversLicense;\n reservationInfo.additionalDriverLicenseIssuedPlace = additionalDriverInfo.driversLicenseIssuedPlace;\n reservationInfo.additionalDriverLicenseIssuedDate = additionalDriverInfo.driversLicenseIssuedDate;\n reservationInfo.additionalDriverLicenseExpirationDate = additionalDriverInfo.driversLicenseExpirationDate;\n reservationInfo.additionalDriverIdNumber = additionalDriverInfo.documentID;\n reservationInfo.additionalDriverIdCountry = additionalDriverInfo.iDIssuedCountry;\n reservationInfo.additionalDriverIdExpireDate = additionalDriverInfo.iDExpireDate;\n }\n setIsLoading(true)\n updateReservation(reservationInfo, i18n.language)\n .then(results => {\n setIsLoading(false)\n if (results.skipNotify) {\n saveSessionEnd(false)\n props.history.push('/thank-you')\n } else {\n handleReservationUpdateNotify()\n }\n })\n .catch(err => {\n setIsLoading(false)\n alertModalManager.openModal({ title: t('errorTitle'), message: t('errorMessage') })\n })\n }\n\n const handleReservationUpdateNotify = () => {\n setIsLoading(true);\n reservationUpdateNotify()\n .then((res) => {\n saveSessionEnd(false)\n setNotifyUserResult(res)\n props.history.push('/thank-you')\n })\n .catch(e => {\n setIsLoading(false);\n alertModalManager.openModal({ title: t('errorTitle'), message: t('errorMessage') })\n })\n }\n\n function getStationName(stationId) {\n const station = stationsConfigurations.find(s => s.stationId === stationId)\n return station ? t(station.name) : `Station ${stationId}`\n }\n\n return (\n
    \n props.history.push('/start')}\n />\n
    \n
    \n \n\n
    \n \n \n \n
    \n
    {t('included')}
    \n
    \n
    \n
    \n props.history.goBack()}\n handleNextClick={handleNextClick}\n disabled={isValidatingSession}\n \n />\n {\n setReservationPopupInfo({ isVisible: false });\n props.history.push('/');\n }}\n />\n
    \n
    \n )\n}\n\nexport default withLang(TrackingPage(ReviewFinalReservationPage, 85))\n\nfunction ReviewFooter({ style, handleNextClick, handlePrevClick, totalPrice, hidePrice, disabled }) {\n const { t } = useTranslation();\n\n return (\n
    \n
    \n {disabled ? null :\n <>\n
    \"Back\"
    \n {hidePrice ? null :
    {t('total')} ā‚¬ {totalPrice}
    }\n
    {t('finalize')}
    {t('reservation')}
    \n \n }\n
    \n
    \n )\n\n}\n","import React, { useContext, useState } from 'react'\nimport { useTranslation } from \"react-i18next\"\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { FooterWithClose } from '../../components/Footer'\nimport DriverInfoHeader from '../../components/PageHeader'\nimport withLang from '../../withLang'\nimport TrackingPage from '../../components/TrackingPage'\nimport { InfoTooltip } from '../../components/InfoTooltip'\n\nfunction ReviewFinalReservationExtrasPage(props) {\n const { t } = useTranslation();\n\n const {\n reservation,\n selectedExtras,\n removeExtra,\n insuranceSelectedPack,\n changeInsurancePack,\n setInsuranceSelectedPack,\n saveRemovedExtra,\n } = useContext(DomainContext)\n\n return (\n
    \n props.history.push('/start')}\n />\n
    \n
    \n
    \n

    {t('reservationViewAll')}

    \n
    \n \n {selectedExtras.filter(e => !e.isPack && e.isUserRemovable).map((extra, i) =>\n \n )}\n {selectedExtras.filter(e => !e.isPack && !e.isUserRemovable).map((extra, i) =>\n \n )}\n {insuranceSelectedPack ?\n {\n changeInsurancePack(null, insuranceSelectedPack)\n setInsuranceSelectedPack(null)\n saveRemovedExtra({ ...insuranceSelectedPack, extraID: insuranceSelectedPack.extraId })\n }}\n />\n : null}\n
    \n
    \n
    \n props.history.goBack()}\n />\n
    \n
    \n )\n}\n\nexport default withLang(TrackingPage(ReviewFinalReservationExtrasPage, 86))\n\nfunction Days({ days }) {\n const { t } = useTranslation();\n\n return (\n
    \n
    \"\"
    \n
    \n {t('dayCount', { count: days })}\n
    \n
    \n )\n}\n\nfunction Extra({ extra, }) {\n const { t } = useTranslation();\n return (\n
    \n
    \"\"
    \n
    \n {t(`${extra.extraID}ShortName`, t(`${extra.extraID}Name`))}\n
    \n \n
    \n )\n}\n\nfunction RemovableExtra({ extra, removeExtra }) {\n const { t } = useTranslation();\n\n const [isOpen, setIsOpen] = useState(false)\n\n return (\n
    \n
    \"\"
    \n
    \n {t(`${extra.extraID}ShortName`, t(`${extra.extraID}Name`))}\n
    \n \n
    \n {\n isOpen ?\n
    \n
    removeExtra(extra, true)}>{t('unselect')}
    \n
    setIsOpen(false)}>{t('cancel')}
    \n
    \n :\n
    setIsOpen(true)} className=\"rental-agreement-info__item__review--selected-extra__icon\">\n ×\n
    \n }\n
    \n\n
    \n )\n}\n\nfunction PackExtra({ extra, handleRemove }) {\n const { t } = useTranslation();\n\n const [isOpen, setIsOpen] = useState(false)\n\n return (\n
    \n
    \"\"
    \n
    \n {extra.name}\n
    \n \n
    \n {\n isOpen ?\n
    \n
    handleRemove(extra, true)}>{t('unselect')}
    \n
    setIsOpen(false)}>{t('cancel')}
    \n
    \n :\n
    setIsOpen(true)} className=\"rental-agreement-info__item__review--selected-extra__icon\">\n ×\n
    \n }\n
    \n
    \n )\n}","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { saveSessionEnd, setPageId } from '../../services/Metrics'\n\nimport withLang from '../../withLang'\nimport { session } from '../../load-config'\n\nfunction ThankYouPage(props) {\n const { t } = useTranslation()\n\n const {\n reservation,\n notifyResult,\n setSessionId,\n } = useContext(DomainContext)\n\n const sessionId = session.getSessionId()\n \n const [savedSessionId, setSavedSessionId] = useState(sessionId)\n\n useEffect(() => {\n setPageId({ pageId: 26 })\n saveSessionEnd(false)\n }, [])\n\n function getNotificationMessage() {\n const { wasEmailSent, wasSMSSent } = notifyResult\n\n if (wasEmailSent && wasSMSSent) {\n return t('thankYouEmailAndSMSSentMobile')\n }\n if (wasEmailSent && !wasSMSSent) {\n return t('thankYouEmailSentMobile')\n }\n if (!wasEmailSent && wasSMSSent) {\n return t('thankYouSMSSentMobile')\n }\n return t('thankYouEmailAndSMSSentMobile')\n }\n\n const notificationMessage = notifyResult ? getNotificationMessage() : null\n\n return (\n
    \n
    \n
    \n
    \n props.history.push('/start')} src={require(`../../assets/images/logo.png`)} alt=\"Guerin\" className=\"img-fluid pt-3 pb-3\" />\n
    \n
    \n
    \n
    \n
    \n

    {t('thankYouForYourPreference')}

    \n

    {t('thankYouReservationUpdate')}

    \n

    {reservation ? reservation.Reservation : ''}

    \n

    {notificationMessage}

    \n
    \n
    \n
    props.history.push(`/rating`)}>\n {t('opinionButton')}\n
    \n
    \n )\n}\n\nexport default withLang(ThankYouPage)\n","import React, { useState } from 'react'\n\nimport searchIcon from '../../assets/images/search.png'\n\nfunction SelectStation({ t, handleClose, stations, handleStationClick }) {\n const [inputFocus, setInputFocus] = useState(false)\n const [filterStation, setFilterStation] = useState('')\n\n const filteredStations = filterStation ? stations.filter(s => s.label.toUpperCase().includes(filterStation.toUpperCase())) : stations\n\n return (\n
    \n
    \n
    \n \"X\"\n
    \n
    \n

    \n {t('selectPickupStation')}\n

    \n
    \n
    \n setInputFocus(false)} onFocus={() => setInputFocus(true)} onChange={e => setFilterStation(e.target.value)} id=\"devolucao\" type=\"text\" name=\"local_devolucao\" className=\"w-100\" />\n \n
    \n
    \n
    \n {filteredStations.map(s =>\n
    handleStationClick(s)}>{s.label}
    \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n )\n}\n\nexport default SelectStation","var flatpickr = function (selector, config, callBack, close, localization) {\n 'use strict';\n var elements,\n createInstance,\n instances = [],\n i;\n\n flatpickr.prototype = flatpickr.init.prototype;\n\n createInstance = function (element) {\n if (element._flatpickr) {\n element._flatpickr.destroy();\n }\n element._flatpickr = new flatpickr.init(element, config, callBack, close, localization);\n return element._flatpickr;\n };\n\n if (selector.nodeName) {\n return createInstance(selector);\n }\n\n elements = document.querySelectorAll(selector);\n\n if (elements.length === 1) {\n return createInstance(elements[0]);\n }\n\n for (var i = 0; i < elements.length; i++) {\n instances.push(createInstance(elements[i]));\n }\n\n return instances;\n};\n\n/**\n * @constructor\n */\nflatpickr.init = function (element, instanceConfig, callBack, close, localization) {\n 'use strict';\n\n // functions\n var self = this,\n wrap,\n uDate,\n equalDates,\n pad,\n formatDate,\n monthToStr,\n isDisabled,\n buildWeekdays,\n buildDays,\n buildTime,\n timeWrapper,\n updateValue,\n updateNavigationCurrentMonth,\n buildMonthNavigation,\n handleYearChange,\n documentClick,\n calendarClick,\n buildCalendar,\n bind,\n open,\n close,\n destroy,\n init,\n triggerChange,\n changeMonth,\n getDaysinMonth,\n jumpToDate;\n\n // elements & variables\n var calendarContainer = document.createElement('div'),\n navigationCurrentMonth = document.createElement('span'),\n monthsNav = document.createElement('div'),\n prevMonthNav = document.createElement('span'),\n nextMonthNav = document.createElement('span'),\n calendar = document.createElement('table'),\n calendarBody = document.createElement('tbody'),\n currentDate = new Date(),\n altInput,\n wrapperElement = document.createElement('div'),\n hourElement,\n minuteElement,\n am_pm;\n\n\n init = function () {\n\n calendarContainer.className = 'flatpickr-calendar';\n navigationCurrentMonth.className = 'flatpickr-current-month';\n instanceConfig = instanceConfig || {};\n\n self.config = {};\n self.element = element;\n self.destroy = destroy;\n\n for (var config in self.defaultConfig)\n self.config[config] =\n instanceConfig[config] ||\n self.element.dataset[config.toLowerCase()] ||\n self.defaultConfig[config];\n\n\n self.config.defaultDate &&\n ( self.config.defaultDate = uDate(self.config.defaultDate) );\n\n\n if ( self.element.value || self.config.defaultDate )\n self.selectedDateObj = uDate(self.config.defaultDate||self.element.value);\n\n self.config.minDate && ( self.config.minDate =\n uDate(self.config.minDate === \"today\" ? new Date() : self.config.minDate, true) );\n\n self.config.maxDate && (self.config.maxDate = uDate(self.config.maxDate, true) );\n\n self.l10n = {\n ...localization,\n daysInMonth: self.l10n.daysInMonth,\n firstDayOfWeek: self.l10n.firstDayOfWeek,\n }\n\n\n jumpToDate(self.selectedDateObj||self.config.minDate||currentDate);\n\n wrap();\n buildCalendar();\n bind();\n updateValue();\n };\n\n uDate = function(date, timeless){\n\n timeless = timeless||false;\n\n // dashes to slashes (just in case) to keep firefox happy\n typeof date === 'string' && (date = new Date(date.replace(/-/g, \"/\")));\n timeless && ( date.setHours(0,0,0,0) );\n\n return date;\n }\n\n equalDates = function(date1, date2){\n return date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n\n }\n\n wrap = function () {\n\n wrapperElement.className = 'flatpickr-wrapper';\n wrapperElement.className += \" open\";\n\n self.element.parentNode.insertBefore(wrapperElement, self.element);\n wrapperElement.appendChild(self.element);\n\n self.config.inline && ( wrapperElement.classList.add('inline') );\n\n if ( self.config.altInput ){\n\n // replicate self.element\n altInput = document.createElement(self.element.nodeName);\n altInput.className = self.element.className;\n\n self.element.type='hidden';\n wrapperElement.appendChild(altInput);\n\n }\n\n };\n\n getDaysinMonth = function(givenMonth){\n\n var yr = self.currentYear,\n month = givenMonth || self.currentMonth;\n\n if (month === 1 && ( !( (yr % 4) || (!(yr % 100) && (yr % 400))) ) )\n return 29;\n\n return self.l10n.daysInMonth[month];\n }\n\n updateValue = function(){\n\n if (self.selectedDateObj && self.config.enableTime ){\n\n // update time\n var hour = parseInt(hourElement.value)%12 + 12*(am_pm.innerHTML=== \"PM\"),\n minute = (60+parseInt(minuteElement.value ))%60;\n\n self.selectedDateObj.setHours(hour , minute );\n\n hourElement.value = pad((12 + hour)%12+12*(hour%12===0));\n minuteElement.value = pad(minute);\n\n }\n\n if ( self.selectedDateObj )\n self.element.value = formatDate(self.config.dateFormat);\n\n if ( self.config.altInput && self.selectedDateObj )\n altInput.value = formatDate(self.config.altFormat);\n\n triggerChange();\n\n }\n\n pad = function(num){\n return (\"0\" + num).slice(-2);\n }\n\n formatDate = function (dateFormat) {\n\n self.config.enableTime && ( dateFormat+= \" \" + self.config.timeFormat);\n\n var formattedDate = '',\n formats = {\n d: function () {\n return pad( formats.j() );\n },\n D: function () {\n return self.l10n.weekdays.shorthand[ formats.w() ];\n },\n j: function () {\n return self.selectedDateObj.getDate();\n },\n l: function () {\n return self.l10n.weekdays.longhand[ formats.w() ];\n },\n w: function () {\n return self.selectedDateObj.getDay();\n },\n F: function () {\n return monthToStr( formats.n() - 1, false );\n },\n m: function () {\n return pad( formats.n() );\n },\n M: function () {\n return monthToStr( formats.n() - 1, true );\n },\n n: function () {\n return self.selectedDateObj.getMonth() + 1;\n },\n U: function () {\n return self.selectedDateObj.getTime() / 1000;\n },\n y: function () {\n return String( formats.Y() ).substring(2);\n },\n Y: function () {\n return self.selectedDateObj.getFullYear();\n },\n\n h: function(){\n return self.selectedDateObj.getHours()%12 ? self.selectedDateObj.getHours()%12 : 12;\n },\n\n H: function(){\n return pad(self.selectedDateObj.getHours());\n },\n\n i: function(){\n return pad( self.selectedDateObj.getMinutes() );\n },\n\n K: function(){\n return self.selectedDateObj.getHours() > 11 ? \"PM\" : \"AM\";\n }\n },\n formatPieces = dateFormat.split('');\n\n [].forEach.call(formatPieces, function (formatPiece, index) {\n\n if (formats[formatPiece] && formatPieces[index - 1] !== '\\\\') \n formattedDate += formats[formatPiece]();\n\n else if (formatPiece !== '\\\\') \n formattedDate += formatPiece;\n \n\n });\n\n return formattedDate;\n };\n\n monthToStr = function (date, shorthand) {\n\n return shorthand ? self.l10n.months.shorthand[date] : self.l10n.months.longhand[date];\n\n };\n\n\n buildWeekdays = function () {\n\n var weekdayContainer = document.createElement('thead'),\n firstDayOfWeek = self.l10n.firstDayOfWeek,\n weekdays = self.l10n.weekdays.shorthand.slice();\n\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [].concat(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n\n weekdayContainer.innerHTML = '' + weekdays.join('') + '';\n calendar.appendChild(weekdayContainer);\n };\n\n isDisabled = function(date){\n\n for (var i = 0; i < self.config.disable.length; i++)\n if ( date >= uDate( self.config.disable[i]['from'] ) && date <= uDate( self.config.disable[i]['to'] ) )\n return true;\n\n return false;\n\n };\n\n buildTime = function(){\n\n var timeContainer = document.createElement(\"div\"),\n separator = document.createElement(\"span\");\n\n timeContainer.className = \"flatpickr-time\";\n\n hourElement = document.createElement(\"input\");\n minuteElement = document.createElement(\"input\");\n am_pm = document.createElement(\"span\");\n am_pm.className = \"flatpickr-am-pm\";\n\n separator.className = \"flatpickr-time-separator\";\n separator.innerHTML = \":\";\n\n hourElement.className = \"flatpickr-hour\";\n hourElement.type = minuteElement.type = \"number\";\n minuteElement.className = \"flatpickr-minute\";\n\n\n hourElement.value = self.selectedDateObj ? pad(self.selectedDateObj.getHours()) : 12;\n minuteElement.value = self.selectedDateObj ? pad(self.selectedDateObj.getMinutes()) : \"00\";\n am_pm.innerHTML = [\"AM\",\"PM\"][(self.selectedDateObj && hourElement.value > 11)|0];\n\n hourElement.step = self.config.hourIncrement;\n minuteElement.step = self.config.minuteIncrement;\n\n hourElement.max = 12;\n minuteElement.max = 59;\n hourElement.min = 1;\n minuteElement.min = 0;\n\n timeContainer.appendChild(hourElement);\n timeContainer.appendChild(separator);\n timeContainer.appendChild(minuteElement);\n timeContainer.appendChild(am_pm);\n\n calendarContainer.appendChild(timeContainer);\n\n }\n\n\n timeWrapper = function (e){\n\n e.preventDefault();\n\n var min = parseInt(e.target.min),\n max = parseInt(e.target.max),\n step = parseInt(e.target.step),\n delta = step * ( Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))) ),\n newValue = ( parseInt(e.target.value) + delta )%(max+(min===0));\n\n newValue < min && ( newValue = max+(min===0) - step*(min===0) );\n e.target.value = pad( newValue );\n\n }\n\n buildDays = function () {\n\n var firstOfMonth = ( new Date(self.currentYear, self.currentMonth, 1).getDay() - self.l10n.firstDayOfWeek + 7 )%7,\n numDays = getDaysinMonth(),\n prevMonth = ( self.currentMonth - 1 + 12)%12,\n prevMonthDays = getDaysinMonth( prevMonth ),\n calendarFragment = document.createDocumentFragment(),\n row = document.createElement('tr'),\n dayNumber,\n className,\n cur_date,\n date_is_disabled,\n date_outside_minmax;\n\n\n // prepend days from the ending of previous month\n for( dayNumber = prevMonthDays + 1 - firstOfMonth ; dayNumber <= prevMonthDays; dayNumber++ )\n row.innerHTML +=\n ''\n + ''\n + (dayNumber )\n + '' +\n '';\n\n calendarBody.innerHTML = '';\n\n\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= 42 - firstOfMonth; dayNumber++) {\n\n if (dayNumber <= numDays) // avoids new date objects for appended dates\n cur_date = new Date(self.currentYear, self.currentMonth, dayNumber);\n\n // we have reached the end of a week, wrap to the next line\n if ( (dayNumber + firstOfMonth - 1) % 7 === 0) {\n\n calendarFragment.appendChild(row);\n row = document.createElement('tr');\n\n }\n\n date_outside_minmax = (self.config.minDate && cur_date < self.config.minDate )\n || (self.config.maxDate && cur_date > self.config.maxDate);\n\n\n date_is_disabled = dayNumber > numDays || date_outside_minmax || isDisabled( cur_date );\n\n className = date_is_disabled ? \"disabled\" : \"slot\";\n\n if (!date_is_disabled && !self.selectedDateObj && equalDates(cur_date, currentDate) )\n className += ' today';\n\n if (!date_is_disabled && self.selectedDateObj && equalDates(cur_date, self.selectedDateObj) )\n className += ' selected';\n\n\n row.innerHTML +=\n ''\n + ''\n + (dayNumber > numDays ? dayNumber % numDays : dayNumber)\n + '';\n\n\n }\n\n calendarFragment.appendChild(row);\n calendarBody.appendChild(calendarFragment);\n\n };\n\n updateNavigationCurrentMonth = function () {\n\n navigationCurrentMonth.innerHTML =\n '' +\n monthToStr(self.currentMonth, self.config.shorthandCurrentMonth) +\n ' '\n + self.currentYear;\n\n };\n\n buildMonthNavigation = function () {\n\n monthsNav.className = 'flatpickr-months';\n\n prevMonthNav.className = \"flatpickr-prev-month\";\n prevMonthNav.innerHTML = self.config.prevArrow;\n\n nextMonthNav.className = \"flatpickr-next-month\";\n nextMonthNav.innerHTML = self.config.nextArrow;\n\n monthsNav.appendChild(prevMonthNav);\n monthsNav.appendChild(navigationCurrentMonth);\n monthsNav.appendChild(nextMonthNav);\n\n updateNavigationCurrentMonth();\n calendarContainer.appendChild(monthsNav);\n };\n\n handleYearChange = function () {\n\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n\n self.currentYear += self.currentMonth % 11;\n self.currentMonth = (self.currentMonth + 12) % 12;\n\n }\n\n };\n\n documentClick = function (event) {\n if (wrapperElement.classList.contains(\"open\") && !wrapperElement.contains(event.target)) {\n // close();\n }\n\n };\n\n changeMonth = function(offset)\n {\n\n self.currentMonth += offset;\n\n handleYearChange();\n updateNavigationCurrentMonth();\n buildDays();\n }\n\n calendarClick = function (event) {\n\n event.preventDefault();\n\n var targetDate = event.target;\n \n if ( targetDate.classList.contains('slot') || targetDate.parentNode.classList.contains('slot') )\n {\n\n self.selectedDateObj = new Date( \n self.currentYear, self.currentMonth,\n targetDate.childNodes[0].innerHTML||targetDate.innerHTML\n );\n \n updateValue();\n buildDays();\n\n callBack(self.selectedDateObj)\n\n if ( !self.config.inline && !self.config.enableTime )\n close() \n \n }\n\n };\n\n buildCalendar = function () {\n\n buildMonthNavigation();\n buildWeekdays();\n buildDays();\n\n calendar.appendChild(calendarBody);\n calendarContainer.appendChild(calendar);\n\n wrapperElement.appendChild(calendarContainer);\n\n self.config.enableTime && ( buildTime() );\n\n };\n\n bind = function () {\n\n function am_pm_toggle(e){ \n e.preventDefault();\n am_pm.innerHTML = [\"AM\",\"PM\"][(am_pm.innerHTML === \"AM\")|0]; \n }\n\n self.element.addEventListener( 'focus' , self.open);\n self.config.altInput && (altInput.addEventListener( 'focus' , self.open) );\n\n prevMonthNav.addEventListener('click', function(){ changeMonth(-1) });\n nextMonthNav.addEventListener('click', function(){ changeMonth(1) });\n\n calendar.addEventListener('click', calendarClick);\n document.addEventListener('click', documentClick, true);\n\n if ( self.config.enableTime ){\n\n hourElement.addEventListener(\"mousewheel\", timeWrapper);\n hourElement.addEventListener(\"DOMMouseScroll\", timeWrapper);\n minuteElement.addEventListener(\"mousewheel\", timeWrapper);\n minuteElement.addEventListener(\"DOMMouseScroll\", timeWrapper);\n\n hourElement.addEventListener(\"mouseout\", updateValue);\n minuteElement.addEventListener(\"mouseout\", updateValue);\n\n hourElement.addEventListener(\"change\", updateValue);\n minuteElement.addEventListener(\"change\", updateValue);\n\n hourElement.addEventListener(\"click\", function(){hourElement.select();});\n minuteElement.addEventListener(\"click\", function(){minuteElement.select();});\n\n am_pm.addEventListener(\"focus\", function(){am_pm.blur();});\n am_pm.addEventListener(\"click\", am_pm_toggle);\n\n am_pm.addEventListener(\"mousewheel\", am_pm_toggle);\n am_pm.addEventListener(\"DOMMouseScroll\", am_pm_toggle);\n am_pm.addEventListener(\"mouseout\", updateValue);\n\n }\n\n\n\n };\n\n self.open = function () {\n\n self.element.blur();\n altInput && (altInput.blur());\n\n !self.config.inline && ( wrapperElement.classList.add('open') );\n\n };\n\n //self.close = function () {\n //wrapperElement.classList.remove('open');\n\n //};\n\n triggerChange = function(){\n\n \"createEvent\" in document\n ? ( element.dispatchEvent( new Event(\"change\") ) )\n : ( element.fireEvent(\"onchange\") );\n\n self.config.onChange(self.selectedDateObj, self.element.value);\n\n }\n\n destroy = function () {\n var parent,\n element;\n\n document.removeEventListener('click', documentClick, false);\n self.element.removeEventListener('focus', self.open, false);\n self.element.removeEventListener('click', self.open, false);\n\n parent = self.element.parentNode;\n parent.removeChild(calendarContainer);\n element = parent.removeChild(self.element);\n parent.parentNode.replaceChild(element, parent);\n };\n\n jumpToDate = function(jumpDate) {\n jumpDate = jumpDate||self.selectedDateObj||self.config.minDate||currentDate;\n self.currentYear = jumpDate.getFullYear();\n self.currentMonth = jumpDate.getMonth();\n\n };\n\n\n\n self.redraw = function(){\n\n updateNavigationCurrentMonth();\n buildDays();\n\n }\n\n self.jumpToDate = function(date){\n\n jumpToDate(uDate(date)||new Date());\n self.redraw();\n\n }\n\n self.setDate = function(date, triggerChangeEvent){\n\n self.selectedDateObj = uDate(date);\n self.jumpToDate(self.selectedDateObj);\n\n triggerChangeEvent = triggerChangeEvent||false;\n triggerChangeEvent && (triggerChange());\n\n }\n\n self.set = function(key, value){\n\n if (key in self.config) {\n\n self.config[key] = value;\n jumpToDate();\n self.redraw();\n\n }\n\n }\n\n init();\n\n return self;\n};\n\nflatpickr.init.prototype = {\n\n l10n: {\n weekdays: {\n shorthand: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],\n longhand: ['Domingo', 'Segunda-Feira', 'TerƧa-Feira', 'Quarta-Feira', 'Quinte-Feira', 'Sexta-Feira', 'SƔbado']\n },\n months: {\n shorthand: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n longhand: ['Janeiro', 'Fevereiro', 'MarƧo', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 1\n },\n\n defaultConfig : {\n dateFormat: 'Y-m-d',\n altInput: false,\n altFormat: \"F j, Y\",\n defaultDate: null,\n minDate: null,\n maxDate: null,\n disable: [],\n shorthandCurrentMonth: false,\n inline: false,\n prevArrow: '',\n nextArrow: '',\n enableTime: false,\n timeFormat: \"h:i K\",\n hourIncrement: 1,\n minuteIncrement: 5,\n onChange: function(dateObj, dateStr){}\n }\n};\n\n\nexport default flatpickr;","import React, { useEffect } from 'react'\n\nimport \"./datepicker/datepicker.css\"\n\nimport flatpickr from './datepicker/datepicker'\n\nconst DATE_LOCALIZATION = {\n pt: {\n weekdays: {\n shorthand: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],\n longhand: ['Domingo', 'Segunda-Feira', 'TerƧa-Feira', 'Quarta-Feira', 'Quinta-Feira', 'Sexta-Feira', 'SƔbado']\n },\n months: {\n shorthand: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n longhand: ['Janeiro', 'Fevereiro', 'MarƧo', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']\n },\n },\n en: {\n weekdays: {\n shorthand: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n longhand: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n },\n months: {\n shorthand: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n longhand: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n },\n }\n}\n\nfunction buildLocalizationObj(t, language) {\n return {\n weekdays: {\n longhand: [],\n shorthand: [t('sunday'), t('monday'), t('tuesday'), t('wednesday'), t('thursday'), t('friday'), t('saturday')]\n },\n months: {\n shorthand: [],\n longhand: [t('january'), t('february'), t('march'), t('april'), t('may'), t('june'), t('july'), t('august'), t('september'), t('october'), t('november'), t('december')]\n }\n }\n}\n\nfunction SelectDate({ t, handleClose, handleDateClick, language }) {\n\n useEffect(() => {\n const locMap = buildLocalizationObj(t, language)\n flatpickr('#datepicker', null,\n (date) => {\n handleDateClick(date)\n },\n () => handleClose(),\n locMap || DATE_LOCALIZATION.en\n )\n }, [])\n\n return (\n
    \n
    \n
    \n \"X\"\n
    \n
    \n

    {t('selectPickupDate')}

    \n
    \n \n
    \n
    \n
    \n
    \n )\n}\n\nexport default SelectDate","import React, { useContext, useReducer, useEffect } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport moment from 'moment-with-locales-es6'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { getStationConfigurationLocals, getStationsConfigurations } from '../../services/Stations'\n\nimport Footer from '../../components/Footer'\nimport withLang from '../../withLang'\nimport SelectStation from './SelectStation'\nimport SelectDate from './selectDate'\nimport Loading from '../../components/Loading'\nimport { useDisableBodyScroll } from '../../utils/useDisableBodyScroll'\n\nfunction reducer(state, action) {\n switch (action.type) {\n\n case 'FIELD':\n return { ...state, [action.payload.field]: action.payload.value }\n\n case 'SELECT_STATION':\n return { ...state, pickupStationId: action.payload, openSelectStation: false }\n\n case 'SELECT_DATE':\n return { ...state, pickupDate: action.payload, openSelectDate: false }\n\n case 'SET_VALIDATIONS':\n return { ...state, loading: true, validateInputs: true };\n\n case 'TOGGLE_VALIDATIONS':\n return { ...state, loading: !state.loading, validateInputs: !state.validateInputs };\n\n case 'SET_CAN_NEXT':\n return { ...state, loading: false, canNext: action.payload };\n\n default:\n return state;\n }\n}\n\nconst initialState = {\n pickupStationId: '',\n pickupDate: '',\n\n openSelectStation: false,\n openSelectDate: false,\n\n stations: [],\n\n loading: false,\n canNext: false,\n validateInputs: false,\n}\n\nfunction SelectPickupDetailsPage(props) {\n const { t, i18n } = useTranslation()\n\n const { setKioskCurrentStationId, setPickupDate, language } = useContext(DomainContext)\n\n const [state, dispatch] = useReducer(reducer, initialState, (arg) => {\n return {\n ...arg,\n }\n })\n\n const { pickupStationId, pickupDate, loading, canNext, stations, openSelectStation, openSelectDate, validateInputs } = state\n\n useDisableBodyScroll(openSelectStation || openSelectDate)\n\n useEffect(() => {\n const func = async () => {\n dispatch({ type: 'FIELD', payload: { field: 'loading', value: true } })\n\n const stationsRes = (await getStationsConfigurations()).stationsConfigurations\n\n const stationsDetailed = await Promise.all(stationsRes.map(async s => {\n const label = t(s.name) || pickupStationId\n return { ...s, label }\n }))\n\n dispatch({ type: 'FIELD', payload: { field: 'loading', value: false } })\n\n dispatch({ type: 'FIELD', payload: { field: 'stations', value: stationsDetailed } })\n\n if (stations.length === 1) {\n dispatch({ type: 'FIELD', payload: { field: 'pickupStationId', value: stationsDetailed[0].stationId } })\n }\n }\n\n func()\n }, [])\n\n useEffect(() => {\n if (validateInputs) {\n dispatch({ type: 'TOGGLE_VALIDATIONS' })\n\n const validStation = !!pickupStationId\n const validDate = !!pickupDate\n\n if (validDate && validStation) {\n dispatch({ type: 'SET_CAN_NEXT', payload: true })\n }\n }\n }, [validateInputs])\n\n useEffect(() => {\n if (canNext) {\n setKioskCurrentStationId(pickupStationId)\n setPickupDate(pickupDate)\n props.history.push('/input-reservation-ref')\n }\n }, [canNext])\n\n function handleNextClick() {\n dispatch({ type: 'SET_VALIDATIONS' })\n }\n\n function handleStationClick(station) {\n dispatch({ type: 'SELECT_STATION', payload: station.stationId })\n }\n\n function handleDateClick(date) {\n const formattedDate = date ? `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}` : ''\n if (moment(formattedDate, 'YYYY-MM-DD').isValid()) {\n dispatch({ type: 'SELECT_DATE', payload: formattedDate })\n } else {\n dispatch({ type: 'SELECT_DATE', payload: '' })\n }\n }\n\n function displayDate() {\n return pickupDate ? moment(pickupDate, 'YYYY-MM-DD').locale(i18n.language).format('DD MMMM YYYY') : ''\n }\n\n function displayStationName() {\n const station = stations.find(s => s.stationId === pickupStationId)\n return station ? station.label : pickupStationId\n }\n\n return (\n
    \n
    \n
    \n
    \n
    props.history.push('/start')}>\n \"Guerin\"\n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n

    \n {t('selectPickupStation1')}
    {t('selectPickupStation2')}\n

    \n
    \n
    \n
    \n
    dispatch({ type: 'FIELD', payload: { field: 'openSelectStation', value: true } })}>\n {pickupStationId ? displayStationName() : t('selectPickupStation')}\n
    \n
    \n
    \n
    pickupStationId && dispatch({ type: 'FIELD', payload: { field: 'openSelectDate', value: true } })}>\n {pickupDate ? displayDate() : t('selectPickupDate')}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n props.history.goBack()}\n handleNextClick={handleNextClick}\n />\n {openSelectStation &&\n dispatch({ type: 'FIELD', payload: { field: 'openSelectStation', value: false } })}\n stations={stations}\n handleStationClick={handleStationClick}\n />\n }\n {openSelectDate &&\n dispatch({ type: 'FIELD', payload: { field: 'openSelectDate', value: false } })}\n handleDateClick={handleDateClick}\n language={language}\n />\n }\n
    \n )\n}\n\nexport default withLang(SelectPickupDetailsPage)\n\n","import React, { useEffect, useContext, useState, useReducer } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport moment from 'moment'\n\nimport { getQueryStringParams } from '../../utils/utils'\n\nimport { getReservation } from '../../services/GetReservation'\nimport { getCountries } from '../../services/GetCountries'\nimport { getGroupsDetails } from '../../services/GetGroupsDetails'\nimport { validateGoogleCaptcha } from '../../services/ValidateGoogleCaptcha'\nimport { getStationsConfigurations } from '../../services/Stations'\nimport { getBlockedTaxNumbers } from '../../services/ValidateTaxNumber'\nimport { verifyReservationWithRA } from '../review-rental-agreement/api'\n\nimport { GroupsImagesContext } from '../../domain-repository/GroupsImagesRepository'\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport withLang from '../../withLang'\nimport LanguageInputSection from '../../components/SelectLanguage'\nimport Loading from '../../components/Loading'\n\nfunction AutoSearchReservationPage(props) {\n const { i18n, t } = useTranslation()\n\n const { getSetGroupsConfigurations } = useContext(GroupsImagesContext)\n const {\n setReservation,\n setCountries,\n setDriverInfo,\n language,\n setLanguage,\n setKioskCurrentStationId,\n setPickupDate,\n setAppFlowConfigs,\n appVersionId,\n setSessionId,\n setGroupsDetails,\n setBlockedTaxNumbersList,\n setStationsConfigurations,\n setAdditionalDriverInfo,\n } = useContext(DomainContext);\n\n const [loading, setLoading] = useState(false)\n const [params, setParams] = useState(null)\n\n useEffect(() => {\n const queryStringValues = getQueryStringParams(\n props.location && props.location.search ? props.location.search : null\n )\n\n if (!queryStringValues || !queryStringValues.number || !queryStringValues.pickupStation || !queryStringValues.pickupDate) {\n return props.history.push(`/input-reservation-ref-error?resReference=`)\n }\n\n setKioskCurrentStationId(queryStringValues.pickupStation)\n setPickupDate(queryStringValues.pickupDate)\n\n setParams(queryStringValues)\n }, [])\n\n async function getReservationFromReference() {\n const resReference = params.number\n const stationId = params.pickupStation\n const pickupDate = params.pickupDate\n const lang = params.lang\n\n let formatedResNumberOrRefMatches = resReference.match(/(.*)count$/i)\n\n setLoading(true)\n\n const groupConfig = await getSetGroupsConfigurations()\n\n const blockedTaxNumbersList = await getBlockedTaxNumbers()\n setBlockedTaxNumbersList(blockedTaxNumbersList.blockedTaxNumbers)\n\n const translations = i18n?.getResourceBundle(i18n.language)\n\n Promise.all([\n getReservation({ resNumberOrReference: formatedResNumberOrRefMatches && formatedResNumberOrRefMatches.length > 1 ? formatedResNumberOrRefMatches[1] : resReference, stationId, resCheckOutDate: pickupDate, appVersionId, language, autoSearch: true }),\n getCountries(),\n getGroupsDetails(Object.keys(groupConfig)),\n getStationsConfigurations(),\n ])\n .then(([reservation, countries, groups, stationsConfigurationsRes]) => {\n\n if (!reservation || !countries || !groups || groups.length === 0) {\n props.history.push(`/input-reservation-ref-error?resReference=${resReference}`)\n } else {\n if (!reservation.redirectUrl) {\n setReservation(reservation)\n setDriverInfo(reservation.listReservation)\n setAdditionalDriverInfo(reservation.listReservation)\n setAppFlowConfigs(reservation.appFlowConfigs)\n setSessionId(reservation.sessionId)\n }\n setCountries(countries.map(c => ({ ...c, name: t(`country_${c.countryID}`) })))\n setGroupsDetails(groups.groupsDetails)\n setStationsConfigurations(stationsConfigurationsRes.stationsConfigurations)\n\n if (reservation.redirectUrl) {\n return props.history.push(reservation.redirectUrl)\n }\n props.history.push('/review-reservation');\n }\n })\n .catch(err => {\n const errorMessage = err?.message || err || null\n props.history.push({ pathname: `/input-reservation-ref-error`, search: `resReference=${resReference}`, state: { errorMessage } })\n });\n }\n\n function innerChangeLanguage() {\n getReservationFromReference()\n }\n\n return (\n
    \n {loading && }\n props.history.push('/start')} />\n
    \n )\n}\n\nexport default AutoSearchReservationPage","import React, { useEffect, useContext, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport moment from 'moment'\n\nimport Loading from './Loading'\n\nimport { getReservation } from '../services/GetReservation'\nimport { getCountries } from '../services/GetCountries'\nimport { getGroupsDetails } from '../services/GetGroupsDetails'\nimport { getBlockedTaxNumbers } from '../services/ValidateTaxNumber'\nimport { verifyReservationWithRA } from '../pages/review-rental-agreement/api'\n\nimport { DomainContext } from '../domain-repository/DomainRepository'\nimport { GroupsImagesContext } from '../domain-repository/GroupsImagesRepository'\n\nexport default function AutoSearchReservation({ params, handleNotFound, handleFound, handleRAFound, secondTry = false }) {\n const { i18n, t } = useTranslation()\n const { getSetGroupsConfigurations } = useContext(GroupsImagesContext)\n const {\n setReservation,\n setCountries,\n setDriverInfo,\n language,\n setLanguage,\n setKioskCurrentStationId,\n setPickupDate,\n setAppFlowConfigs,\n appVersionId,\n setSessionId,\n setGroupsDetails,\n setBlockedTaxNumbersList,\n } = useContext(DomainContext)\n\n useEffect(() => {\n getReservationFromReference()\n }, [])\n\n async function getReservationFromReference() {\n const resReference = params.number\n const stationId = params.pickupStation\n const pickupDate = params.pickupDate\n const lang = params.lang\n\n let formatedResNumberOrRefMatches = resReference.match(/(.*)count$/i)\n\n const groupConfig = await getSetGroupsConfigurations()\n\n const blockedTaxNumbersList = await getBlockedTaxNumbers()\n setBlockedTaxNumbersList(blockedTaxNumbersList.blockedTaxNumbers)\n\n const translations = i18n?.getResourceBundle(i18n.language)\n\n Promise.all([\n getReservation({ resNumberOrReference: formatedResNumberOrRefMatches && formatedResNumberOrRefMatches.length > 1 ? formatedResNumberOrRefMatches[1] : resReference, stationId, resCheckOutDate: pickupDate, appVersionId, language, autoSearch: true, secondTry }),\n getCountries(),\n getGroupsDetails(Object.keys(groupConfig)),\n ])\n .then(([reservation, countries, groups]) => {\n\n if (!reservation || !countries || !groups || groups.length === 0) {\n handleNotFound()\n } else {\n setReservation(reservation)\n setCountries(countries.map(c => ({ ...c, name: translations[`country_${c.countryID}`] || '' })))\n setGroupsDetails(groups.groupsDetails)\n setDriverInfo(reservation.listReservation)\n setAppFlowConfigs(reservation.appFlowConfigs)\n setSessionId(reservation.sessionId)\n handleFound()\n }\n })\n .catch(err => {\n handleNotFound(err)\n });\n }\n\n return (\n \n )\n}\n","import React, { useEffect, useContext, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport moment from 'moment'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { getQueryStringParams } from '../../utils/utils'\n\nimport LanguageInputSection from '../../components/SelectLanguage'\nimport AutoSearchReservation from '../../components/AutoSearchReservation'\nimport Loading from '../../components/Loading'\n\nimport { cancelReservation } from '../../services/CancelReservation'\nimport { verifyReservationWithRA } from '../review-rental-agreement/api'\n\nexport default function SecondTryCheckInPage(props) {\n const { setKioskCurrentStationId, setPickupDate, appVersionId } = useContext(DomainContext);\n\n const [langInput, setLangInput] = useState(true)\n const [lang, setLang] = useState(null)\n\n const [searchParams, setParams] = useState(null)\n\n const [proceedCheckIn, setProceedCheckIn] = useState(false)\n\n const [cancelReservation, setCancelReservation] = useState(false)\n\n function handleLanguageChange(value) {\n setLang(value)\n setLangInput(false)\n }\n\n useEffect(() => {\n const queryStringValues = getQueryStringParams(\n props.location && props.location.search ? props.location.search : null\n )\n\n if (!queryStringValues || !queryStringValues.number || !queryStringValues.pickupStation || !queryStringValues.pickupDate || !queryStringValues.clientId) {\n return props.history.push(`/input-reservation-ref-error?resReference=`)\n }\n\n setKioskCurrentStationId(queryStringValues.pickupStation)\n setPickupDate(queryStringValues.pickupDate)\n\n setParams({ ...queryStringValues, appVersionId })\n }, [])\n\n function handleCancelClick() {\n setCancelReservation(true)\n }\n\n function handlePushToStart() {\n props.history.push('/start')\n }\n\n const displaySection = () => {\n const params = { ...searchParams, lang }\n\n if (langInput)\n return \n\n if (proceedCheckIn)\n return (\n {\n const errorMessage = err?.message || err || null\n props.history.push({ pathname: `/input-reservation-ref-error`, search: `resReference=${params.number}`, state: { errorMessage } })\n }}\n handleFound={() => props.history.push('/review-reservation')}\n handleRAFound={(number, pickupStation, pickupDate) => {\n props.history.push(`/review-rental-agreement?number=${number}&pickupStation=${pickupStation}&pickupDate=${pickupDate}`)\n }}\n />\n )\n\n if (cancelReservation) return \n\n return (\n setProceedCheckIn(true)}\n handleLogoClick={handlePushToStart}\n handleCancelClick={handleCancelClick}\n />\n )\n }\n\n return (\n
    \n
    \n
    \n {displaySection()}\n
    \n
    \n
    \n )\n}\n\nfunction ReservationMenu({ handleLogoClick, handleCancelClick, handleCheckInClick, }) {\n const { t } = useTranslation()\n\n return (\n
    \n
    \n
    \n
    \n \"Guerin\"\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {t('proceedCheckIn')}\n
    \n
    \n
    \n
    \n {t('cancelReservation')}\n
    \n
    \n
    \n
    \n
    \n )\n}\n\nfunction CancelReservationSection({ handleLogoClick, params }) {\n const { t } = useTranslation()\n\n const [loading, setLoading] = useState(true)\n\n const [message, setMessage] = useState('')\n\n useEffect(() => {\n cancelReservation(params)\n .then((result) => {\n setLoading(false)\n setMessage(result ? t('cancelReservationSuccess') : t('cancelReservationFailed'))\n })\n .catch(e => {\n setLoading(false)\n setMessage(t('cancelReservationFailed'))\n })\n }, [])\n\n return (\n
    \n
    \n
    \n
    \n \"Guerin\"\n
    \n
    \n
    \n {loading ? :\n
    \n
    {message}
    \n
    \n }\n
    \n )\n}","import axios from 'axios'\nimport { getLocalTimeZone } from '../utils/utils'\n\nexport const cancelReservation = async ({\n number,\n pickupStation,\n pickupDate,\n appVersionId,\n lang,\n clientId,\n}) => {\n const res = await axios.post(`/reservation-cancel/${number}`,\n {\n pickupDate,\n stationTimeZone: getLocalTimeZone(),\n stationId: pickupStation,\n appVersionId,\n nationality: lang,\n clientId,\n }\n )\n return res.data\n}\n","import React, { useContext } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport withLang from '../../withLang'\nimport DriverInfoHeader from '../../components/PageHeader'\nimport { FooterWithPrice } from '../../components/Footer'\nimport TrackingPage from '../../components/TrackingPage'\n\nfunction BabySeatsPage(props) {\n const { t } = useTranslation()\n\n const {\n getBabySeatExtras,\n addExtra,\n removeExtra,\n getQuantityOfExtra,\n userAnswers,\n isCorporate,\n rentalAgreementQuoteValue,\n flowNextRoute,\n reservationExtras,\n getQuantityOfExtraInReservation,\n saveSessionExtras,\n } = useContext(DomainContext)\n\n function getBabySeatExtrasToRender() {\n return getBabySeatExtras().map(extra => (\n
    \n
    \n
    \n {`${extra.name}\n
    \n
    \n

    {t(`${extra.id}Name`)}

    \n ({t(`${extra.id}Hint`)})\n

    {t(`${extra.id}Description`)}

    \n
    \n
    \n
    \n\n
    \n
    \n
    \n ā‚¬{extra.pricePerDay} /{t('day')}\n
    \n \n {getQuantityOfExtra(extra) + getQuantityOfExtraInReservation(extra.extraID)}\n \n
    \n
    \n
    \n
    \n ));\n }\n\n function handleNextClick() {\n const mappedExtras = getBabySeatExtras().map(e => ({\n extraId: e.extraID,\n price: e.totalPrice,\n acquired: getQuantityOfExtra(e) > 0,\n removedInReview: false,\n pageId: PageId,\n }))\n\n saveSessionExtras(mappedExtras)\n\n props.history.push(flowNextRoute())\n }\n\n return userAnswers.babySeat ? (\n
    \n props.history.push('/start')}\n />\n
    \n
    \n
    \n
    \n
    \n

    {t('babySeatTitle')}

    \n
    \n
    \n
    \n

    {t('babySeatLawDescription')}

    \n {getBabySeatExtrasToRender()}\n
    \n
    \n
    \n props.history.goBack()}\n />\n
    \n
    \n ) : \n}\n\nconst PageId = 82\nexport default withLang(TrackingPage(BabySeatsPage, PageId))\n","import React, { useContext, useState } from 'react'\n\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom';\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\nimport { GroupsImagesContext } from '../../domain-repository/GroupsImagesRepository'\n\nimport withLang from '../../withLang'\nimport DriverInfoHeader from '../../components/PageHeader'\nimport { FooterWithPrice } from '../../components/Footer'\nimport TrackingPage from '../../components/TrackingPage'\n\nfunction UpsellingPage({ history, match }) {\n const { t } = useTranslation();\n\n const {\n reservation,\n availableUpsellings,\n setUpselling,\n removeUpselling,\n upselling,\n groupsDetails,\n rentalAgreementQuoteValue,\n flowNextRoute,\n } = useContext(DomainContext);\n\n const { groupsConfigurations } = useContext(GroupsImagesContext);\n\n const [selectedUpselling, setSelectedVehicle] = useState(upselling.groupID);\n const filteredConfiguredGroups = availableUpsellings\n .filter(up => Object.keys(groupsConfigurations).find(g => g === up.groupID))\n .sort((g1, g2) => g1.dayValueWithTax - g2.dayValueWithTax)\n\n function getVehicle(vehicleToRender, isReservationVehicle) {\n if (!vehicleToRender) {\n return;\n }\n\n const groupInfo = groupsDetails.find(g => g.id === vehicleToRender.groupID) || {}\n\n const isCurrentSelectedVehicle = selectedUpselling\n ? selectedUpselling === vehicleToRender.groupID\n : isReservationVehicle;\n\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n {t('group')} {vehicleToRender.groupID}\n
    \n {groupInfo.type}\n
    \n {t('orSimilar')}\n
    \n
    \n
    \n {vehicleToRender.groupID}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \"\"
    \n
    {t('seats')}: {groupInfo.seats}
    \n
    \n
    \n
    \"\"
    \n
    {t('consumption')}: {groupsConfigurations[vehicleToRender.groupID] && groupsConfigurations[vehicleToRender.groupID].consumption}({t(`vehicles-${groupInfo.fuel}`, '')})
    \n
    \n
    \n
    \"\"
    \n
    {t('transmisson')}:{t(`vehicles-${groupInfo.transmission}`, '')}
    \n
    \n
    \n
    \n
    \n
    \"\"
    \n
    {t('doors')}: {groupInfo.doors}
    \n
    \n
    \n
    \"\"
    \n
    {t('bags')}: {groupInfo.bags}
    \n
    \n
    \n
    \"\"
    \n
    {t('handbags')}: {groupInfo.handbags}
    \n
    \n
    \n
    \n
    \n
    \n
    \n {isReservationVehicle ?\n {t('yourReservation')} :\n ā‚¬{vehicleToRender.dayValueWithTax}/{t('day')}\n }\n \n
    \n
    \n
    \n
    \n
    \n );\n }\n\n function removeReservationGroup(_up, id) {\n return reservation.GroupID !== _up.groupID\n }\n\n function handleNextClick() {\n /*\n const isUpsellingSpecialGroup = selectedUpselling && groupsDetails.find(g => g.id === selectedUpselling && g.special) !== undefined\n if (isUpsellingSpecialGroup) {\n saveSessionStationObservations('[Kiosk: ƚltima pĆ”gina - Upgrade (Upgrade grupo especial)]')\n .then(_ => {\n setExitUpSellingModal(true)\n })\n .catch(_ => {\n setExitUpSellingModal(true)\n })\n } else {\n history.location.state && history.location.state.continueUrl ? history.push(history.location.state.continueUrl) : history.push('/comfort-extras')\n }\n */\n history.location.state && history.location.state.continueUrl ? history.push(history.location.state.continueUrl) : history.push('/comfort-extras')\n }\n\n return filteredConfiguredGroups.length > 0 ? (\n
    \n history.push('/start')}\n />\n
    \n
    \n
    \n
    \n
    \n

    {t('upsellingTitle')}

    \n
    \n
    \n
    \n {getVehicle({ groupID: reservation.GroupID }, true)}\n {filteredConfiguredGroups.filter(removeReservationGroup).map(_up =>\n getVehicle(_up)\n )}\n
    \n
    \n
    \n history.push(flowNextRoute(match.path))}\n handlePrevClick={() => history.goBack()}\n />\n
    \n
    \n ) : \n}\n\nexport default withLang(TrackingPage(UpsellingPage, 23))\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom'\n\nimport { GroupsImagesContext } from '../../domain-repository/GroupsImagesRepository'\nimport { DomainContext, ALWAYS_PRESENT } from '../../domain-repository/DomainRepository'\n\nimport { isSafetyExtra } from '../../utils/utils'\n\nimport withLang from '../../withLang'\nimport DriverInfoHeader from '../../components/PageHeader'\nimport { FooterWithPrice } from '../../components/Footer'\nimport TrackingPage from '../../components/TrackingPage'\n\nfunction isArrayEqual(ar1, ar2) {\n return !ar1.some(item => ar2.indexOf(item) === -1) && ar1.length === ar2.length;\n}\n\nfunction allValuesExist(arr1, arr2) {\n return arr1.every(v1 => arr2.find(v2 => v1 === v2) !== undefined)\n}\n\nexport const PACKS_CONFIGS = {\n RF1: { colorClass: 'board-green', discounts: { ACDW1: 30 } },\n RF2: { colorClass: 'board-green', discounts: { ACDW1: 30, ASTOP: 30 } },\n IF1: { colorClass: 'board-green', discounts: { ACDW1: 50 } },\n IF2: { colorClass: 'board-orange', highlight: true, showNoDiscountValue: true, discounts: { ACDW1: 50, ASTOP: 50 } },\n IF3: { colorClass: 'board-silver', discounts: { ACDW1: 50, ASTOP: 50, PAI: 50 } },\n}\n\nfunction SafetyPacksPage({ history, match }) {\n const { t } = useTranslation();\n\n const {\n isCorporate,\n appFlowConfigs,\n flowNextRoute,\n getInsuranceExtras,\n reservationExtras,\n getValidSafetyExtras,\n reservation,\n getExcessForExtras,\n computeExtraPrices,\n insuranceSelectedExtras,\n setInsuranceSelectedExtras,\n changeInsurancePack,\n insuranceSelectedPack,\n setInsuranceSelectedPack,\n mapPriceForPack,\n getBestPackForExtras,\n selectedExtras,\n rentalAgreementQuoteValue,\n canGoInsurancePacksPage,\n flowPreviousRoute,\n saveSessionExtras,\n getQuantityOfExtra,\n } = useContext(DomainContext)\n\n const [packs, setPacks] = useState([])\n\n const { groupsConfigurations } = useContext(GroupsImagesContext)\n\n const [selectedPack, setSelectedPack] = useState(insuranceSelectedPack?.extraId || null)\n\n useEffect(() => {\n const allPacks = (reservation && reservation.packs ? reservation.packs : [])\n\n const configuredPacks = (appFlowConfigs.insurancePacks ? appFlowConfigs.insurancePacks.packs : [])\n .filter(p => {\n return reservation.availableExtras.find(_ => _.extraID === p.extraId) !== undefined\n })\n .map(pack => {\n const isHighlight = PACKS_CONFIGS[pack.extraId]?.highlight || false\n return { ...pack, order: isHighlight ? -1 : pack.order + 1 }\n })\n\n const packIncludedInReservation = reservation.availableExtras.filter(e => e.extraIncluded === 'true').some(e => configuredPacks.find(p => p.extraId === e.extraID) !== undefined)\n\n const rejectedPackBasic = reservation.isExclusiveReservation && getQuantityOfExtra({ extraID: 'PE' }) === 0\n const skipPageByRejectedPackBasic = rejectedPackBasic && reservation.exclusiveReservationsConfigurations ?\n reservation.exclusiveReservationsConfigurations.safetyPacksPageBlocked : false\n\n if (!skipPageByRejectedPackBasic && canGoInsurancePacksPage() && appFlowConfigs.insurancePacksActive && configuredPacks.length > 0 && !packIncludedInReservation) {\n\n function calculatePriceAndExcessForPacks(_packs) {\n\n function calculatePrice(pack) {\n if (pack.price || pack.price === 0) return pack.price\n\n if (insuranceSelectedPack && pack.extraId === insuranceSelectedPack.extraId) {\n return {\n pricePerDay: insuranceSelectedPack.price !== null ? insuranceSelectedPack.price : insuranceSelectedPack.totalPrice,\n totalPrice: insuranceSelectedPack.totalPrice\n }\n }\n\n const value = mapPriceForPack(pack)\n const extra = reservation.availableExtras.find(e => e.extraID === pack.extraId)\n\n return computeExtraPrices({ ...extra, value })\n }\n\n return _packs.map(pack => {\n const price = calculatePrice(pack)\n return {\n ...pack,\n price: price.pricePerDay || price.totalPrice,\n totalPrice: price.totalPrice,\n excess:\n getExcessForExtras([\n ...reservationExtras,\n { extraID: pack.isReservationPack ? 'CDW' : pack.extraId }\n ], groupsConfigurations)\n }\n }).filter(p => p.price > 0 || p.isReservationPack)\n }\n\n const reservationPack = {\n isReservationPack: true,\n name: t('yourReservation'),\n color: '',\n extraId: 'RESERVATION',\n price: 0,\n extrasList: reservationExtras.map(e => e.extraID).filter(isSafetyExtra)\n }\n\n const _packs = calculatePriceAndExcessForPacks([\n reservationPack,\n ...configuredPacks\n .filter(pack => reservationExtras.find(re => re.extraID === pack.extraId) === undefined)\n .filter(pack => {\n if (insuranceSelectedPack && pack.extraId === insuranceSelectedPack.extraId) return true\n\n if (pack.exclusionExtrasList && pack.exclusionExtrasList.some(e => reservationExtras.find(re => re.extraID === e) !== undefined)) {\n return false\n }\n\n const packInReservation = getBestPackForExtras([...reservationExtras, ...selectedExtras].map(e => e.extraID), allPacks, true)\n if (packInReservation) {\n const packExtras = pack.extrasList.filter(e => !ALWAYS_PRESENT.includes(e))\n return !packExtras.every(e => packInReservation.extrasList.find(ec => e === ec))\n }\n return true\n })\n .sort((a, b) => a.order - b.order)\n ])\n\n if (_packs.filter(p => !p.isReservationPack).length === 0) {\n onNext()\n }\n setPacks(_packs)\n } else {\n onNext()\n }\n }, [])\n\n function isSelected(pack) {\n return selectedPack === pack.extraId\n }\n\n function onNext() {\n const mappedExtras = packs.filter(pack => !pack.isReservationPack).map(pack => ({\n extraId: pack.extraId,\n price: pack.totalPrice,\n acquired: isSelected(pack),\n removedInReview: false,\n pageId: PageId,\n }))\n\n saveSessionExtras(mappedExtras)\n\n return history.location.state && history.location.state.continueUrl ?\n history.push(history.location.state.continueUrl)\n : history.push(flowNextRoute())\n }\n\n function onSelectClick(pack) {\n if (pack.isReservationPack) {\n changeInsurancePack(null, insuranceSelectedPack)\n setInsuranceSelectedPack(null)\n } else {\n changeInsurancePack(pack, insuranceSelectedPack)\n setInsuranceSelectedPack(pack)\n }\n\n setSelectedPack(pack.extraId)\n }\n\n function handlePackInfoClick(pack) {\n history.push(`/safety-packs/${pack.extraId}`)\n }\n\n return (\n
    \n history.push('/start')}\n />\n
    \n
    \n
    \n
    \n

    {t('mobileInsuranceTitle')}

    \n
    \n {packs.map((pack, i) => {\n const packSelected = isSelected(pack)\n const isHighlight = PACKS_CONFIGS[pack.extraId]?.highlight || false\n const packColorClass = PACKS_CONFIGS[pack.extraId]?.colorClass || ''\n return (\n
    \n {isHighlight ?
    {t('recomended')}
    : null}\n
    \n
    \n

    handlePackInfoClick(pack)} className=\"text-uppercase m-0\">{pack.name}

    \n {pack.isReservationPack ? null :
    ā‚¬ {pack.price} /{t('day')}
    }\n
    \n
    \n
      \n {pack.extrasList.map(extraId => (\n
    • \n {t(`${extraId}InsuranceName`, t(`${extraId}Name`))}\n {!pack.isReservationPack && PACKS_CONFIGS[pack.extraId] !== undefined && PACKS_CONFIGS[pack.extraId]?.discounts[extraId] ?\n \n : null}\n
    • \n ))}\n
    \n
    \n

    {t('excess')}: ā‚¬{pack.excess}

    \n
    \n
    onSelectClick(pack)} className={`btn btn-orange-hollow btn-select-plan position-absolute text-uppercase ${packSelected ? 'active' : ''}`}>{packSelected ? t('selected') : t('select')}
    \n
    \n
    \n
    \n )\n })}\n
    \n
    \n
    \n
    \n history.location.state && history.location.state.backUrl ? history.replace(history.location.state.backUrl) : flowPreviousRoute(history)}\n />\n
    \n
    \n )\n}\n\nconst PageId = 79\nexport default withLang(TrackingPage(SafetyPacksPage, PageId))\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport withLang from '../../withLang'\nimport { FooterWithClose } from \"../../components/Footer\"\nimport TrackingPage from '../../components/TrackingPage'\n\nimport { getQueryStringParams, isSafari, isSafetyExtra } from '../../utils/utils'\n\nexport const PACKS_CONFIGS = {\n RF1: { colorClass: 'board-green', discounts: { ACDW1: 30 } },\n RF2: { colorClass: 'board-green', discounts: { ACDW1: 30, ASTOP: 30 } },\n IF1: { colorClass: 'board-green', discounts: { ACDW1: 50 } },\n IF2: { colorClass: 'board-orange', highlight: true, showNoDiscountValue: true, discounts: { ACDW1: 50, ASTOP: 50 } },\n IF3: { colorClass: 'board-silver', discounts: { ACDW1: 50, ASTOP: 50, PAI: 50 } },\n}\n\nfunction SafetyPackDetailedPage({ history, match, location }) {\n const { t } = useTranslation()\n\n const [activeExtraId, setActiveExtraId] = useState(null)\n const [pack, setPack] = useState(null)\n\n const {\n appFlowConfigs,\n reservation,\n localizationAssets,\n reservationExtras,\n } = useContext(DomainContext)\n\n useEffect(() => {\n const safeReservation = reservation || {}\n\n const packExtraId = match.params.id\n\n const configuredPacks = (appFlowConfigs.insurancePacks ? appFlowConfigs.insurancePacks.packs : [])\n .filter(p => {\n return safeReservation.availableExtras.find(_ => _.extraID === p.extraId) !== undefined\n })\n\n const reservationPack = {\n isReservation: true,\n name: t('yourReservation'),\n extrasList: reservationExtras.map(e => e.extraID).filter(isSafetyExtra)\n }\n\n const _pack = configuredPacks.find(p => p.extraId === packExtraId) || reservationPack\n setPack(_pack)\n\n const queryStringValues = getQueryStringParams(\n location && location.search ? location.search : null\n )\n const activeExtraIdInUrl = queryStringValues?.active\n const filteredActiveExtraId = activeExtraIdInUrl && _pack.extrasList.includes(activeExtraIdInUrl) ? activeExtraIdInUrl : _pack.extrasList[0]\n setActiveExtraId(filteredActiveExtraId)\n }, [reservation, appFlowConfigs, match?.params?.id])\n\n return pack ? (\n
    \n
    \n
    \n
    \n
    \n
    \n

    {pack.name}

    \n

    {pack.isReservation ? '' : t(`${pack.extraId}Description`)}

    \n
    \n
    \n
    \n
    \n {pack.extrasList.map((extraId, index) => {\n const isActive = activeExtraId === extraId\n const whiteIcon = localizationAssets[`safetyPacks${extraId}White`]\n const orangeIcon = localizationAssets[`safetyPacks${extraId}Orange`]\n\n return (\n <>\n {index !== 0 ? + : null}\n
    setActiveExtraId(extraId)} className={`item text-center py-4 px-2 d-flex justify-content-center align-items-center ${isActive ? 'item-active' : ''}`}>\n
    \n {PACKS_CONFIGS[pack.extraId]?.discounts[extraId] ?\n
    \n \"\"\n
    \n : null}\n \"\"\n \"\"\n

    {t(`${extraId}InsuranceName`, t(`${extraId}Name`))}

    \n \"\"\n
    \n
    \n \n )\n })}\n
    \n
    \n {activeExtraId &&\n
    \n
    \n

    {t(`${activeExtraId}InsuranceName`, t(`${activeExtraId}Name`))}

    \n

    {t(`${activeExtraId}Description`)}

    \n
    \n
    \n \n
    \n
    \n }\n
    \n
    \n
    \n history.replace('/safety-packs')}\n />\n
    \n ) : null\n}\n\nexport default withLang(TrackingPage(SafetyPackDetailedPage, 80))\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\nimport withLang from '../../withLang'\n\nimport DriverInfoHeader from '../../components/PageHeader'\nimport { FooterWithPrice } from '../../components/Footer'\nimport { setPageId } from '../../services/Metrics'\n\nfunction QuestionPage({ history, match }) {\n const { t } = useTranslation();\n\n const {\n getComfortExtras,\n isCorporate,\n appFlowConfigs,\n getCorporateExtras,\n flowNextRoute,\n rentalAgreementQuoteValue,\n getUserQuestions,\n storeUserAnswer,\n flowPreviousRoute,\n } = useContext(DomainContext);\n\n const curIdx = Number(match.params.id) - 1;\n const questions = getUserQuestions().map(q => ({ ...q, text: t(q.key) }))\n const question = questions[curIdx];\n\n useEffect(() => {\n if (question) {\n setPageId({ pageId: 81 })\n }\n }, [question])\n\n function getNextStepUrl() {\n return flowNextRoute(match.path)\n }\n\n function handleNoClick() {\n storeUserAnswer({ questionID: question.id, answer: false })\n history.push(getNextStepUrl())\n }\n\n function handleYesClick() {\n storeUserAnswer({ questionID: question.id, answer: true })\n history.push('/baby-seats')\n }\n\n return (\n
    \n history.push('/start')}\n />\n
    \n
    \n
    \n
    \n
    \n
    \n

    \n {question.text}\n

    \n
    \n
    \n
    \n
    \n
    \n {t('no')}\n
    \n
    \n
    \n
    \n {t('yes')}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n flowPreviousRoute(history)}\n />\n
    \n
    \n )\n}\n\nexport default withLang(QuestionPage)\n","import React, { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport './RatingPage.css'\n\nimport TrackingPage from '../../components/TrackingPage'\n\nimport withLang from '../../withLang'\n\nimport { createReservationCheckInRating, setReservationCheckInRatingObservations } from '../../services/Metrics'\n\nfunction RatingPage(props) {\n const { t } = useTranslation()\n\n const [isLoading, setIsLoading] = useState(false)\n const [hasRated, setHasRated] = useState(null)\n const [thankYou, setThankYou] = useState(false)\n const [observations, setObservations] = useState('')\n\n function onFaceClick(id) {\n if (!id || isLoading) { return }\n setIsLoading(true)\n createReservationCheckInRating(id)\n .then(res => {\n setIsLoading(false)\n setHasRated(true)\n })\n .catch(error => {\n setIsLoading(false)\n setHasRated(true)\n })\n }\n\n function handleSaveObservationsClick() {\n const observationsMapped = observations?.trim()\n if (!observationsMapped || isLoading) { return }\n setIsLoading(true)\n setReservationCheckInRatingObservations(observationsMapped)\n .then(() => {\n setIsLoading(false)\n setThankYou(true)\n })\n .catch(() => {\n setIsLoading(false)\n setThankYou(true)\n })\n }\n\n return (\n
    \n
    \n
    \n
    \n

    {hasRated ? t('ratingObservationsTitle') : t('rating')}

    \n
    \n
    \n
    \n {hasRated ?\n thankYou ?\n
    \n

    {t('ratingThankYou')}

    \n
    \n :\n
    \n
    \n \n setObservations(e.target.value)}\n name='observations'\n className='form-control text-center'\n />\n \n
    {t('saveObservations')}
    \n
    \n :\n
    \n onFaceClick(3)} src={require('../../assets/images/happy.svg')} alt='happy' />\n onFaceClick(2)} src={require('../../assets/images/neutral.svg')} alt='ok' />\n onFaceClick(1)} src={require('../../assets/images/sad.svg')} alt='sad' />\n
    \n }\n
    \n
    \n
    \n )\n}\n\nexport default withLang(RatingPage)\n\nfunction Smile({ handleClick, label, src, alt, active }) {\n return (\n
    \n {alt}\n

    {label}

    \n
    \n )\n}\n","import React, { useState, useContext } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\nimport withLang from '../../withLang'\n\nimport DriverInfoHeader from '../../components/PageHeader'\nimport Footer from '../../components/Footer'\nimport TrackingPage from '../../components/TrackingPage'\nimport { AlertModalWithActions } from '../../components/alert-modal/AlertModal'\n\nimport { savePackBasicAction } from '../../services/Metrics'\nimport { SimpleCheckbox } from '../../components/legal-information-section/LegalInformation'\n\nconst CDW_EXTRA_ID = 'CDW'\nconst PACK_BASIC_EXTRA_ID = 'PE'\n\nfunction ExclusiveReservationQuestionPage({ history, match }) {\n const { t } = useTranslation()\n\n const {\n getComfortExtras,\n flowNextRoute,\n reservationExtras,\n selectedExtras,\n reservation,\n getExcessForExtra,\n addExtra,\n removeExtra,\n mapExtraPrice,\n rentalAgreementQuoteValue,\n flowPreviousRoute,\n saveSessionExtra,\n } = useContext(DomainContext)\n\n const [loading, setLoading] = useState(false)\n const [rejectedPackBasic, setRejectedPackBasic] = useState(false)\n const [rejectedPackBasicConfirm, setRejectedPackBasicConfirm] = useState(false)\n\n const safeReservation = reservation || {}\n\n const excessNoPriceReduction = safeReservation.excessNoPriceReduction\n const cdwExcess = getExcessForExtra(CDW_EXTRA_ID)\n\n function valueToPay() {\n const _extra = safeReservation.availableExtras.find(e => e.extraID === PACK_BASIC_EXTRA_ID)\n const extra = _extra ? mapExtraPrice(_extra) : null\n return extra.pricePerDay || extra.totalPrice\n }\n\n function rejectPackBasicClick() {\n savePackBasicAction(false)\n setRejectedPackBasic(true)\n\n const extra = getComfortExtras(['PE'])[0]\n removeExtra(extra)\n\n saveSessionExtra({\n extraId: extra.extraID,\n price: extra.totalPrice,\n acquired: false,\n removedInReview: false,\n pageId: PageId,\n })\n }\n\n function acceptPackBasicClick() {\n if (loading) { return; }\n setLoading(true)\n savePackBasicAction(true)\n setRejectedPackBasic(false)\n\n const extras = getComfortExtras(['PE'])\n for (const extra of extras) {\n if (selectedExtras.find(e => e.extraID === extra.extraID) === undefined &&\n reservationExtras.find(e => e.extraID === extra.extraID) === undefined) {\n addExtra(extra)\n }\n }\n\n saveSessionExtra({\n extraId: extras[0].extraID,\n price: extras[0].totalPrice,\n acquired: true,\n removedInReview: false,\n pageId: PageId,\n })\n\n goToNextPage()\n }\n\n function goToNextPage() {\n history.push(flowNextRoute())\n }\n\n return (\n
    \n history.push('/start')}\n />\n
    \n
    \n
    \n
    \n
    \n
    \n

    \n {t('exclusiveQuestion1')}\n {t('basic')}\n {t('exclusiveQuestion2', { value: cdwExcess })}\n

    \n
    \n
    ā‚¬{valueToPay()}/{t('day')}
    \n
    \n
    \n
    \n
    \n {t('confirm')}\n
    \n
    \n
    \n
    \n {t('exclusiveRejectButton', { value: excessNoPriceReduction })}\n
    \n
    \n
    \n {rejectedPackBasic ?\n \n : null}\n
    \n
    \n
    \n
    \n
    \n flowPreviousRoute(history)}\n handleNextClick={goToNextPage}\n />\n
    \n
    \n )\n}\n\nconst PageId = 87\nexport default withLang(TrackingPage(ExclusiveReservationQuestionPage, PageId))\n","import { useState, useEffect } from 'react'\nimport axios from 'axios'\n\nfunction useAxiosFetch(url) {\n const [data, setData] = useState(null)\n const [loading, setLoading] = useState(null)\n const [error, setError] = useState(null)\n\n useEffect(() => {\n setLoading(true)\n setData(null)\n setError(null)\n const source = axios.CancelToken.source()\n axios.get(url, { cancelToken: source.token })\n .then(res => {\n setLoading(false)\n res.content && setData(res.content)\n res.data.content && setData(res.data.content)\n res.data && !res.data.content && setData(res.data)\n })\n .catch(err => {\n setLoading(false)\n setError(err?.message || err || 'Error')\n })\n return () => {\n source.cancel()\n }\n }, [url])\n\n return { data, loading, error }\n}\n\nexport default useAxiosFetch\n","import React, { useEffect, useState, useCallback, useContext } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport moment from \"moment-with-locales-es6\";\n\nimport downloadFileIcon from \"../../assets/images/file-arrow-down-solid.svg\";\n\nimport \"./styles.css\";\n\nimport { fileDownload, getQueryStringParams, isElectric } from \"../../utils/utils\";\n\nimport {\n downloadRentalAgreementDocument,\n getReservationRADetails,\n} from \"./api\";\nimport { GroupsImagesContext } from \"../../domain-repository/GroupsImagesRepository\";\n\nimport Loading, { LoadingIcon } from \"../../components/Loading\";\nimport withLang from \"../../withLang\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport useAxiosFetch from \"../../utils/useAxiosFetch\";\n\nfunction ReviewRentalAgreementPage({ location, history }) {\n const { groupsDetails, localizationAssets } = useContext(DomainContext);\n const { groupsConfigurations } = useContext(GroupsImagesContext);\n\n const [reservationNumber, setReservationNumber] = useState(null);\n const [pickupStation, setPickupStation] = useState(null);\n const [pickupDate, setPickupDate] = useState(null);\n\n const [raDetails, setRaDetails] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const handleNotFound = useCallback(\n (reservationNumber) => {\n return history.push(\n `/input-reservation-ref-error?resReference=${reservationNumber}`\n );\n },\n [history]\n );\n\n useEffect(() => {\n if (location) {\n const queryStringValues = getQueryStringParams(\n location.search ? location.search : null\n );\n if (\n !queryStringValues ||\n !queryStringValues.number ||\n !queryStringValues.pickupStation ||\n !queryStringValues.pickupDate\n ) {\n handleNotFound(queryStringValues?.number || \"\");\n } else {\n setReservationNumber(queryStringValues.number);\n setPickupStation(queryStringValues.pickupStation);\n setPickupDate(queryStringValues.pickupDate);\n }\n }\n }, [location, handleNotFound]);\n\n useEffect(() => {\n if (reservationNumber && pickupDate && pickupStation) {\n setIsLoading(true);\n getReservationRADetails(reservationNumber, pickupDate, pickupStation)\n .then((res) => {\n if (!res) {\n handleNotFound(reservationNumber);\n } else {\n setRaDetails(res);\n setIsLoading(false);\n }\n })\n .catch(() => {\n handleNotFound(reservationNumber);\n });\n }\n }, [reservationNumber, pickupStation, pickupDate]);\n\n const imgUrl = raDetails\n ? groupsConfigurations[raDetails.groupId]?.imageUrl\n : \"\";\n\n const groupInfo = raDetails\n ? groupsDetails.find((g) => g.id === raDetails.groupId) || {}\n : {};\n\n return isLoading || !raDetails ? (\n \n ) : (\n \n );\n}\n\nexport default withLang(ReviewRentalAgreementPage);\n\nfunction ReviewRentalAgreementPageView({\n raDetails,\n imgUrl,\n groupInfo,\n groupsConfigurations,\n localizationAssets,\n}) {\n const { t, i18n } = useTranslation();\n\n const groupId = raDetails.groupId;\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n {t(\"hi\")}, \n {raDetails.driverName}!\n
    \n \n {t(\"mobile_raGreetMessage\")}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {t(\"mobile_raNumber\")} {raDetails.raNumber}\n
    \n
    \n {t(\"mobile_raDays\")} {raDetails.days}{\" \"}\n {t(\"day\")}\n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n {t(\"mobile_raThankYou\")}\n
    \n
    \n
    \n
    \n );\n}\n\nfunction VehicleDetail({\n t,\n groupId,\n groupInfo,\n imgUrl,\n groupsConfigurations,\n plateNumber,\n localizationAssets,\n}) {\n return (\n <>\n
    \n
    {t(\"mobile_raDetails\")}
    \n
    \n {t(\"mobile_raPlateNumber\")}\n {plateNumber}\n
    \n
    \n
    \n
    \n {groupId}\n
    \n
    {groupInfo.type}
    \n
    \n
    \n {isElectric(groupInfo.fuel) ? t('range') : t(\"consumption\")}:\n {groupsConfigurations[groupId]?.consumption}\n
    \n
    \n {t(\"seats\")}:\n {groupInfo.seats}\n
    \n
    \n {t(\"transmisson\")}:\n {t(\"vehicles-\" + groupInfo.transmission, \"\")}\n
    \n
    \n {t(\"doors\")}:\n {groupInfo.doors}\n
    \n
    \n {t(\"bags\")}:\n {groupInfo.bags}\n
    \n
    \n {t(\"handbags\")}:\n {groupInfo.handbags}\n
    \n
    \n
    \n \n );\n}\n\nfunction StationDetail({ title, date, stationName, language }) {\n return (\n
    \n
    \n \"\"\n
    \n
    \n
    {title}
    \n
    {stationName}
    \n
    \n {moment(date, \"YYYY-MM-DD HH:mm\")\n .locale(language)\n ?.format(\"ddd D MMM / HH:mm\")}\n
    \n
    \n
    \n );\n}\n\nfunction Footer({ t }) {\n return (\n
    \n
    \n
    \n
    \n
    {t(\"mobile_raFooterHelp\")}
    \n \n +351 210 100 200 (ext2)\n \n
    \n {t(\"mobile_raFooterSchedule\")}\n
    \n
    \n
    \n \n operationsbackoffice@guerin.com.pt\n \n
    \n
    \n
    \n \n www.guerin.pt\n \n
    \n
    \n \n f\n \n \n in\n \n
    \n
    \n
    \n
    \n );\n}\n\nfunction ExtrasSection({ t, extras }) {\n return (\n
    \n
    {t(\"mobile_raExtras\")}
    \n
    \n {extras.map((extra) => (\n
    {t(extra.id + \"Name\")}
    \n ))}\n
    \n
    \n );\n}\n\nfunction DocumentsSection({ t, raNumber }) {\n const { data: documents, loading } = useAxiosFetch(\n `/rental-agreements/${raNumber}/documents`\n );\n\n return (\n
    \n
    {t(\"mobile_raDocuments\")}
    \n {loading && }\n
    \n {documents?.map((doc) => (\n \n ))}\n
    \n
    \n );\n}\n\nfunction DocumentsSectionItem({ t, doc, raNumber }) {\n const [isDownloading, setIsDownloading] = useState(false);\n\n const handleDownloadClick = () => {\n setIsDownloading(true);\n downloadRentalAgreementDocument(raNumber, doc.fileName)\n .then((buffer) => {\n fileDownload(\n new Uint8Array(buffer.data),\n doc.fileName,\n \"application/pdf\"\n );\n })\n .catch((error) => {\n alert(\"File not found\");\n })\n .finally(() => {\n setIsDownloading(false);\n });\n };\n\n return (\n
    \n {isDownloading ? (\n \n ) : (\n {\n if (!isDownloading) handleDownloadClick();\n }}\n src={downloadFileIcon}\n alt=\"\"\n />\n )}\n
    {doc.description}
    \n
    \n );\n}\n","import axios from 'axios'\n\nexport async function getReservationRADetails(reservationNumber, pickupDate, pickupStation) {\n return (await axios.get(`/reservation/${reservationNumber}/rental-agreement`, { params: { pickupDate, pickupStation } })).data\n}\n\nexport async function getRentalAgreementDocuments(raNumber) {\n return (await axios.get(`/rental-agreements/${raNumber}/documents`)).data\n}\n\nexport async function downloadRentalAgreementDocument(raNumber, fileName) {\n return (await axios.get(`/rental-agreements/${raNumber}/documents/${fileName}`)).data\n}\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { acquirePushSaleItem } from '../../services/PushSales'\n\nimport { getQueryStringParams } from '../../utils/utils'\n\nimport Loading from '../../components/Loading'\n\nfunction PushSalesPage(props) {\n const { t, i18n } = useTranslation()\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState(null)\n const [submitSale, setSubmitSale] = useState(false)\n\n useEffect(() => {\n const queryStringValues = getQueryStringParams(\n props.location && props.location.search ? props.location.search : null\n )\n const lang = queryStringValues.lang || 'en'\n i18n.changeLanguage(lang)\n\n setSubmitSale(true)\n }, [props.location])\n\n useEffect(() => {\n if (submitSale) {\n const token = props.match?.params?.token\n setLoading(true)\n acquirePushSaleItem(token)\n .then(res => {\n setLoading(false)\n })\n .catch(err => {\n setLoading(false)\n setError(true)\n })\n }\n\n }, [submitSale, setLoading, setError, props.match])\n\n const notificationMessage = error ? t('productsNotAcquired') : t('productsAcquired')\n\n return loading ?\n \n : (\n
    \n
    \n
    \n
    \n props.history.push('/start')} src={require(`../../assets/images/logo.png`)} alt=\"Guerin\" className=\"img-fluid pt-3 pb-3\" />\n
    \n
    \n
    \n
    \n
    \n

    {t('thankYouForYourPreference')}

    \n

    {notificationMessage}

    \n
    \n
    \n
    \n )\n}\n\nexport default PushSalesPage\nexport const PATH = '/push-sales/:token'","import axios from 'axios';\n\nexport const acquirePushSaleItem = async (token) => {\n const res = await axios.post(`/push-sales`, { token: decodeURIComponent(token) })\n return res\n}\n","import React, { useEffect } from 'react'\n\nexport const EMPTY_TAG = '!EMPTY!'\nexport const FUNCTION_SEPARATOR_TAG = '_|_'\n\nfunction templateApplyValues(template, valuesObj, valuesKeys) {\n return Object.keys(valuesKeys).reduce((str, k) => str.replace(k, valuesKeys[k](valuesObj)), template)\n}\n\nconst templateApplyFunctions = (template, valuesObj, valuesKeys, functionKeys) => {\n const clonedTemplate = template.slice()\n\n const stringValue = Object.keys(functionKeys).reduce((str, k) => {\n const myRegexp = new RegExp(`${k}(.*?)_${k}_`)\n let match = myRegexp.exec(str)\n while (match != null) {\n const conditionalStringsMatch = match[1];\n const options = conditionalStringsMatch.split(FUNCTION_SEPARATOR_TAG)\n const keyConditionValue = functionKeys[k](valuesObj)\n str = str.replace(myRegexp, keyConditionValue ?\n templateApplyValues(options[0], valuesObj, valuesKeys)\n : templateApplyValues(options[1], valuesObj, valuesKeys)\n )\n match = myRegexp.exec(str)\n }\n return str\n }, clonedTemplate)\n\n return stringValue.split('\\n').filter(line => (line ? line.trim() : line) !== EMPTY_TAG).join('\\n')\n};\n\nconst templateApplyLocalizations = (template, localizations) => {\n const templateAfterText = replaceTexts(template, localizations)\n const templateAfterMedia = replaceMedia(templateAfterText, localizations)\n return templateAfterMedia.replaceAll('\\\\n', '
    ')\n}\n\nfunction replaceTexts(template, localizations) {\n const texts = localizations.filter(l => l.type === 'TEXT')\n const regex = new RegExp('[[text:[a-zA-Z0-9_\\-]+]]', 'g')\n let str = template.slice()\n let match = regex.exec(str)\n while (match != null) {\n const found = match[0]\n const key = found.replaceAll('[', '').replaceAll(']', '').replaceAll('text:', '')\n str = str.replaceAll(found, texts.find(t => t.key === key)?.value || found)\n match = regex.exec(str)\n }\n return str\n}\n\nfunction replaceMedia(template, localizations) {\n const texts = localizations.filter(l => l.type === 'MEDIA')\n const regex = new RegExp('[[media:[a-zA-Z0-9_\\-]+]]', 'g')\n let str = template.slice()\n let match = regex.exec(str)\n while (match != null) {\n const found = match[0]\n const key = found.replaceAll('[', '').replaceAll(']', '').replaceAll('media:', '')\n str = str.replace(found, texts.find(t => t.key === key)?.value)\n match = regex.exec(str)\n }\n return str\n}\n\nexport function buildTemplateFactory(templateString, valuesObj, localizations, functionKeys, valuesKeys) {\n const clonedTemplate = templateString.slice();\n const templateAfterFunctions = templateApplyFunctions(clonedTemplate, valuesObj, valuesKeys, functionKeys);\n const templateAfterValues = templateApplyValues(templateAfterFunctions, valuesObj, valuesKeys);\n return templateApplyLocalizations(templateAfterValues, localizations)\n}\n\nexport function DynamicContent({ content, onLoad = () => { }, onClick }) {\n useEffect(() => {\n if (content) {\n onLoad()\n }\n }, [content])\n\n return (\n
    \n )\n}\n","import React, { useCallback, useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { setPageId } from '../../services/Metrics'\n\nimport { applyValuesToString, buildTemplateFactory, DynamicContent, templateApplyFunctions, templateApplyValues } from \"./utils\"\n\nimport { FooterWithPrice } from '../../components/Footer'\nimport DriverInfoHeader from '../../components/PageHeader'\n\nconst PAGE_TEMPLATE_ID = 1\n\nconst valuesKeys = {\n '{{pricePerDay}}': (obj) => obj.pricePerDay,\n '{{priceTotal}}': (obj) => obj.totalPrice,\n '{{tollDepositValue}}': (obj) => obj.tollDepositValue,\n '{{tollsMessage}}': (obj) => obj.tollsMessage,\n};\n\nconst functionKeys = {\n '!isExpandOpen!': obj => obj.seeMoreOpen,\n '!isTollsValueInPreAuth1!': (obj) => obj.appFlowConfigs.isTollsValueInPreAuth1,\n '!hasExtra!': obj => obj.hasExtra,\n '!isExtraPerDay!': obj => obj.pricePerDay,\n};\n\nexport function buildTemplate(templateString, valuesObj, localizations) {\n return buildTemplateFactory(templateString, valuesObj, localizations, functionKeys, valuesKeys)\n}\n\nfunction Template1Page({ match, history }) {\n const { t } = useTranslation()\n\n const {\n getComfortExtras,\n addExtra,\n removeExtra,\n getQuantityOfExtra,\n isCorporate,\n appFlowConfigs,\n getCorporateExtras,\n flowNextRoute,\n reservation,\n paymentOption,\n tollDepositValue,\n pages,\n localizations,\n rentalAgreementQuoteValue,\n flowPreviousRoute,\n saveSessionExtra,\n } = useContext(DomainContext)\n\n const [tollsCardPopup, setTollsCardPopup] = useState(null)\n\n const [currentPage, setCurrentPage] = useState(null)\n const [extra, setExtra] = useState(null)\n const [seeMoreOpen, setSeeMoreOpen] = useState(false)\n\n const hasExtra = extra ? getQuantityOfExtra(extra) > 0 : false;\n\n const page = currentPage ? currentPage.description : ''\n\n useEffect(() => {\n if (pages) {\n const _currentPage = pages.find(p => p.url === match.url)\n setCurrentPage(_currentPage)\n\n const _extra = getCorporateExtras([_currentPage.extraId])[0];\n setExtra(_extra)\n setPageId({ pageId: _currentPage.pageId })\n }\n }, [pages, isCorporate, getCorporateExtras, getComfortExtras, t])\n\n function getNextStepUrl() {\n return flowNextRoute()\n }\n\n const handleContentClick = useCallback((e) => {\n if (e.target.id === '_ADD-EXTRA_') {\n if (hasExtra) {\n removeExtra(extra)\n } else {\n addExtra(extra)\n }\n }\n if (e.target.id === '_SEE-MORE_') {\n setSeeMoreOpen(v => !v)\n }\n }, [hasExtra, removeExtra, addExtra, extra])\n\n const handleNextClick = useCallback(() => {\n saveSessionExtra({\n extraId: extra.extraID,\n price: extra.totalPrice,\n acquired: hasExtra,\n removedInReview: false,\n pageId: currentPage.id,\n })\n history.push(getNextStepUrl())\n }, [history, extra, hasExtra, currentPage, getNextStepUrl, saveSessionExtra])\n\n const data = extra ? {\n pricePerDay: extra.pricePerDay || extra.totalPrice,\n totalPrice: extra.totalPrice,\n tollDepositValue,\n appFlowConfigs,\n hasExtra,\n tollsMessage: t('tollsPaymentAuth1', { value: appFlowConfigs.tollsValueInPreAuth1 }),\n seeMoreOpen,\n } : null\n\n const htmlContent = currentPage && data ? buildTemplate(currentPage.htmlContent, data, localizations) : null\n\n return extra && htmlContent ? (\n
    \n history.push('/start')}\n />\n
    \n
    \n
    \n \n
    \n
    \n history.push(getNextStepUrl())}\n handlePrevClick={() => flowPreviousRoute(history)}\n />\n
    \n
    \n ) : null\n}\n\nexport default Template1Page\n","import React, { useEffect, useRef } from 'react'\nimport { createPortal } from 'react-dom'\n\nexport function Portal({ id, children }) {\n const target = usePortal(id);\n return createPortal(\n children,\n target,\n );\n}\n\nfunction usePortal(id) {\n const rootElemRef = useRef(null);\n\n useEffect(() => {\n const existingParent = document.querySelector(`#${id}`);\n const parentElem = existingParent || createRootElement(id);\n if (!existingParent) {\n addRootElement(parentElem);\n }\n parentElem.appendChild(rootElemRef.current);\n\n return () => {\n rootElemRef.current.remove();\n if (!parentElem.childElementCount) {\n parentElem.remove();\n }\n };\n }, [id]);\n\n function getRootElem() {\n if (!rootElemRef.current) {\n rootElemRef.current = document.createElement('div');\n }\n return rootElemRef.current;\n }\n\n return getRootElem();\n}\n\nfunction createRootElement(id) {\n const rootContainer = document.createElement('div');\n rootContainer.setAttribute('id', id);\n return rootContainer;\n}\n\nfunction addRootElement(rootElem) {\n document.body.insertBefore(\n rootElem,\n document.body.lastElementChild.nextElementSibling,\n );\n}\n","import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom'\n\nimport { default as authPaymentImg, default as valuePaymentImg } from '../../assets/images/ico-wifi.png'\n\nimport { make3CIPageKioskMobileSessionPaymentEndpoint } from './api'\n\nimport Loading from '../../components/Loading'\nimport { Portal } from '../../components/Portal'\nimport useAxiosFetch from '../../utils/useAxiosFetch'\n\nfunction usePayments() {\n const [loadingPayment, setLoadingPayment] = useState(false)\n const [paymentRes, setPaymentRes] = useState(null)\n const [paymentError, setPaymentError] = useState(null)\n\n const { loading, error, data } = useAxiosFetch('/session-payments')\n\n const paymentValues = useMemo(() => {\n if (!data) return null\n return {\n skipPayments: !data.paymentEnabled && !data.authEnabled,\n valuePaymentEnabled: data.paymentEnabled,\n valuePayment: data.paymentAmount,\n valueDepositPaymentEnabled: data.authEnabled,\n valueDepositPayment: data.authAmount,\n }\n return null\n }, [data])\n\n const handlePaymentClick = useCallback(() => {\n if (!loadingPayment) {\n setLoadingPayment(true)\n make3CIPageKioskMobileSessionPaymentEndpoint()\n .then((res) => {\n setPaymentRes(res)\n setLoadingPayment(false)\n })\n .catch((err) => {\n setPaymentError(err)\n setLoadingPayment(false)\n })\n }\n }, [loadingPayment])\n\n return {\n isLoading: loading || loadingPayment,\n error: error || paymentError,\n paymentValues,\n handlePaymentClick,\n paymentRes,\n }\n}\n\nexport function PaymentsForm({ nextPageUrl = '/' }) {\n const { t } = useTranslation()\n const { isLoading, error, paymentValues, handlePaymentClick, paymentRes } = usePayments()\n\n if (isLoading) {\n return \n }\n\n if (error) {\n return \n }\n\n if (paymentValues?.skipPayments) {\n return \n }\n\n return paymentValues ? (\n
    \n
    \n
    {t('mobilePaymentsTitle')}
    \n
    {t('mobilePaymentsSubTitle')}
    \n
    \n
    \n \n \n
    \n
    \n {t('mobilePaymentsSubmit')}\n
    \n \n
    \n ) : null\n}\n\nfunction PaymentLine({ enabled, value, icon, title, message }) {\n return enabled ? (\n
    \n
    \n \"\"\n
    \n
    \n
    {title}
    \n
    {message}
    \n
    \n
    {value} ā‚¬
    \n
    \n ) : null\n}\n\nfunction Supplier3CiPageForm({ paymentRes, paymentValues }) {\n const formRef = useRef(null)\n\n useEffect(() => {\n if (paymentRes?.redirectURL) {\n formRef.current.submit()\n }\n }, [paymentRes])\n\n return paymentRes ? (\n <>\n
    \n \n \n \n {paymentRes.redirectURL ? (\n \n \n \n ) : null}\n \n ) : null\n}\n","import axios from 'axios'\n\nexport async function make3CIPageKioskMobileSessionPaymentEndpoint() {\n return (await axios.post('/session-payments/3C-ipage')).data\n}\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport './payments.css'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { saveSessionEnd, setPageId } from '../../services/Metrics'\n\nimport withLang from '../../withLang'\nimport TrackingPage from '../../components/TrackingPage'\nimport { PaymentsForm } from './PaymentsForm'\n\nfunction PaymentsPage(props) {\n const { t } = useTranslation()\n\n const {\n reservation,\n } = useContext(DomainContext)\n\n\n return (\n
    \n
    \n
    \n
    \n props.history.push('/start')} src={require(`../../assets/images/logo.png`)} alt=\"Guerin\" className=\"img-fluid pt-3 pb-3\" />\n
    \n
    \n
    \n \n
    \n )\n}\n\n// export default withLang(TrackingPage(PaymentsPage, 100))\nexport default withLang(PaymentsPage)\n","import React, { useCallback } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { saveSessionStationObservations } from '../../services/StationObservations'\n\nfunction getErrorMessage(errorMessage) {\n const defaultMessage = {\n title: 'mobilePaymentsErrorTitle',\n message: 'mobilePaymentsErrorMessage',\n }\n\n if (!errorMessage) return defaultMessage\n\n return defaultMessage\n}\n\nfunction PaymentsErrorPage(props) {\n const { t } = useTranslation()\n\n const errorWithMessage = getErrorMessage()\n\n const skipPayments = useCallback(() => {\n saveSessionStationObservations('[Kiosk Virtual: Erro Pagamentos]')\n props.history.push('/thank-you')\n }, [])\n\n return (\n
    \n
    \n
    \n
    \n
    props.history.push('/start')}>\n \"Guerin\"\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    {t(errorWithMessage.title)}

    \n
    \n
    \n {errorWithMessage.message ?

    {t(errorWithMessage.message)}

    : null}\n
    \n
    \n
    props.history.push('/payments')} className='btn btn-green cursor'>{t('mobilePaymentsTryAgain')}
    \n
    \n
    \n
    {t('mobileSkipPayments')}
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n )\n}\n\n\nexport default PaymentsErrorPage","import axios from 'axios'\n\nexport const saveSessionStationObservations = async (observations) => {\n try {\n return (await axios.post(`/sessions/station-observation`, { observations })).data\n } catch (e) {\n return true\n }\n}\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nfunction getNotificationMessage() {\n return 'mobilePaymentsThankYouMessage'\n}\n\nfunction PaymentsSuccessPage(props) {\n const { t } = useTranslation()\n\n const notificationMessage = getNotificationMessage()\n\n return (\n
    \n
    \n
    \n
    \n props.history.push('/start')} src={require(`../../assets/images/logo.png`)} alt=\"Guerin\" className=\"img-fluid pt-3 pb-3\" />\n
    \n
    \n
    \n
    \n
    \n

    {t('mobilePaymentsThankYouTitle')}

    \n

    {t('mobilePaymentsThankYouSubTitle')}

    \n

    {t(notificationMessage)}

    \n
    \n
    \n
    props.history.push(`/rating`)}>\n {t('opinionButton')}\n
    \n
    \n )\n}\n\nexport default PaymentsSuccessPage\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport './payments.css'\n\nimport { DomainContext } from '../../domain-repository/DomainRepository'\n\nimport { saveSessionEnd, setPageId } from '../../services/Metrics'\n\nimport { getQueryStringParams } from '../../utils/utils'\n\nimport withLang from '../../withLang'\nimport TrackingPage from '../../components/TrackingPage'\nimport { PaymentsForm } from './PaymentsForm'\nimport Loading from '../../components/Loading'\nimport { getReservation } from '../../services/GetReservation'\n\nfunction PaymentsReminderPage(props) {\n const { t } = useTranslation()\n const [isLoading, setIsLoading] = useState(true)\n\n const {\n appVersionId,\n language,\n setSessionId,\n setReservation,\n } = useContext(DomainContext)\n\n useEffect(() => {\n const queryStringValues = getQueryStringParams(\n props.location && props.location.search ? props.location.search : null\n )\n if (!queryStringValues || !queryStringValues.number || !queryStringValues.pickupStation || !queryStringValues.pickupDate) {\n return props.history.push(`/payments-error`)\n }\n setIsLoading(true)\n getReservation({\n resNumberOrReference: queryStringValues.number,\n stationId: queryStringValues.pickupStation,\n resCheckOutDate: queryStringValues.pickupDate,\n appVersionId, language, autoSearch: true, paymentsSession: true\n })\n .then(reservation => {\n if (!reservation) {\n return props.history.push(`/payments-error`)\n }\n setSessionId(reservation.sessionId)\n setReservation(reservation)\n\n setIsLoading(false)\n })\n .catch(err => {\n props.history.push(`/payments-error`)\n })\n\n }, [])\n\n if (isLoading) {\n return \n }\n\n return (\n
    \n
    \n
    \n
    \n props.history.push('/start')} src={require(`../../assets/images/logo.png`)} alt=\"Guerin\" className=\"img-fluid pt-3 pb-3\" />\n
    \n
    \n
    \n \n
    \n )\n}\n\nexport default withLang(PaymentsReminderPage)\n","import axios from \"axios\";\n\nconst keylessAxios = axios.create({\n baseURL: process.env.REACT_APP_WEB_API_URL,\n});\n\nconst keylessIdHeaders = (token) => ({\n headers: {\n \"x-keyless-id\": token, \n \"Accept-Language\": JSON.parse(localStorage.getItem('language'))?.lang || 'pt'\n },\n});\n\nexport async function getKeylessSession(token) {\n return (await keylessAxios.get(\"/keyless\", keylessIdHeaders(token))).data;\n}\n\nexport async function validateKeylessLocation(token, location) {\n return (\n await keylessAxios.post(\n \"/keyless/validate-location\",\n location,\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function sendKeylessPin(token) {\n return (\n await keylessAxios.post(\"/keyless/pin\", undefined, keylessIdHeaders(token))\n ).data;\n}\n\nexport async function validateKeylessPin(token, pin) {\n return (\n await keylessAxios.post(\n \"/keyless/pin-validate\",\n { pin },\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function validateKeylessRA(token) {\n return (\n await keylessAxios.post(\n \"/keyless/validate-rental-agreement\",\n undefined,\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function keylessSignRA(token, signature) {\n return (\n await keylessAxios.post(\n \"/keyless/sign-rental-agreement\",\n { signature },\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function getKeylessSessionRAReview(token) {\n return (\n await keylessAxios.get(\"/keyless/rental-agreement\", keylessIdHeaders(token))\n ).data;\n}\n\nexport async function validateKeylessVehicleQRCode(token, qrCode) {\n return (\n await keylessAxios.post(\n \"/keyless/validate-vehicle\",\n { qrCode },\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function keylessOpenDoors(token) {\n return (\n await keylessAxios.post(\n \"/keyless/open-doors\",\n undefined,\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function finishKeylessSession(token) {\n return (\n await keylessAxios.post(\n \"/keyless/finish\",\n undefined,\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function createSelfCheckoutUrl(token) {\n return (\n await keylessAxios.post(\n \"/keyless/self-checkout\",\n undefined,\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function confirmSelfCheckoutUrl(token) {\n return (\n await keylessAxios.post(\n \"/keyless/confirm-self-checkout\",\n undefined,\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function proceedNextSetp(token) {\n return (\n await keylessAxios.post(\n \"/keyless/next-step\",\n undefined,\n keylessIdHeaders(token)\n )\n ).data;\n}\n\nexport async function getConventionDetails(token) {\n return (\n await keylessAxios.get(\n \"/convention?token=\" + token,\n )\n ).data;\n}\n\nexport async function conventionOpenDoors(token) {\n return (\n await keylessAxios.post(\n \"/convention/open-doors?token=\" + token,\n )\n ).data;\n}\n","export const keylessColors = {\n green: \"#8EC64E\",\n orange: '#FD812A',\n}\n\nexport const errorModalImgStyle = {\n width: '40px',\n}\n\nexport const bigImageStyle = {\n marginTop: '3rem',\n marginBottom: '3rem',\n}\n\nexport const bigModalStyle = {\n height: '70dvh',\n}\n","import React from \"react\";\nimport { LoadingIcon } from \"../../../components/Loading\";\n\nexport function KeylessButton({\n text,\n color = \"#5B5B5B\",\n backgroundColor,\n onClick,\n isLoading,\n disabled,\n style,\n}) {\n return (\n \n {isLoading ? : null}\n {text}\n \n );\n}\n\nconst buttonStyle = {\n width: \"100%\",\n height: '6vh',\n borderRadius: \"20px\",\n fontSize: \"1.2rem\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"1rem\",\n};\n","import React from \"react\";\n\nimport './KeylessModal.css'\n\nexport function KeylessModal({ isOpen, animation, img, imgHeight, title, message, actions, imgStyle={}, modalStyle = {} }) {\n\n const animationStyle = animation ? {\n animation: animation ? `${animation} 0.5s ease-out` : '',\n } : {}\n\n return isOpen ? (\n
    \n
    \n
    \n \"\"\n

    {title}

    \n

    {message}

    \n
    \n {actions ?
    {actions}
    : null}\n
    \n
    \n ) : null;\n}\n\nconst styles = {\n dimmer: {\n position: \"absolute\",\n top: \"0\",\n height: \"100%\",\n width: \"100%\",\n background: \"rgba(0, 0, 0, 0.7)\",\n transition: \"opacity 500ms\",\n opacity: \"1\",\n zIndex: \"999\",\n },\n modal: {\n position: \"relative\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%,-50%)\",\n width: \"80%\",\n minWidth: \"300px\",\n padding: \"2rem\",\n background: \"#fff\",\n borderRadius: \"15px\",\n zIndex: \"10\",\n textAlign: \"center\",\n zIndex: \"4\",\n\n display: \"flex\",\n flexDirection: \"column\",\n maxHeight: \"70dvh\",\n },\n img: {\n width: \"50%\",\n maxWidth: \"150px\",\n marginBottom: \"1rem\",\n },\n content: {\n flex: \"1\",\n },\n title: {\n fontWeight: \"700\",\n fontSize: \"22px\",\n color: \"#666666\",\n },\n message: {\n fontSize: \"18px\",\n },\n};\n","import React, { useCallback, useEffect, useState, useContext } from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport { validateKeylessLocation } from \"./keylessService\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport { errorModalImgStyle, keylessColors } from \"./utils\";\n\nimport AlertModalManager from \"../../components/alert-modal-wraper/alert-modal-manager\";\nimport { KeylessButton } from \"./components/KeylessButton\";\nimport { KeylessModal } from \"./components/KeylessModal\";\n\nexport function KeylessValidateStation({\n handleNextStep,\n keylessToken,\n keylessSession,\n}) {\n const { t } = useTranslation();\n\n const { localizationAssets } = useContext(DomainContext);\n\n const { error, requestLocation } = useGeolocation();\n\n const [isLoading, setIsLoading] = useState(false);\n const [openLeaveModal, setOpenLeaveModal] = useState(false);\n\n const handleConfirmStationClick = useCallback(() => {\n async function func() {\n const coords = await requestLocation();\n if (coords) {\n setIsLoading(true);\n validateKeylessLocation(keylessToken, {\n location: `${coords.latitude},${coords.longitude}`,\n })\n .then((res) => {\n handleNextStep(res.nextStep);\n })\n .catch((err) => {\n const messageKey = err.response.data;\n AlertModalManager.openModal(\n { title: t(messageKey), message: \"\" },\n () => {}\n );\n })\n .finally(() => setIsLoading(false));\n }\n }\n func();\n }, [keylessToken, requestLocation, handleNextStep, t]);\n\n const handleLeaveClick = useCallback(() => {\n window.location.href = \"/\";\n }, []);\n\n const [displayInitImage, setDisplayInitImage] = useState(true);\n useEffect(() => {\n const t = setTimeout(() => setDisplayInitImage(false), 4000);\n return () => clearTimeout(t);\n }, []);\n\n if (displayInitImage) {\n return (\n \n );\n }\n\n return (\n
    \n
    \n \n \n

    \n ]}\n />\n

    \n
    \n \n setOpenLeaveModal(true)}\n text={t(\"no\")}\n color=\"white\"\n backgroundColor=\"rgba(0, 0 , 0, .10)\"\n disabled={isLoading}\n />\n
    \n
    \n }\n />\n }\n />\n
    \n );\n}\n\nfunction InitView({ videoSrc, logoSrc, text }) {\n return (\n
    \n \n \"\"\n
    {text}
    \n
    \n );\n}\n\nconst styles = {\n initSection: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'space-between',\n height: '100dvh',\n padding: '10% 0 50%',\n background: 'rgba(0, 0, 0, 0.4)',\n },\n initVideo: { height: \"100dvh\", position: \"absolute\", top: \"0\", left: \"0\", zIndex: \"-1\" },\n initLogo: {\n width: \"40%\",\n maxWidth: \"200px\",\n },\n initText: {\n color: \"white\",\n fontSize: \"2.5rem\",\n textAlign: \"center\",\n fontFamily: \"'BlissLight'\",\n width: '60%'\n },\n page: {\n backgroundColor: keylessColors.green,\n height: \"100dvh\",\n paddingBottom: \"60px\",\n paddingTop: \"30px\",\n fontFamily: \"'BlissLight'\",\n },\n pageContent: {\n textAlign: \"center\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2rem\",\n },\n logo: {\n height: \"10vh\",\n margin: \"0 auto\",\n },\n stationImage: {\n height: '20vh',\n margin: '0 auto',\n },\n title: {\n color: \"white\",\n fontSize: \"2rem\",\n flex: \"1\",\n margin: \"0\",\n lineHeight: \"normal\",\n },\n};\n\nconst useGeolocation = () => {\n const [error, setError] = useState(null);\n\n const requestLocation = () => {\n return new Promise((resolve, reject) => {\n if (!navigator.geolocation) {\n const errMsg = \"Geolocation is not supported by your browser\";\n setError(errMsg);\n resolve(null);\n return;\n }\n\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const coords = {\n latitude: position.coords.latitude,\n longitude: position.coords.longitude,\n };\n setError(null);\n resolve(coords);\n },\n (err) => {\n let errMsg;\n switch (err.code) {\n case err.PERMISSION_DENIED:\n errMsg = \"User denied the request for Geolocation.\";\n break;\n case err.POSITION_UNAVAILABLE:\n errMsg = \"Location information is unavailable.\";\n break;\n case err.TIMEOUT:\n errMsg = \"The request to get user location timed out.\";\n break;\n case err.UNKNOWN_ERROR:\n default:\n errMsg = \"An unknown error occurred.\";\n break;\n }\n setError(errMsg);\n resolve(null);\n }\n );\n });\n };\n\n return { error, requestLocation };\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport AlertModalManager from \"../../components/alert-modal-wraper/alert-modal-manager\";\n\nimport { validateKeylessPin, sendKeylessPin } from \"./keylessService\";\nimport { KeylessPageLayoutView } from \"./KeylessPage\";\n\nexport function KeylessValidatePin({\n handleNextStep,\n keylessToken,\n hasSentPin,\n}) {\n const { t } = useTranslation();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const [pinSent, setPinSent] = useState(false);\n const [pin, setPin] = useState(\"\");\n\n const handleSendPinClick = useCallback(() => {\n setIsLoading(true);\n setPinSent(false);\n sendKeylessPin(keylessToken)\n .then((res) => {\n setPinSent(true);\n })\n .catch((err) => {\n const messageKey = err.response.data;\n AlertModalManager.openModal(\n { title: t(messageKey), message: \"\" },\n () => {}\n );\n })\n .finally(() => setIsLoading(false));\n }, [keylessToken, pin]);\n\n const handleValidatePinClick = useCallback(() => {\n setIsLoading(true);\n validateKeylessPin(keylessToken, pin)\n .then((res) => {\n handleNextStep(res.nextStep);\n })\n .catch((err) => {\n setIsLoading(false);\n const messageKey = err.response.data;\n AlertModalManager.openModal(\n { title: t(messageKey), message: \"\" },\n () => {}\n );\n })\n }, [keylessToken, pin, handleNextStep]);\n\n const pinSentNowOrBefore = hasSentPin || pinSent;\n\n return (\n \n

    \n Iremos enviar um sms com o cĆ³digo de acesso que deverĆ” introduzir em seguida\n

    \n {pinSentNowOrBefore ? (\n
    \n
    \n \n setPin(e.target.value)}\n />\n \n Validar pin\n
    \n \n
    \n ) : (\n
    \n \n Enviar pin\n
    \n
    \n )}\n \n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\n\nfunction useProgressBar(done, finishCallBack) {\n const [progress, setProgress] = useState(0);\n const initialSpeed = 0.25; // Initial speed multiplier (adjust to make slower)\n\n const animationFrameId = useRef(null); // ref to store the animation frame id\n\n const updateProgress = () => {\n setProgress((prevProgress) => {\n if (prevProgress >= 100) {\n cancelAnimationFrame(animationFrameId.current);\n return 100;\n }\n\n const newProgress = prevProgress + initialSpeed * Math.max(0.1, (100 - prevProgress) * 0.005);\n return Math.min(newProgress, 100);\n });\n\n animationFrameId.current = requestAnimationFrame(updateProgress);\n };\n\n useEffect(() => {\n animationFrameId.current = requestAnimationFrame(updateProgress);\n\n return () => cancelAnimationFrame(animationFrameId.current);\n }, []);\n\n useEffect(() => {\n if (done) {\n cancelAnimationFrame(animationFrameId.current);\n setProgress(100);\n }\n }, [done]);\n\n return progress\n}\n\nexport function ProgressBar({ done }) {\n const progress = useProgressBar(done)\n\n return (\n
    \n \n
    \n )\n}","import React, {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\n\nimport AlertModalManager from \"../../components/alert-modal-wraper/alert-modal-manager\";\nimport { validateKeylessRA } from \"./keylessService\";\nimport Loading from \"../../components/Loading\";\nimport { KeylessModal } from \"./components/KeylessModal\";\nimport {\n bigImageStyle,\n bigModalStyle,\n errorModalImgStyle,\n keylessColors,\n} from \"./utils\";\nimport { KeylessButton } from \"./components/KeylessButton\";\nimport { ProgressBar } from \"./components/ProgressBar\";\n\nexport function KeylessValidateRA({ handleNextStep, keylessToken }) {\n const { t } = useTranslation();\n\n const { localizationAssets } = useContext(DomainContext);\n\n const [isLoading, setIsLoading] = useState(true);\n\n const [modalObj, setModalObj] = useState({\n title: \"keylessWaitTitle\",\n message: \"keylessLoadingVehicleMessage\",\n img: \"keylessLoadingVehicle\",\n });\n const hasRun = useRef(false);\n\n useEffect(() => {\n if (hasRun.current) return null;\n hasRun.current = true;\n let tm = null;\n validateKeylessRA(keylessToken)\n .then((res) => {\n setIsLoading(false)\n setModalObj({\n title: \"keylessVehicleSucessTitle\",\n message: \"\",\n img: \"keylessSuccess\",\n });\n\n tm = setTimeout(() => {\n handleNextStep(res.nextStep);\n }, 2500);\n })\n .catch((err) => {\n setIsLoading(false);\n setModalObj({\n title: \"keylessWarning\",\n message: \"keylessVehicleErrorTitle\",\n img: \"keylessError\",\n error: true,\n });\n });\n\n return () => {\n if (tm) clearTimeout(tm);\n };\n }, [keylessToken, handleNextStep]);\n\n const handleLeaveClick = useCallback(() => {\n window.location.href = \"/\";\n }, []);\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n ) : \n }\n />\n
    \n );\n}\n\nconst styles = {\n page: {\n backgroundColor: keylessColors.green,\n height: \"100dvh\",\n paddingBottom: \"60px\",\n paddingTop: \"20px\",\n fontFamily: \"'BlissLight'\",\n },\n pageContent: {\n textAlign: \"center\",\n height: \"100%\",\n },\n logo: {\n width: \"150px\",\n margin: \"0 auto\",\n },\n};\n","import React, { useState } from \"react\";\n\nimport caretLeft from \"../../../assets/images/angle-left-solid.svg\";\n\nimport { keylessColors } from \"../utils\";\n\nimport { KeylessModal } from \"./KeylessModal\";\nimport { KeylessButton } from \"./KeylessButton\";\n\nexport const KEYLESS_STEPS = {\n LOCATION: 0,\n SIGNATURE: 1,\n VEHICLE: 2,\n DOOR: 3,\n};\n\nexport function KeylessPageLayout({\n children,\n step,\n localizationAssets,\n reservationNumber,\n t = () => {\n return \"\";\n },\n handleBack,\n footer,\n}) {\n const [helpModalOpen, setHelpModalOpen] = useState(false);\n\n const handleHelpClick = () => {\n setHelpModalOpen(true);\n };\n\n return (\n
    \n \n
    \n
    \n {t(\"keylessReservationNumber\")} {reservationNumber}\n
    \n
    \n
    {t(\"keylessReservationHelp\")}
    \n \n
    \n
    \n {handleBack ? (\n
    \n {\" \"}\n
    \n ) : null}\n
    \n
    {children}
    \n
    \n {footer}\n
    \n setHelpModalOpen(false)}\n />\n }\n />\n
    \n );\n}\n\nfunction PageHeader({ currentStep, localizationAssets }) {\n const items = [\n {\n step: KEYLESS_STEPS.LOCATION,\n img:\n currentStep <= KEYLESS_STEPS.LOCATION\n ? \"keylessPinIconWhite\"\n : \"keylessPinIconGreen\",\n },\n {\n step: KEYLESS_STEPS.VEHICLE,\n img:\n currentStep <= KEYLESS_STEPS.VEHICLE\n ? \"keylessCarIconWhite\"\n : \"keylessCarIconGreen\",\n },\n {\n step: KEYLESS_STEPS.DOOR,\n img:\n currentStep <= KEYLESS_STEPS.DOOR\n ? \"keylessLockIconWhite\"\n : \"keylessLockIconGreen\",\n },\n ];\n\n return (\n
    \n \n
    \n {items.map((item, index) => (\n <>\n item.step\n ? styles.breadcrumbItemActive\n : styles.breadcrumbItem\n }\n >\n \n
    \n {index === items.length - 1 ? null : (\n item.step\n ? styles.breadcrumbLineActive\n : styles.breadcrumbLine\n }\n />\n )}\n \n ))}\n
    \n
    \n );\n}\n\nconst styles = {\n page: {\n height: \"100dvh\",\n display: \"flex\",\n flexDirection: \"column\",\n fontFamily: \"'BlissLight'\",\n },\n children: {\n flex: \"1\",\n },\n footer: {\n backgroundColor: '#F5F5F5',\n height: '12vh',\n display: 'flex',\n alignItems: 'center',\n padding: '0 15px',\n },\n backArrow: {\n height: \"20px\",\n },\n spacer: {\n width: \"100%\",\n marginBottom: \"2rem\",\n },\n header: {\n backgroundColor: keylessColors.green,\n display: \"flex\",\n alignItems: \"center\",\n paddingTop: \"20px\",\n paddingBottom: \"20px\",\n gap: \"2rem\",\n },\n breadcrumbs: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n },\n breadcrumbItemActive: {\n backgroundColor: \"white\",\n borderRadius: \"50%\",\n height: \"50px\",\n width: \"50px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n breadcrumbItem: {\n backgroundColor: \"rgba(0,0,0,.4)\",\n borderRadius: \"50%\",\n height: \"50px\",\n width: \"50px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n breadcrumbItemImg: {\n height: \"60%\",\n },\n breadcrumbLine: {\n backgroundColor: \"rgba(0,0,0,.4)\",\n height: \"10px\",\n width: \"16%\",\n flex: \"1\",\n },\n breadcrumbLineActive: {\n backgroundColor: \"white\",\n height: \"10px\",\n width: \"100%\",\n flex: \"1\",\n },\n logo: {\n width: \"80px\",\n },\n\n reservationLine: {\n backgroundColor: \"#F0F0F0\",\n paddingTop: \"5px\",\n paddingBottom: \"5px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n reservationLineHelp: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"5px\",\n color: \"#FD812A\",\n },\n reservationLineHelpImg: {\n height: \"25px\",\n },\n};\n","import React, {\n useCallback,\n useEffect,\n useState,\n useRef,\n useContext,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport CanvasDraw from \"react-canvas-draw\";\n\nimport { keylessSignRA } from \"./keylessService\";\nimport { useWindowSize } from \"../../utils/useWindowSize\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\n\nimport AlertModalManager from \"../../components/alert-modal-wraper/alert-modal-manager\";\nimport Loading from \"../../components/Loading\";\nimport { bigImageStyle, bigModalStyle, keylessColors } from \"./utils\";\nimport { KeylessPageLayoutView } from \"./KeylessPage\";\nimport { KeylessButton } from \"./components/KeylessButton\";\nimport {\n KEYLESS_STEPS,\n KeylessPageLayout,\n} from \"./components/KeylessPageLayout\";\nimport { KeylessModal } from \"./components/KeylessModal\";\n\nexport function KeylessRASignature({\n handleNextStep,\n keylessToken,\n keylessSession,\n}) {\n const { t } = useTranslation();\n\n const { localizationAssets } = useContext(DomainContext);\n\n const { heightSize, widthSize, isPortrait } = useWindowSize();\n\n const [signatureMode, setSignatureMode] = useState(false);\n const [drewSignature, setDrewSignature] = useState(false);\n const [signatureSrc, setSignatureSrc] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [successModalOpen, setSuccessModalOpen] = useState(false);\n const canvasRef = useRef(null);\n\n const handleClearClick = () => {\n setDrewSignature(false);\n setSignatureSrc(null);\n\n [...canvasRef.current.canvasContainer.children].forEach((c) => {\n const context = c.getContext(\"2d\");\n context.clearRect(0, 0, c.width, c.height);\n });\n };\n\n const handleConfirmSignature = () => {\n let baseCanvas = canvasRef.current.canvasContainer.children[3]; // canvas with background image\n let baseCanvasContex = baseCanvas.getContext(\"2d\");\n baseCanvasContex.fillStyle = \"white\";\n baseCanvasContex.fillRect(0, 0, baseCanvas.width, baseCanvas.height);\n baseCanvasContex.drawImage(\n canvasRef.current.canvasContainer.children[1],\n 0,\n 0\n );\n\n const signatureImgSrc = baseCanvas.toDataURL(\"image/jpg\");\n setSignatureSrc(signatureImgSrc);\n setSignatureMode(false);\n };\n\n const handleSubmitClick = () => {\n setIsLoading(true);\n let tm = null;\n\n keylessSignRA(keylessToken, signatureSrc)\n .then((res) => {\n setSuccessModalOpen(true);\n\n tm = setTimeout(() => {\n handleNextStep(res.nextStep);\n }, 1500);\n })\n .catch((err) => {\n const messageKey = err.response.data;\n AlertModalManager.openModal(\n { title: t(messageKey), message: \"\" },\n () => {}\n );\n })\n .finally(() => setIsLoading(false));\n\n return () => clearTimeout(tm);\n };\n\n return !signatureMode ? (\n !isPortrait ? (\n \n ) : (\n \n }\n >\n \n

    \n {t(\"keylessSignatureTitle\")}\n

    \n

    {t(\"keylessSignatureMessage\")}

    \n setSignatureMode(true)}\n className=\"relative\"\n style={{\n flex: \"1\",\n border: \"1px solid black\",\n borderRadius: \"5px\",\n marginBottom: \"20px\",\n }}\n >\n {signatureSrc ? (\n \"\"\n ) : (\n <>\n \n
    \n \n \n {t(\"keylessRotateDevice\")}\n

    \n
    \n \n )}\n \n \n {t(\"keylessWaitMessage\")}}\n modalStyle={bigModalStyle}\n imgStyle={bigImageStyle}\n />\n \n )\n ) : (\n
    \n
    \n setDrewSignature(true)}\n className=\"signature__canvas\"\n ref={canvasRef}\n hideGrid={true}\n canvasWidth={widthSize - 20}\n canvasHeight={heightSize - 80}\n lazyRadius={10}\n brushRadius={1}\n hideInterface={true}\n disabled={isPortrait}\n />\n {!drewSignature && !isPortrait && (\n \n )}\n {isPortrait ? (\n
    \n \n \n {t(\"keylessRotateDevice\")}\n

    \n
    \n ) : null}\n
    \n {isPortrait ? null : (\n \n \n \n
    \n )}\n \n );\n}\n\nconst styles = {\n signatureImg: {\n transform: \"translate(-50%, -50%)\",\n width: \"100%\",\n left: \"50%\",\n position: \"absolute\",\n top: \"50%\",\n },\n};\n","import { useState, useEffect } from 'react';\n\nexport const useWindowSize = () => {\n const [widthSize, setWidthSize] = useState(window.innerWidth);\n const [heightSize, setHeightSize] = useState(window.innerHeight);\n\n useEffect(() => {\n const handleResize = () => {\n setWidthSize(window.innerWidth);\n setHeightSize(window.innerHeight);\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return { widthSize, heightSize, isPortrait: heightSize > widthSize };\n};\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n createSelfCheckoutUrl,\n confirmSelfCheckoutUrl,\n} from \"./keylessService\";\n\nimport AlertModalManager from \"../../components/alert-modal-wraper/alert-modal-manager\";\nimport Loading from \"../../components/Loading\";\nimport { useKeylessToken } from \"./KeylessPage\";\n\nexport function KeylessSelfCheckout({ handleNextStep, keylessToken }) {\n const { t } = useTranslation();\n\n const [isLoading, setIsLoading] = useState(true);\n const hasRun = useRef(false);\n\n useEffect(() => {\n if (hasRun.current) return null;\n hasRun.current = true;\n\n createSelfCheckoutUrl(keylessToken)\n .then((res) => {\n window.location.href = res.redirectUrl;\n })\n .catch((err) => {\n setIsLoading(false);\n const messageKey = err.response?.data ?? \"generic_error\";\n AlertModalManager.openModal(\n { title: t(messageKey), message: \"\" },\n () => {}\n );\n });\n }, [t, keylessToken, handleNextStep]);\n\n return ;\n}\n\nexport function KeylessSelfCheckoutConfirmPage(props) {\n const keylessToken = useKeylessToken();\n\n const { t } = useTranslation();\n\n const [isLoading, setIsLoading] = useState(true);\n const hasRun = useRef(false);\n\n useEffect(() => {\n if (hasRun.current) return null;\n hasRun.current = true;\n\n confirmSelfCheckoutUrl(keylessToken)\n .then((res) => {\n props.history.replace(`/keyless?token=${keylessToken}`);\n })\n .catch((err) => {\n setIsLoading(false);\n const messageKey = err.response?.data ?? \"generic_error\";\n AlertModalManager.openModal(\n { title: t(messageKey), message: \"\" },\n () => {}\n );\n });\n }, [t, keylessToken]);\n\n return ;\n}\n","import React, { Component } from \"react\";\n\nconst VIDEO_OVERLAY_STYLE = {\n position: \"relative\",\n background: \"rgb(60,64,67)\",\n};\n\nconst LOADING_STYLE = {\n position: \"absolute\",\n background: \"rgba(60,64,67, .6)\",\n top: '0',\n left: '0',\n zIndex: '2',\n width: \"100%\",\n height: \"100%\",\n};\n\nconst CAMERA_WRAPPER_STYLE = {\n position: \"absolute\",\n bottom: \"15px\",\n right: \"15px\",\n zIndex: 1,\n cursor: \"pointer\",\n};\n\nconst CAMERA_STYLE = {\n height: \"calc(100%)\",\n left: \"-1px\",\n pointerEvents: \"none\",\n top: \"-1px\",\n width: \"calc(100%)\",\n objectFit: \"cover\",\n};\n\nconst ICON_BACKGROUND_STYLE = {\n backgroundColor: \"white\",\n border: \"1px solid black\",\n boxShadow: \"1px 1px 10px black\",\n borderRadius: \"50%\",\n padding: \"5px\",\n display: \"flex\",\n};\n\nconst CAMERA_PICKER_STYLE = {\n width: \"32px\",\n height: \"32px\",\n fill: \"#4a4747\",\n};\n\nconst STORAGE_VIDEO_KEY = \"video-device-id\";\n\nclass Webcam extends Component {\n state: State = {\n videoDevices: [],\n selectedVideoDeviceId: null,\n isLoading: true,\n hasUserMedia: false,\n logs: \"\",\n src: undefined,\n };\n\n hasMounted = false;\n\n hasUserMedia = false;\n\n videoStream = null;\n\n getVideoPermissions = (cb) => {\n this.setState({ logs: this.state.logs + `\\nGetting permissons` });\n navigator.mediaDevices\n .getUserMedia({ video: true })\n .then((stream) => {\n this.stopVideoStream(stream)\n cb();\n })\n .catch((e) => {\n alert(e);\n });\n };\n\n getVideoDevices = () => {\n navigator.mediaDevices\n .enumerateDevices()\n .then((devices) => {\n this.setState({\n logs: this.state.logs + `\\n${JSON.stringify(devices)}`,\n });\n const videoDevices = devices\n .filter((d) => d.kind === \"videoinput\")\n\n const savedDeviceId = localStorage.getItem(\n this.props.storedVideoDeviceId || STORAGE_VIDEO_KEY\n );\n const deviceIdNotPresent = !videoDevices.some(\n (v) => v.deviceId === savedDeviceId\n );\n if (deviceIdNotPresent) {\n localStorage.removeItem(\n this.props.storedVideoDeviceId || STORAGE_VIDEO_KEY\n );\n }\n\n let preferredDeviceId = null;\n for (const device of videoDevices) {\n if (device.label.toLowerCase().includes(\"back\") || device.label.toLowerCase().includes(\"environment\")) {\n preferredDeviceId = device.deviceId;\n break;\n }\n }\n \n // If no clear environment camera is found, fallback to the first device\n if (!preferredDeviceId && videoDevices.length > 0) {\n preferredDeviceId = videoDevices[0].deviceId;\n }\n\n const selectedVideoDeviceId = videoDevices.length > 0 ?\n savedDeviceId || preferredDeviceId || videoDevices[0].deviceId || null : null;\n\n this.setState({ videoDevices: videoDevices.map((v) => v.deviceId), selectedVideoDeviceId }, () => {\n if (this.state.selectedVideoDeviceId !== null) {\n this.handleVideoChange(this.state.selectedVideoDeviceId);\n }\n });\n })\n .catch((e) => {\n this.setState({ logs: this.state.logs + `\\n${JSON.stringify(e)}` });\n });\n };\n\n componentDidMount() {\n if(!this.hasMounted) {\n this.getVideoPermissions(this.getVideoDevices)\n this.hasMounted = true\n }\n }\n\n handleVideoChange = (videoDeviceId) => {\n this.setState({\n logs:\n this.state.logs +\n `\\n-Using device:${JSON.stringify({ videoDeviceId })}`,\n });\n\n this.setState({ isLoading: true });\n\n localStorage.setItem(\n this.props.storedVideoDeviceId || STORAGE_VIDEO_KEY,\n videoDeviceId\n );\n this.props.handleVideoDeviceSelect(videoDeviceId);\n\n if (this.props.disableSrcObject) {\n return;\n }\n\n const that = this;\n const video = that.props.forwardedRef.current\n\n navigator.mediaDevices\n .getUserMedia({\n video: {\n deviceId: videoDeviceId,\n width: { ideal: 1920 },\n height: { ideal: 1080 },\n },\n })\n .then(function (mediaStream) {\n if (!mediaStream) {\n that.setState({ hasUserMedia: false });\n return;\n }\n if (!that.props.disableSrcObject) {\n that.videoStream = mediaStream;\n if (video !== null) {\n try {\n video.srcObject = mediaStream;\n } catch (e) {\n that.setState({\n logs: that.state.logs + `\\n${JSON.stringify(e)}`,\n });\n }\n that.setState({ hasUserMedia: true });\n }\n }\n })\n .catch((e) => {\n this.setState({ logs: this.state.logs + `\\n${JSON.stringify(e)}` });\n });\n };\n\n handleVideoDeviceChange = () => {\n const { selectedVideoDeviceId, videoDevices } = this.state;\n if (videoDevices.length !== 0) {\n const currentIndex = videoDevices.findIndex(\n (v) => v === selectedVideoDeviceId\n );\n const newIndex =\n currentIndex + 1 > videoDevices.length - 1 ? 0 : currentIndex + 1;\n this.setState({ selectedVideoDeviceId: videoDevices[newIndex] || null });\n this.handleVideoChange(videoDevices[newIndex] || \"\");\n } else {\n this.getVideoDevices();\n }\n };\n\n stopVideoStream = (videoStream) => {\n if (videoStream !== undefined) {\n if (videoStream.getVideoTracks().length > 0) {\n videoStream.getVideoTracks().forEach((track) => {\n if (videoStream) {\n videoStream.removeTrack(track);\n track.stop();\n }\n });\n }\n }\n };\n\n stopAndCleanup = () => {\n const { state } = this;\n\n if (state.hasUserMedia) {\n this.stopVideoStream(this.videoStream);\n\n if (state.src) {\n window.URL.revokeObjectURL(state.src);\n }\n }\n };\n\n componentWillUnmount() {\n this.stopAndCleanup();\n }\n\n render() {\n const { style, id, forwardedRef, videoHint } = this.props;\n \n return (\n
    \n {this.props.loading ?
    : null }\n \n \n
    \n );\n }\n}\n\nconst WebcamRef = React.forwardRef(function WebcamRef(props, ref) {\n return ;\n});\n\nexport default WebcamRef;\n\nfunction VideoIcon({\n videoHint,\n onClick,\n}) {\n return (\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n );\n}\n","import React from 'react'\n\nimport Webcam from './Webcam';\nimport { BarcodeFormat, BrowserMultiFormatReader, DecodeHintType } from '@zxing/library';\nimport { memo, useCallback, useEffect, useRef, useState } from \"react\";\n\nconst hints = new Map();\nconst formats = [BarcodeFormat.QR_CODE];\n\nhints.set(DecodeHintType.POSSIBLE_FORMATS, formats);\n\nexport const QRCodeReader = memo(({ handleSuccess }) => {\n const audioRef = useRef(null)\n const videoRef = useRef(null)\n const codeReader = useRef(null);\n const [loading, setLoading] = useState(true)\n const [imageSrc, setImageSrc] = useState('')\n\n const handleSetSuccesImage = useCallback(() => {\n const videoElement = videoRef.current ? videoRef.current : null\n if (!videoElement) return null\n const canvas = document.createElement(\"canvas\");\n canvas.width = videoElement.width || 600;\n canvas.height = videoElement.height || 300;\n const context = canvas.getContext('2d');\n if (context) {\n context.drawImage(videoElement, 0, 0, canvas.width, canvas.height);\n setImageSrc(canvas.toDataURL());\n }\n }, [])\n\n const decodeVideo = useCallback(async (videoDeviceId?) => {\n const videoConstraints = { facingMode: 'environment' };\n\n const constraints = { video: videoDeviceId ? { deviceId: videoDeviceId } : videoConstraints };\n\n const videoElement = videoRef.current ? videoRef.current : null\n if (!videoElement) return null\n\n const stream = (videoElement?.srcObject)\n if(stream !== null) {\n stream.getTracks().forEach(track => track.stop())\n }\n\n const reader = new BrowserMultiFormatReader(hints, 2000)\n codeReader.current = reader\n let hasResult = false\n setLoading(true)\n reader.stopAsyncDecode()\n \n reader.decodeOnceFromConstraints(constraints, videoElement).then((res) => {\n if (res && !hasResult) {\n hasResult = true\n const audioElem = audioRef.current ? audioRef.current : null\n if (audioElem) audioElem.play()\n handleSetSuccesImage()\n handleSuccess(res.getText())\n }\n }).catch(e => {\n decodeVideo(videoDeviceId)\n })\n \n }, [videoRef.current, audioRef.current, handleSuccess])\n\n useEffect(() => {\n if(videoRef.current) {\n videoRef.current.onplaying = () => {\n setLoading(false)\n }\n }\n }, [videoRef])\n\n useEffect(() => {\n return () => {\n if (codeReader.current) {\n codeReader.current.reset();\n codeReader.current.stopContinuousDecode();\n }\n if (videoRef.current && videoRef.current.srcObject) {\n const stream = videoRef.current.srcObject;\n const tracks = stream.getTracks();\n tracks.forEach(track => track.stop());\n }\n }\n }, [])\n \n return (\n
    \n {imageSrc ?\n \n :\n \n }\n \n
    \n )\n})\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n useContext,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport QrScanner from \"qr-scanner\";\n\nimport {\n getKeylessSessionRAReview,\n validateKeylessVehicleQRCode,\n} from \"./keylessService\";\n\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport { isTestsEnv, isValidPlateNumber } from \"../../utils/utils\";\nimport { bigModalStyle, errorModalImgStyle, keylessColors } from \"./utils\";\n\nimport AlertModalManager from \"../../components/alert-modal-wraper/alert-modal-manager\";\nimport Loading from \"../../components/Loading\";\nimport { KeylessPageLayoutView } from \"./KeylessPage\";\nimport {\n KEYLESS_STEPS,\n KeylessPageLayout,\n} from \"./components/KeylessPageLayout\";\nimport { KeylessButton } from \"./components/KeylessButton\";\nimport { KeylessModal } from \"./components/KeylessModal\";\nimport { QRCodeReader } from \"../../components/qrcode-reader/QRCodeReader\";\n\nconst vehicleSteps = {\n REVIEW: \"REVIEW\",\n PARKING_LOCATION: \"PARKING_LOCATION\",\n QR_CODE_EXPLAIN: \"QR_CODE_EXPLAIN\",\n};\n\nconst isTests = isTestsEnv();\n\nexport function KeylessVehicleReview({\n handleNextStep,\n keylessToken,\n keylessSession,\n}) {\n const { t } = useTranslation();\n const hasRun = useRef(false);\n\n const { localizationAssets } = useContext(DomainContext);\n\n const [isLoading, setIsLoading] = useState(false);\n const [raDetails, setRADetails] = useState(null);\n const [readingQrCode, setReadingQrCode] = useState(false);\n const [steps, setSteps] = useState([]);\n const [currentStep, setCurrentStep] = useState(0);\n const [modalObj, setModalObj] = useState({\n isOpen: false,\n });\n const [manualPlate, setManualPlate] = useState('')\n\n const manualPlateValid = isValidPlateNumber(manualPlate)\n\n useEffect(() => {\n if (hasRun.current) return null;\n hasRun.current = true;\n setIsLoading(true);\n getKeylessSessionRAReview(keylessToken)\n .then((res) => {\n setRADetails(res);\n setSteps(\n res.parkingLocation\n ? [\n vehicleSteps.REVIEW,\n // vehicleSteps.PARKING_LOCATION,\n vehicleSteps.QR_CODE_EXPLAIN,\n ]\n : [vehicleSteps.REVIEW, vehicleSteps.QR_CODE_EXPLAIN]\n );\n })\n .catch((err) => {\n const messageKey = err.response.data;\n AlertModalManager.openModal(\n { title: t(messageKey), message: \"\" },\n () => {}\n );\n })\n .finally(() => setIsLoading(false));\n }, [t, keylessToken]);\n\n const handleLeaveClick = useCallback(() => {\n window.location.href = \"/\";\n }, []);\n\n const handleQRCodeRead = useCallback(\n (data) => {\n const qrcodeDataToSend = isTests\n ? `${keylessSession.unitNumber}|${keylessSession.plateNumber}`\n : data;\n\n setModalObj({\n isOpen: true,\n title: \"keylessWaitTitle\",\n message: \"keylessLoadingValidateVehicleMessage\",\n img: \"keylessLoadingVehicle\",\n });\n\n validateKeylessVehicleQRCode(keylessToken, qrcodeDataToSend)\n .then((res) => {\n setModalObj({\n isOpen: true,\n title: \"keylessValidateVehicleSucessTitle\",\n message: \"\",\n img: \"keylessSuccess\",\n });\n setTimeout(() => {\n handleNextStep(res.nextStep);\n }, 2500);\n })\n .catch((err) => {\n setIsLoading(false);\n setModalObj({\n isOpen: true,\n error: true,\n title: \"keylessWarning\",\n message: \"keylessVehicleErrorTitle\",\n img: \"keylessError\",\n actions: \n });\n });\n },\n [keylessToken]\n );\n\n if (isLoading || !raDetails) {\n return ;\n }\n\n if (steps[currentStep] === vehicleSteps.REVIEW) {\n return (\n setCurrentStep((i) => i + 1)}\n text={t(\"keylessNext\")}\n color=\"white\"\n backgroundColor={keylessColors.orange}\n />\n }\n >\n
    \n

    {t(\"keylessVehicleTitle\")}

    \n \n
    \n {t(\"keylessPlateNumber\")}\n {raDetails.plateNumber}\n
    \n

    {raDetails.groupDetails.type}

    \n
    \n
    \n
    \n \n
    \n
    {t(raDetails.groupDetails.fuel)}
    \n
    \n
    \n
    \n \n
    \n
    {t(raDetails.groupDetails.transmission)}
    \n
    \n
    \n
    \n \n
    \n
    \n {raDetails.colour === \"PADRAO\"\n ? null\n : t(`vehicleColour-${raDetails.colour?.replace(/\\s+/g, \"\")}`)}\n
    \n
    \n
    \n
    \n \n );\n }\n\n if (steps[currentStep] === vehicleSteps.PARKING_LOCATION) {\n return (\n setCurrentStep((i) => i - 1)}\n reservationNumber={keylessSession.reservationNumber}\n footer={\n setCurrentStep((i) => i + 1)}\n text={t(\"keylessNext\")}\n color=\"white\"\n backgroundColor={keylessColors.orange}\n />\n }\n >\n
    \n

    {t(\"keylessVehicleParkingTitle\")}

    \n \n
    \n
    {t(\"keylessVehicleParkingLabel\")}
    \n
    \n {raDetails.parkingLocation}\n
    \n
    \n
    \n \n );\n }\n\n if (steps[currentStep] === vehicleSteps.QR_CODE_EXPLAIN) {\n return (\n setCurrentStep((i) => i - 1)}\n reservationNumber={keylessSession.reservationNumber}\n footer={readingQrCode ? \n \n {t(\"keylessNext\")}\n
    \n }\n color=\"white\"\n disabled={!manualPlateValid}\n backgroundColor={keylessColors.orange}\n onClick={() => manualPlateValid && handleQRCodeRead(`null|${manualPlate}`)}\n />\n :\n \n {t(\"keylessReadQRCode\")}\n \n }\n color=\"white\"\n backgroundColor={keylessColors.orange}\n onClick={() => setReadingQrCode(true)}\n />\n }\n >\n
    \n {readingQrCode ? \n
    \n \n
    \n setManualPlate(e.target.value)}\n />\n
    \n
    \n : \n <>\n

    {t(\"keylessVehicleQRcodeTitle\")}

    \n \n
    \n
    \n \"\"\n

    {t(\"keylessVehicleQRcodeMessage\")}

    \n
    \n \n }\n
    \n {t(\"keylessWaitMessage\")}
    }\n imgStyle={modalObj.error ? errorModalImgStyle : {}}\n modalStyle={modalObj.error ? {} : bigModalStyle}\n />\n \n );\n }\n\n return ;\n}\n\nconst styles = {\n page: {\n height: \"100dvh\",\n paddingBottom: \"60px\",\n fontFamily: \"'BlissLight'\",\n },\n pageContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n gap: \"1rem\",\n },\n filler: {\n flex: 1,\n },\n hint: {\n display: \"flex\",\n alignItems: 'flex-start',\n gap: '.5rem',\n },\n hintIcon: {\n width: '16px',\n },\n title: {\n color: keylessColors.green,\n textAlign: \"center\",\n fontSize: \"26px\",\n },\n vehicleImage: {\n height: \"13vh\",\n margin: \"0 auto\",\n display: \"block\",\n },\n parkingImage: {\n height: \"20vh\",\n margin: \"0 auto\",\n display: \"block\",\n },\n plateNumber: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"5px\",\n color: \"white\",\n backgroundColor: keylessColors.green,\n borderRadius: \"5px\",\n padding: \"4px 16px\",\n margin: \"0 auto\",\n width: \"max-content\",\n fontSize: \"20px\",\n },\n brand: {\n textAlign: \"center\",\n fontSize: \"16px\",\n marginTop: \"1rem\",\n },\n details: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-around\",\n },\n detailsItem: {\n fontSize: \"14px\",\n display: \"grid\",\n justifyItems: \"center\",\n },\n detailsItemImgWrapper: {\n width: \"60px\",\n height: \"60px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n detailsItemImg: {\n height: \"60%\",\n },\n parkingLocation: {\n backgroundColor: keylessColors.green,\n borderRadius: \"20px\",\n padding: \"5px\",\n width: \"70%\",\n color: \"white\",\n fontSize: \"20px\",\n margin: \"0 auto\",\n textAlign: \"center\",\n },\n parkingLocationValue: {\n fontSize: \"20px\",\n },\n qrcodeInputImg: {\n height: \"20vh\",\n margin: \"0 auto\",\n display: \"block\",\n },\n qrcodeInputWrapper: {\n position: \"relative\",\n width: \"100%\",\n },\n qrcodeInput: {\n opacity: \"0\",\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n top: \"0\",\n left: \"0\",\n },\n};\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\n\nimport { keylessOpenDoors, finishKeylessSession } from \"./keylessService\";\n\nimport { KeylessModal } from \"./components/KeylessModal\";\nimport { KeylessButton } from \"./components/KeylessButton\";\nimport {\n KEYLESS_STEPS,\n KeylessPageLayout,\n} from \"./components/KeylessPageLayout\";\nimport { errorModalImgStyle, keylessColors } from \"./utils\";\n\nexport function KeylessTelematica({\n handleNextStep,\n keylessToken,\n hasSentPin,\n keylessSession,\n}) {\n const { t } = useTranslation();\n\n const { localizationAssets } = useContext(DomainContext);\n\n const [isLoadingFinalSubmit, setIsLoadingFinalSubmit] = useState(false);\n const [keysModalOpen, setKeysModalOpen] = useState(false);\n const [errorModal, setErrorModal] = useState({ isOpen: false });\n\n const [isOpeningDoors, setIsOpeningDoors] = useState(false);\n\n const keylessOpenDoorsClick = useCallback(() => {\n setIsOpeningDoors(true);\n\n keylessOpenDoors(keylessToken)\n .then((res) => {\n setKeysModalOpen(true);\n })\n .catch((err) => {\n setErrorModal({\n isOpen: true,\n title: \"keylessWarning\",\n message: \"keylessVehicleKeysErrorMessage\",\n });\n })\n .finally(() => setIsOpeningDoors(false));\n }, [keylessToken]);\n\n const finishKeylessSessionClick = useCallback(() => {\n setIsLoadingFinalSubmit(true);\n finishKeylessSession(keylessToken)\n .then((res) => {\n handleNextStep(res.nextStep);\n })\n .catch((err) => {\n setErrorModal({\n isOpen: true,\n title: \"keylessWarning\",\n message: \"keylessErrorMessage\",\n });\n })\n .finally(() => setIsLoadingFinalSubmit(false));\n }, [keylessToken]);\n\n return (\n \n }\n >\n
    \n

    {t(\"keylessVehicleDoorsTitle\")}

    \n

    {t(\"keylessVehicleDoorsSubTitle\")}

    \n \n
    \n
    \n \n \n \n setErrorModal({\n isOpen: true,\n title: \"keylessWarning\",\n message: \"keylessVehicleKeysMissingMessage\",\n })\n }\n disabled={isLoadingFinalSubmit}\n />\n
    \n }\n />\n ]}\n />\n }\n img={localizationAssets[\"keylessError\"]}\n imgStyle={errorModalImgStyle}\n actions={\n
    \n {\n setErrorModal({\n isOpen: false,\n })\n setKeysModalOpen(false);\n }}\n />\n (window.location.href = \"/\")}\n />\n
    \n }\n />\n \n );\n}\n\nconst styles = {\n page: {\n height: \"100dvh\",\n paddingBottom: \"60px\",\n fontFamily: \"'BlissLight'\",\n },\n pageContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n gap: \"1rem\",\n },\n filler: {\n flex: 1,\n },\n title: {\n color: keylessColors.green,\n textAlign: \"center\",\n fontSize: \"24px\",\n },\n subtitle: {\n textAlign: \"center\",\n fontSize: \"16px\",\n },\n vehicleImage: {\n maxWidth: \"400px\",\n width: \"70%\",\n margin: \"0 auto\",\n display: \"block\",\n },\n actions: {\n display: \"grid\",\n gap: \"1rem\",\n },\n};\n","import React, { useCallback, useEffect, useState, useContext } from \"react\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport { proceedNextSetp } from \"./keylessService\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport { errorModalImgStyle, keylessColors } from \"./utils\";\n\nimport AlertModalManager from \"../../components/alert-modal-wraper/alert-modal-manager\";\nimport { KeylessButton } from \"./components/KeylessButton\";\nimport { KeylessModal } from \"./components/KeylessModal\";\nimport {\n KEYLESS_STEPS,\n KeylessPageLayout,\n} from \"./components/KeylessPageLayout\";\n\nconst STEPS = {\n INIT: \"INIT\",\n PROCEED_PARKING_LOCATION: \"PROCEED_PARKING_LOCATION\",\n PARKING_LOCATION_QUESTION: \"PARKING_LOCATION_QUESTION\",\n}\n\nexport function KeylessValidateParkingLocation({\n handleNextStep,\n keylessToken,\n keylessSession,\n}) {\n const { t } = useTranslation();\n\n const { localizationAssets } = useContext(DomainContext);\n\n const [isLoading, setIsLoading] = useState(false);\n const [openLeaveModal, setOpenLeaveModal] = useState(false);\n\n const handleConfirmClick = useCallback(() => {\n async function func() {\n setIsLoading(true);\n proceedNextSetp(keylessToken)\n .then((res) => {\n handleNextStep(res.nextStep);\n })\n .catch((err) => {\n const messageKey = err.response.data;\n AlertModalManager.openModal(\n { title: t(messageKey), message: \"\" },\n () => {}\n );\n })\n .finally(() => setIsLoading(false));\n }\n func();\n }, [keylessToken, handleNextStep, t]);\n\n const handleLeaveClick = useCallback(() => {\n window.location.href = \"/\";\n }, []);\n\n const [currentView, setCurrentView] = useState(STEPS.INIT);\n useEffect(() => {\n const t = setTimeout(\n () => setCurrentView(STEPS.PARKING_LOCATION_QUESTION),\n 4000\n );\n return () => clearTimeout(t);\n }, []);\n\n if (currentView === STEPS.INIT) {\n return (\n \n );\n }\n\n if (currentView === STEPS.PROCEED_PARKING_LOCATION) {\n return (\n \n }\n >\n
    \n

    {t(\"keylessVehicleParkingTitle\")}

    \n \n {keylessSession.vehicleParkingLocation ? \n
    \n
    {t(\"keylessVehicleParkingLabel\")}
    \n
    \n {keylessSession.vehicleParkingLocation}\n
    \n
    \n : null}\n
    \n \n );\n }\n\n return (\n
    \n
    \n \n \n

    \n ]}\n />\n

    \n
    \n \n setCurrentView(\"PROCEED_PARKING_LOCATION\")}\n text={t(\"no\")}\n color=\"white\"\n backgroundColor=\"rgba(0, 0 , 0, .10)\"\n disabled={isLoading}\n />\n
    \n
    \n
    \n );\n}\n\nfunction InitView({ videoSrc, logoSrc, text }) {\n return (\n
    \n \n \"\"\n
    \n {text}\n
    \n
    \n );\n}\n\nconst styles = {\n initSection: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n height: \"100dvh\",\n padding: \"10% 0 50%\",\n background: \"rgba(0, 0, 0, 0.4)\",\n },\n initVideo: {\n height: \"100dvh\",\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n zIndex: \"-1\",\n },\n initLogo: {\n width: \"40%\",\n maxWidth: \"200px\",\n },\n initText: {\n color: \"white\",\n fontSize: \"2.5rem\",\n textAlign: \"center\",\n fontFamily: \"'BlissLight'\",\n width: \"60%\",\n },\n page: {\n backgroundColor: keylessColors.green,\n height: \"100dvh\",\n paddingBottom: \"60px\",\n paddingTop: \"30px\",\n fontFamily: \"'BlissLight'\",\n },\n pageContent: {\n textAlign: \"center\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2rem\",\n },\n logo: {\n height: \"10vh\",\n margin: \"0 auto\",\n },\n stationImage: {\n height: \"20vh\",\n margin: \"0 auto\",\n },\n title: {\n color: \"white\",\n fontSize: \"2rem\",\n flex: \"1\",\n margin: \"0\",\n lineHeight: \"normal\",\n },\n parkingTitle: {\n fontSize: \"2rem\",\n margin: \"0\",\n lineHeight: \"normal\",\n },\n parkingImage: {\n height: \"20vh\",\n margin: \"0 auto\",\n display: \"block\",\n },\n parkingLocation: {\n backgroundColor: keylessColors.green,\n borderRadius: \"20px\",\n padding: \"5px\",\n width: \"70%\",\n color: \"white\",\n fontSize: \"20px\",\n margin: \"0 auto\",\n textAlign: \"center\",\n },\n parkingLocationValue: {\n fontSize: \"20px\",\n },\n};\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { withRouter } from \"react-router-dom\";\n\nimport { useUrlQuery } from \"../../utils/utils\";\n\nimport { getKeylessSession } from \"./keylessService\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\n\nimport { useKeyValues } from \"../../components/SelectLanguage\";\nimport Loading from \"../../components/Loading\";\nimport AlertModalManager from \"../../components/alert-modal-wraper/alert-modal-manager\";\nimport { KeylessValidateStation } from \"./ValidateStation\";\nimport { KeylessValidatePin } from \"./ValidatePin\";\nimport { KeylessValidateRA } from \"./KeylessValidateRA\";\nimport { KeylessRASignature } from \"./KeylessRASignature\";\nimport { KeylessSelfCheckout } from \"./KeylessSelfCheckout\";\nimport { KeylessVehicleReview } from \"./KeylessVehicleReview\";\nimport { KeylessTelematica } from \"./KeylessTelematica\";\nimport { KeylessValidateParkingLocation } from \"./ValidateParkingLocation\";\n\nconst STEPS = {\n VALIDATE_PARKING_LOCATION: \"VALIDATE_PARKING_LOCATION\",\n VALIDATE_STATION: \"VALIDATE_STATION\",\n VALIDATE_PIN: \"VALIDATE_PIN\",\n VALIDATE_RA: \"VALIDATE_RA\",\n SIGNATURE: \"SIGNATURE\",\n VEHICLE_REVIEW: \"VEHICLE_REVIEW\",\n SELF_CHECKOUT: \"SELF_CHECKOUT\",\n OPEN_CLOSE_DOORS: \"OPEN_CLOSE_DOORS\",\n DONE: \"DONE\",\n};\n\nexport function useKeylessToken() {\n return useUrlQuery().get(\"token\");\n}\n\nexport function KeylessPage() {\n const { t } = useTranslation();\n\n const { isLoading: isLoadingTranslations, handleChangeLanguage } =\n useKeyValues();\n\n const keylessToken = useKeylessToken();\n\n const [currentStep, innerSetCurrentStep] = useState(null);\n const [keylessSession, setKeylessSession] = useState(null);\n\n const setCurrentStep = useCallback((step) => {\n innerSetCurrentStep(step);\n }, []);\n\n useEffect(() => {\n getKeylessSession(keylessToken)\n .then((res) => {\n setKeylessSession(res);\n innerSetCurrentStep(res.nextStep);\n\n handleChangeLanguage(res.language);\n })\n .catch((err) => {\n // consoante erro, se for 403 pode fazer redirect para /\n AlertModalManager.openModal(\n { title: \"Error\", message: t(\"keylessSessionError\") },\n () => {}\n );\n });\n }, [keylessToken]);\n\n if (currentStep === null || isLoadingTranslations) {\n return ;\n }\n\n if (currentStep === STEPS.VALIDATE_PARKING_LOCATION) {\n return (\n \n \n \n );\n }\n\n if (currentStep === STEPS.VALIDATE_STATION) {\n return (\n \n \n \n );\n }\n\n if (currentStep === STEPS.VALIDATE_PIN) {\n return (\n \n \n \n );\n }\n\n if (currentStep === STEPS.VALIDATE_RA) {\n return (\n \n \n \n );\n }\n\n if (currentStep === STEPS.SIGNATURE) {\n return (\n \n \n \n );\n }\n\n if (currentStep === STEPS.VEHICLE_REVIEW) {\n return (\n \n \n \n );\n }\n\n if (currentStep === STEPS.SELF_CHECKOUT) {\n return (\n \n );\n }\n\n if (currentStep === STEPS.OPEN_CLOSE_DOORS) {\n return (\n \n \n \n );\n }\n\n if (currentStep === STEPS.DONE) {\n return (\n \n \n \n );\n }\n\n return (\n
    \n

    Step {currentStep} em falta

    \n
    \n );\n}\n\nfunction KeylessView({ children, history }) {\n return (\n
    \n
    \n
    \n
    \n
    history.push(\"/start\")}>\n \n
    \n
    \n
    \n
    \n
    \n
    {children}
    \n
    \n
    \n
    \n
    \n );\n}\nexport const KeylessPageLayoutView = withRouter(KeylessView);\n\nfunction KeylessEndPage() {\n const { localizationAssets } = useContext(DomainContext);\n const { t } = useTranslation();\n\n const handleExitClick = () => {\n window.location.href = \"/\";\n };\n\n return (\n \n \n \n \n \n {t(\"keylessFinalTitle\")}\n \n
    \n \n {t(\"keylessFinalMessage\")}\n
    \n \n {t(\"keylessFinalExit\")}\n \n \n \n );\n}\n\nfunction KeylessPageStyles({ children }) {\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\n\nfunction ExpiredRentalAgreementPage() {\n return (\n
    \n

    Contrato Expirado. Obrigado por confiar na Guerin.

    \n
    \n );\n}\n\nexport default ExpiredRentalAgreementPage;\n","import React, { useState } from 'react'\nimport { ProgressBar } from './pages/keyless/components/ProgressBar'\n\nexport function TestPage() {\n const [done, setDone] = useState(false)\n\n return (\n
    \n
    \n \n
    \n \n
    \n )\n}\n","import React, { useState, useContext, useEffect, useReducer } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ReCAPTCHA from \"react-google-recaptcha\";\nimport moment from 'moment-with-locales-es6'\n\nimport { GroupsImagesContext } from \"../../domain-repository/GroupsImagesRepository\";\nimport { DomainContext } from \"../../domain-repository/DomainRepository\";\nimport { saveLocalStorageTranslations } from \"../../i18n\";\nimport {\n mapLocalizations,\n transformLocalsArrayToObject,\n} from \"../select-language/SelectLanguagePage\";\n\nimport { getBlockedTaxNumbers } from \"../../services/ValidateTaxNumber\";\nimport { saveSessionEnd } from \"../../services/Metrics\";\nimport { session } from \"../../load-config\";\nimport { getReservation } from \"../../services/GetReservation\";\nimport { getCountries } from \"../../services/GetCountries\";\nimport { getGroupsDetails } from \"../../services/GetGroupsDetails\";\nimport { validateGoogleCaptcha } from \"../../services/ValidateGoogleCaptcha\";\nimport { getStationsConfigurations } from \"../../services/Stations\";\nimport { verifyReservationWithRA } from \"../review-rental-agreement/api\";\nimport { getLanguages, getLocalizations } from \"../../services/localizations\";\n\nimport Footer from \"../../components/Footer\";\nimport Loading from \"../../components/Loading\";\nimport withLang from \"../../withLang\";\nimport SelectStation from \"../select-pickup-details/SelectStation\";\nimport SelectDate from \"../select-pickup-details/selectDate\";\nimport { useDisableBodyScroll } from \"../../utils/useDisableBodyScroll\";\n\nfunction invalidSearchReferences(reference) {\n if (reference.toUpperCase().startsWith(\"DC-\")) {\n return \"insertConfirmationNumberAlert\";\n }\n return null;\n}\n\nfunction StartSessionComp(props) {\n const { t, i18n } = useTranslation();\n\n const { getSetGroupsConfigurations } = useContext(GroupsImagesContext)\n\n const {\n setReservation,\n setCountries,\n setDriverInfo,\n language,\n setAppFlowConfigs,\n appVersionId,\n setSessionId,\n setGroupsDetails,\n pickupDate,\n kioskCurrentStationId,\n setBlockedTaxNumbersList,\n setStationsConfigurations,\n setAdditionalDriverInfo,\n setKioskCurrentStationId,\n setPickupDate,\n } = useContext(DomainContext);\n\n const [googleCaptchaResult, setGoogleCaptchaResult] = useState(null);\n\n const [resReference, setResReference] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false)\n\n function handleNextClick(e) {\n if (e) {\n e.preventDefault();\n }\n if (\n !resReference ||\n !kioskCurrentStationId ||\n !pickupDate ||\n !googleCaptchaResult ||\n !googleCaptchaResult.isValid\n ) {\n return;\n }\n\n setIsLoading(true);\n getReservationFromReference();\n }\n\n async function getReservationFromReference() {\n setIsLoading(true);\n\n let formatedResNumberOrRefMatches = resReference.match(/(.*)count$/i);\n\n const groupConfig = await getSetGroupsConfigurations();\n\n const blockedTaxNumbersList = await getBlockedTaxNumbers();\n setBlockedTaxNumbersList(blockedTaxNumbersList.blockedTaxNumbers);\n\n Promise.all([\n getReservation({\n resNumberOrReference:\n formatedResNumberOrRefMatches &&\n formatedResNumberOrRefMatches.length > 1\n ? formatedResNumberOrRefMatches[1]\n : resReference,\n stationId: kioskCurrentStationId,\n resCheckOutDate: pickupDate,\n appVersionId,\n language,\n }),\n getCountries(),\n getGroupsDetails(Object.keys(groupConfig)),\n getStationsConfigurations(),\n ])\n .then(([reservation, countries, groups, stationsConfigurationsRes]) => {\n setIsLoading(false);\n\n if (!reservation || !countries || !groups || groups.length === 0) {\n props.history.push(\n `/input-reservation-ref-error?resReference=${resReference}`\n );\n } else {\n if (!reservation.redirectUrl) {\n setReservation(reservation);\n setDriverInfo(reservation.listReservation);\n setAdditionalDriverInfo(reservation.listReservation);\n setAppFlowConfigs(reservation.appFlowConfigs);\n setSessionId(reservation.sessionId);\n }\n setCountries(\n countries.map((c) => ({ ...c, name: t(`country_${c.countryID}`) }))\n );\n setGroupsDetails(groups.groupsDetails);\n setStationsConfigurations(\n stationsConfigurationsRes.stationsConfigurations\n );\n\n if (reservation.redirectUrl) {\n return props.history.push(reservation.redirectUrl);\n }\n props.history.push(\"/review-reservation\");\n }\n })\n .catch((err) => {\n setIsLoading(false);\n const errorMessage = err?.message || err || null;\n props.history.push({\n pathname: `/input-reservation-ref-error`,\n search: `resReference=${resReference}`,\n state: { errorMessage },\n });\n });\n }\n\n const searchAlert = invalidSearchReferences(resReference);\n\n const isNextDisabled =\n searchAlert ||\n !pickupDate ||\n !kioskCurrentStationId ||\n !resReference ||\n !googleCaptchaResult ||\n !googleCaptchaResult.isValid;\n\n return (\n
    \n \n\n
    \n
    props.history.push(\"/start\")}>\n \n
    \n \n
    \n\n
    \n
    \n \n
    \n \n {t(\"inputReservationMessageMobile1\")}\n \n {t(\"inputReservationMessageMobile2\")}\n \n \n setResReference(e.target.value)}\n />\n {searchAlert !== null && (\n
    \n

    {t(searchAlert)}

    \n
    \n )}\n \n setGoogleCaptchaResult(process.env.REACT_APP_GOOGLE_RECAPTCHA_DISABLE === \"TRUE\" ? { isValid: true } : res)} />\n
    \n \n
    \n
    \n );\n}\n\nexport const StartSessionPage = withLang(StartSessionComp);\n\nfunction ReCaptcha({ onResponse }) {\n const { language } = useContext(DomainContext);\n\n function onCaptchaChange(value) {\n if (!value) {\n return;\n }\n validateGoogleCaptcha(value)\n .then((res) => {\n onResponse({ isValid: res.success });\n })\n .catch((err) => {\n onResponse({ isValid: false });\n });\n }\n\n function onCaptchaExpire() {\n onResponse(null);\n }\n\n function onCaptchaError() {\n onResponse(null);\n }\n\n return (\n
    \n \n
    \n );\n}\n\nfunction LanguageDropdown({ onChange = () => { window.location.reload()} }) {\n const { i18n } = useTranslation();\n\n const { setLanguage, setLocalizationAssets, setLocalizations, localizations, language } =\n useContext(DomainContext);\n\n const [isLoading, setIsLoading] = useState(false);\n const [defaultLang, setDefaultLang] = useState(null);\n const [languages, setLanguages] = useState([]);\n const [optionsOpen, setOptionsOpen] = useState(false);\n\n useEffect(() => {\n setIsLoading(true);\n getLanguages().then((res) => {\n setLanguages(res);\n const browserLang = language || (navigator.language || navigator.userLanguage).slice(\n 0,\n 2\n );\n const langObj = res.find((r) => r.id === browserLang) || res.find((r) => r.isDefault);\n const lang = langObj?.id || \"en\";\n setDefaultLang(lang);\n innerChangeLanguage(lang)\n });\n }, []);\n\n const innerChangeLanguage = (key) => {\n setOptionsOpen(false);\n const reload = key !== language || localizations.length === 0\n if (!reload) {\n setIsLoading(false);\n return null\n }\n setLanguage(key);\n\n function positiveHandler(locals) {\n i18n.setDefaultNamespace(\"translations\");\n saveLocalStorageTranslations(key, locals);\n i18n.addResourceBundle(key, \"translations\", locals, true, true);\n i18n.changeLanguage(key).then((r) => {\n if (reload) {\n onChange(key);\n }\n });\n }\n\n setIsLoading(true);\n getLocalizations({ lang: key, system: \"KIOSK\" })\n .then((res) => {\n const mapped = mapLocalizations(key, defaultLang, res);\n setLocalizations(mapped);\n\n const mediaAssets = transformLocalsArrayToObject(\n mapped.filter((r) => r.type === \"MEDIA\")\n );\n setLocalizationAssets(mediaAssets);\n\n const texts = mapped.filter((r) => r.type === \"TEXT\");\n const obj = transformLocalsArrayToObject(texts);\n positiveHandler(obj);\n })\n };\n\n function handlePageClick(e) {\n const element = e.target;\n setOptionsOpen((s) => (element.id === \"dropdown-input\" ? !s : false));\n }\n\n return (\n <>\n \n {optionsOpen ? (\n \n ) : null}\n \n \n \n {language}\n \n
    \n {languages.map((lang) => (\n {\n innerChangeLanguage(lang.id);\n e.stopPropagation();\n }}\n value={lang.id}\n >\n {lang.id}\n
    \n ))}\n \n \n \n );\n}\n\nfunction reducer(state, action) {\n switch (action.type) {\n case \"FIELD\":\n return { ...state, [action.payload.field]: action.payload.value };\n\n case \"FIELDS\":\n return { ...state, ...action.payload };\n\n default:\n return state;\n }\n}\n\nfunction PickupDetails({ handleStationChange, handleDateChange }) {\n const { t, i18n } = useTranslation();\n\n const dContext = useContext(DomainContext);\n\n const [state, dispatch] = useReducer(reducer, {\n pickupStationId: '',\n pickupDate: '',\n\n openSelectStation: false,\n openSelectDate: false,\n\n stations: [],\n\n loading: false,\n });\n\n const {\n pickupStationId,\n pickupDate,\n loading,\n stations,\n openSelectStation,\n openSelectDate,\n } = state;\n\n useDisableBodyScroll(openSelectStation || openSelectDate)\n\n useEffect(() => {\n const func = async () => {\n dispatch({ type: \"FIELD\", payload: { field: \"loading\", value: true } });\n\n const stationsRes = (await getStationsConfigurations())\n .stationsConfigurations;\n\n const stationsDetailed = stationsRes.map((s) => {\n return { ...s, label: t(s.name) };\n });\n\n dispatch({\n type: \"FIELD\",\n payload: { field: \"stations\", value: stationsDetailed },\n });\n\n if (stations.length === 1) {\n const value = stationsDetailed[0].stationId;\n handleStationClick(value);\n }\n dispatch({ type: \"FIELD\", payload: { field: \"loading\", value: false } });\n };\n\n func();\n }, [t]);\n\n function handleStationClick(station) {\n const value = station.stationId;\n dispatch({\n type: \"FIELDS\",\n payload: { pickupStationId: value, openSelectStation: false },\n });\n handleStationChange(value);\n }\n\n function handleDateClick(date) {\n const formattedDate = date\n ? `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`\n : \"\";\n if (moment(formattedDate, \"YYYY-MM-DD\").isValid()) {\n dispatch({\n type: \"FIELDS\",\n payload: { pickupDate: formattedDate, openSelectDate: false },\n });\n handleDateChange(formattedDate);\n } else {\n dispatch({\n type: \"FIELDS\",\n payload: { pickupDate: \"\", openSelectDate: false },\n });\n handleDateChange(\"\");\n }\n }\n\n function displayDate() {\n return pickupDate\n ? moment(pickupDate, \"YYYY-MM-DD\")\n .locale(i18n.language || \"pt\")\n .format(\"DD MMMM YYYY\")\n : \"\";\n }\n\n function displayStationName() {\n const station = stations.find((s) => s.stationId === pickupStationId);\n return station?.label || \"\";\n }\n\n return (\n <>\n
    \n
    \n \n dispatch({\n type: \"FIELD\",\n payload: { field: \"openSelectStation\", value: true },\n })\n }\n >\n {pickupStationId ? displayStationName() : t(\"selectPickupStation\")}\n
    \n
    \n
    \n \n pickupStationId &&\n dispatch({\n type: \"FIELD\",\n payload: { field: \"openSelectDate\", value: true },\n })\n }\n >\n {pickupDate ? displayDate() : t(\"selectPickupDate\")}\n
    \n \n \n {openSelectStation && (\n \n dispatch({\n type: \"FIELD\",\n payload: { field: \"openSelectStation\", value: false },\n })\n }\n stations={stations}\n handleStationClick={handleStationClick}\n />\n )}\n {openSelectDate && (\n \n dispatch({\n type: \"FIELD\",\n payload: { field: \"openSelectDate\", value: false },\n })\n }\n handleDateClick={handleDateClick}\n language={dContext.language}\n />\n )}\n \n );\n}\n","import React, { useEffect, useRef } from \"react\";\n\nconst styles = {\n initVideo: {\n height: \"100dvh\",\n width: '100vw',\n position: \"absolute\",\n top: \"0\",\n left: \"50%\",\n transform: 'translateX(-50%)',\n zIndex: \"1\",\n userSelect: \"none\",\n backgroundColor: 'black',\n },\n};\n\nexport function VideoView({ src, style, hidden, loop, onLoaded, onEnded }) {\n const videoRef = useRef(null);\n\n useEffect(() => {\n const videoElement = videoRef.current;\n\n const handleCanPlayThrough = () => {\n onLoaded();\n };\n const handleEnded = () => {\n onEnded();\n };\n\n if (videoElement) {\n videoElement.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n videoElement.addEventListener(\"ended\", handleEnded);\n }\n\n return () => {\n if (videoElement) {\n videoElement.removeEventListener(\n \"canplaythrough\",\n handleCanPlayThrough\n );\n videoElement.removeEventListener(\"ended\", handleEnded);\n }\n };\n }, []);\n\n return (\n