{"version":3,"sources":["ClearCache.tsx","api/config.ts","api/axios.ts","i18n.ts","typedef/api.ts","typedef/creditCards.ts","typedef/customer.ts","typedef/lot.ts","typedef/receipt.ts","typedef/terms.ts","typedef/ticket.ts","store/slices/constants.ts","assets/images/bg.png","store/slices/layoutSlice.ts","utils/translations.ts","api/apiErrors/CustomerApiError.ts","api/apiErrors/ReceiptsApiError.ts","api/apiErrors/CarsApiError.ts","api/apiErrors/TicketsApiError.ts","api/apiErrors/CreditCardsApiError.ts","api/apiErrors/LotApiError.ts","api/apiErrors/ValidatorsApiError.ts","api/apiErrors/TermsAndConditionsApiError.ts","api/constants.ts","api/mocks/index.ts","__fixtures__/myCars.ts","api/mocks/CarsApiMock.ts","api/CarsApi.ts","__fixtures__/myCreditCards.ts","api/mocks/CreditCardApiMock.ts","utils/tokenStorageService.ts","api/mocks/CustomerApiMock.ts","api/apiErrors/DefaultApiError.ts","api/utils.ts","__fixtures__/prices.tsx","api/mocks/PriceApiMock.ts","api/mocks/mocks.utils.ts","api/PriceApi.ts","__fixtures__/myReceipts.ts","api/mocks/ReceipstApiMock.ts","api/ReceiptsApi.ts","api/mocks/TermsAndConditionsApiMock.ts","api/TermsAndConditionsApi.tsx","api/mocks/TicketsApiMock.ts","api/TicketsApi.ts","__fixtures__/validators.ts","api/mocks/ValidatorsApiMock.ts","api/ValidatorsApi.ts","api/NeedHelpApi.ts","__fixtures__/lots.ts","api/mocks/LotsApiMock.ts","api/LotApi.ts","store/slices/parkCarSlice.ts","store/slices/mapSlice.ts","store/slices/adsSlice.ts","store/slices/slice.utils.ts","store/slices/ticketsSlice.ts","store/slices/carsSlice.ts","store/slices/receiptsSlice.tsx","store/slices/customerSlice.ts","api/CustomerApi.ts","api/auth.ts","assets/icons/credit_cards/american_express.svg","assets/icons/credit_cards/diners_club.svg","assets/icons/credit_cards/discover.svg","assets/icons/credit_cards/jcb.svg","assets/icons/credit_cards/master_card.svg","assets/icons/credit_cards/unknown.svg","assets/icons/credit_cards/visa.svg","utils/creditCardTypeMapper.ts","store/slices/creditCardsSlice.ts","api/CreditCardApi.ts","store/slices/validatorsSlice.ts","store/slices/termsSlice.tsx","utils/random.ts","utils/moment.ts","utils/errors.ts","utils/regex.ts","utils/blurLastInput.ts","store/slices/simulatePriceSlice.ts","store/slices/contactInformationsSlice.ts","store/slices/termsOfServiceSlice.tsx","store/middlewares/refreshToken.ts","store/middlewares/destroySession.ts","store/globalPopup/constants.ts","store/globalPopup/reducers.ts","store/loader/constants.ts","store/loader/reducers.ts","store/rootReducer.ts","store/store.ts","routing/ConditionalRoute.tsx","routing/paths.ts","assets/images/svg_icons/outlined/email.svg","shared/icons/outlined/Email.tsx","assets/images/svg_icons/outlined/phone.svg","shared/icons/outlined/Phone.tsx","assets/images/svg_icons/outlined/pin.svg","shared/icons/outlined/Pin.tsx","shared/icons/outlined/Room.tsx","assets/images/svg_icons/history_list/pin.svg","shared/icons/historyList/Pin.tsx","assets/images/svg_icons/history_list/clock.svg","shared/icons/historyList/Clock.tsx","assets/images/svg_icons/history_list/send-complete.svg","shared/icons/historyList/SendComplete.tsx","assets/images/svg_icons/popup_placeholder/error-icon.svg","shared/icons/popup_placeholder/ErrorIcon.tsx","assets/images/svg_icons/popup_placeholder/info-icon.svg","shared/icons/popup_placeholder/InfoIcon.tsx","assets/images/svg_icons/popup_placeholder/success-icon.svg","shared/icons/popup_placeholder/SuccessIcon.tsx","assets/images/svg_icons/popup_placeholder/warning-icon.svg","shared/icons/popup_placeholder/WarningIcon.tsx","assets/images/svg_icons/buttons/attach-money.svg","shared/icons/buttons/AttachMoney.tsx","assets/images/svg_icons/buttons/gps-fixed.svg","shared/icons/buttons/GpsFixed.tsx","shared/icons/buttons/Close.tsx","assets/images/svg_icons/buttons/pin-drop.svg","shared/icons/buttons/PinDrop.tsx","assets/images/svg_icons/buttons/money-off.svg","shared/icons/buttons/MoneyOff.tsx","assets/images/svg_icons/map_pins/price-pin.svg","shared/icons/map_pins/PricePin.tsx","assets/images/svg_icons/map_pins/cluster-pin.svg","shared/icons/map_pins/ClusterPin.tsx","assets/images/svg_icons/map_pins/standard-pin.svg","shared/icons/map_pins/StandardPin.tsx","assets/images/svg_icons/map_pins/selected-pin.svg","shared/icons/map_pins/SelectedPin.tsx","assets/images/svg_icons/message.svg","shared/icons/Message.tsx","assets/images/svg_icons/receipt.svg","shared/icons/Receipt.tsx","assets/images/svg_icons/no-credit-card.svg","shared/icons/NoCreditCard.tsx","assets/images/svg_icons/delete.svg","shared/icons/Delete.tsx","assets/images/svg_icons/logo.svg","shared/icons/Logo.tsx","assets/images/svg_icons/terms.svg","shared/icons/Terms.tsx","assets/images/svg_icons/ok.svg","shared/icons/Ok.tsx","assets/images/svg_icons/question.svg","shared/icons/Question.tsx","assets/images/svg_icons/hamburger.svg","shared/icons/Hamburger.tsx","assets/images/svg_icons/cars.svg","shared/icons/Cars.tsx","assets/images/svg_icons/plate.svg","shared/icons/Plate.tsx","assets/images/svg_icons/parked-cars.svg","shared/icons/ParkedCars.tsx","assets/images/svg_icons/pin.svg","shared/icons/Pin.tsx","assets/images/svg_icons/car.svg","shared/icons/Car.tsx","assets/images/svg_icons/parking.svg","shared/icons/Parking.tsx","assets/images/svg_icons/mail.svg","shared/icons/Mail.tsx","assets/images/svg_icons/reset-password.svg","shared/icons/ResetPassword.tsx","assets/images/svg_icons/menu-map.svg","shared/icons/MenuMap.tsx","assets/images/svg_icons/user.svg","shared/icons/User.tsx","assets/images/svg_icons/unlock.svg","shared/icons/Unlock.tsx","assets/images/svg_icons/label.svg","shared/icons/Label.tsx","shared/icons/SpotNumber.tsx","assets/images/svg_icons/info.svg","shared/icons/Info.tsx","assets/images/svg_icons/validator.svg","shared/icons/Validator.tsx","assets/images/svg_icons/no-found.svg","shared/icons/NoFound.tsx","assets/images/svg_icons/heading-gps-indicator.svg","shared/icons/HeadingGpsIndicator.tsx","assets/images/svg_icons/pin-car.svg","shared/icons/PinCar.tsx","assets/images/svg_icons/warning.svg","shared/icons/Warning.tsx","shared/icons/RefreshBroken.tsx","assets/images/svg_icons/clock.svg","shared/icons/Clock.tsx","assets/images/svg_icons/success-tick.svg","shared/icons/SuccessTick.tsx","assets/images/svg_icons/t2p-logo-color.svg","shared/icons/LotAvatarPlaceholder.tsx","assets/images/svg_icons/validation-ticket-placeholder.svg","shared/icons/ValidationTicketPlaceholder.tsx","shared/icons/ParkerlinkIcon.tsx","assets/images/svg_icons/user-tick.svg","shared/icons/UserTick.tsx","assets/images/svg_icons/information.svg","shared/icons/Information.tsx","assets/images/svg_icons/language-icon.svg","shared/icons/LanguageIcon.tsx","assets/images/svg_icons/arrow-down.svg","shared/icons/ArrowDown.tsx","assets/images/svg_icons/flag-usa.svg","shared/icons/FlagUSA.tsx","assets/images/svg_icons/flag-uk.svg","shared/icons/FlagUK.tsx","assets/images/svg_icons/flag-germany.svg","shared/icons/FlagGermany.tsx","assets/images/svg_icons/flag-italy.svg","shared/icons/FlagItaly.tsx","shared/AppTypography.tsx","shared/DetailsBox.tsx","store/globalPopup/actions.ts","shared/FlexBox.tsx","shared/popup/PopupButtons.tsx","shared/popup/Popup.tsx","shared/popup/AppPopup.tsx","shared/placeholder/Placeholder.tsx","shared/placeholder/ErrorPlaceholder.tsx","shared/AppButton.tsx","shared/PageHeading.tsx","assets/icons/input_error_icon.svg","shared/Input.tsx","shared/AppStepper.tsx","shared/AppDialog.tsx","shared/AppCarousel.tsx","shared/layout/constants.ts","shared/Topbar.tsx","shared/AppBottomNavigation.tsx","shared/PageDialog.tsx","hooks/useTokenValidation.tsx","hooks/useChangeLayout.tsx","hooks/useUpdateLayout.tsx","hooks/useGeolocation.tsx","hooks/useTouchScreen.tsx","hooks/useSelectedCardIndex.tsx","hooks/useRefreshSession.tsx","hooks/useDebugRouter.tsx","hooks/useUpdateTicket.tsx","hooks/useCustomLotColors.tsx","hooks/usePushToApp.tsx","shared/layout/Layout.styles.tsx","shared/layout/FullLayout.tsx","shared/AppSpinner.tsx","shared/TextArea.tsx","shared/AppTextField.tsx","shared/AppCheckbox.tsx","shared/AppHeader.tsx","shared/AppSnackBarProvider.tsx","shared/popup_provider/AppPopup.tsx","shared/popup_provider/AppPopupProvider.tsx","shared/TimeSpinner.tsx","shared/AppAlert.tsx","shared/AppInput.tsx","shared/Ad.tsx","shared/AppTabButtons.tsx","shared/TextDivider.tsx","shared/PhoneNumberInput.tsx","shared/AppSelectListField/SelectListField.tsx","shared/Counter/useCounter.tsx","shared/Counter/Counter.tsx","shared/GridWrapper.tsx","store/loader/actions.ts","pages/auth/validations.ts","pages/auth/forgot_password/resetPassword/SetNewPassword.tsx","pages/auth/forgot_password/resetPassword/SetNewPasswordComplete.tsx","themes/theme.ts","themes/white-theme.ts","themes/global-style.ts","pages/auth/forgot_password/resetPassword/ResetPassword.tsx","pages/auth/forgot_password/sendMail/SendMailComplete.tsx","utils/phoneNumberInput.ts","shared/PhoneNumberAndCountryCodeInput.tsx","shared/NumberError.png","shared/sidebar/SignUpContainer.tsx","shared/ReCaptcha/HybridRecaptcha.tsx","pages/auth/forgot_password/sendMail/SendMeMail.tsx","pages/auth/forgot_password/sendMail/useSendEmail.tsx","pages/auth/forgot_password/sendMail/ForgotPassword.tsx","pages/auth/forgot_password/sendMail/ForgotPasswordRedirect.tsx","pages/select_language_dialog/language.tsx","pages/select_language_dialog/SelectLanguageDialog.tsx","pages/auth/login/Login.tsx","pages/auth/login/LoginRedirect.tsx","shared/CodeInput.tsx","store/customer/thunks.ts","pages/auth/signup/CodeStep.tsx","pages/auth/signup/PersonalDataStep.tsx","pages/auth/signup/RegistrationComplete.tsx","pages/auth/signup/SetPasswordStep.tsx","pages/auth/signup/SignUp.tsx","pages/auth/signup/SignUpRedirect.tsx","pages/find_cars/FindCarsForm.tsx","pages/find_cars/FindCarsContainer.tsx","pages/find_cars/FindCarView.tsx","shared/ParkingRates/ParkingRatesModal.tsx","pages/map/MapComponents/CarMarker.tsx","pages/map/MapComponents/LotMarker.tsx","pages/map/MapComponents/GpsMarker.tsx","pages/map/MapComponents/SelectCarDialog.tsx","pages/map/MapComponents/NavButtons.tsx","pages/map/MapComponents/SearchBox.tsx","pages/map/MapComponents/SelectedLotInfo.tsx","pages/map/MapComponents/Map.tsx","pages/map/MapComponents/SelectLotDialog.tsx","pages/map/MapSearchView.tsx","pages/map/MapContainer.tsx","pages/map/MapView.tsx","pages/my_receipts/ReceiptBar.tsx","pages/my_receipts/MyReceipts.tsx","pages/my_receipts/MyReceiptsPlaceholder.tsx","pages/my_receipts/MyReceiptsContainer.tsx","pages/my_receipts/MyReceiptsView.tsx","pages/my_receipts/ReceiptInfo.tsx","pages/my_receipts/SendReceipt.tsx","pages/my_receipts/CodeStepPopup.tsx","pages/my_receipts/receiptsAndNotifications/types.ts","pages/my_receipts/receiptsAndNotifications/useResendCode.tsx","pages/my_receipts/receiptsAndNotifications/useSendVerificationSMS.tsx","pages/park_car/ParkCarHooks/useGetCars.tsx","pages/park_car_credit_card/CreditCardComponents/creditCardHooks/usePaymentCard.tsx","pages/park_car/ParkCarHooks/useGetTicket.tsx","pages/park_car/ParkCarHooks/useInitParkCar.tsx","pages/park_car/ParkCarT2/T2Hooks/useExpiredPricingPopup.tsx","pages/park_car/ParkCarComponents/AllDayTickSection.tsx","pages/park_car/ParkCarComponents/ParkingExpiresSection.tsx","pages/park_car/ParkCarComponents/TermsButton.tsx","pages/park_car/ParkCarComponents/TotalText.tsx","pages/my_receipts/receiptsAndNotifications/styles.ts","shared/TermOfServiceCheckbox.tsx","utils/language.ts","pages/park_car/ParkCarComponents/PaySection.tsx","pages/park_car/ParkCarComponents/SelectTimeSection.tsx","pages/park_car/ParkCarComponents/LotNameSection.tsx","pages/park_car/ParkCarComponents/SelectPricingSection.tsx","pages/park_car/ParkCarComponents/MonthlyParkingExipresSection.tsx","pages/park_car/ParkCarComponents/LicenseField.tsx","pages/park_car/ParkCarComponents/SpotField.tsx","pages/park_car/ParkCarComponents/SelectedLotTitle.tsx","pages/park_car/ParkCarComponents/WantMonthly.tsx","pages/park_car/ParkCarHooks/useAutoClearTimeExceedingPopup.tsx","pages/park_car/ParkCarHooks/useParkCarRedirect.tsx","pages/park_car/ParkCarHooks/useParkMode.tsx","pages/park_car/ParkCarHooks/useParkDetails.tsx","pages/park_car/ParkCarHooks/useParkCar.tsx","pages/park_car/ParkCarHooks/useTerms.tsx","pages/park_car/constants.ts","pages/park_car/ParkCarHooks/useParkCarPath.tsx","pages/park_car/ParkCarHooks/useGetPrice.tsx","pages/park_car/ParkCarHooks/useWantMonthly.tsx","pages/my_receipts/receiptsAndNotifications/useSubmitForm.tsx","pages/my_receipts/receiptsAndNotifications/ContactInformations.tsx","pages/park_car_credit_card/CreditCardComponents/ParkingDetails.tsx","pages/my_credit_cards/CreditCardsComponents/Cards/AmericanExpress.tsx","pages/my_credit_cards/CreditCardsComponents/Cards/DinersClub.tsx","pages/my_credit_cards/CreditCardsComponents/Cards/Discover.tsx","pages/my_credit_cards/CreditCardsComponents/Cards/Jbc.tsx","pages/my_credit_cards/CreditCardsComponents/Cards/MasterCard.tsx","pages/my_credit_cards/CreditCardsComponents/Cards/Unknown.tsx","pages/my_credit_cards/CreditCardsComponents/Cards/Visa.tsx","pages/my_credit_cards/CreditCardsComponents/CardWrapper.tsx","pages/my_credit_cards/CreditCardsComponents/CreditCardPlaceholder.tsx","pages/park_car_credit_card/CreditCardComponents/ChooseCard.tsx","shared/CounterProvider/CounterProvider.tsx","pages/park_car_credit_card/CreditCardComponents/CancelParkCarDialog.tsx","pages/my_receipts/receiptsAndNotifications/ContactInformationsPage.tsx","pages/my_receipts/receiptsAndNotifications/ReceiptsAndNotifications.tsx","pages/my_receipts/receiptsAndNotifications/ReceiptsAndNotificationsPage.tsx","pages/parker/ParkerComponents/MyProfileDetails.tsx","pages/parker/ParkerComponents/MyProfile.tsx","pages/my_cars/CarBar.tsx","pages/my_cars/MyCars.tsx","pages/parker/ParkerComponents/MyCars.tsx","pages/my_credit_cards/CreditCardsComponents/CreditCardBar.tsx","pages/my_credit_cards/CreditCardsComponents/CreditCardsList.tsx","pages/parker/ParkerComponents/MyCreditCards.tsx","pages/parker/ParkerComponents/LastReceipt.tsx","pages/parker/ParkerComponents/ParkerContainer.tsx","pages/parker/ParkerComponents/ParkerContainerGuest.tsx","pages/parker/ParkerView.tsx","pages/park_car/ParkCarComponents/ConfirmPopup.tsx","pages/park_car/ParkCarComponents/NeedHelpPopup.tsx","pages/park_car/ParkCarComponents/MonthlyParkCarCard.tsx","pages/park_car/fields.ts","pages/park_car/ParkCarHooks/usePayButton.tsx","pages/park_car/ParkCarComponents/SelectPriceItem.tsx","pages/park_car/ParkCarComponents/TimeSelectOptionDialog.tsx","pages/park_car/ParkCarT2/T2Hooks/useEndDate.tsx","pages/park_car/ParkCarT2/T2Hooks/useExternalPricing.tsx","pages/park_car/ParkCarT2/fields.ts","pages/park_car/ParkCarT2/ParkCarT2Form.tsx","pages/park_car/ParkCarT2/T2Hooks/useResetForm.tsx","pages/park_car/ParkCarT2/T2Hooks/useT2Counter.tsx","pages/park_car/ParkCarT2/T2Hooks/useCurrentTime.tsx","pages/park_car/ParkCarT2/T2Hooks/useMinDate.tsx","pages/park_car_summary/ParkCarSummaryHooks/useFailedPay.tsx","utils/Timer/ExpirationPopupTimer.tsx","pages/park_car/ParkCarComponents/ParkCarCard.tsx","pages/park_car_summary/ParkCarSummaryHooks/usePay.tsx","pages/park_car/ParkCarHooks/useTimoutCounter.tsx","pages/park_car/ParkCarHooks/useBuyMoreTime.tsx","pages/park_car/ParkCarDefault.tsx","pages/park_car/ParkCarT2/T2Components/SelectParkUntil.tsx","pages/park_car/ParkCarT2/T2Components/PeriodSwitch.tsx","pages/park_car/ParkCarT2/T2Components/Spot.tsx","pages/park_car/ParkCarT2/T2Components/SelectCustomTime.tsx","pages/park_car/ParkCarT2/T2Components/SelectDefaultTime.tsx","pages/park_car/ParkCarT2/T2Components/SubmitButton.tsx","pages/park_car/ParkCarT2/T2Components/License.tsx","pages/park_car/ParkCarT2/T2Components/PricingList.tsx","pages/park_car/ParkCarT2/T2Components/TotalAmount.tsx","pages/park_car/ParkCarT2/T2Components/SummaryBox.tsx","pages/park_car/ParkCarT2/T2Components/RemaingTime.tsx","pages/park_car/ParkCarT2/T2Components/ExcerptList.tsx","pages/park_car/ParkCarT2/T2Components/FullList.tsx","pages/park_car/ParkCarT2/T2Views/ParkCarT2SelectPricing.tsx","pages/park_car/ParkCarT2/T2Views/ParkCarT2SetTime.tsx","pages/park_car/ParkCarT2/T2Views/ParkCarT2Summary.tsx","pages/park_car/ParkCarT2/ParkCarT2Switch.tsx","pages/park_car/ParkCarT2/ParkCarT2.tsx","pages/park_car/ParkCar.tsx","pages/park_car/AwaitTransation.tsx","utils/creditCard.ts","pages/my_credit_cards/CreditCardsComponents/AddCreditCardForm.tsx","pages/my_credit_cards/CreditCardsComponents/CardWrapperFullDetails.tsx","pages/park_car_credit_card/CreditCardComponents/AddCreditCard.tsx","pages/park_car_credit_card/AddCardView.tsx","pages/park_car_credit_card/ManageCardsView.tsx","pages/park_car_credit_card/SelectCardGuestWrapper.tsx","pages/park_car_credit_card/SelectCardWrapper.tsx","pages/park_car_credit_card/SelectCreditCardPage.tsx","pages/park_car_credit_card/AddTimeSelectCardPage.tsx","pages/park_car_summary/ParkCarSummaryComponents/PaymentSuccessful.tsx","pages/park_car_summary/ParkCarSummaryComponents/PaymentSummaryDetails.tsx","pages/park_car_summary/ParkCarSummaryComponents/ZipCodeForm.tsx","pages/park_car_summary/ParkCarSummaryView.tsx","pages/park_car_summary/ParkCarSummaryPage.tsx","pages/park_car_summary/AddTimeSummaryPage.tsx","pages/park_car_summary/ParkCarSummarySuccessPage.tsx","pages/pcode_redirect/PcodeSingIn.tsx","pages/tickets/TicketComponents/SelectLotDialog.tsx","__fixtures__/tickets.ts","pages/tickets/TicketHooks/useTicketActions.tsx","pages/tickets/TicketComponents/LotName.tsx","pages/tickets/TicketComponents/TicketButtons.tsx","pages/tickets/TicketComponents/TicketDetails.tsx","pages/tickets/TicketComponents/TicketDetailsDialog.tsx","pages/tickets/TicketComponents/TicketNormal.tsx","pages/tickets/TicketComponents/Ticket.tsx","pages/tickets/TicketComponents/TicketsCarousel.tsx","pages/tickets/TicketComponents/TicketsPlaceholder.tsx","pages/tickets/TicketComponents/TicketsContainer.tsx","pages/tickets/TicketsView.tsx","pages/tickets/TicketsGuestView.tsx","assets/icons/info_gray.svg","shared/styled/InformationText.tsx","pages/validators/ValidateTicket.tsx","pages/validators/UpfrontValidate.tsx","pages/validators/ValidatorBar.tsx","pages/validators/Validators.tsx","pages/validators/ValidatorsPlaceholder.tsx","pages/validators/UpfrontValidationView.tsx","pages/validators/Validate.tsx","pages/validators/ValidatorsView.tsx","routing/SignedInAsGuestRoutes.tsx","pages/auth/login/LoginRedirectLoader.tsx","pages/my_cars/AddCar.tsx","pages/my_profile/EditProfile.tsx","pages/my_profile/EditProfileView.tsx","shared/styled/typography/Form.tsx","pages/my_profile/ChangePassword.tsx","pages/my_profile/ChangePasswordView.tsx","pages/my_profile/DeleteAccount.tsx","pages/my_profile/DeleteAccountView.tsx","pages/question/Question.tsx","routing/SignedInRoutes.tsx","routing/SignedOutRoutes.tsx","pages/park_car/ParkCarSmsPage.tsx","pages/map/MapSmsPage.tsx","pages/landing_page_redirect/LandingPageRedirect.tsx","routing/AppRoutes.tsx","typedef/log.ts","ErrorsWrapper.tsx","api/LogApi.tsx","pages/auth/terms_and_conditions/TermsAndConditions.tsx","pages/global_popup/GlobalPopup.tsx","shared/loader/Loader.tsx","shared/autoLogout/Timer.tsx","shared/autoLogout/AutoLogout.tsx","App.tsx","utils/env.ts","serviceWorker.ts","historyListener.tsx","index.tsx"],"names":["withClearCache","Component","props","isLatestBuildDate","setIsLatestBuildDate","useState","useEffect","fetch","then","response","json","meta","buildDateGreaterThan","latestDate","currentDate","momLatestDateTime","moment","momCurrentDateTime","isAfter","buildDate","packageJson","caches","keys","names","name","delete","window","location","reload","_jsx","React","Fragment","children","API_URL","_appConfig","appConfig","TEZ_PAY_API_URL","_appConfig2","GOOGLE_KEY","_appConfig3","TIME_TO_LOGOUT","_appConfig4","CAPTCHA_V2_KEY","_appConfig5","CAPTCHA_V3_KEY","_appConfig6","CAPTCHA_V2_ENABLE","_appConfig7","CAPTCHA_V3_ENABLE","_appConfig8","CAPTCHA_VALIDATE_REGISTRATION","_appConfig9","VALIDATE_FEATURE","REGISTRATION","CAPTCHA_VALIDATE_RESEND_PIN","_appConfig10","RESEND_PIN","CAPTCHA_VALIDATE_FORGOT_PASSWORD","_appConfig11","FORGOT_PASSWORD","CAPTCHA_VALIDATE_ADD_NUMBER_FOR_NOTIFICATION","_appConfig12","ADD_NUMBER_FOR_NOTIFICATION","CAPTCHA_VALIDATE_PAYMENT","_appConfig13","PAYMENT","axiosRequestConfig","baseURL","headers","Version","instance","axios","create","mockedAxios","interceptors","use","err","Promise","reject","_response$config$meth","console","log","status","config","method","toUpperCase","url","req","params","resp","data","i18n","initReactI18next","LanguageDetector","init","resources","translation","enTranslation","enGbTranslation","itTranslation","it","de","deTranslation","detection","order","load","fallbackLng","nonExplicitSupportedLngs","interpolation","escapeValue","ErrorCode","FetchStatus","CardType","LoginMode","UserRole","CustomStylesValue","CustomStylesElement","OptionType","ExternalPricingType","VerificationType","TermsType","UserLanguage","CarStatus","PaymentOperationType","TransactionStatus","CurrencyFormat","ParkerType","CARS","COUPON","CREDIT_CARDS","CUSTOMER","FETCH","MAP","PARK_CAR","RECEIPTS","TERMS","TERMS_OF_SERVICE","TICKETS","CONTACT_INFORMATIONS","initialPromiseStatus","description","title","variant","Idle","requestId","time","code","defaultCustomStyles","headerBgUrl","bg","cardBgUrl","appLayoutProps","layout","hasFlatBackground","hasTopBar","hasBottomBar","hasSnackbar","autoToogleSnackGap","topbar","bottomMenu","authLayoutProps","narrow","initialState","height","innerHeight","loader","innerWidth","customStyles","layoutSlice","createSlice","reducers","setLayout","state","_ref","payload","setTopbar","_ref2","setBottomMenu","_ref3","setHeight","_ref4","setCenter","_ref5","center","setSnackbarGutter","_ref6","setInnerWidth","_ref7","setFullLayout","_ref8","setAuthLayout","setAppLayout","setLoader","_ref9","setCustomStyles","_ref10","actions","stateSelectors","Translations","OtherError","T","OOPS","UNEXPECTED_ERROR_PLEASE_TRY_AGAIN","NotEnoughParameters","INCORRECT_PASSWORD","CustomerDoesntExist","getCustomerDetails","FAILED_PROPERLY_RETRIEVE","register","confirmRegister","remindPassword","resetPassword","changePassword","YOUR_PASSWORD_CANNOT_BE_CHANGED_AT_THE_MOMENT_PLEASE_TRY_AGAIN_LATER","refreshToken","findCar","NO_CARS_FOUND","ReceiptsApiError","sendReceipt","YOUR_RECEIPT_CANNOT_BE_SENT","getReceipts","sendQuestion","YOUR_QUESTION_CANNOT_BE_SENT","CarsApiError","getCars","CANNOT_FETCH_CAR_LIST","AddCar","YOUR_CAR_CANNOT_BE_ADDED","ObjectExist","THE_LICENCE_PLATE_IS_ALREADY_IN_USE","deleteCar","YOUR_CAR_CANNOT_BE_DELETED_AT_THE_MOMENT","getTicket","IncorrectParameterException","TICKET_NOT_FOUND","getTickets","parkCar","INCORRECT_SPOT_NUMBER","AutoClearTimeExeeded","RATE_HAS_EXPIRED_PLEASE_SELECT_YOUR_TIME_AGAIN","buyMoreTime","payForCar","parkCarRedirect","parkCarTransactionStatus","creditCardsApiError","getCreditCards","CANNOT_FETCH_CREDIT_CARDS_LIST","addCreditCard","YOUR_CARD_CANNOT_BE_ADDED_AT_THE_MOMENT_PLEASE_TRY_AGAIN_LATER","CANNOT_ADD_CREDIT_CARD","YOUR_CARD_HAS_BEEN_REJECTED","LotApiError","getLotDetailsPark","INCORRECT_TOKEN","TokenExpired","TOKEN_EXPIRED","getLots","getSimulatedPrices","validatorsApiError","getValidators","SOME_DATA_HAS_NOT_BEEN_UPDATED","validateCode","THE_TICKET_CANNOT_BE_VALIDATED_AT_THE_MOMENT","TermsApiError","getTerms","CUSTOMER_CAR","CREDIT_CARD","SMS","PARK_CAR_REDIRECT","PARK_CAR_TRANSACTION_STATUS","PARK_CAR_PAY","LOTS","LOTS_DETAILS_PARK","LOTS_DETAILS_MAP","LOTS_SIMULATED_PRICES","LOTS_COMPANY_CONTACT_INFO","PRICE","PRICE_EXTERNAL_PRICING","UPFRONT_COUPON","CUSTOMER_LOGIN","CUSTOMER_GET_DETAILS","CUSTOMER_REFRESH_TOKEN","CUSTOMER_REGISTER","CUSTOMER_CONFIRM_REGISTER","CUSTOMER_REMIND_PASSWORD","CUSTOMER_RESET_PASSWORD","CUSTOMER_CHANGE_PASSWORD","CUSTOMER_EDIT","CUSTOMER_DELETE","CUSTOMER_PHONE_NO_IS_AVAILABLE","CUSTOMER_RESEND_REGISTRATION_PIN","CUSTOMER_FIND_MY_CAR","CUSTOMER_ADD_GUEST_NOTIFICATION","CUSTOMER_GET_GUEST_NOTIFICATION","SMS_SEND_VERIFICATION_SMS","SMS_RESEND_VERIFICATION_SMS","TERMS_AND_CONDITIONS","RECEIPT","RECEIPT_QUESTION","SHOW_FOR_CUSTOMER","ACCEPT_TOS","mock","MockAdapter","delayResponse","cars","carId","plate","onGet","reply","onPost","JSON","parse","length","onDelete","networkError","cards","creditCardId","last4Digits","cardType","MasterCard","AmericanExpress","DinersClub","Invalid","JCB","Discover","Visa","creditCards","nanoid","tokensStorageService","set","tokens","localStorage","setItem","stringify","get","tokensStorage","getItem","clear","removeItem","setUserRole","role","getUserRole","clearUserRole","loginResult","User","auth","expires","add","unix","refresh","loginAsGuestResult","Guest","invalidLoginCredentials","login","password","errors","errorCode","IncorrectUserOrPassword","mode","error","onPut","newPassword","Date","now","defaultErrorData","UnauthorizedAccess","WRONG_LOGIN_OR_PASSWORD","CannotPerformActionAsGuest","CannotPerformActionAsUser","AmbiguousLogin","AMBIGUOUS_LOGIN","PasswordDoesNotMeetLengthRequirements","MINIMUM_8_CHARACTERS_AT_LEAST_ONE_CAPITAL","PhoneNumberAndItsCountryCodeCannotBeEmpty","PHONE_CANNOT_BE_EMPTY","NewPasswordHasToBeDifferent","OLD_PASSWORD_MUST_BE_DIFFERENT_THEN_THE_NEW_PASSWORD","IncorrectConfirmToken","INCORRECT_CONFIRM_TOKEN","IncorrectPin","INVALID_ACTIVATION_CODE","NoUserAssignedToGivenEMail","NO_E_MAIL_ASSIGNED_TO_GIVEN_PHONE_NUMBER","ParkingLotNotFound","NO_PARKING_FOUND","InvalidParkerUser","InvalidMonthlyParkingGroup","IncorrectMode","CarNotFound","CreditCardNotFound","NO_CREDIT_CARDS_FOUND","TicketNotFound","IncorrectPassword","IncorrectValidationCouponCode","INVALID_CODE","PROVIDED_CODE_IS_INVALID","ConflictWithCurrentObjectState","MonthlyParkingIsDisabledForThisLocation","ParkCarUsingExitGate","ERROR","UNFORTUNATELY_WE_CANNOT_FIND_YOUR_TICKET","ParkCarWhileAnotherIsParked","IT_SEEMS_THAT_YOUR_VEHICLE_IS_CURRENTLY_ALREADY_PARKED","ParkingIsClosed","PARKING_IS_CLOSED","TriedToExitWithUnpaidTicket","PaymentTimeExpired","TIMEOUT","YOUR_SESSION_HAS_EXPIRED_PLEASE_START_OVER","AreaNoIntegrationEnabled","NotImplementedException","InconsistentData","FailedSaveCar","FailedSaveCarPayment","TRANSACTION_DECLINED","YOUR_TRANSACTION_HAS_BEEN_REJECTED","FailedParkCar","FAILED_PARK_CAR","FailedDeleteCreditCard","FailedBuyMoreTime","CurrentPricingIsExpired","RATE_HAS_EXPIRED","HasParkedCars","HAS_PARKED_CARS","ParkingIsUnavailable","PARKING_IS_UNAVAILABLE","UserIsNotHuman","USER_IS_NOT_HUMAN","getErrorCode","_err$response","_err$response$data","_err$response2","_err$response2$data","_err$response2$data$e","getErrorMessage","errorData","errorMessage","_error","_error2","_error3","combinedErrorData","Number","isInteger","t","fetchStatusIs","idle","pending","Pending","fulfilled","Fulfilled","rejected","Rejected","getPromiseStatus","statuses","includes","pendingIdle","filter","el","pendingFulfilled","pendingRejected","carParkPrices","amount","totalAmount","convenienceFee","parkingExpireDateTime","toISOString","validations","convenienceFeeName","replyOnce","pricings","arguments","undefined","Array","from","map","i","externalPricingId","toString","fees","label","generateExternalPricings","currentDateUtc","utc","pricingExpirationDateUtc","receipts","currency","cultureName","currencyFormat","currencySymbol","areaAddress","cardUsed","locationName","dateInUTC","toUTCString","externalServiceDeliversReceipts","async","post","addContactInformations","put","sendVerificationSMS","resendVerificationSMS","getContactInformations","text","TERMS_AND_CONDITIONS_CONTENT","grticket","carStatus","RequiresPayment","parkingBeginDateTime","currentDateTime","settlement","finalAmount","creditCardInfo","parkingAmount","paymentOperationList","type","dateAtLocal","dateAtUTC","parkerType","advertisementUrl","spot","lot","lotType","lotId","lotName","locationId","logoLink","geolocation","latitude","longitude","validateEnable","addTimeEnable","tickets","ParkingHasExpired","message","success","token","transactionStatus","Failed","catch","partners","couponId","partnerId","logoDir","isAddFieldEnable","addFields","qrCodeEnable","getCompanyContactInfo","lots","pCode","newTokens","mapLot","address","fullAddress","street","country","postalCode","city","currentDateTimeLocal","isLocationStopped","locationStoppedMessage","lotCapacity","capacityFullSMSMessage","capacityFullWEBMessage","lotIsFull","openingHours","dayOfWeek","openingHoursInDay","startTime","endTime","parkLot","parkerId","monthlyEnable","externalPricingType","isExternalPricingEnabled","isUpfrontCouponAvailable","isEnabled","minSpotNumber","maxSpotNumber","timeSelectOption","pricingType","optionType","showAllDayUntil","allDayUntilMessage","endDateTime","optionLabel","optionId","intervalOptions","showDaySelect","showHourSelect","showMinuteSelect","maxDays","maxHours","maxMinutes","dayInterval","hourInterval","minuteInterval","pricingPayload","pricing","ticketId","cardId","addTimeCard","hasCardBeenUsed","zipCode","promisesStatus","getPrice","getExternalPricing","parkingDetails","isPaymentRequired","providedPlate","providedSpotNumber","recaptchaToken","createAsyncThunk","thunkApi","lotApi","dispatch","customerSlice","setLogin","corporationLotsToken","setCorporationToken","mapSlice","addLot","lotApiError","rejectWithValue","priceApi","ticketsApi","ticketsApiError","getSelectedTicket","parkCarSlice","setlot","setPricing","setTicket","setCard","id","setParkingDetails","updateParkingDetails","resetParkingDetails","setAddTimeCard","card","setZipCode","setRecaptchaToken","setHasCardBeenUsed","setIsPaymentRequired","_ref11","setProvidedPlate","_ref12","setProvidedSpotNumber","_ref13","resetAddTimeCard","resetTicket","resetPricing","resetPromiseStatus","_ref14","resetState","extraReducers","builder","addCase","action","caseReducers","sliceUtil","fulfilledPromise","_ref15","pendingPromise","arg","aborted","rejectedPromise","_ref16","_ref17","concat","_ref18","_ref19","_ref20","_ref21","selectPromiseStatus","selectPricing","selectedTicket","entities","selectCardId","creditCardsSlice","selectEntities","promiseStatusSelectors","promises","getLotDetailsParkStatus","fetchStatus","getPriceStatus","parkCarStatus","buyMoreTimeStatus","parkCarRedirectStatus","getExternalPricingStatus","initialPromiseStatuses","getLotDetailsMap","initialMapPosition","lat","lng","initialBounds","mapAdapter","createEntityAdapter","selectId","en","getInitialState","position","zoom","selectedLot","lotsToSelect","myPosition","findCarMode","cachedMapPosition","bounds","isGeoOn","geoError","geoState","boundsToOmit","noClusteredLots","getState","customer","pcode","corporationLotsGlobalPcode","additionalParam","argsWithAdditionalParam","args","getLotsByPcode","res","skip","setGeo","setGeoError","setGeoState","addLots","upsertMany","upsertOne","removeLots","removeAll","setPosition","unsetFindCarMode","foundParkedCar","_lot$geolocation","_lot$geolocation2","getSelectors","selectById","exitParkedCarMode","setMyPosition","setCachedPosition","focusMapOnMyLocation","warn","setZoom","setDefaultZoom","toggleFindCarMode","selectLot","setLotsToSelect","ids","unsetLotsToSelect","unselectLot","setBounds","mapMapBoundsToCluster","addBoundsToOmit","mapApiBoundsToCluster","removeBoundsFromOmit","payloadBoundsString","resetBoundsToOmit","setNoClusteredLots","fwdAction","reducer","hasDetails","selectAll","selectIds","selectTotal","selectByIds","selectLotsToSelect","selectLotByTicketId","ticket","ticketsSlice","selectHasParkedCar","parkedCar","selectParkedCars","find","Parked","hasParkedCar","Boolean","selectParkedLots","lotIds","selectManyAreas","coords","_el$geolocation","_el$geolocation2","selectMapLots","lotsIds","manyLots","elm","selectLotsIdsWithinMap","wLng","sLat","eLng","nLat","selectUnfetchedBounds","some","wLngO","sLatO","eLngO","nLatO","adsAdapter","ad","scriptString","adsToAppend","getAd","request","responseType","Error","substring","lastIndexOf","fullHtmlString","condition","api","ads","adsSlice","removeScriptString","addAdToAppend","addAllAdsToAppend","removeAdsToAppend","isArray","forEach","payEl","selectAdsToAppend","promiseStatus","_action$meta","getTime","nw","se","mapClusterBoundsToApi","rev","reverse","northEastBoundLat","northEastBoundLng","southWestBoundLat","southWestBoundLng","ticketsAdapter","_el$lot","refCurrentTime","Set","setTickets","setAll","setSelectedTicket","unsetSelectedTicket","addTicket","setTicketStatus","updateOne","changes","removeTicket","removeOne","resetTicketPromiseStatus","currentStatus","selectParkedTickets","selectExpiredTickets","selectSortedParkedTickets","sort","a","b","diff","selectSortedExpiredTickets","selectParkAnotherCarLots","parkedlotsIds","uniqLots","push","selectParkingHistory","lotEntities","history","getTicketsStatus","getTicketStatus","payForCarStatus","singleTicketsFetchSuccess","Object","entries","key","val","selectTicketByLotId","_el$lot2","carsAdapter","car","addCar","removeCar","_","carsApi","carsApiError","carsSlice","addCars","setCars","addOne","carsSelectors","selectAllCars","selectCarById","selectCarIds","getCarsStatus","addCarStatus","removeCarStatus","receiptsAdapter","receipt","receiptsApi","receiptsApiError","receiptsSlice","resetFinalSendReceiptStatus","_state$promisesStatus","resetFinalSendQuestionStatus","_state$promisesStatus2","receiptsSelectors","selectAllReceipts","selectReceiptById","selectReceiptIds","getReceiptsStatus","sendReceiptStatus","sendQuestionStatus","deleteAccount","details","fetchingEditCustomerDetailsStatus","customerApi","customerApiError","Authorization","editCustomerDetails","defaults","common","setLogout","setDetails","setRole","setCorporationGlobalPcode","destroySession","firstName","lastName","email","selectCustomerStatus","customerSignedOut","customerSignedIn","customerSignedInAsGuest","selectEditCustomerDetailsFetchStatus","findCarStatus","getCustomerDetailsStatus","deleteAccountStatus","getCreditCardType","creditCardNumber","dict","cardNumber","split","join","test","adapter","removeCreditCard","CreditCardApi","ccNumber","slice","addCard","removeCard","removeCardZip","getCreditCardsStatus","addCreditCardStatus","removeCreditCardStatus","validateAdapter","partner","sendValidateCodeStatus","sendValidateCodeUpfrontStatus","validatorsApi","validators","validateCodeUpfront","validatorsSlice","selectAllValidators","selectValidatorById","selectValidatorIds","selectSendValidateCodeStatus","selectSendValidateCodeUpfrontStatus","getValidatorsStatus","terms","lang","termsSlice","setLang","language","termsApi","languageCode","termsApiError","setTerms","setLogoLink","getTermstatus","formatCurrency","BeforeAmount","AfterAmount","toLocaleString","minimumFractionDigits","maximumFractionDigits","formattedCultureName","replace","localCurrency","getCurrency","Intl","NumberFormat","style","format","parseCustomStyles","header","elementType","Header","cardBg","CardBackground","valueType","Url","value","momentDurationFormatSetup","getDate","getDateWithCustomTime","fullDate","hour","parseInt","minute","second","fullMomentDate","apiDateFormat","date","handleFormikErrors","handleValid","handleInvalid","phoneNumberRegex","licencePlateRegex","countryCodeRegex","allowedCodeCharactersRegex","zipCodeRegex","blurLastInput","e","preventDefault","target","blur","simulatePriceAdapter","parkingLotId","idsToOmit","pricingMode","simulateStartTime","simulateEndTime","pendingCallsNumber","simulatePriceSlice","addPrices","addIdsToOmit","removeIdsFromOmit","setDates","setPricingMode","assign","parkings","simulatedPrices","selectMissingPricesLots","mapLots","missing","selectPriceString","simulatedPrice","selectAvailableCallsNumber","contactDataRequired","customerHasEmail","paymentRedirectionAvailable","needHelpApi","contactInformationsSlice","setRequirements","contactInformations","tos","termsAndConditionsId","showForCustomer","accept","getTermsOfServiceContent","termsOfService","termsAndConditionsID","show","termsOfServiceContent","termsOfServiceSlice","store","next","SHOW_POPUP","CLOSE_POPUP","SHOW_TERMS","CLOSE_TERMS","popup","handleAdditionalButtonClick","showTerms","SHOW_LOADER","HIDE_LOADER","SHOW_LOADING_PAGE","HIDE_LOADING_PAGE","showLoadingPage","spinners","combinedReducer","combineReducers","adsReducer","carsReducer","creditCardsReducer","customerReducer","layoutReducer","spinnerNames","mapReducer","parkCarReducer","receiptsReducer","termsReducer","ticketsReducer","validatorsReducer","simulatePriceReducer","contactInformationsReducer","termsOfServiceReducer","rootReducer","configureStore","middleware","getDefaultMiddleware","serializableCheck","refreshTokenMiddlaware","useAppDispatch","useDispatch","ConditionalRoute","redirectTo","shouldRedirect","Route","path","Redirect","to","AUTH","PARKER","PARKING","MY_PROFILE","SIGN_UP","paths","root","oldMobi","home","parker","info","edit","myProfile","myReceipts","question","receiptsAndNotifications","paymentSuccessful","forgotPassword","signUp","setPassword","parking","selectCard","pay","paid","addTime","addTimePay","addTimeManageCards","addTimeSelectCard","addTimeAddCard","manageCards","validate","upfrontValidate","transaction","sms","park","corp","redirect","landingPage","_rect","_path","_extends","bind","n","r","hasOwnProperty","call","apply","SvgEmail","svgRef","titleId","width","viewBox","fill","xmlns","ref","x","y","rx","stroke","d","ForwardRef","SvgComponent","DefaultLogo","SvgPhone","_path2","_circle","SvgPin","cx","cy","_jsxs","_path3","SvgClock","strokeLinecap","SvgSendComplete","strokeLinejoin","_rect2","_rect3","_circle2","_circle3","_rect4","_rect5","_rect6","_rect7","_rect8","_rect9","_circle4","_mask","_g","SvgErrorIcon","transform","fillRule","clipRule","strokeWidth","maskUnits","mask","SvgInfoIcon","SvgSuccessIcon","_path4","SvgWarningIcon","_path5","SvgAttachMoney","SvgGpsFixed","SvgPinDrop","_path6","_path7","SvgMoneyOff","SvgPricePin","SvgClusterPin","SvgStandardPin","SvgSelectedPin","SvgMessage","_rect10","SvgReceipt","_rect11","_rect12","_rect13","SvgNoCreditCard","SvgDelete","SvgLogo","strokeMiterlimit","SvgTerms","SvgOk","SvgQuestion","SvgHamburger","_circle5","SvgCars","SvgPlate","_path8","SvgParkedCars","SvgCar","SvgParking","SvgMail","SvgResetPassword","SvgMenuMap","SvgUser","SvgUnlock","SvgLabel","StyledSpotNumberIcon","styled","Typography","SpotNumberIcon","color","spotNumber","SvgInfo","SvgValidator","SvgNoFound","_ellipse","_defs","SvgHeadingGpsIndicator","ry","x1","y1","x2","y2","gradientUnits","stopColor","stopOpacity","offset","SvgPinCar","SvgWarning","SvgSuccessTick","_path9","_path10","_path11","SvgT2PLogoColor","SvgValidationTicketPlaceholder","SvgUserTick","SvgInformation","SvgLanguageIcon","SvgArrowDown","SvgFlagUsa","clipPath","SvgFlagUk","SvgFlagGermany","SvgFlagItaly","StyledTypographyWrapper","div","weight","textCase","theme","spacing","paddingLeft","customColor","css","disabled","palette","size","line","AppTypography","defaultProps","Divider","MUIDivider","Wrapper","invalid","secondary","light","grey","minHeight","InnerRow","noBottomPadding","noTopPadding","StyledTimeRow","main","TimeCell","TimeRow","useTranslation","PARKING_EXPIRED_AT","PARKING_EXPIRES_AT","startOf","TotalParkingTimeRow","TOTAL_PARKING_TIME","durationText","StyledTextRow","TextRow","_Fragment","leftText","gutterBottom","rightText","PriceRow","negativeAmount","setText","StyledIconsRow","IconText","IconsRow","SharedIcon","Car","Parking","showPopup","closePopup","closeTerms","StyledFlexBox","marginSpacing","maxWidth","hasBottomMargin","hasTopMargin","horizontalGap","horizontal","horizontalFullWith","maxChildWidth","FlexBox","renderChildren","Children","child","isValidElement","PopupButtons","handleCloseClick","buttonColor","warning","buttonText","OK","CLOSE","CANCEL","buttonAdditionalText","TRY_AGAIN","DELETE","hasAdditionalButton","AppButton","onClick","Text","useStyles","makeStyles","paddingBottom","fontWeight","PopupIcon","icon","PopupPlaceholder","InfoIcon","SuccessIcon","WarningIcon","ErrorIcon","Popup","okButtonClick","dialogProps","classes","AppDialog","onClose","DialogTitle","handleAdditionalClick","fullWidth","CloseIconBox","AppPopup","customIcon","addCloseButton","darkBackground","CloseIcon","PlaceholderWrapper","PlaceholderTitle","PlaceholderDescription","PlaceholderIcon","Placeholder","Icon","ErrorPlaceholder","showSpinner","buttonTitle","Warning","AppSpinner","align","REFRESH","ButtonWrapper","topGutter","textAlign","minWidth","letterCase","hasHoverBg","Button","SubTitle","marginBottom","Title","textTransform","Logo","StyledPageHeading","styledC","IconWrapper","normalizeIcon","PageHeading","subtitle","hasLogo","externalLogoUrl","src","SvgInputErrorIcon","InputContainer","primary","noMargin","BaseInput","input","LeftIcon","ErrorIconStyled","ErrorIconSvg","createTheme","components","MuiIconButton","styleOverrides","padding","Input","as","_as","refProp","RightIcon","leftIconClick","rightIconClick","className","other","ThemeProvider","IconButton","S","Stepper","StepLabel","AppStepperWrapper","span","AppStepper","hasLabel","steps","Step","alternativeLabel","paper","borderRadius","boxSizing","scrollbarWidth","scrollbarColor","backgroundColor","Dialog","AppCarousel","Slider","adaptiveHeight","slidesToScroll","infinite","centerMode","draggable","swipeToSlide","responsive","breakpoint","settings","variableWidth","arrows","touchMove","BOTTOM_BAR_HEIGHT","StyledTopbar","transparent","backgroundImage","RightContainer","LeftButtonContainer","Topbar","useHistory","useSelector","Toolbar","disableGutters","hasGoBack","onClickBack","goBack","ArrowBack","htmlColor","rightIcon","onClickRight","Close","Add","StyledNavLink","NavLink","MenuIcon","StyledBottomNavigation","BottomNavigation","bottom","boxShadow","zIndex","left","AppBottomNavigation","BottomNavigationAction","activeClassName","MenuMap","StyledDialog","PageDialog","overflowScroll","fullScreen","useTokenValidation","useChangeLayout","layoutProps","deps","layouts","app","combinedLayout","scrollTo","useLayoutEffect","useUpdateLayout","stopEffect","combineLayout","useCallback","updateLayout","GeolocationPositionErrorValues","useGeolocation","isOn","setIsOn","setState","accuracy","altitude","altitudeAccuracy","heading","speed","timestamp","mounted","watchId","useRef","turnOffGeo","batch","navigator","clearWatch","current","geoErrorMessageHandler","errCode","PERMISSION_DENIED","USER_DENIED_GEOLOCALIZATION","POSITION_UNAVAILABLE","POSITION_GEOLOCALIZATION_TIMEOUT","onError","onGetCurrentPositionError","handleEvent","event","onGetCurrentPosition","onWatchPosition","turnOnGeo","getCurrentPosition","enableHighAccuracy","watchPosition","constNavigator","useTouchScreen","hasTouchScreen","maxTouchPoints","msMaxTouchPoints","mQ","matchMedia","media","matches","UA","userAgent","useSelectedCardIndex","initSlide","setInitSlide","selectedCard","selectedCardIndex","findIndex","useRefreshSession","initLocation","validToken","validateUser","homeRegex","RegExp","authRegex","parkerRegex","parkingRegex","match","actionResult","useDebugRouter","process","pathname","search","useUpdateTicket","ticketsRef","timer","setInterval","clearInterval","useCustomLotColors","useParams","lotByLotId","lotByCarId","useLocation","_tickets$","usePushToApp","OuterContainer","imageBackground","InnerContainer","innerScroll","PaddingContainer","paddingTop","TopBarSpace","BottomBarSpace","bar","snack","AppPaper","backgroundUrl","noShadow","gridPaddingDiff","WhiteBoxContainer","forwardRef","FullLayout","whiteBackground","dimensions","setDimensions","innerRef","handleResize","clientWidth","addEventListener","removeEventListener","hasAd","Container","relative","fixed","PositionContainer","positionContainerStyles","setShowSpinner","mountedRef","Fade","unmountOnExit","in","CircularProgress","TextArea","TextField","multiline","InputProps","endAdornment","InputAdornment","disableUnderline","StyledTextField","outlinedRoot","border","borderColor","borderWidth","background","divider","notchedOutline","focused","AppTextField","CustomInputProps","outline","outlineOffset","checkedIcon","display","content","AppCheckbox","Checkbox","clsx","inputProps","StyledList","List","overflow","marginRight","AppHeader","bottomText","iconSrc","topText","dense","ListItem","ListItemAvatar","Avatar","alt","imgProps","objectFit","LotAvatarPlaceholder","ListItemText","disableTypography","StyledSnackbarProvider","SnackbarProvider","$hasBottomGutter","$gutterSize","AppSnackBarProvider","hasBottomGutter","gutterSize","notistackRef","createRef","anchorOriginBottomCenter","iconVariant","default","Info","maxSnack","preventDuplicate","autoHideDuration","TransitionProps","onEntered","onExiting","anchorOrigin","vertical","Space","gap","margin","buttons","noButtons","noIcon","disableBackdropClick","buttonSecondText","reason","renderButtons","validButtons","preventClose","prop","initial","setPopup","PopupContext","createContext","usePopup","useContext","PopupProvider","setShow","popupProps","setPopupProps","Provider","open","rotate","keyframes","isRunning","TimeSpinner","AlertWrapper","gutterTop","AppAlert","typographyProps","Alert","severity","InputBase","AdSpace","AdWrapper","Ad","initAd","setInitAd","adHeight","setAdHeight","runScript","setRunScript","Math","round","maxHeight","min","Function","_fragment$querySelect","document","createRange","createContextualFragment","querySelectorAll","node","_document$getElementB","getElementById","appendChild","dangerouslySetInnerHTML","__html","ButtonsWrapper","AppTabButtons","selected","options","setTimeout","TextDivider","PhoneNumberContainer","PhoneNumberInput","AppSelectListField","SelectListOptions","useMemo","arr","max","interval","MenuItem","$innerSufix","sufix","defaultValue","select","onChange","useCounter","endDate","onEnd","setIsRunning","getElapsedSeconds","seconds","duration","asSeconds","setSeconds","getElapsedTimeString","trim","timeString","setTimeString","Counter","GridWrapper","itemProps","Grid","item","xs","container","showLoader","hideLoader","passwordValidationShape","Yup","shape","required","PASSWORD_CANNOT_BE_EMPTY","confirmPassword","CONFIRM_PASSWORD_CANNOT_BE_EMPTY","oneOf","PASSWORD_NOT_MATCH","SetNewPassword","enqueueSnackbar","useSnackbar","RESET_PASSWORD","Formik","initialValues","validationSchema","onSubmit","handleSubmit","values","handleChange","handleBlur","validateForm","Form","inputMode","autoFocus","placeholder","NEW_PASSWORD","onBlur","minLength","maxLength","autoComplete","CONFIRM_NEW_PASSWORD","onKeyDown","SUBMIT","SetNewPasswordComplete","THE_PASSWORD_IS_CHANGED","YOUR_PASSWORD_HAS_BEEN_RESET","ResetPassword","dark","contrastText","pin","typography","fontFamily","h1","fontSize","h2","h3","h6","subtitle1","subtitle2","body2","MuiModal","MuiFormControl","MuiDialogTitle","MuiSelect","MuiInputBase","inputMultiline","opacity","MuiTextField","whiteTheme","MuiTypography","paragraph","MuiButton","containedPrimary","outlinedPrimary","MuiStepper","MuiStepConnector","MuiStepIcon","MuiCircularProgress","colorPrimary","GlobalStyle","createGlobalStyle","setSuccess","promise","confirmToken","SendMailComplete","EMAIL_WAS_SENT","PLEASE_CHECK_YOUR_INBOX","Mail","countryList","StyledPhoneInput","PhoneInput","NewPhoneNumberInput","number","setNumber","setFieldValue","useFormikContext","selectedCountry","toLowerCase","findMatchingCountry","autocomplete","countryCodeFieldName","dialCode","phoneNumberFieldName","customHandleBlur","phoneNumber","isValid","COUNTRY_CODE_AND_PHONE_NUMBER","reCapthaVersion","validateFeature","HybridRecaptchaContent","onValidationSuccess","onValidationFailure","onTokenReceived","feature","showRecaptchaV2","setShowRecaptchaV2","isRecaptchaValid","setIsRecaptchaValid","executeRecaptcha","useGoogleReCaptcha","handleRecaptchaV3","featureIsOn","validateRecaptcha","v3","sessionStorage","handleRecaptchaV2","v2","version","_response$data$data","_response$data","Registration","ResendPin","ForgotPassword","AddNumberForNotification","Payment","ReCAPTCHA","sitekey","HybridRecaptcha","SendMeMail","recaptchaVerified","setRecaptchaVerified","handleTokenReceived","handleRecaptchaSuccess","handleRecaptchaFailure","RECAPTCHA_VERIFICATION_FAILED","SignupSchema","countryCode","INVALID_COUNTRY_CODE","INVALID_PHONE_NUMBER","FIELD_REQUIRED","PLEASE_COMPLETE_RECAPTCHA_VERIFICATION","validateOnChange","validateOnBlur","FORGOT_PASSWORD_SEND_ME_MAIL_DESC","BACK_TO_LOGIN","useSendEmail","sendEmail","phoneCountryCode","ForgotPasswordRedirect","languageList","abbreviation","flag","FlagUSA","FlagUK","FlagGermany","FlagItaly","StyledListItem","SelectLanguageDialog","SELECT_LANGUAGE","changeLanguage","ListItemIcon","resolvedLanguage","ForgotButtonWrapper","Login","pushToApp","isLanguageDialogOpen","setIsLanguageDialogOpen","LoginSchema","loginGuest","getLanguageName","l","PARKING_MADE_EASY","loginUser","PASSWORD","LOG_IN","LOG_IN_AS_GUEST","LanguageIcon","marginLeft","onTermsClick","LoginRedirect","Codecontainer","CodeInput","codeLength","handleValidation","setPin","setCode","activeInput","setActiveInput","inputs","focus","handleClick","v","handleOnInput","inputValue","currentTarget","handlePaste","newCode","pasteData","char","index","inputRef","_inputs$current$0$cur","pattern","nextIndex","nextInput","handleKeyDown","onInput","resendRegistrationPin","isPinSent","RESEND_CODE","ACTIVATION_CODE_HAS_BEEN_SENT","ACTIVATION_CODE_SEND_FAIL","phoneNumberAvailable","callback","result","is","ACCOUNT_ALREADY_EXISTS","PHONE_NUMBER_ALREADY_EXISTS","CodeStep","codeValid","setCodeValid","TYPE_ACTIVATION_CODE","CODE_MESSAGE","activeStep","CREATE","PersonalDataStep","resetStep","FIRSTNAME_CANNOT_BE_EMPTY","LASTNAME_CANNOT_BE_EMPTY","INVALID_EMAIL","EMAIL_CANNOT_BE_EMPTY","setPersonalData","PERSONAL_DATA","personalData","submitForm","FIRST_NAME","LAST_NAME","EMAIL","NEXT","backToLogin","RegistrationComplete","WELCOME","YOUR_ACCOUNT_HAS_BEEN_SUCCESFULLY_CREATED","Ok","SetPasswordStep","CREATE_PASSWORD","unwrapResult","isSubmitting","CONFIRM_PASSWORD","BACK","SignUp","showSuccess","setShowSuccess","completeStep","setCompleteStep","setConfirmToken","Switch","exact","submitCode","SignUpRedirect","FindCarsForm","FindCarSchema","INVALID_LICENCE_PLATE","ccLast4Digits","typeError","INVALID_CARD_NUMBER","validateOnMount","LICENCE_PLATE","LAST_4_CREDIT_CARD_DIGITS","FIND_CAR","FindCarsContainer","NO_PARKED_CARS","FindCarView","Cars","modal","alignItems","justifyContent","ParkingRatesModal","initDate","setInitDate","entryDate","setEntryDate","exitDate","setExitDate","onChangeEntryDate","entry","exit","subtract","onChangeExitDate","setDefaultDuration","hours","handleCalculate","cleanup","setInitDates","startDate","roundToFive","Modal","disableEnforceFocus","onExited","HOUR","HOURS","MobileDatePicker","allowSameDateSelection","minDate","maxDate","ENTRY_TIME","disablePast","renderInput","okText","cancelText","MobileTimePicker","minutesStep","minTime","maxTime","isSame","endOf","toolbarTitle","SELECT_TIME","EXIT_TIME","CALCULATE","handleClose","PinContainer","isSelected","hovered","CarMarker","$hover","PinCar","lotsCount","isCluster","pointCount","hoverColor","LotMarker","_props$lotsIds","setMounted","useTheme","MapPin","ClusterPin","PricePin","StandardPin","GpsIndicator","GpsMarkerHeading","HeadingGpsIndicator","GpsMarker","rootDialog","SelectCarDialog","onBackdropClick","closeDialog","button","Plate","ListItemSecondaryAction","SvgIcon","Outlined","Pin","NavButtons","disabledFindCar","onClickFindCar","PinDrop","onClickGps","GpsFixed","onClickPricing","MoneyOff","AttachMoney","SearchBoxContainer","iconRoot","SearchBox","inputEl","FormControl","searchValue","onSearchClick","showSearchView","_e$target$value","setSearchValue","onFocusCapture","PCODE_PARKING_NAME","startAdornment","Search","isSearchView","onClickClear","enterKeyHint","SelectedAreaContainer","ClosedInfo","gridRoot","gridAvatarRoot","paperRoot","capacityMessage","textOverflow","SelectedLotInfo","_lot$address","_lot$address2","_lot$address3","canParkCar","setCanParkCar","capacityFullMessageTrim","setCapacityFullMessageTrim","isCapacityFull","_lot$lotCapacity","isParkingClosed","isClosed","day","_getDateWithCustomTim","_getDateWithCustomTim2","isBetween","navigate","lotAddress","hoursString","_getDateWithCustomTim3","_getDateWithCustomTim4","newString","NoCarsParkingBtns","NAVIGATE","onParkCarClick","CLOSED","WithCarsParkingBtns","onTicketClick","TICKET","PARK_ANOTHER_CAR","Paper","loading","sizes","lotOpenOrClosedInfo","_lot$locationStoppedM","TEXT2PARK_IS_CURRENTLY_NOT_AVAILABLE","prevState","isClosedForWholeDay","_lot$openingHours$mom","TODAY_OPEN","TODAY_CLOSED","MapWrapper","mapOptions","disableDefaultUI","gestureHandling","Map","parkedLots","boundsToFetch","points","properties","geometry","coordinates","clusters","supercluster","useSupercluster","radius","GoogleMapReact","bootstrapURLKeys","resetBoundsOnResize","onChildClick","pointId","childProps","_clusters$find","dashIdx","indexOf","clusterLng","clusterLat","clusterId","expansionZoom","getClusterExpansionZoom","showSelectLotDialog","onZoomAnimationEnd","cluster","point_count","rootPrimaryText","paddingRight","rootItem","rootIcon","ListElement","onLotClick","Room","hasPrice","MapSelectLotDialog","SELECT_LOT","MapSearchViewContainer","MapSearchView","onContainerClick","hideSearchView","stopPropagation","HistoryList","Clock","NoFound","NO_SEARCH_HISTORY","MapContainer","searchBoxRef","setShowSearchView","showSelectCar","setShowSelectCar","setDisabledFindCar","showPricingModal","setShowPricingModal","setShowSelectLotDialog","availableCalls","getLotDetailsMapStatus","parkedCars","onClickSelectCar","redirectUrl","href","ceil","chunk","MapComponent","CSSTransition","timeout","classNames","SEARCH_BEST_PARKING_PRICING","MapSelectCarDialog","MapView","ReceiptBar","SendComplete","edge","handleMailIconClick","RefreshBroken","Message","handleQuestionIconClick","Question","MyReceipts","component","MyReceiptsPlaceholder","NO_RECEIPTS_FOUND","Receipt","MyReceiptsContainer","closeSnackbar","snackbarKey","reFetchData","close","persist","MyReceiptsView","MY_RECEIPTS","ReceiptInfoWrapper","ReceiptInfo","SendReceipt","SUCCESS","RECEIPT_WILL_BE_SENT_TO_PROVIDED_EMAIL","EmailInputSchema","SEND_RECEIPT","clientMail","SEND","SendReceiptPage","fetchData","StyledCodeInput","CodeStepPopup","showCodeStepPopup","handleResendCode","TYPE_CONFIRMATION_CODE","MESSAGE_WITH_CONFIRMATION_CODE_HAS_BEEN_SENT","Box","marginTop","YOU_DIDNT_RECEIVE_THE_CODE","CONFIRM","RedirectType","useResendCode","verificationType","SavingGuestsPhoneNumber","useSendVerificationSMS","setShowCodeStepPopup","tokenValuePart","useGetCars","usePaymentCard","parkMode","useParkMode","parkCarCard","setPaymentCard","unsetPaymentCard","paymentCard","useGetTicket","carIdParam","setCarId","carIdProp","useInitParkCar","initLoad","isLoading","setIsLoading","isDone","setIsDone","isError","setIsError","creditCardUsed","setStatusParkCar","setStatusAddTime","useExpiredPricingPopup","goTo","useParkCarPath","fullRefresh","AllDayTick","ALL_DAY_UNTIL","FormControlLabel","control","isChecked","setIsChecked","ParkingExpiresSection","_props$validations","CONVENIENCE_FEE","DetailsBox","validator","VALIDATED","changePricingBtn","changePricingOnClick","CHANGE_PRICING","TermsButton","onClickTerms","useTerms","defaultCurrency","TotalText","setCurrency","TOTAL","LoginInfo","LoginInfoSeparator","LoginInfoContainer","TermsOfServiceCheckbox","PaySection","isOpen","setIsOpen","getLanguageEnum","toLocaleLowerCase","En_GB","De_de","It_it","En_US","direction","READ_AND_AGREE","openTermsOfServicePopup","onlyButton","isTosChecked","setIsTosChecked","onValidateClick","VALIDATE","clientDateTime","onNextClick","PARK","flexItem","orientation","showNeedHelp","NEED_HELP","fee","SelectTimeSection","days","minutes","isAddTime","onDaysChange","onHoursChange","onMinutesChange","areThreeSelectsVisible","hoursAndMinuteSelectsVisible","dayAndHourSelectsVisible","onlyHourSelectVisible","onlyDaySelectVisible","onlyMinuteSelectVisible","dayAndMinuteSelectVisible","maxValueLastLimitationD","floor","maxTotalMinutes","maxValueLastLimitationH","maxValueLastLimitationM","h","m","Information","REMAINING_MAXIMUM_PARKING_TIME","MAXIMUM_PARKING_TIME","MINUTES_SHORT","HOURS_SHORT","DAY","DAYS","DAY_SHORT","LotNameSection","StyledAppButton","SelectPricingSection","SELECT_PRICING","MonthlyParkingExpiresSection","expiresAt","LicenseField","option","Autocomplete","freeSolo","onSelect","clearIcon","SpotField","SPOT_NUMBER","SelectedLotTitle","selectedLotOnMap","selectedLotOnPark","WantMonthly","isWantMonthly","wantMonthlyHandler","useWantMonthly","useAutoClearTimeExceedingPopup","useParkCarRedirect","setisLoading","redirectRes","parkCarPay","useRouteMatch","parkCarPaid","parkCarSelectCard","parkManageCards","parkCarAddCard","useParkDetails","parkingStartDateTime","upfrontCoupons","Coupon","validatorName","useParkCar","showExpiredPopup","showAutoClearTimeExceedingPopup","redirectIsLoading","getTicketIsLoading","paymentRequired","ticketPromise","_lot$monthlyParkerInf","parkerMonthlyId","monthlyParkerInfo","parkTime","newLotId","setNewLotId","monthly","_state$parkCar$lot","Monthly","Transient","setParkMode","view","isLink","externalParkCarPath","lotOrCarId","useGetPrice","parkingFee","PARKING_FEE","selfRegisterUrl","handle","useSubmitForm","redirectType","existingParams","fromEntries","ContactInformations","handleSubmitWithPhoneNumber","contactInformationsSchema","NOTIFICATIONS","RECEIPTS_AND_NOTIFICATIONS","NOTIFICATIONS_SUBTITLE","PLEASE_ENTER_YOUR_MOBILE_PHONE","PLEASE_ENTER_YOUR_EMAIL","enableReinitialize","handleOnConfirm","handleOnSubmit","SKIP","ALREADY_HAVE_AN_ACCOUNT","LOGIN","OR","ParkingDetails","filterUnits","colorInterpolationFilters","floodOpacity","dy","stdDeviation","in2","StyledCardWrapper","touch","unknown","CardWrapper","C","CreditCardsPlaceholder","NoCreditCard","ChooseCard","goToPayment","paymentPath","onManageCards","manageCardPath","onAddCard","addCardPath","ALMOST_FINISHED","TAP_ADD_NEW_CARD","ADD_NEW_CARD","TAP_STORED_CARD","TO_ADD_NEW_TAP_MANAGE_CARDS","focusOnSelect","initialSlide","MANAGE_CARDS","SELECT_CARD","CounterContext","useCounterContext","CounterProvider","setCounter","stopCounter","clearCounter","CancelParkCarDialog","CANCEL_PARKING_PROCESS","ARE_YOU_SURE_YOU_WANT_TO_CANCEL_PARKING_PROCESS","onYesClick","YES","NO","ContactInformationsPage","showDialog","setShowDialog","ReceiptsAndNotifications","sendReceiptSchema","PARKING_NOTIFICATIONS","TO_RECEIVE_PARKING_EXPIRATION_TEXT_MESSAGES","ReceiptsAndNotifiactionsPage","externalService","MyProfileDetails","_props$details","_props$details2","_props$details3","_props$details4","wordWrap","Phone","newPhoneNumber","phoneUtil","PhoneNumberUtil","getInstance","parsedPhoneNumber","phoneNumberCountryCode","PhoneNumberFormat","INTERNATIONAL","Envelope","EDIT","MyProfile","onClickRefresh","SIGN_OUT","PlateIcon","CarBar","carSlice","carPlate","handleDeleteClick","Delete","MyCars","_props$cars","handlePopup","DELETE_CAR","ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_CAR","resultAction","TransitionGroup","Slide","appear","carAmount","carTitle","MY_CARS","shouldRenderError","Grow","MyCarsDetails","ADD_NEW_CAR","CardIcon","img","CreditCardBar","noRightAction","cardIcon","masterCard","dinersClub","visa","jcb","discover","americanExpress","getCreditCardIcon","CreditCardsList","_props$creditCards","DELETE_CREDIT_CARD","ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_CREDIT_CARD","_ticket$lot","MyCreditCards","LastReceipt","LAST_RECEIPT","onClickCapture","SEE_MORE","ParkerContainer","_ticket$lot2","ParkerComponent","ParkerContainerGuest","PLEASE_LOGIN_TO_DISCOVER_WHOLE_APPP_FUNCTIONALITY","Unlock","ParkerPage","ConfirmPopup","onConfirmClick","showConfirmPopup","SpotNumber","PLEASE_CONFIRM_YOU_ARE_IN_SPOT","StyledLink","NeedHelpPopup","showNeedHelpPopup","companyDetails","setCompanyDetails","companyDetailsError","setCompanyDetailsError","fetchCompanyContactInfo","CONTACT_INFORMATION","COMPANY_NAME","companyName","PHONE","phone","WEBSITE","rel","website","handleClosePopup","MonthlyParkCarCard","_lot$spot2","_lot$spot3","licencePlate","setLicencePlate","setSpotNumber","setShowConfirmPopup","setShowNeedHelpPopup","onPayConfirm","expireMonthlyParkingDateTime","onPayClick","_lot$spot","spotNumberSchema","_lot$spot4","_lot$spot5","_lot$spot6","_lot$spot7","_lot$spot8","_lot$spot9","yupSchema","SPOT_NUMBER_MUST_BE_BETWEEN","SPOT_NUMBER_IS_REQUIRED","parkCarSchema","PLATE_CANNOT_BE_EMPTY","ONLY_ALPHANUMERIC_CHARACTERS_ARE_ALLOWED","usePayButton","isAllDay","selectedTimeOption","hasSpot","pricePromiseFullfilled","isTos","isPayButtonDisabled","setIsPayButtonDisabled","setButton","SelectPriceItem","Label","TimeSelectOptionDialog","PRICING_LIST","timeSelectOptions","onClickItem","useEndDate","parkForCustomTimeDate","parkForDefaultTimeDate","parkUntilDate","periodMode","useExternalPricing","currentTime","getPricing","valAreaId","INVALID_END_TIME","NO_AVAILABLE_PARKING_AT_CURRENT_TIME","el1","el2","SERVICE_TEMPORARILY_UNAVAILABLE_TRY_AGAIN_LATER","parkCarT2Schema","BMT","LICENCE_PLATE_IS_REQUIRED","defaultMinutes","selectedPricing","lastListView","isSpotEnabled","ParkCarT2Form","setInit","utils","useResetForm","useT2Counter","useCurrentTime","currentDateRef","useMinDate","setMinDate","useFailedPay","setExpiredPricingPopup","setAutoClearTimeExceedingPopup","onFailClick","onSessionExpiredClick","setExpiredPopup","handleRejection","ExpirationPopupTimer","expiryTimestamp","useTimer","onExpire","ParkCarCard","_selectedTimeOption$i","_selectedTimeOption$i2","_selectedTimeOption$i3","_selectedTimeOption$i4","_selectedTimeOption$i5","_selectedTimeOption$i6","_selectedTimeOption$i7","_selectedTimeOption$i8","_selectedTimeOption$i9","_selectedTimeOption$i10","setMinutes","setHours","setDays","setIsAllDay","showTimeSelectOptionDialog","setShowTimeSelectOptionDialog","setSelectedTimeOption","setIntervalOptions","setInitialTimeValue","setPreviouslyChosenTimeValues","parkingTimeMinutes","preValidationSettings","parkingTimeHours","parkingTimeDays","MultiChoiceSubtype","_lot$timeSelectOption","_state$preValidationS","replaceState","preSelectedTimeOption","pricingIntervalPayload","fetchPricing","_selectedTimeOption$i11","_selectedTimeOption$i12","_selectedTimeOption$i13","_selectedTimeOption$i14","_selectedTimeOption$i15","_selectedTimeOption$i16","_selectedTimeOption$i17","_selectedTimeOption$i18","_selectedTimeOption$i19","_selectedTimeOption$i20","pricingNonIntervalPayload","_lot$timeSelectOption2","PARKING_UNAVAILABLE","BUY_MORE_TIME_OPTION_IS_UNVAILABLE_BECAUSE_MAXIMUM_PARKING_TIME_HAS_BEEN_REACHED","WE_ARE_SORRY_BUT_THE_CURRENT_PARKING_IS_NOT_AVAILABLE","onSelectPricingClick","initLicencePlate","initSpotNumber","expirationTime","getSeconds","setTouched","usePay","setLoading","onFailedPay","onSuccessPayment","PAYMENT_SUCCESSFUL","expirationMonth","expirationYear","useTimeoutCounter","runTimer","useBuyMoreTime","payIsLoading","stopTimer","requiresPayment","ParkCarDefault","parkCarLoading","getPriceLoading","isLoadingBMT","showStoppedLocationOnMap","TEXT2PARK_NOT_AVAILABLE","_lot$lotCapacity$capa","_lot$lotCapacity2","NO_SPACES_AVAILABLE","SelectParkUntil","convertedDate","onAccept","PeriodSwitch","Spot","SelectCustomTime","SelectedTick","StyledButton","$noColor","SelectDefaultTime","buttonValues","ALL_DAY","startIcon","SubmitButton","PAY","License","PricingList","obj","limit","TotalAmount","setSelected","SummaryBox","hasChargeFees","_pricing$fees","reduce","prev","curr","RemaingTime","ExcerptList","onClickMore","onClickSubmit","FullList","ParkCarT2SelectPricing","setFullList","ParkCarT2SetTime","resetForm","ParkCarT2Summary","isLoadingParkCar","ParkCarT2Switch","parkCarPath","initFetch","render","ParkCarT2","ParkCar","notExpiredTickets","onpageshow","persisted","T2","AwaitTransactionPage","transactionId","fetchTicket","unpaidRedirection","BACK_TO_TICKETS","fetchTransactionStatus","SuccessfulCommit","SuccessfulPreAuth","validateCardNumber","str","luhnValidateUnionPay","validateExpirationDate","dateStr","expirationDate","asterisks2Digits","InputWithSlash","AddCreditCardForm","currentInput","setCurrentInput","inputRefs","focusNextInput","creditCard","_e$currentTarget$valu","_inputRefs$current$cu","attributes","getNamedItem","creditCardSchema","cardnumber","CREDIT_CARD_SHOULD_NOT_BE_EMPTY","month","DATE_SHOULD_NOT_BE_EMPTY","DATE_IS_INVALID","_this$parent$year","_this$parent","this","parent","year","validateExpirationMonth","_this$parent$month","_this$parent2","validateExpirationYear","billing","ZIP_CODE_SHOULD_NOT_BE_EMPTY","INVALID_ZIP_CODE","touched","onFocus","CREDIT_CARD_NUMBER","setCardType","MONTH_SHORT","setMonth","YEAR_SHORT","setYear","ZIP_CODE","buttonProps","ADD_CARD","StyledCardWrapperFullDetails","digits","ExpDate","CardWrapperFullDetails","AddCreditCard","setCardNumber","payPath","tempCard","showElement","spinner","sm","AddCardPage","ADD_CREDIT_CARD","ManageCards","AddCardButton","fetchCards","whiteBox","ManageCardsPage","MANAGE_CREDIT_CARDS","SelectCardGuestWrapper","chooseCard","SelectCardWrapper","initCardIndex","SelectCreditCardPage","AddTimeSelectCardPage","PaymentSuccessful","SuccessTick","IconsWrapper","PaymentSummaryDetails","parkStateDate","parkEndDate","minValue","useSignificantDigits","countParkTime","noWrap","ZipCodeForm","_props$creditCard","zipCodeRef","_zipCodeRef$current","StyledCreditCardBar","ParkCarSummaryView","onOkClick","BILLING_ZIP_CODE","ENTER_ZIP_CODE","summaryProps","ParkCarSummary","summary","ParkCarSummaryPage","noTopbarButtons","AddTimeSummaryPage","submitBMT","ParkCarView","ParkCarSummarySuccessPage","PcodeSignIn","redirectFromQrCode","trySignIn","getLotDetailsFromPcode","SelectLotDialog","isMonthlyParker","BuyMoreTime","useTicketActions","onClickValidate","onClickReceipt","hasLotGeolocation","_ticket$lot$geolocati","_ticket$lot$geolocati2","isExpired","LotName","hasRightElement","TicketUnpaidButtons","onClickPay","TicketValidButtons","onClickAddTime","ADD_TIME","TicketExpiredButtons","isExternalService","parkAgainEnable","onClickParkAgain","PARK_AGAIN","InfoBox","valid","CarRow","ParkingExpireRow","SeeDetailsRow","formatDate","TicketDetails","_ticket$settlement","_ticket$settlement2","onClickDetails","isTicketValid","SEE_DETAILS","variantMapping","DetailsDialog","nameText","PARKED","BUY_MORE_TIME","TICKET_DETAILS","TicketStandard","isTicketExpired","expired","unpaid","parked","displayReceipt","Normal","TicketDetailsDialog","Ticket","TicketNormal","slidesToShow","TicketsCarousel","_props$tickets","setMinHeight","selectedTicketIndex","renderTickets","clientHeight","TicketsPlaceholder","ParkedCars","TicketsContainer","REFRESHING_DATA","onParkCar","TicketsView","expiredTickets","CAR_PARKED","CARS_PARKED","TicketsGuestView","InfoContainer","InformationText","infoIcon","ValidateTicket","qrValidationMessage","PLEASE_SCAN_THE_POSTED_QR_CODE","VALIDATOR_INFO","ACCEPT","UpfrontValidate","validationCode","TICKET_HAS_BEEN_VALIDATED","listItemRoot","listTextRoot","ValidateBar","ValidationTicketPlaceholder","Validators","p","ValidatorBar","handleRedirection","ValidatorsPlaceholder","NO_VALIDATORS_FOUND","Validator","UpfrontValidationView","FETCH_RECEIPTS_ERROR","Validate","ValidatorsView","SignedInAsGuestRoutes","Parker","ParkCarAddCreditCard","ParkCarManageCards","FindCars","ParkCarSelectCreditCard","ReceiptsAndNotificationsPage","TicketsGuest","strict","LoginRedirectLoader","CarInputSchema","THE_CAR_HAS_BEEN_ADDED","CAR_NAME","messages","AddCarView","PasswordInput","GreyButton","EditProfile","YOUR_ACCOUNT_CANNOT_BE_SAVE","PLEASE_TRY_AGAIN_LATER","YOUR_ACCOUNT_HAS_BEEN_SUCCESSFULLY_SAVED","DELETE_MY_ACCOUNT","ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_ACCOUNT","dirty","readOnly","onClickChangePass","CHANGE_PASSWORD","SAVE","EditProfileView","EDIT_MY_INFO","form","ChangePassword","currentPassword","CURRENT_PASSWORD_CANNOT_BE_EMPTY","PLEASE_PROVIDE_YOUR_CURRENT_PASSWORD_AND_SET_THE_NEW_ONE","CURRENT_PASSWORD","CHANGE","onClickCancel","ChangePassowrdContainer","YOUR_PASSWORD_HAS_BEEN_CHANGED","ChangePasswordPage","AppPopupProvider","DeleteAccount","errorPopup","YOUR_ACCOUNT_CANNOT_BE_DELETED_AT_THE_MOMENT","INVALID_PASSWORD","YOUR_ACCOUNT_HAS_BEEN_DELETED","PLEASE_PROVIDE_YOUR_PASSWORD_TO_REMOVE_YOUR_ACCOUNT","DeleteAccountView","QuestionSchema","QUESTION_CANNOT_BE_EMPTY","YOUR_QUESTION_HAS_BEEN_SENT","YOUR_EMAIL_ADDRESS","QUESTION","rows","QuestionPage","SEND_QUESTION","SignedInRoutes","ChangePasswordView","Tickets","WhiteThemeRoutes","SignedOutRoutes","ParkCarSmsPage","addMoreTime","fetchLot","MapSmsPage","effectedRef","isCorporation","fetchLots","_res$lots$","clearTimeout","LandingPageRedirect","redirectFromLandinPage","Root","AppRoutes","ParkCarSms","LogSource","LogType","FallbackComponent","APPLICATION_CRASHED","RESTART_APPLICATION","resetErrorBoundary","ErrorsWrapper","ErrorBoundary","appVersion","browserName","browserVersion","getDeviceInfo","navUserAgent","tempNameOffset","tempVersionOffset","tempVersion","appName","parseFloat","deviceInfo","stack","logAction","logMessage","logSource","WebApp","logType","onReset","LogoContainer","tagName","TermsAndConditions","imageError","setImageError","Terms","Interweave","TermsDialog","onkeydown","keyCode","connect","jump","LoaderContainer","SvgContainer","Loader","ParkerlinkIcon","Timer","automaticLogout","remainingTime","setRemainingTime","timerId","prevTime","resetTimer","formatTime","AutoLogout","App","locale","StyledEngineProvider","injectFirst","StyledThemeProvider","MuiThemeProvider","LocalizationProvider","dateAdapter","AdapterMoment","GoogleReCaptchaProvider","reCaptchaKey","GlobalPopup","isLocalhost","hostname","registerValidSW","swUrl","serviceWorker","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","createBrowserHistory","lastLocation","listen","prevHistoryPush","hash","ClearCacheComponent","ReactDOM","Router","URL","origin","contentType","ready","unregister","checkValidServiceWorker"],"mappings":"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,GAC9CD,GAAW,GAGX7vC,EACEitB,GAAU,IACL6iB,EAAQtrD,QACX83B,4BAA6BA,IAAM+vB,EAASz8C,KAGlD,EAGF,OAAKqL,EAEHkoB,eAACiR,KAAa,CAACnK,MAAO+kB,GAAWtzD,SAAA,CAC/BH,cAACuwD,GAAc,CAACQ,aAAcD,IAC9B9wD,cAACg9C,GAAU,CAAC+N,KAAMtrC,EAAQtf,SACxBH,cAACgyD,GAAsB,SALVhyD,cAACqjC,KAAQ,CAACC,GAAIM,GAAMC,KAAKA,MAO1B,ECTL4wB,OAtBXp2D,IACF,MAAM,EAAEyb,GAAMs2B,eAEd,OACEpwC,cAACgkD,GAAU,CAACn8C,WAAS,EAACo7C,iBAAe,EAAA9iD,SACnCynC,eAACwb,GAAgB,CAAAjjD,SAAA,CACfH,cAACi3C,GAAW,CACVjwC,MAAO8S,EAAErP,GAAaiqD,gBACtBxd,SAAUp9B,EAAErP,GAAakqD,yBAAyBx0D,SAElDH,cAACuxC,EAAWqjB,KAAI,MAElB50D,cAACsyC,GAAO,CAACL,cAAY,EAAA9xC,SACnBH,cAACuzC,GAAS,CAACtsC,QAAQ,WAAWusC,QAASn1C,EAAMs9C,OAAOx7C,SACjD2Z,EAAErP,GAAauoC,YAIX,E,4BCpCV,MAAM6hB,GAAwB,CACnC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MClPkC5oB,KAAOsC,GAAG;;;EAAvC,MAKMumB,GAAmB7oB,aAAO8oB,KAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BChBnC;;;;;;ED0HAC,OAvDc32D,IAC3B,MAAM,EAAEyb,GAAMs2B,gBACP6kB,EAAQC,GAAa12D,mBAAS,KAC/B,cAAE22D,EAAa,WAAEjE,EAAU,OAAEF,GAAWoE,eACxCz6B,EAAW96B,OAAOo/C,UAAUtkB,SAS5B06B,GAPuB76B,EAQ3BG,EAAS26B,cACTT,GARuCtmC,MAAK1N,GAC1C2Z,EAAK/f,SAASoG,EAAQy0C,kBAEE,MAJAC,IAAC/6B,EAkB7B,OANA/7B,qBAAU,KACJJ,EAAMm+B,OACR04B,EAAU72D,EAAMm+B,MAClB,GAC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","file":"static/js/main.ec921e70.chunk.js","sourcesContent":["import React, { useState, useEffect } from 'react'\r\nimport packageJson from '../package.json'\r\nimport moment from 'moment'\r\n\r\nconst buildDateGreaterThan = (latestDate: number, currentDate: number) => {\r\n const momLatestDateTime = moment(latestDate)\r\n const momCurrentDateTime = moment(currentDate)\r\n\r\n if (momLatestDateTime.isAfter(momCurrentDateTime)) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nfunction withClearCache(Component: any) {\r\n function ClearCacheComponent(props: any) {\r\n const [isLatestBuildDate, setIsLatestBuildDate] = useState(false)\r\n\r\n const refreshCacheAndReload = () => {\r\n if (caches) {\r\n // Service worker cache should be cleared with caches.delete()\r\n caches.keys().then(names => {\r\n for (const name of names) {\r\n caches.delete(name)\r\n }\r\n })\r\n }\r\n // delete browser cache and hard reload\r\n window.location.reload()\r\n }\r\n\r\n useEffect(() => {\r\n fetch('/meta.json')\r\n .then(response => response.json())\r\n .then(meta => {\r\n const latestVersionDate = meta.buildDate\r\n const currentVersionDate = packageJson.buildDate\r\n\r\n const shouldForceRefresh = buildDateGreaterThan(\r\n latestVersionDate,\r\n currentVersionDate\r\n )\r\n if (shouldForceRefresh) {\r\n setIsLatestBuildDate(false)\r\n refreshCacheAndReload()\r\n } else {\r\n setIsLatestBuildDate(true)\r\n }\r\n })\r\n }, [])\r\n\r\n return (\r\n \r\n {isLatestBuildDate ? : null}\r\n \r\n )\r\n }\r\n\r\n return ClearCacheComponent\r\n}\r\n\r\nexport default withClearCache\r\n","export const API_URL = (window as any).appConfig?.API_URL\r\nexport const TEZ_PAY_API_URL = (window as any).appConfig?.TEZ_PAY_API_URL\r\nexport const GOOGLE_KEY = (window as any).appConfig?.GOOGLE_KEY\r\nexport const TIME_TO_LOGOUT = (window as any).appConfig?.TIME_TO_LOGOUT\r\nexport const CAPTCHA_V2_KEY = (window as any).appConfig?.CAPTCHA_V2_KEY\r\nexport const CAPTCHA_V3_KEY = (window as any).appConfig?.CAPTCHA_V3_KEY\r\nexport const CAPTCHA_V2_ENABLE = (window as any).appConfig?.CAPTCHA_V2_ENABLE\r\nexport const CAPTCHA_V3_ENABLE = (window as any).appConfig?.CAPTCHA_V3_ENABLE\r\nexport const CAPTCHA_VALIDATE_REGISTRATION = (window as any).appConfig?.VALIDATE_FEATURE.REGISTRATION\r\nexport const CAPTCHA_VALIDATE_RESEND_PIN = (window as any).appConfig?.VALIDATE_FEATURE.RESEND_PIN\r\nexport const CAPTCHA_VALIDATE_FORGOT_PASSWORD = (window as any).appConfig?.VALIDATE_FEATURE.FORGOT_PASSWORD\r\nexport const CAPTCHA_VALIDATE_ADD_NUMBER_FOR_NOTIFICATION = (window as any).appConfig?.VALIDATE_FEATURE.ADD_NUMBER_FOR_NOTIFICATION\r\nexport const CAPTCHA_VALIDATE_PAYMENT = (window as any).appConfig?.VALIDATE_FEATURE.PAYMENT\r\n","import axios, { AxiosRequestConfig } from 'axios'\r\nimport { API_URL } from './config'\r\n\r\nconst axiosRequestConfig: AxiosRequestConfig = {\r\n baseURL: API_URL,\r\n headers: { Version: '1.0', 'Content-Type': 'application/json' },\r\n}\r\n\r\nconst instance = axios.create(axiosRequestConfig)\r\nconst mockedAxios = axios.create(axiosRequestConfig)\r\n\r\ninstance.interceptors.response.use(\r\n response => {\r\n return response\r\n },\r\n function (err) {\r\n if (process.env.NODE_ENV === 'test') {\r\n const { url, method } = err.response.config\r\n process.stdout.write(\r\n `\\u001b[1;33m Unhandled API call - ${method}${url}\\n`\r\n )\r\n }\r\n return Promise.reject(err)\r\n }\r\n)\r\nmockedAxios.interceptors.response.use(\r\n response => {\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n 'API MOCK -',\r\n response.status,\r\n response.config.method?.toUpperCase(),\r\n response.config.url,\r\n { req: response.config.params, resp: response.data.data }\r\n )\r\n return response\r\n },\r\n function (err) {\r\n if (\r\n process.env.NODE_ENV === 'development' ||\r\n process.env.NODE_ENV === 'test'\r\n )\r\n // eslint-disable-next-line no-console\r\n console.log({ err })\r\n return Promise.reject(err)\r\n }\r\n)\r\n\r\nexport { mockedAxios }\r\nexport default instance\r\n","import i18n from 'i18next'\r\nimport LanguageDetector from 'i18next-browser-languagedetector'\r\nimport { initReactI18next } from 'react-i18next'\r\nimport enTranslation from './resources/translation-en.json'\r\nimport itTranslation from './resources/translation-it.json'\r\nimport deTranslation from './resources/translation-de.json'\r\nimport enGbTranslation from './resources/translation-en-gb.json'\r\n\r\ni18n\r\n .use(initReactI18next)\r\n .use(LanguageDetector)\r\n .init({\r\n resources: {\r\n 'en-US': {\r\n translation: enTranslation,\r\n },\r\n 'en-GB': {\r\n translation: enGbTranslation,\r\n },\r\n 'it-IT': {\r\n translation: itTranslation,\r\n },\r\n it: {\r\n translation: itTranslation,\r\n },\r\n de: {\r\n translation: deTranslation,\r\n },\r\n 'de-DE': {\r\n translation: deTranslation,\r\n },\r\n },\r\n detection: {\r\n order: ['localStorage', 'navigator'],\r\n },\r\n // whitelist: ['en', 'es'],\r\n load: 'currentOnly',\r\n fallbackLng: 'en-US',\r\n nonExplicitSupportedLngs: true,\r\n // debug: isLocalhost,\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n })\r\n\r\nexport default i18n\r\n","import { Popup } from './popup'\r\n\r\nexport interface Response {\r\n data: T\r\n errors: Error[]\r\n}\r\n\r\nexport interface Error {\r\n errorCode: ErrorCode\r\n message: string\r\n}\r\n\r\nexport enum ErrorCode {\r\n UnauthorizedAccess = 4001,\r\n IncorrectUserOrPassword = 4002,\r\n CannotPerformActionAsGuest = 4003,\r\n CannotPerformActionAsUser = 4004,\r\n CustomerDoesntExist = 4005,\r\n AmbiguousLogin = 4006,\r\n PasswordDoesNotMeetLengthRequirements = 4007,\r\n PhoneNumberAndItsCountryCodeCannotBeEmpty = 4008,\r\n NewPasswordHasToBeDifferent = 4009,\r\n IncorrectConfirmToken = 4010,\r\n IncorrectPin = 4011,\r\n NoUserAssignedToGivenEMail = 4012,\r\n NotEnoughParameters = 4013,\r\n ParkingLotNotFound = 4014,\r\n InvalidParkerUser = 4016,\r\n InvalidMonthlyParkingGroup = 4017,\r\n IncorrectMode = 4019,\r\n IncorrectParameterException = 4020,\r\n CarNotFound = 4021,\r\n CreditCardNotFound = 4022,\r\n TicketNotFound = 4023,\r\n IncorrectPassword = 4024,\r\n ObjectExist = 4025,\r\n IncorrectValidationCouponCode = 4026,\r\n ConflictWithCurrentObjectState = 4027,\r\n MonthlyParkingIsDisabledForThisLocation = 4028,\r\n ParkCarUsingExitGate = 4029,\r\n ParkCarWhileAnotherIsParked = 4030,\r\n ParkingIsClosed = 4031,\r\n TriedToExitWithUnpaidTicket = 4032,\r\n PaymentTimeExpired = 4033,\r\n AreaNoIntegrationEnabled = 4034,\r\n CurrentPricingIsExpired = 4035,\r\n HasParkedCars = 4036,\r\n AutoClearTimeExeeded = 4037,\r\n ParkingIsUnavailable = 4039,\r\n TokenExpired = 4040,\r\n UserIsNotHuman = 4042,\r\n OtherError = 4999,\r\n NotImplementedException = 5000,\r\n InconsistentData = 5001,\r\n FailedSaveCar = 5002,\r\n FailedSaveCarPayment = 5003,\r\n FailedParkCar = 5004,\r\n FailedDeleteCreditCard = 5005,\r\n FailedBuyMoreTime = 5006,\r\n}\r\n\r\nexport enum FetchStatus {\r\n Idle = 'idle',\r\n Pending = 'pending',\r\n Fulfilled = 'fulfilled',\r\n Rejected = 'rejected',\r\n}\r\nexport interface ErrorData {\r\n title: string\r\n description: string\r\n variant: Popup['variant']\r\n code: number\r\n}\r\n\r\nexport type ErrorResponse = Partial<\r\n Record, Partial>\r\n>\r\nexport type ErrorResponses = Record>\r\n","export enum CardType {\r\n Visa = 1,\r\n MasterCard = 2,\r\n AmericanExpress = 3,\r\n DinersClub = 4,\r\n Discover = 5,\r\n JCB = 6,\r\n Invalid = 7,\r\n}\r\n\r\nexport interface CreditCard {\r\n lotId?: string\r\n creditCardId?: string\r\n last4Digits: string\r\n cardType: CardType\r\n ccNumber?: string\r\n expirationYear?: number\r\n expirationMonth?: number\r\n zipCode?: string\r\n}\r\n\r\nexport interface AddCreditCardPayload {\r\n lotId?: string\r\n ccNumber: string\r\n zipCode?: string\r\n expirationYear: number\r\n expirationMonth: number\r\n}\r\nexport interface GetCreditCardsPayload {\r\n lotId?: string\r\n}\r\nexport interface RemoveCreditCardPayload {\r\n lotId?: string\r\n creditCardId: string\r\n}\r\nexport interface AddCreditCardData {\r\n creditCardId: string\r\n}\r\n\r\nexport interface GetCreditCardsData {\r\n creditCards: CreditCard[]\r\n}\r\nexport type RemoveCreditCardData = boolean\r\n","import { CreditCard } from './creditCards'\r\nimport { Ticket } from './ticket'\r\n\r\nexport enum LoginMode {\r\n User = 1,\r\n Guest = 2,\r\n}\r\n\r\nexport enum UserRole {\r\n User = 1,\r\n Guest = 2,\r\n}\r\n\r\nexport interface Tokens {\r\n auth: string\r\n expires: number\r\n refresh: string\r\n}\r\n\r\nexport interface CustomerTokens {\r\n tokens: Tokens\r\n role: UserRole\r\n}\r\n\r\nexport interface CustomerDetails {\r\n firstName?: string\r\n lastName?: string\r\n phoneNumberCountryCode?: number\r\n phoneNumber?: string\r\n email?: string\r\n}\r\n\r\nexport interface RegisterParams {\r\n firstName: string\r\n lastName: string\r\n phoneCountryCode: number\r\n phoneNumber: string\r\n email: string\r\n password: string\r\n creditCard?: CreditCard\r\n recaptchaToken: string\r\n}\r\n\r\nexport interface RegisterResult {\r\n confirmToken: string\r\n}\r\n\r\nexport interface ConfirmRegisterParams {\r\n confirmToken: string\r\n pin: string\r\n}\r\nexport interface ConfirmRegisterData {\r\n tokens: Tokens\r\n role: UserRole\r\n}\r\n\r\nexport interface PhoneNumberAvailableParams {\r\n phoneCountryCode: number\r\n phoneNumber: string\r\n}\r\n\r\nexport interface ResendRegistrationPinParams {\r\n confirmToken: string\r\n recaptchaToken: string\r\n}\r\n\r\nexport interface EditCustomerParams {\r\n firstName: string\r\n lastName: string\r\n email: string\r\n}\r\n\r\nexport interface PhoneNumberAvailableResult {\r\n is: boolean\r\n}\r\n\r\nexport interface LoginRequest {\r\n phoneNumber?: number\r\n password?: string\r\n countryCode?: number\r\n mode: UserRole\r\n}\r\n\r\nexport interface LoginResult {\r\n tokens: Tokens\r\n role: UserRole\r\n}\r\nexport interface RemindPasswordParams {\r\n phoneCountryCode: number\r\n phoneNumber: string\r\n recaptchaToken: string\r\n}\r\n\r\nexport interface ResetPasswordRequest {\r\n confirmToken: string\r\n password: string\r\n}\r\n\r\nexport interface ResetPasswordResult {\r\n tokens: Tokens\r\n role: UserRole\r\n}\r\nexport interface ChangePasswordRequest {\r\n password: string\r\n newPassword: string\r\n}\r\n\r\nexport interface ResetPasswordResult {\r\n tokens: Tokens\r\n role: UserRole\r\n}\r\n\r\nexport interface RefreshTokenRequest {\r\n token: string\r\n}\r\nexport type RefreshTokenResult = LoginResult\r\nexport interface FindCarPayload {\r\n plate?: string\r\n ccLast4Digits?: string\r\n}\r\nexport interface FindCarData {\r\n ticket: Ticket\r\n tokens?: Tokens\r\n}\r\n","import { DayOfWeek } from './time'\r\nimport { Address } from './address'\r\nimport { Geolocation } from './geolocation'\r\nimport { Currency } from './ticket'\r\nimport { Tokens, UserRole } from './customer'\r\nimport { CreditCard } from './creditCards'\r\nimport { CustomerTokens } from './customer'\r\n\r\nexport enum LotType {\r\n Business = 1,\r\n Residential = 2,\r\n}\r\n\r\nexport enum CustomStylesValue {\r\n Url = 1,\r\n Color = 2,\r\n}\r\nexport enum CustomStylesElement {\r\n Header = 1,\r\n CardBackground = 2,\r\n}\r\nexport interface LotCustomStyles {\r\n value: string\r\n valueType: CustomStylesValue\r\n elementType: CustomStylesElement\r\n}\r\nexport interface OpeningHoursInDay {\r\n startTime: string\r\n endTime: string\r\n}\r\n\r\nexport interface OpeningHours {\r\n dayOfWeek: DayOfWeek\r\n openingHoursInDay: OpeningHoursInDay[]\r\n}\r\n\r\nexport interface GetMapLots {\r\n northEastBoundLat: number\r\n northEastBoundLng: number\r\n southWestBoundLat: number\r\n southWestBoundLng: number\r\n}\r\n\r\nexport interface Spot {\r\n isEnabled: boolean\r\n minSpotNumber?: number\r\n maxSpotNumber?: number\r\n}\r\n\r\nexport enum OptionType {\r\n UntilNextDayStart = 0,\r\n Hrs24 = 1,\r\n ToSpecificTime = 2,\r\n MultiIncrementalSubtype = 3,\r\n MultiChoiceSubtype = 4,\r\n}\r\nexport enum PricingType {\r\n NoT2P = 0,\r\n Mix = 1,\r\n TPP = 2,\r\n Multi = 3,\r\n Residential = 101,\r\n}\r\n\r\nexport enum ExternalPricingType {\r\n NoIntegration = 0,\r\n T2 = 1,\r\n}\r\nexport interface SpecialPriceChoice {\r\n type: PricingType\r\n endDateTime: string\r\n specialLabelChoice: string\r\n amount: number\r\n convenienceFee?: number\r\n currency: string\r\n}\r\n\r\nexport interface TimeSelectOption {\r\n pricingType: PricingType\r\n optionType?: OptionType\r\n optionLabel?: string\r\n optionId?: string\r\n showAllDayUntil: boolean\r\n allDayUntilMessage?: string\r\n endDateTime?: string\r\n specialLabelChoice?: string\r\n amount?: number\r\n convenienceFee?: number\r\n choiceId?: string\r\n intervalOptions?: IntervalOptions\r\n}\r\n\r\nexport interface IntervalOptions {\r\n showDaySelect: boolean\r\n showHourSelect: boolean\r\n showMinuteSelect: boolean\r\n dayInterval?: number\r\n maxDays?: number\r\n hourInterval?: number\r\n maxHours?: number\r\n minuteInterval?: number\r\n maxMinutes?: number\r\n maxTotalMinutes?: number\r\n}\r\n\r\nexport interface Lot {\r\n lotType: LotType\r\n lotId: string\r\n lotName: string\r\n locationName?: string\r\n locationId: number\r\n logoLink?: string\r\n geolocation?: Geolocation\r\n redirectUrl?: string | null\r\n customStyles: LotCustomStyles[]\r\n}\r\nexport interface MonthlyParkerInfo {\r\n parkerMonthlyId: string\r\n expireMonthlyParkingDateTime: string\r\n}\r\n\r\nexport interface SimulatedPrice {\r\n parkingLotId: string\r\n simulatedPrice?: number\r\n currency?: Currency\r\n isPriceFound: boolean\r\n}\r\n/**\r\n * API CALLS\r\n */\r\nexport interface GetLotsPayload {\r\n token?: string\r\n northEastBoundLat?: number\r\n northEastBoundLng?: number\r\n southWestBoundLat?: number\r\n southWestBoundLng?: number\r\n pcode?: string\r\n}\r\n\r\nexport interface GetLotData extends Lot {\r\n pCode: string\r\n}\r\nexport interface GetLotsData {\r\n lots: GetLotData[]\r\n newTokens: {\r\n tokens: Tokens\r\n role: UserRole\r\n }\r\n}\r\n\r\nexport interface GetLotDetailsMapPayload {\r\n lotId?: string\r\n pCode?: string\r\n}\r\n\r\nexport interface LotCapacity {\r\n capacityFullSMSMessage: string\r\n capacityFullWEBMessage: string\r\n lotIsFull: boolean\r\n}\r\n\r\nexport interface GetLotDetailsMapData extends Lot {\r\n address: Address\r\n openingHours: OpeningHours[]\r\n logoLink?: string\r\n currentDateTimeLocal: string\r\n pCode: string\r\n isLocationStopped: boolean\r\n locationStoppedMessage: string | null\r\n lotCapacity: LotCapacity | null\r\n}\r\n\r\nexport interface GetLotDetailsParkPayload {\r\n lotId?: string\r\n token?: string\r\n carId?: string\r\n}\r\nexport type GetLotDetailsParkData = Omit & {\r\n currency: Currency\r\n creditCardUsed?: Pick\r\n logoLink?: string\r\n monthlyEnable: boolean\r\n parkerId: string\r\n monthlyParkerInfo?: MonthlyParkerInfo\r\n spot: Spot\r\n timeSelectOption?: TimeSelectOption[]\r\n newTokens?: CustomerTokens\r\n currentDateTimeLocal: string\r\n corporationLotsToken?: string\r\n /** sms flow; car is already parked, and user clicks the same link */\r\n carId?: string\r\n isExternalPricingEnabled: boolean\r\n externalPricingType: ExternalPricingType\r\n selfRegisterUrl?: string | null\r\n isLocationStopped: boolean\r\n locationStoppedMessage: string | null\r\n lotCapacity: LotCapacity | null\r\n isUpfrontCouponAvailable: boolean\r\n redirectUrl?: string | null\r\n}\r\nexport interface GetSimulatedPricesRequest {\r\n /** lot ids */\r\n parkings: string[]\r\n /** format: \"2020-09-28T18:00:00\" */\r\n simulateStartTime: string\r\n /** format: \"2020-09-28T18:00:00\" */\r\n simulateEndTime: string\r\n}\r\nexport type GetSimulatedPricesResponse = SimulatedPrice[]\r\n","import { CreditCard } from './creditCards'\r\nimport { CustomerTokens } from './customer'\r\nimport { Currency } from './ticket'\r\n\r\nexport interface Receipt {\r\n carId: string\r\n dateInUTC: string\r\n locationName: string\r\n areaAddress: string\r\n cardUsed: boolean\r\n creditCard?: CreditCard\r\n amount: Amount\r\n clientMail?: string\r\n externalServiceDeliversReceipts: boolean\r\n}\r\n\r\nexport interface Amount {\r\n totalAmount: number\r\n convenienceFee?: number\r\n currency: Currency\r\n}\r\n\r\nexport interface GetReceiptsData {\r\n receipts: Receipt[]\r\n}\r\n\r\nexport type SendReceiptsPayload = {\r\n email: string\r\n carId: string\r\n}\r\nexport type SendReceiptsData = boolean\r\n\r\nexport type SendQuestionPayload = {\r\n email: string\r\n message: string\r\n carId: string\r\n}\r\nexport type SendQuestionData = boolean\r\n\r\nexport type AddContactInformationsPayload = {\r\n carId: string\r\n email?: string\r\n countryCode?: string\r\n phoneNumber?: string\r\n confirmToken?: string\r\n pin?: string\r\n}\r\n\r\nexport type AddContactInformationsData = {\r\n newTokens: CustomerTokens\r\n}\r\n\r\nexport interface SendVerificationSMSPayload {\r\n phoneNumber: string\r\n countryCode: number\r\n tokenValuePart: string\r\n verificationType: VerificationType\r\n recaptchaToken: string\r\n}\r\n\r\nexport interface SendVerificationSMSData {\r\n confirmToken: string\r\n verificationType: VerificationType\r\n}\r\n\r\nexport interface GetContactInformationsData {\r\n email: string\r\n countryCode: number | string\r\n phoneNumber: string\r\n}\r\n\r\nexport enum VerificationType {\r\n SavingGuestsPhoneNumber = 1,\r\n}\r\n","export enum TermsType {\r\n Login = 1,\r\n Transient = 2,\r\n Monthly = 3,\r\n}\r\n\r\nexport enum UserLanguage {\r\n En_US = 1,\r\n En_GB = 2,\r\n De_de = 3,\r\n It_it = 4,\r\n}\r\n\r\nexport interface GetTermsAndConditionsParams {\r\n type: TermsType\r\n lotId?: string\r\n languageCode?: string //ISO Language Code\r\n}\r\n\r\nexport interface GetTermsAndConditionsResult {\r\n text: string //Simple HTML with tags


\r\n}\r\n\r\nexport interface ShowForCustomerResult {\r\n termsAndConditionsID: string\r\n show: boolean\r\n}\r\n\r\nexport interface ShowForCustomerParams {\r\n language: UserLanguage\r\n}\r\n\r\nexport interface AcceptToSParams {\r\n termsAndConditionsId: string\r\n clientDateTime: Date\r\n}\r\n\r\nexport interface TermsOfService {\r\n termsAndConditionsId: string\r\n show: boolean\r\n termsAndConditionsContent: string\r\n}\r\n\r\nexport interface GetTermsOfServiceContentParams {\r\n id: string\r\n language: UserLanguage\r\n}\r\n","import { CreditCard } from './creditCards'\r\nimport { Lot, LotCustomStyles, OptionType } from './lot'\r\n\r\nexport enum CarStatus {\r\n Parked = 1,\r\n RequiresPayment = 2,\r\n ParkingHasExpired = 3,\r\n RequiresAddMoreTime = 4,\r\n}\r\n\r\nexport enum PaymentOperationType {\r\n Payment = 1,\r\n Coupon = 2,\r\n BuyMoreTime = 3,\r\n}\r\n\r\nexport enum TransactionStatus {\r\n NotStarted = 0,\r\n Started = 1,\r\n SuccessfulPreAuth = 2,\r\n SuccessfulCommit = 3,\r\n Rejected = 4,\r\n Failed = 5,\r\n Suspend = 6,\r\n Cancelled = 7,\r\n}\r\n\r\nexport enum CurrencyFormat {\r\n AfterAmount = 1,\r\n BeforeAmount = 2,\r\n}\r\nexport interface Currency {\r\n cultureName: string\r\n currencyFormat: CurrencyFormat\r\n currencySymbol?: string\r\n}\r\n\r\nexport interface PaymentOperation {\r\n amount: number\r\n dateAtUTC: string\r\n dateAtLocal: string\r\n name?: string\r\n validatorName?: string\r\n type: PaymentOperationType\r\n}\r\n\r\nexport interface Settlement {\r\n convenienceFee: number\r\n convenienceFeeName?: string\r\n currency: Currency\r\n finalAmount: number\r\n parkingAmount: number\r\n paymentOperationList: PaymentOperation[]\r\n creditCardInfo?: Pick\r\n}\r\n\r\nexport enum ParkerType {\r\n Normal = 1,\r\n Monthly = 2,\r\n}\r\nexport interface Ticket {\r\n addTimeEnable: boolean\r\n advertisementUrl?: string\r\n carId: string\r\n carStatus: CarStatus\r\n currentDateTime: string\r\n /** @deprecated */\r\n isMonthlyParker?: boolean\r\n lot: Lot & { logoLink?: string }\r\n parkerType: ParkerType\r\n parkingBeginDateTime?: string\r\n parkingExpireDateTime?: string\r\n plate: string\r\n settlement?: Settlement\r\n spot: string\r\n validateEnable: boolean\r\n customStyles: LotCustomStyles[]\r\n externalServiceDeliversReceipts: boolean\r\n}\r\n\r\nexport interface ParkTime {\r\n parkingTimeMinutes?: number\r\n parkingTimeHours?: number\r\n parkingTimeDays?: number\r\n optionId?: string\r\n optionType?: OptionType\r\n parkingExpireDateTime?: string\r\n}\r\n\r\n/**\r\n * API CALLS\r\n */\r\nexport interface GetTicketPayload {\r\n carId: string\r\n}\r\n\r\nexport type GetTicketData = Ticket\r\nexport interface GetTicketsData {\r\n tickets: Ticket[]\r\n}\r\n\r\nexport type ParkCarPayload = {\r\n parkerId: string\r\n parkerMonthlyId?: string\r\n plate: string\r\n spot?: string\r\n parkTime?: ParkTime\r\n externalPricingId?: string\r\n}\r\nexport interface ParkCarData {\r\n carId: string\r\n carStatus: CarStatus\r\n paymentRedirectionAvailable: boolean\r\n contactDataRequired: boolean\r\n customerHasEmail: boolean \r\n}\r\nexport interface BuyMoreTimePayload {\r\n carId: string\r\n parkTime?: ParkTime\r\n}\r\n\r\nexport interface BuyMoreTimeExternalPayload\r\n extends Pick {\r\n externalPricingId: string\r\n}\r\nexport interface BuyMoreTimeData {\r\n requiresPayment: boolean\r\n paymentRedirectionAvailable: boolean\r\n}\r\n\r\nexport interface PayForCarPayload {\r\n carId: string\r\n creditCardId?: string\r\n zipCode: string\r\n lastName?: string\r\n creditCardInfo?: {\r\n ccNumber: string\r\n expirationYear: number\r\n expirationMonth: number\r\n }, \r\n recaptchaToken: string\r\n}\r\nexport interface PayForCarData {\r\n success: boolean\r\n}\r\n\r\nexport interface ParkCarRedirectPayload {\r\n carId: string\r\n recaptchaToken: string\r\n}\r\n\r\nexport interface ParkCarRedirectData {\r\n token: string\r\n}\r\n\r\nexport interface ParkCarTransactionStatusPayload {\r\n carId: string\r\n transactionId?: string\r\n}\r\n\r\nexport interface ParkCarTransactionStatusData {\r\n transactionStatus: TransactionStatus\r\n}\r\n","import { PromiseStatus } from './slices.types'\r\nimport { FetchStatus } from 'typedef'\r\n\r\nexport const ADS = 'ads'\r\nexport const CARS = 'cars'\r\nexport const COUPON = 'cupon'\r\nexport const CREDIT_CARDS = 'creditCards'\r\nexport const CUSTOMER = 'customer'\r\nexport const FETCH = '/fetch'\r\nexport const LAYOUT = 'layout'\r\nexport const MAP = 'map'\r\nexport const PARK_CAR = 'parkCar'\r\nexport const RECEIPTS = 'receipts'\r\nexport const SIMULATE_PRICE = 'simulatePrice'\r\nexport const TERMS = 'terms'\r\nexport const TERMS_OF_SERVICE = 'termsOfService'\r\nexport const TICKETS = 'tickets'\r\nexport const CONTACT_INFORMATIONS = 'contactInformations'\r\n\r\nexport const initialPromiseStatus: PromiseStatus = {\r\n description: '',\r\n title: '',\r\n variant: 'warning',\r\n status: [FetchStatus.Idle],\r\n requestId: null,\r\n time: null,\r\n code: null,\r\n}\r\n","export default __webpack_public_path__ + \"static/media/bg.205d97ef.png\";","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\r\nimport { FullLayoutProps } from 'shared/layout/FullLayout'\r\nimport { TopbarProps } from 'shared/Topbar'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { LAYOUT } from './constants'\r\nimport bg from 'assets/images/bg.png'\r\n\r\nconst defaultCustomStyles = {\r\n headerBgUrl: bg,\r\n cardBgUrl: '',\r\n}\r\nexport interface LayoutState {\r\n layout?: FullLayoutProps\r\n topbar?: TopbarProps\r\n bottomMenu?: boolean\r\n autoToogleSnackGap?: boolean\r\n height?: number\r\n loader?: boolean\r\n innerWidth?: number\r\n customStyles: {\r\n headerBgUrl: string\r\n cardBgUrl: string\r\n }\r\n}\r\nexport type LayoutStateWithoutCustomStyles = Omit\r\nexport const appLayoutProps: LayoutStateWithoutCustomStyles = {\r\n layout: {\r\n hasFlatBackground: true,\r\n hasTopBar: true,\r\n hasBottomBar: true,\r\n hasSnackbar: false,\r\n },\r\n autoToogleSnackGap: true,\r\n topbar: {},\r\n bottomMenu: true,\r\n}\r\nexport const authLayoutProps: LayoutStateWithoutCustomStyles = {\r\n layout: {\r\n hasTopBar: true,\r\n hasBottomBar: true,\r\n narrow: true,\r\n },\r\n bottomMenu: false,\r\n topbar: null,\r\n}\r\n/**\r\n * state\r\n */\r\nconst initialState: LayoutState = {\r\n layout: {\r\n hasTopBar: true,\r\n hasBottomBar: true,\r\n narrow: true,\r\n },\r\n autoToogleSnackGap: false,\r\n bottomMenu: false,\r\n topbar: null,\r\n height: window.innerHeight,\r\n loader: false,\r\n innerWidth: 0,\r\n customStyles: defaultCustomStyles,\r\n}\r\n\r\n/**\r\n * reducers\r\n */\r\nconst layoutSlice = createSlice({\r\n name: LAYOUT,\r\n initialState,\r\n reducers: {\r\n setLayout(state, { payload }: PayloadAction) {\r\n state.layout = payload\r\n },\r\n setTopbar(state, { payload }: PayloadAction) {\r\n state.topbar = payload\r\n },\r\n setBottomMenu(state, { payload }: PayloadAction) {\r\n state.bottomMenu = payload\r\n },\r\n setHeight(state, { payload }: PayloadAction) {\r\n state.height = payload\r\n },\r\n setCenter(state, { payload }: PayloadAction) {\r\n state.layout.center = payload\r\n },\r\n setSnackbarGutter(state, { payload }: PayloadAction) {\r\n state.layout.hasSnackbar = payload\r\n },\r\n setInnerWidth(state, { payload }: PayloadAction) {\r\n state.innerWidth = payload\r\n },\r\n // setAd(state, { payload }: PayloadAction) {\r\n // state.ad = payload\r\n // },\r\n setFullLayout(\r\n state,\r\n { payload }: PayloadAction\r\n ) {\r\n state.layout = payload?.layout ? payload?.layout : {}\r\n state.topbar = payload.topbar\r\n state.bottomMenu = payload.bottomMenu\r\n state.autoToogleSnackGap = payload.autoToogleSnackGap\r\n },\r\n setAuthLayout(state) {\r\n state.layout = authLayoutProps.layout\r\n state.topbar = authLayoutProps.topbar\r\n state.bottomMenu = authLayoutProps.bottomMenu\r\n state.autoToogleSnackGap = authLayoutProps.autoToogleSnackGap\r\n },\r\n setAppLayout(state) {\r\n state.layout = appLayoutProps.layout\r\n state.topbar = appLayoutProps.topbar\r\n state.bottomMenu = appLayoutProps.bottomMenu\r\n state.autoToogleSnackGap = appLayoutProps.autoToogleSnackGap\r\n },\r\n setLoader(state, { payload }: PayloadAction>) {\r\n const loader = typeof payload === 'boolean' ? payload : !state.loader\r\n state.loader = loader\r\n },\r\n setCustomStyles(\r\n state,\r\n { payload }: PayloadAction>\r\n ) {\r\n state.customStyles = {\r\n cardBgUrl: payload?.cardBgUrl || defaultCustomStyles.cardBgUrl,\r\n headerBgUrl: payload?.headerBgUrl || defaultCustomStyles.headerBgUrl,\r\n }\r\n },\r\n },\r\n})\r\n\r\nexport default layoutSlice.reducer\r\nexport const { actions } = layoutSlice\r\n\r\n/**\r\n * selectors\r\n */\r\nexport const stateSelectors = (state: RootState) => state.layout\r\n","enum Translations {\n PARKED_CARS = \"PARKED_CARS\",\n MY_RECEIPTS = \"MY_RECEIPTS\",\n CREDIT_CARDS = \"CREDIT_CARDS\",\n MY_CARS = \"MY_CARS\",\n FIND_CAR = \"FIND_CAR\",\n SIGN_OUT = \"SIGN_OUT\",\n PCODE_PARKING_NAME = \"PCODE_PARKING_NAME\",\n LOG_IN = \"LOG_IN\",\n SIGN_UP = \"SIGN_UP\",\n LOGIN = \"LOGIN\",\n PASSWORD = \"PASSWORD\",\n FORGOT_PASSWORD = \"FORGOT_PASSWORD\",\n TERMS_AND_CONDITIONS = \"TERMS_AND_CONDITIONS\",\n PARKING_MADE_EASY = \"PARKING_MADE_EASY\",\n CREATING_ACCOUNT = \"CREATING_ACCOUNT\",\n NEXT = \"NEXT\",\n FIRST_NAME = \"FIRST_NAME\",\n LAST_NAME = \"LAST_NAME\",\n PHONE_NUMBER = \"PHONE_NUMBER\",\n E_MAIL = \"E_MAIL\",\n FIELD_REQUIRED = \"FIELD_REQUIRED\",\n PASSWORD_MIN_LENGTH = \"PASSWORD_MIN_LENGTH\",\n PASSWORD_MAX_LENGTH = \"PASSWORD_MAX_LENGTH\",\n PASSWORD_NOT_MATCH = \"PASSWORD_NOT_MATCH\",\n INVALID_EMAIL = \"INVALID_EMAIL\",\n INVALID_PHONE_NUMBER = \"INVALID_PHONE_NUMBER\",\n SET_PASSWORD = \"SET_PASSWORD\",\n BOTH_PASSWORD_NEED_TO_BE_THE_SAME = \"BOTH_PASSWORD_NEED_TO_BE_THE_SAME\",\n CONFIRM_PASSWORD = \"CONFIRM_PASSWORD\",\n CODE_MESSAGE = \"CODE_MESSAGE\",\n RESEND_CODE = \"RESEND_CODE\",\n CREATE = \"CREATE\",\n WELCOME = \"WELCOME\",\n YOUR_ACCOUNT_HAS_BEEN_SUCCESFULLY_CREATED = \"YOUR_ACCOUNT_HAS_BEEN_SUCCESFULLY_CREATED\",\n ADD_NEW_CAR = \"ADD_NEW_CAR\",\n LICENCE_PLATE = \"LICENCE_PLATE\",\n INVALID_PLATE_NUMBER = \"INVALID_PLATE_NUMBER\",\n ONLY_ALPHANUMERIC_CHARACTERS_ARE_ALLOWED = \"ONLY_ALPHANUMERIC_CHARACTERS_ARE_ALLOWED\",\n DELETE_CAR = \"DELETE_CAR\",\n ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_CAR = \"ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_CAR\",\n TRY_AGAIN = \"TRY_AGAIN\",\n MY_PROFILE = \"MY_PROFILE\",\n CHANGE_PASSWORD = \"CHANGE_PASSWORD\",\n SAVE = \"SAVE\",\n DELETE_MY_ACCOUNT = \"DELETE_MY_ACCOUNT\",\n PLEASE_PROVIDE_YOUR_CURRENT_PASSWORD_AND_SET_THE_NEW_ONE = \"PLEASE_PROVIDE_YOUR_CURRENT_PASSWORD_AND_SET_THE_NEW_ONE\",\n CURRENT_PASSWORD = \"CURRENT_PASSWORD\",\n NEW_PASSWORD = \"NEW_PASSWORD\",\n CONFIRM_NEW_PASSWORD = \"CONFIRM_NEW_PASSWORD\",\n CHANGE = \"CHANGE\",\n INCORRECT_PASSWORD = \"INCORRECT_PASSWORD\",\n SUCCESS = \"SUCCESS\",\n YOUR_PASSWORD_HAS_BEEN_CHANGED = \"YOUR_PASSWORD_HAS_BEEN_CHANGED\",\n PLEASE_PROVIDE_YOUR_PASSWORD_TO_REMOVE_YOUR_ACCOUNT = \"PLEASE_PROVIDE_YOUR_PASSWORD_TO_REMOVE_YOUR_ACCOUNT\",\n DELETE = \"DELETE\",\n OOPS = \"OOPS\",\n YOUR_ACCOUNT_CANNOT_BE_DELETED_AT_THE_MOMENT = \"YOUR_ACCOUNT_CANNOT_BE_DELETED_AT_THE_MOMENT\",\n YOUR_CAR_CANNOT_BE_DELETED_AT_THE_MOMENT = \"YOUR_CAR_CANNOT_BE_DELETED_AT_THE_MOMENT\",\n PLEASE_TRY_AGAIN_LATER = \"PLEASE_TRY_AGAIN_LATER\",\n CLOSE = \"CLOSE\",\n INVALID_PASSWORD = \"INVALID_PASSWORD\",\n CANCEL = \"CANCEL\",\n PLEASE_LOGIN_TO_DISCOVER_WHOLE_APPP_FUNCTIONALITY = \"PLEASE_LOGIN_TO_DISCOVER_WHOLE_APPP_FUNCTIONALITY\",\n SIGN_IN = \"SIGN_IN\",\n TERMS_AND_CONDITIONS_CONTENT = \"TERMS_AND_CONDITIONS_CONTENT\",\n DELETE_CREDIT_CARD = \"DELETE_CREDIT_CARD\",\n ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_CREDIT_CARD = \"ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_CREDIT_CARD\",\n CARD_ADD_INFO = \"CARD_ADD_INFO\",\n EMAIL_WAS_SENT = \"EMAIL_WAS_SENT\",\n PLEASE_CHECK_YOUR_INBOX = \"PLEASE_CHECK_YOUR_INBOX\",\n SUBMIT = \"SUBMIT\",\n FORGOT_PASSWORD_SEND_ME_MAIL_DESC = \"FORGOT_PASSWORD_SEND_ME_MAIL_DESC\",\n RESET_PASSWORD = \"RESET_PASSWORD\",\n THE_PASSWORD_IS_CHANGED = \"THE_PASSWORD_IS_CHANGED\",\n YOUR_PASSWORD_HAS_BEEN_RESET = \"YOUR_PASSWORD_HAS_BEEN_RESET\",\n ADD_CARD_INFO = \"ADD_CARD_INFO\",\n SEND_RECEIPT = \"SEND_RECEIPT\",\n RECEIPT_WILL_BE_SENT_TO_PROVIDED_EMAIL = \"RECEIPT_WILL_BE_SENT_TO_PROVIDED_EMAIL\",\n CREDIT_CARD_NUMBER = \"CREDIT_CARD_NUMBER\",\n MONTH = \"MONTH\",\n YEAR = \"YEAR\",\n BILLING_ZIP_CODE = \"BILLING_ZIP_CODE\",\n ADD_CARD = \"ADD_CARD\",\n INVALID_ZIP_CODE = \"INVALID_ZIP_CODE\",\n ZIP_CODE_SHOULD_NOT_BE_EMPTY = \"ZIP_CODE_SHOULD_NOT_BE_EMPTY\",\n INVALID_CREDIT_CARD_NUMBER = \"INVALID_CREDIT_CARD_NUMBER\",\n CREDIT_CARD_HAS_BEEN_ADDED = \"CREDIT_CARD_HAS_BEEN_ADDED\",\n ADD_CARD_ERROR = \"ADD_CARD_ERROR\",\n FIND_CARS_INFO = \"FIND_CARS_INFO\",\n FIND_CARS_RESULT_INFO = \"FIND_CARS_RESULT_INFO\",\n MY_CREDIT_CARDS = \"MY_CREDIT_CARDS\",\n PARKING_HISTORY = \"PARKING_HISTORY\",\n INVALID_LICENCE_PLATE = \"INVALID_LICENCE_PLATE\",\n WRONG_LOGIN_OR_PASSWORD = \"WRONG_LOGIN_OR_PASSWORD\",\n INVALID_COUNTRY_CODE = \"INVALID_COUNTRY_CODE\",\n ACTIVATION_CODE_HAS_BEEN_SENT = \"ACTIVATION_CODE_HAS_BEEN_SENT\",\n YOUR_ACCOUNT_HAS_BEEN_DELETED = \"YOUR_ACCOUNT_HAS_BEEN_DELETED\",\n CREATE_ACCOUNT_ERROR = \"CREATE_ACCOUNT_ERROR\",\n ACCOUNT_ALREADY_EXISTS = \"ACCOUNT_ALREADY_EXISTS\",\n PHONE_NUMBER_ALREADY_EXISTS = \"PHONE_NUMBER_ALREADY_EXISTS\",\n INVALID_ACTIVATION_CODE = \"INVALID_ACTIVATION_CODE\",\n ACTIVATION_CODE_SEND_FAIL = \"ACTIVATION_CODE_SEND_FAIL\",\n AMBIGUOUS_LOGIN = \"AMBIGUOUS_LOGIN\",\n UNEXPECTED_ERROR_PLEASE_TRY_AGAIN = \"UNEXPECTED_ERROR_PLEASE_TRY_AGAIN\",\n OK = \"OK\",\n NO_RECEIPTS_FOUND = \"NO_RECEIPTS_FOUND\",\n YOUR_RECEIPT_CANNOT_BE_SENT = \"YOUR_RECEIPT_CANNOT_BE_SENT\",\n YOUR_CAR_CANNOT_BE_ADDED = \"YOUR_CAR_CANNOT_BE_ADDED\",\n EMAIL = \"EMAIL\",\n SEND = \"SEND\",\n NO_CREDIT_CARDS_FOUND = \"NO_CREDIT_CARDS_FOUND\",\n AT_LEAST_ONE_LOWERCASE = \"AT_LEAST_ONE_LOWERCASE\",\n AT_LEAST_ONE_UPPERCASE = \"AT_LEAST_ONE_UPPERCASE\",\n AT_LEAST_ONE_NUMBER = \"AT_LEAST_ONE_NUMBER\",\n AT_LEAST_ONE_SPECIAL_CHARACTER = \"AT_LEAST_ONE_SPECIAL_CHARACTER\",\n NEW_PASSWORD_HAS_TO_BE_DIFFERENT = \"NEW_PASSWORD_HAS_TO_BE_DIFFERENT\",\n ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_ACCOUNT = \"ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_ACCOUNT\",\n PERSONAL_DATA = \"PERSONAL_DATA\",\n CREATE_PASSWORD = \"CREATE_PASSWORD\",\n TYPE_ACTIVATION_CODE = \"TYPE_ACTIVATION_CODE\",\n BACK_TO_LOGIN = \"BACK_TO_LOGIN\",\n BACK = \"BACK\",\n FIRSTNAME_CANNOT_BE_EMPTY = \"FIRSTNAME_CANNOT_BE_EMPTY\",\n LASTNAME_CANNOT_BE_EMPTY = \"LASTNAME_CANNOT_BE_EMPTY\",\n NAME_CANNOT_BE_EMPTY = \"NAME_CANNOT_BE_EMPTY\",\n EMAIL_CANNOT_BE_EMPTY = \"EMAIL_CANNOT_BE_EMPTY\",\n PHONE_CANNOT_BE_EMPTY = \"PHONE_CANNOT_BE_EMPTY\",\n PLATE_CANNOT_BE_EMPTY = \"PLATE_CANNOT_BE_EMPTY\",\n NO_CARS_FOUND = \"NO_CARS_FOUND\",\n CANNOT_FETCH_CAR_LIST = \"CANNOT_FETCH_CAR_LIST\",\n CANNOT_FETCH_CREDIT_CARDS_LIST = \"CANNOT_FETCH_CREDIT_CARDS_LIST\",\n CAR_HAS_BEEN_ADDED = \"CAR_HAS_BEEN_ADDED\",\n CAR_NAME = \"CAR_NAME\",\n TICKETS = \"TICKETS\",\n CAR_PARKED = \"CAR_PARKED\",\n CARS_PARKED = \"CARS_PARKED\",\n NO_PARKED_CARS = \"NO_PARKED_CARS\",\n PARK_CAR = \"PARK_CAR\",\n PARKING_EXPIRES_AT = \"PARKING_EXPIRES_AT\",\n PARKING_EXPIRED_AT = \"PARKING_EXPIRED_AT\",\n SEE_DETAILS = \"SEE_DETAILS\",\n TOTAL = \"TOTAL\",\n VALIDATE = \"VALIDATE\",\n ADD_TIME = \"ADD_TIME\",\n TICKET_DETAILS = \"TICKET_DETAILS\",\n RECEIPT = \"RECEIPT\",\n PARK_AGAIN = \"PARK_AGAIN\",\n EDIT_MY_INFO = \"EDIT_MY_INFO\",\n LAST_RECEIPT = \"LAST_RECEIPT\",\n SEE_MORE = \"SEE_MORE\",\n RETRY = \"RETRY\",\n FETCH_RECEIPTS_ERROR = \"FETCH_RECEIPTS_ERROR\",\n FETCH_CARS_ERROR = \"FETCH_CARS_ERROR\",\n FETCH_CREDIT_CARDS_ERROR = \"FETCH_CREDIT_CARDS_ERROR\",\n LOG_IN_AS_GUEST = \"LOG_IN_AS_GUEST\",\n EDIT = \"EDIT\",\n FETCH_CUSTOMER_DETAILS_ERROR = \"FETCH_CUSTOMER_DETAILS_ERROR\",\n PARK_ANOTHER_CAR = \"PARK_ANOTHER_CAR\",\n CONVENIENCE_FEE = \"CONVENIENCE_FEE\",\n PARKED = \"PARKED\",\n VALIDATED = \"VALIDATED\",\n BUY_MORE_TIME = \"BUY_MORE_TIME\",\n QUESTION = \"QUESTION\",\n YOUR_EMAIL_ADDRESS = \"YOUR_EMAIL_ADDRESS\",\n SEND_QUESTION = \"SEND_QUESTION\",\n YOUR_QUESTION_CANNOT_BE_SENT = \"YOUR_QUESTION_CANNOT_BE_SENT\",\n YOUR_QUESTION_HAS_BEEN_SENT = \"YOUR_QUESTION_HAS_BEEN_SENT\",\n QUESTION_CANNOT_BE_EMPTY = \"QUESTION_CANNOT_BE_EMPTY\",\n YOUR_ACCOUNT_HAS_BEEN_SUCCESSFULLY_SAVED = \"YOUR_ACCOUNT_HAS_BEEN_SUCCESSFULLY_SAVED\",\n YOUR_ACCOUNT_CANNOT_BE_SAVE = \"YOUR_ACCOUNT_CANNOT_BE_SAVE\",\n SPOT_NUMBER = \"SPOT_NUMBER\",\n PAY = \"PAY\",\n ALL_DAY_UNTIL = \"ALL_DAY_UNTIL\",\n PARKING_FEE = \"PARKING_FEE\",\n CHANGE_PRICING = \"CHANGE_PRICING\",\n SELECT_PRICING = \"SELECT_PRICING\",\n PRICING_LIST = \"PRICING_LIST\",\n PLEASE_CONFIRM_YOU_ARE_IN_SPOT = \"PLEASE_CONFIRM_YOU_ARE_IN_SPOT\",\n CONFIRM = \"CONFIRM\",\n FAILED_PARK_CAR = \"FAILED_PARK_CAR\",\n VALIDATOR_INFO = \"VALIDATOR_INFO\",\n FETCH_VALIDATORS_ERROR = \"FETCH_VALIDATORS_ERROR\",\n NO_VALIDATORS_FOUND = \"NO_VALIDATORS_FOUND\",\n ACCEPT = \"ACCEPT\",\n TICKET_CANNOT_BE_VALIDATED = \"TICKET_CANNOT_BE_VALIDATED\",\n TICKET_HAS_BEEN_VALIDATED = \"TICKET_HAS_BEEN_VALIDATED\",\n CODE_IS_INVALID = \"CODE_IS_INVALID\",\n INVALID_CODE = \"INVALID_CODE\",\n CURRENT_PASSWORD_CANNOT_BE_EMPTY = \"CURRENT_PASSWORD_CANNOT_BE_EMPTY\",\n NEW_PASSWORD_CANNOT_BE_EMPTY = \"NEW_PASSWORD_CANNOT_BE_EMPTY\",\n CONFIRM_NEW_PASSWORD_CANNOT_BE_EMPTY = \"CONFIRM_NEW_PASSWORD_CANNOT_BE_EMPTY\",\n NO_PARKING_FOUND = \"NO_PARKING_FOUND\",\n TODAY_OPEN = \"TODAY_OPEN\",\n LOCATION_IS_NOT_AVAILABLE = \"LOCATION_IS_NOT_AVAILABLE\",\n NAVIGATE = \"NAVIGATE\",\n NO_SEARCH_HISTORY = \"NO_SEARCH_HISTORY\",\n FAILED_PROPERLY_RETRIEVE = \"FAILED_PROPERLY_RETRIEVE\",\n REFRESH = \"REFRESH\",\n SOME_DATA_HAS_NOT_BEEN_UPDATED = \"SOME_DATA_HAS_NOT_BEEN_UPDATED\",\n TICKET = \"TICKET\",\n CHOOSE_CARD = \"CHOOSE_CARD\",\n ADD_NEW_CARD = \"ADD_NEW_CARD\",\n MANAGE_CARDS = \"MANAGE_CARDS\",\n SELECT_CARD = \"SELECT_CARD\",\n MANAGE_CREDIT_CARDS = \"MANAGE_CREDIT_CARDS\",\n ZIP_CODE = \"ZIP_CODE\",\n CREDIT_CARD_SHOULD_NOT_BE_EMPTY = \"CREDIT_CARD_SHOULD_NOT_BE_EMPTY\",\n INVALID_CARD_NUMBER = \"INVALID_CARD_NUMBER\",\n INVALID_EXPIRATION_DATE = \"INVALID_EXPIRATION_DATE\",\n ADD_CREDIT_CARD = \"ADD_CREDIT_CARD\",\n CANNOT_ADD_CREDIT_CARD = \"CANNOT_ADD_CREDIT_CARD\",\n YOUR_CARD_HAS_BEEN_REJECTED = \"YOUR_CARD_HAS_BEEN_REJECTED\",\n SUCCESSFUL = \"SUCCESSFUL\",\n REFRESHING_DATA = \"REFRESHING_DATA\",\n INCORRECT_CONFIRM_TOKEN = \"INCORRECT_CONFIRM_TOKEN\",\n INCORRECT_TOKEN = \"INCORRECT_TOKEN\",\n YOUR_PASSWORD_CANNOT_BE_CHANGED_AT_THE_MOMENT_PLEASE_TRY_AGAIN_LATER = \"YOUR_PASSWORD_CANNOT_BE_CHANGED_AT_THE_MOMENT_PLEASE_TRY_AGAIN_LATER\",\n LAST_4_CREDIT_CARD_DIGITS = \"LAST_4_CREDIT_CARD_DIGITS\",\n INCORRECT_SPOT_NUMBER = \"INCORRECT_SPOT_NUMBER\",\n CANCEL_PARKING_PROCESS = \"CANCEL_PARKING_PROCESS\",\n ARE_YOU_SURE_YOU_WANT_TO_CANCEL_PARKING_PROCESS = \"ARE_YOU_SURE_YOU_WANT_TO_CANCEL_PARKING_PROCESS\",\n YES = \"YES\",\n NO = \"NO\",\n PARK = \"PARK\",\n SKIP = \"SKIP\",\n PROVIDED_CODE_IS_INVALID = \"PROVIDED_CODE_IS_INVALID\",\n PLEASE_SCAN_THE_POSTED_QR_CODE = \"PLEASE_SCAN_THE_POSTED_QR_CODE\",\n THE_CAR_HAS_BEEN_ADDED = \"THE_CAR_HAS_BEEN_ADDED\",\n CONFIRM_PASSWORD_CANNOT_BE_EMPTY = \"CONFIRM_PASSWORD_CANNOT_BE_EMPTY\",\n PASSWORD_CANNOT_BE_EMPTY = \"PASSWORD_CANNOT_BE_EMPTY\",\n MINIMUM_8_CHARACTERS_AT_LEAST_ONE_CAPITAL = \"MINIMUM_8_CHARACTERS_AT_LEAST_ONE_CAPITAL\",\n THE_LICENCE_PLATE_IS_ALREADY_IN_USE = \"THE_LICENCE_PLATE_IS_ALREADY_IN_USE\",\n PARKING_UNAVAILABLE = \"PARKING_UNAVAILABLE\",\n WE_ARE_SORRY_BUT_THE_CURRENT_PARKING_IS_NOT_AVAILABLE = \"WE_ARE_SORRY_BUT_THE_CURRENT_PARKING_IS_NOT_AVAILABLE\",\n BUY_MORE_TIME_OPTION_IS_UNVAILABLE_BECAUSE_MAXIMUM_PARKING_TIME_HAS_BEEN_REACHED = \"BUY_MORE_TIME_OPTION_IS_UNVAILABLE_BECAUSE_MAXIMUM_PARKING_TIME_HAS_BEEN_REACHED\",\n DATE_IS_INVALID = \"DATE_IS_INVALID\",\n DATE_SHOULD_NOT_BE_EMPTY = \"DATE_SHOULD_NOT_BE_EMPTY\",\n PAYMENT_SUCCESSFUL = \"PAYMENT_SUCCESSFUL\",\n SPOT_NUMBER_MUST_BE_BETWEEN = \"SPOT_NUMBER_MUST_BE_BETWEEN\",\n CLOSED = \"CLOSED\",\n OLD_PASSWORD_MUST_BE_DIFFERENT_THEN_THE_NEW_PASSWORD = \"OLD_PASSWORD_MUST_BE_DIFFERENT_THEN_THE_NEW_PASSWORD\",\n NO_E_MAIL_ASSIGNED_TO_GIVEN_PHONE_NUMBER = \"NO_E_MAIL_ASSIGNED_TO_GIVEN_PHONE_NUMBER\",\n TRANSACTION_DECLINED = \"TRANSACTION_DECLINED\",\n YOUR_TRANSACTION_HAS_BEEN_REJECTED = \"YOUR_TRANSACTION_HAS_BEEN_REJECTED\",\n OPEN_GATE = \"OPEN_GATE\",\n GATE_IS_OPENING_PLEASE_WAIT = \"GATE_IS_OPENING_PLEASE_WAIT\",\n YOU_SHOULD_RECEIVE_A_TEXT_MESSAGE_WITH_YOUR_DIGITAL_TICKET_HERE_SHORTLY = \"YOU_SHOULD_RECEIVE_A_TEXT_MESSAGE_WITH_YOUR_DIGITAL_TICKET_HERE_SHORTLY\",\n SEND_DIGITAL_TICKET_AGAIN = \"SEND_DIGITAL_TICKET_AGAIN\",\n BACK_TO_TICKETS = \"BACK_TO_TICKETS\",\n APPLICATION_CRASHED = \"APPLICATION_CRASHED\",\n RESTART_APPLICATION = \"RESTART_APPLICATION\",\n ERROR = \"ERROR\",\n PARKING_TIMER = \"PARKING_TIMER\",\n PAY_AND_EXIT = \"PAY_AND_EXIT\",\n THANK_YOU_FOR_PARKING = \"THANK_YOU_FOR_PARKING\",\n TO_OPEN_GATE_AND_LEAVE_THE_PARKING = \"TO_OPEN_GATE_AND_LEAVE_THE_PARKING\",\n THANK_YOU_FOR_YOUR_PAYMENT = \"THANK_YOU_FOR_YOUR_PAYMENT\",\n PLEASE_BE_AWARE_THAT_IF_YOU_DO_NOT_EXIT_THE_PARKING_FACILITY = \"PLEASE_BE_AWARE_THAT_IF_YOU_DO_NOT_EXIT_THE_PARKING_FACILITY\",\n SCAN_QR_CODE_TO_EXIT_PARKING = \"SCAN_QR_CODE_TO_EXIT_PARKING\",\n EXIT_PARKING = \"EXIT_PARKING\",\n TOTAL_PARKING_TIME = \"TOTAL_PARKING_TIME\",\n PARKING_AS_MONTHLY_PARKER = \"PARKING_AS_MONTHLY_PARKER\",\n YOU_ARE_ON_PARKING = \"YOU_ARE_ON_PARKING\",\n IT_SEEMS_THAT_YOUR_VEHICLE_IS_CURRENTLY_ALREADY_PARKED = \"IT_SEEMS_THAT_YOUR_VEHICLE_IS_CURRENTLY_ALREADY_PARKED\",\n UNFORTUNATELY_WE_CANNOT_FIND_YOUR_TICKET = \"UNFORTUNATELY_WE_CANNOT_FIND_YOUR_TICKET\",\n IT_SEEMS_THAT_YOUR_TICKET_IS_UNPAID = \"IT_SEEMS_THAT_YOUR_TICKET_IS_UNPAID\",\n PARKING_RATES = \"PARKING_RATES\",\n CALCULATE = \"CALCULATE\",\n EXIT_TIME = \"EXIT_TIME\",\n ENTRY_TIME = \"ENTRY_TIME\",\n UNHANDLED_GATE = \"UNHANDLED_GATE\",\n PARKING_IS_CLOSED = \"PARKING_IS_CLOSED\",\n GATED_PARKING_FACILITY = \"GATED_PARKING_FACILITY\",\n ACCESS_MAY_BE_GAINED_BY_SCANNING_THE_POSTED_QR = \"ACCESS_MAY_BE_GAINED_BY_SCANNING_THE_POSTED_QR\",\n TICKET_NOT_FOUND = \"TICKET_NOT_FOUND\",\n HOUR = \"HOUR\",\n HOURS = \"HOURS\",\n SELECT_LOT = \"SELECT_LOT\",\n SEARCH_BEST_PARKING_PRICING = \"SEARCH_BEST_PARKING_PRICING\",\n LICENCE_PLATE_IS_REQUIRED = \"LICENCE_PLATE_IS_REQUIRED\",\n SPOT_NUMBER_IS_REQUIRED = \"SPOT_NUMBER_IS_REQUIRED\",\n PARK_FOR = \"PARK_FOR\",\n PARK_UNTIL = \"PARK_UNTIL\",\n ALL_DAY = \"ALL_DAY\",\n SERVICE_TEMPORARILY_UNAVAILABLE_TRY_AGAIN_LATER = \"SERVICE_TEMPORARILY_UNAVAILABLE_TRY_AGAIN_LATER\",\n RATE_HAS_EXPIRED = \"RATE_HAS_EXPIRED\",\n RATE_HAS_EXPIRED_PLEASE_SELECT_YOUR_TIME_AGAIN = \"RATE_HAS_EXPIRED_PLEASE_SELECT_YOUR_TIME_AGAIN\",\n OR = \"OR\",\n RATE_EXPIRES_IN = \"RATE_EXPIRES_IN\",\n NO_AVAILABLE_PARKING_AT_CURRENT_TIME = \"NO_AVAILABLE_PARKING_AT_CURRENT_TIME\",\n INVALID_END_TIME = \"INVALID_END_TIME\",\n TIMEOUT = \"TIMEOUT\",\n YOUR_SESSION_HAS_EXPIRED_PLEASE_START_OVER = \"YOUR_SESSION_HAS_EXPIRED_PLEASE_START_OVER\",\n I_WANT_MONTHLY_PARKING = \"I_WANT_MONTHLY_PARKING\",\n SELECT_TIME = \"SELECT_TIME\",\n HAS_PARKED_CARS = \"HAS_PARKED_CARS\",\n TODAY_CLOSED = \"TODAY_CLOSED\",\n YOUR_CARD_CANNOT_BE_ADDED_AT_THE_MOMENT_PLEASE_TRY_AGAIN_LATER = \"YOUR_CARD_CANNOT_BE_ADDED_AT_THE_MOMENT_PLEASE_TRY_AGAIN_LATER\",\n USE_SMS_LINK_TO_LEAVE_PARKING = \"USE_SMS_LINK_TO_LEAVE_PARKING\",\n PLEASE_USE_SMS_LINK_AND_SCAN_QR_CODE = \"PLEASE_USE_SMS_LINK_AND_SCAN_QR_CODE\",\n TEXT2PARK_NOT_AVAILABLE = \"TEXT2PARK_NOT_AVAILABLE\",\n TEXT2PARK_IS_CURRENTLY_NOT_AVAILABLE = \"TEXT2PARK_IS_CURRENTLY_NOT_AVAILABLE\",\n USER_DENIED_GEOLOCALIZATION = \"USER_DENIED_GEOLOCALIZATION\",\n POSITION_UNAVAILABLE = \"POSITION_UNAVAILABLE\",\n POSITION_GEOLOCALIZATION_TIMEOUT = \"POSITION_GEOLOCALIZATION_TIMEOUT\",\n THE_TICKET_CANNOT_BE_VALIDATED_AT_THE_MOMENT = \"THE_TICKET_CANNOT_BE_VALIDATED_AT_THE_MOMENT\",\n NO_SPACES_AVAILABLE = \"NO_SPACES_AVAILABLE\",\n PARKING_IS_UNAVAILABLE = \"PARKING_IS_UNAVAILABLE\",\n NEED_HELP = \"NEED_HELP\",\n CONTACT_INFORMATION = \"CONTACT_INFORMATION\",\n COMPANY_NAME = \"COMPANY_NAME\",\n PHONE = \"PHONE\",\n WEBSITE = \"WEBSITE\",\n RECEIPTS_AND_NOTIFICATIONS = \"RECEIPTS_AND_NOTIFICATIONS\",\n ALMOST_FINISHED = \"ALMOST_FINISHED\",\n TAP_ADD_NEW_CARD = \"TAP_ADD_NEW_CARD\",\n TAP_STORED_CARD = \"TAP_STORED_CARD\",\n TO_ADD_NEW_TAP_MANAGE_CARDS = \"TO_ADD_NEW_TAP_MANAGE_CARDS\",\n ENTER_ZIP_CODE = \"ENTER_ZIP_CODE\",\n TYPE_CONFIRMATION_CODE = \"TYPE_CONFIRMATION_CODE\",\n MESSAGE_WITH_CONFIRMATION_CODE_HAS_BEEN_SENT = \"MESSAGE_WITH_CONFIRMATION_CODE_HAS_BEEN_SENT\",\n YOU_DIDNT_RECEIVE_THE_CODE = \"YOU_DIDNT_RECEIVE_THE_CODE\",\n TO_RECEIVE_PARKING_EXPIRATION_TEXT_MESSAGES = \"TO_RECEIVE_PARKING_EXPIRATION_TEXT_MESSAGES\",\n TO_RECEIVE_YOUR_RECEIPT_VIA_EMAIL = \"TO_RECEIVE_YOUR_RECEIPT_VIA_EMAIL\",\n TOKEN_EXPIRED = \"TOKEN_EXPIRED\",\n MONTH_SHORT = \"MONTH_SHORT\",\n YEAR_SHORT = \"YEAR_SHORT\",\n ALREADY_HAVE_AN_ACCOUNT = \"ALREADY_HAVE_AN_ACCOUNT\",\n PLEASE_ENTER_YOUR_MOBILE_PHONE = \"PLEASE_ENTER_YOUR_MOBILE_PHONE\",\n PLEASE_ENTER_YOUR_EMAIL = \"PLEASE_ENTER_YOUR_EMAIL\",\n TERMS_OF_SERVICE = \"TERMS_OF_SERVICE\",\n READ_AND_AGREE = \"READ_AND_AGREE\",\n NOTIFICATIONS = \"NOTIFICATIONS\",\n NOTIFICATIONS_SUBTITLE = \"NOTIFICATIONS_SUBTITLE\",\n PARKING_NOTIFICATIONS = \"PARKING_NOTIFICATIONS\",\n MAXIMUM_PARKING_TIME = \"MAXIMUM_PARKING_TIME\",\n REMAINING_MAXIMUM_PARKING_TIME = \"REMAINING_MAXIMUM_PARKING_TIME\",\n HOURS_SHORT = \"HOURS_SHORT\",\n MINUTES_SHORT = \"MINUTES_SHORT\",\n DAYS = \"DAYS\",\n DAY = \"DAY\",\n DAY_SHORT = \"DAY_SHORT\",\n SELECT_LANGUAGE = \"SELECT_LANGUAGE\",\n AMERICAN_ENGLISH = \"AMERICAN_ENGLISH\",\n BRITISH_ENGLISH = \"BRITISH_ENGLISH\",\n ITALIAN = \"ITALIAN\",\n GERMAN = \"GERMAN\",\n COUNTRY_CODE_AND_PHONE_NUMBER = \"COUNTRY_CODE_AND_PHONE_NUMBER\",\n PLEASE_COMPLETE_THE_CAPTCHA = \"PLEASE_COMPLETE_THE_CAPTCHA\",\n USER_IS_NOT_HUMAN = \"USER_IS_NOT_HUMAN\",\n RECAPTCHA_VERIFICATION_FAILED = \"RECAPTCHA_VERIFICATION_FAILED\",\n PLEASE_COMPLETE_RECAPTCHA_VERIFICATION = \"PLEASE_COMPLETE_RECAPTCHA_VERIFICATION\",\n \n}\n\nexport default Translations;","import T from 'utils/translations'\r\nimport { ErrorCode, ErrorResponse } from 'typedef'\r\n\r\n// TODO:\r\nexport const login: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.NotEnoughParameters]: {\r\n title: T.INCORRECT_PASSWORD,\r\n description: '4013',\r\n },\r\n [ErrorCode.CustomerDoesntExist]: {\r\n title: T.INCORRECT_PASSWORD,\r\n description: '4013',\r\n },\r\n}\r\n\r\nexport const getCustomerDetails: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.FAILED_PROPERLY_RETRIEVE,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const register: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const confirmRegister: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const remindPassword: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const resetPassword: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const changePassword: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description:\r\n T.YOUR_PASSWORD_CANNOT_BE_CHANGED_AT_THE_MOMENT_PLEASE_TRY_AGAIN_LATER,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const refreshToken: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const findCar: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.NO_CARS_FOUND,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const CustomerApiError = {\r\n login,\r\n getCustomerDetails,\r\n register,\r\n confirmRegister,\r\n remindPassword,\r\n resetPassword,\r\n changePassword,\r\n refreshToken,\r\n findCar,\r\n}\r\nexport default CustomerApiError\r\n","import T from 'utils/translations'\r\nimport { ErrorCode, ErrorResponse } from 'typedef'\r\n\r\nexport const sendReceipt: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.YOUR_RECEIPT_CANNOT_BE_SENT,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const getReceipts: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const sendQuestion: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.YOUR_QUESTION_CANNOT_BE_SENT,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const ReceiptsApiError = {\r\n sendReceipt,\r\n getReceipts,\r\n sendQuestion,\r\n}\r\nexport default ReceiptsApiError\r\n","import T from 'utils/translations'\r\nimport { ErrorCode, ErrorResponse } from 'typedef'\r\n\r\n// TODO:\r\nexport const getCars: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.CANNOT_FETCH_CAR_LIST,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const AddCar: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.YOUR_CAR_CANNOT_BE_ADDED,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.ObjectExist]: {\r\n description: T.THE_LICENCE_PLATE_IS_ALREADY_IN_USE,\r\n },\r\n}\r\nexport const deleteCar: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.YOUR_CAR_CANNOT_BE_DELETED_AT_THE_MOMENT,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const CarsApiError = { getCars, AddCar, deleteCar }\r\nexport default CarsApiError\r\n","import T from 'utils/translations'\r\nimport { ErrorCode, ErrorResponse } from 'typedef'\r\n\r\nexport const getTicket: ErrorResponse = {\r\n [ErrorCode.IncorrectParameterException]: {\r\n title: T.OOPS,\r\n description: T.TICKET_NOT_FOUND,\r\n variant: 'error',\r\n },\r\n}\r\n\r\nexport const getTickets: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const parkCar: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectParameterException]: {\r\n title: T.OOPS,\r\n description: T.INCORRECT_SPOT_NUMBER,\r\n },\r\n [ErrorCode.AutoClearTimeExeeded]: {\r\n title: T.OOPS,\r\n description: T.RATE_HAS_EXPIRED_PLEASE_SELECT_YOUR_TIME_AGAIN,\r\n variant: 'error',\r\n },\r\n}\r\n\r\nexport const buyMoreTime: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const payForCar: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const parkCarRedirect: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n },\r\n}\r\n\r\nexport const parkCarTransactionStatus: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\nexport default {\r\n getTickets,\r\n parkCar,\r\n payForCar,\r\n getTicket,\r\n buyMoreTime,\r\n\r\n parkCarRedirect,\r\n parkCarTransactionStatus,\r\n}\r\n","import T from 'utils/translations'\r\nimport { ErrorCode, ErrorResponse } from 'typedef'\r\n\r\n// TODO:\r\nexport const getCreditCards: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.CANNOT_FETCH_CREDIT_CARDS_LIST,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const addCreditCard: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description:\r\n T.YOUR_CARD_CANNOT_BE_ADDED_AT_THE_MOMENT_PLEASE_TRY_AGAIN_LATER,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectParameterException]: {\r\n title: T.CANNOT_ADD_CREDIT_CARD,\r\n description: T.YOUR_CARD_HAS_BEEN_REJECTED,\r\n variant: 'error',\r\n },\r\n}\r\n\r\nexport const creditCardsApiError = { getCreditCards, addCreditCard }\r\nexport default creditCardsApiError\r\n","import T from 'utils/translations'\r\nimport { ErrorCode, ErrorResponse } from 'typedef'\r\n\r\nexport const getLotDetailsPark: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectParameterException]: {\r\n title: T.OOPS,\r\n description: T.INCORRECT_TOKEN,\r\n },\r\n [ErrorCode.TokenExpired]: {\r\n title: T.OOPS,\r\n description: T.TOKEN_EXPIRED,\r\n },\r\n}\r\nexport const getLots: ErrorResponse = {\r\n [ErrorCode.IncorrectParameterException]: {\r\n title: T.OOPS,\r\n description: T.INCORRECT_TOKEN,\r\n },\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.TokenExpired]: {\r\n title: T.OOPS,\r\n description: T.TOKEN_EXPIRED,\r\n },\r\n}\r\nexport const getSimulatedPrices: ErrorResponse = {}\r\n\r\nexport const LotApiError = { getLotDetailsPark, getLots, getSimulatedPrices }\r\nexport default LotApiError\r\n","import T from 'utils/translations'\r\nimport { ErrorCode, ErrorResponse } from 'typedef'\r\n\r\nexport const getValidators: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.SOME_DATA_HAS_NOT_BEEN_UPDATED,\r\n variant: 'warning',\r\n },\r\n}\r\nexport const validateCode: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.THE_TICKET_CANNOT_BE_VALIDATED_AT_THE_MOMENT,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const validatorsApiError = { getValidators, validateCode }\r\nexport default validatorsApiError\r\n","import { ErrorCode, ErrorResponse } from 'typedef'\r\n\r\nimport T from 'utils/translations'\r\n\r\n// TODO:\r\nexport const getTerms: ErrorResponse = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n}\r\n\r\nexport const TermsApiError = { getTerms }\r\nexport default TermsApiError\r\n","export const LOG = '/Log'\r\nexport const CUSTOMER_CAR = '/CustomerCar'\r\nexport const TICKETS = '/Tickets'\r\nexport const CREDIT_CARD = '/CreditCard'\r\nexport const PARK_CAR = '/ParkCar'\r\nexport const SMS = '/SMS'\r\nexport const PARK_CAR_REDIRECT = `${PARK_CAR}/PayRedirect`\r\nexport const PARK_CAR_TRANSACTION_STATUS = `${PARK_CAR}/TransactionStatus`\r\nexport const PARK_CAR_PAY = `${PARK_CAR}/Pay`\r\nexport const LOTS = '/Lots'\r\nexport const LOTS_DETAILS_PARK = `${LOTS}/Details/Park`\r\nexport const LOTS_DETAILS_MAP = `${LOTS}/Details/Map`\r\nexport const LOTS_SIMULATED_PRICES = `${LOTS}/SimulatedPrices`\r\nexport const LOTS_COMPANY_CONTACT_INFO = `${LOTS}/CompanyContactInfo`\r\nexport const PRICE = '/Price'\r\nexport const PRICE_EXTERNAL_PRICING = `${PRICE}/ExternalPricing`\r\nexport const COUPON = '/Coupon'\r\nexport const UPFRONT_COUPON = `${COUPON}/Upfront`\r\nexport const CUSTOMER = '/Customer'\r\nexport const CUSTOMER_LOGIN = `${CUSTOMER}/Login`\r\nexport const CUSTOMER_GET_DETAILS = `${CUSTOMER}/GetDetails`\r\nexport const CUSTOMER_REFRESH_TOKEN = `${CUSTOMER}/RefreshToken`\r\nexport const CUSTOMER_REGISTER = `${CUSTOMER}/Register`\r\nexport const CUSTOMER_CONFIRM_REGISTER = `${CUSTOMER}/ConfirmRegister`\r\nexport const CUSTOMER_REMIND_PASSWORD = `${CUSTOMER}/RemindPassword`\r\nexport const CUSTOMER_RESET_PASSWORD = `${CUSTOMER}/ResetPassword`\r\nexport const CUSTOMER_CHANGE_PASSWORD = `${CUSTOMER}/ChangePassword`\r\nexport const CUSTOMER_EDIT = `${CUSTOMER}/Edit`\r\nexport const CUSTOMER_DELETE = `${CUSTOMER}/Delete`\r\nexport const CUSTOMER_PHONE_NO_IS_AVAILABLE = `${CUSTOMER}/PhoneNoIsAvailable`\r\nexport const CUSTOMER_RESEND_REGISTRATION_PIN = `${CUSTOMER}/ResendRegistrationPin`\r\nexport const CUSTOMER_FIND_MY_CAR = `${CUSTOMER}/FindCar`\r\nexport const CUSTOMER_ADD_GUEST_NOTIFICATION = `${CUSTOMER}/AddGuestNotification`\r\nexport const CUSTOMER_GET_GUEST_NOTIFICATION = `${CUSTOMER}/GuestNotification`\r\nexport const SMS_SEND_VERIFICATION_SMS = `${SMS}/SendVerificationSMS`\r\nexport const SMS_RESEND_VERIFICATION_SMS = `${SMS}/ResendVerificationSMS`\r\nexport const TERMS_AND_CONDITIONS = `/TermsAndConditions`\r\nexport const RECEIPT = `/Receipt`\r\nexport const RECEIPT_QUESTION = `${RECEIPT}/SendQuestion`\r\nexport const SHOW_FOR_CUSTOMER = `${TERMS_AND_CONDITIONS}/ShowForCustomer`\r\nexport const ACCEPT_TOS = `${TERMS_AND_CONDITIONS}/Accept`\r\nexport const VERIFY_HUMAN = `/ReCaptcha/VerifyHuman`\r\n","import MockAdapter from 'axios-mock-adapter'\r\nimport { mockedAxios } from '../axios'\r\n\r\nexport const mock = new MockAdapter(mockedAxios, { delayResponse: 1500 })\r\n\r\nexport default mock\r\n","import { Car } from 'typedef/car'\r\n\r\nexport const cars: Car[] = [\r\n {\r\n carId: '123123',\r\n plate: 'SQSQSQ',\r\n name: 'Car 1',\r\n },\r\n {\r\n carId: '123321',\r\n plate: 'CQSRT2',\r\n name: 'Car 2',\r\n },\r\n]\r\n","import mock from '.'\r\nimport { Response } from 'typedef/api'\r\nimport { AddCarPayload, GetCarsData, AddCarData } from 'typedef/car'\r\nimport { cars } from '__fixtures__/myCars'\r\n\r\n// mock.onGet('/CustomerCar').networkError()\r\nmock.onGet('/CustomerCar').reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: { cars },\r\n } as Response,\r\n ]\r\n})\r\n\r\n// mock.onPost('/CustomerCar').networkError()\r\nmock.onPost('/CustomerCar').reply(config => {\r\n const request = JSON.parse(config.data) as AddCarPayload\r\n if (!request) return [400]\r\n\r\n return [200, { data: { carId: '0-' + cars.length } } as Response]\r\n})\r\n\r\nmock.onDelete('/CustomerCar').networkError()\r\n// mock.onDelete('/CustomerCar').reply(config => {\r\n// return [200, {} as Response]\r\n// })\r\n","import {\r\n AddCarData,\r\n AddCarPayload,\r\n DeleteCarPayload,\r\n GetCarsData,\r\n} from 'typedef/car'\r\nimport { CUSTOMER_CAR } from './constants'\r\nimport axios from '.'\r\nimport { Response } from '../typedef/api'\r\nimport './mocks/CarsApiMock'\r\n\r\nexport const getCars = async () => {\r\n try {\r\n const result = await axios.get>(CUSTOMER_CAR)\r\n return result.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const addCar = async (request: AddCarPayload) => {\r\n try {\r\n const { data } = await axios.post>(\r\n CUSTOMER_CAR,\r\n request\r\n )\r\n return data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const deleteCar = async (request: DeleteCarPayload) => {\r\n try {\r\n await axios.delete(`${CUSTOMER_CAR}/${request.carId}`)\r\n return request.carId\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n","import { CreditCard, CardType } from 'typedef/creditCards'\r\n\r\nexport const cards: CreditCard[] = [\r\n {\r\n creditCardId: '21379110-1234-1111-0000-123412341234',\r\n last4Digits: '2137',\r\n cardType: CardType.MasterCard,\r\n },\r\n {\r\n creditCardId: '21379110-1234-1111-0000-32112321',\r\n last4Digits: '3221',\r\n cardType: CardType.AmericanExpress,\r\n },\r\n {\r\n creditCardId: '32322222-1234-1111-0000-123412341234',\r\n last4Digits: '1267',\r\n cardType: CardType.DinersClub,\r\n },\r\n {\r\n creditCardId: '42322222-1234-1111-0000-123412341234',\r\n last4Digits: '3212',\r\n cardType: CardType.Invalid,\r\n },\r\n {\r\n creditCardId: '52322222-1234-1111-0000-123412341234',\r\n last4Digits: '1214',\r\n cardType: CardType.JCB,\r\n },\r\n {\r\n creditCardId: '52322222-1234-1111-0000-123412341234',\r\n last4Digits: '2231',\r\n cardType: CardType.Discover,\r\n },\r\n {\r\n creditCardId: '52322222-1234-1111-0000-123412341234',\r\n last4Digits: '3333',\r\n cardType: CardType.Visa,\r\n },\r\n]\r\n","import mock from '.'\r\nimport { Response } from '../../typedef/api'\r\nimport { cards } from '__fixtures__/myCreditCards'\r\nimport { GetCreditCardsData, AddCreditCardData } from 'typedef/creditCards'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\n\r\nmock.onGet('/CreditCard').reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: { creditCards: cards },\r\n } as Response,\r\n ]\r\n})\r\n\r\nmock.onDelete('/CreditCard').reply(config => {\r\n const data = config.data\r\n\r\n if (!data) return [400]\r\n\r\n return [200, {} as Response]\r\n})\r\n\r\nmock.onPost('/CreditCard').reply(config => {\r\n console.log({ config })\r\n return [\r\n 200,\r\n {\r\n // errors: [{ errorCode: 4020 }],\r\n data: { creditCardId: nanoid() },\r\n } as Response,\r\n ]\r\n})\r\n","import { Tokens, UserRole } from 'typedef/customer'\r\n\r\nexport interface ITokensStorageService {\r\n set: (tokens: Tokens) => void\r\n get: () => Tokens | null\r\n clear: () => void\r\n setUserRole: (tokens: UserRole) => void\r\n getUserRole: () => UserRole | null\r\n clearUserRole: () => void\r\n}\r\n\r\nconst set = (tokens: Tokens) => {\r\n localStorage.setItem('tokens', JSON.stringify(tokens))\r\n}\r\nconst setUserRole = (role: UserRole) => {\r\n localStorage.setItem('role', JSON.stringify(role))\r\n}\r\n\r\nconst get = () => {\r\n const tokensStorage = localStorage.getItem('tokens')\r\n if (!tokensStorage) return null\r\n\r\n const tokens: Tokens = JSON.parse(tokensStorage)\r\n return tokens\r\n}\r\nconst getUserRole = () => {\r\n const tokensStorage = localStorage.getItem('role')\r\n if (!tokensStorage) return null\r\n\r\n const role: UserRole = JSON.parse(tokensStorage)\r\n return role\r\n}\r\n\r\nconst clear = () => {\r\n localStorage.removeItem('tokens')\r\n}\r\n\r\nconst clearUserRole = () => {\r\n localStorage.removeItem('role')\r\n}\r\n\r\nconst tokensStorageService: ITokensStorageService = {\r\n set,\r\n get,\r\n clear,\r\n // Temporary\r\n setUserRole,\r\n getUserRole,\r\n clearUserRole,\r\n}\r\n\r\nexport default tokensStorageService\r\n","import { AxiosRequestConfig } from 'axios'\r\nimport moment from 'moment'\r\nimport mock from '.'\r\nimport { ErrorCode, Response } from '../../typedef/api'\r\nimport { LoginMode, LoginResult, UserRole } from '../../typedef/customer'\r\nimport tokensStorageService from 'utils/tokenStorageService'\r\n\r\nconst loginResult: LoginResult = {\r\n role: UserRole.User,\r\n tokens: {\r\n auth: 'AUTH_TOKEN',\r\n expires: moment().add(1, 'minutes').unix(),\r\n refresh: 'REFRESH_TOKEN',\r\n },\r\n}\r\n\r\nconst loginAsGuestResult: LoginResult = {\r\n role: UserRole.Guest,\r\n tokens: {\r\n auth: 'GUEST_AUTH_TOKEN',\r\n expires: moment().add(1, 'minutes').unix(),\r\n refresh: 'GUEST_REFRESH_TOKEN',\r\n },\r\n}\r\n\r\nconst invalidLoginCredentials = {\r\n login: '22222222',\r\n password: '22222222',\r\n}\r\n\r\n// mock.onPost('/Customer/RefreshToken').networkError()\r\nmock.onPost('/Customer/RefreshToken').reply(config => {\r\n const userRole = tokensStorageService.getUserRole()\r\n const tokens = tokensStorageService.get()\r\n\r\n return [\r\n 200,\r\n {\r\n data: { role: userRole, tokens } as LoginResult,\r\n },\r\n ]\r\n})\r\nmock.onPost('/Customer/Login').reply((config: AxiosRequestConfig) => {\r\n const data = JSON.parse(config.data)\r\n if (\r\n data.login === invalidLoginCredentials.login &&\r\n data.password === invalidLoginCredentials.password\r\n ) {\r\n return [\r\n 400,\r\n {\r\n errors: [\r\n {\r\n errorCode: ErrorCode.IncorrectUserOrPassword,\r\n },\r\n ],\r\n } as Response,\r\n ]\r\n }\r\n\r\n if (data.mode === LoginMode.Guest) {\r\n return [\r\n 200,\r\n {\r\n data: loginAsGuestResult,\r\n },\r\n ]\r\n }\r\n\r\n if (data.mode === LoginMode.User) {\r\n return [\r\n 200,\r\n {\r\n data: loginResult,\r\n } as Response,\r\n ]\r\n }\r\n\r\n return [500, { error: { errorCode: ErrorCode.OtherError } }]\r\n})\r\n\r\nmock.onPut('/Customer/Edit').reply((config: AxiosRequestConfig) => {\r\n if (config.headers['Authorization']) {\r\n return [200, {} as Response]\r\n }\r\n\r\n return [401, {} as Response]\r\n})\r\n\r\nmock.onPut('/Customer/ChangePassword').reply((config: AxiosRequestConfig) => {\r\n if (config.headers['Authorization']) {\r\n const data = JSON.parse(config.data)\r\n if (data.password === '111111' && data.newPassword === '222222') {\r\n return [\r\n 200,\r\n {\r\n errors: [\r\n {\r\n errorCode: ErrorCode.IncorrectUserOrPassword,\r\n },\r\n ],\r\n } as Response,\r\n ]\r\n }\r\n\r\n return [\r\n 200,\r\n {\r\n data: {\r\n tokens: {\r\n auth: 'AUTH_TOKEN_CHANGED_PASSWORD',\r\n refresh: 'REFRESH_TOKEN_CHANGED_PASSWORD',\r\n },\r\n role: UserRole.User,\r\n },\r\n } as Response,\r\n ]\r\n }\r\n\r\n return [401, {} as Response]\r\n})\r\n\r\nmock.onDelete('/Customer/Delete').reply((config: AxiosRequestConfig) => {\r\n if (config.headers['Authorization']) {\r\n if (config.params.password === 'invalid') {\r\n return [\r\n 400,\r\n {\r\n errors: [\r\n {\r\n errorCode: ErrorCode.IncorrectUserOrPassword,\r\n },\r\n ],\r\n } as Response,\r\n ]\r\n }\r\n\r\n if (config.params.password === 'failed') {\r\n return [\r\n 400,\r\n {\r\n errors: [\r\n {\r\n errorCode: ErrorCode.OtherError,\r\n },\r\n ],\r\n } as Response,\r\n ]\r\n }\r\n\r\n return [200, {} as Response]\r\n }\r\n\r\n return [401, {} as Response]\r\n})\r\n\r\nmock.onPost('/Customer/RemindPassword').reply(() => {\r\n return [200, {} as Response]\r\n})\r\n\r\nmock.onPost('/Customer/ResetPassword').reply((config: AxiosRequestConfig) => {\r\n return [\r\n 200,\r\n {\r\n data: {\r\n tokens: {\r\n auth: 'AUTH_TOKEN_RESET_PASSWORD',\r\n refresh: 'REFRESH_TOKEN_RESET_PASSWORD',\r\n expires: Date.now() + 60000,\r\n },\r\n role: UserRole.Guest,\r\n },\r\n errors: [],\r\n } as Response,\r\n ]\r\n})\r\n","import { ErrorCode, ErrorResponses } from 'typedef'\r\nimport T from 'utils/translations'\r\n\r\n// TODO:\r\nexport const defaultErrorData: ErrorResponses = {\r\n [ErrorCode.OtherError]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n code: ErrorCode.OtherError,\r\n },\r\n [ErrorCode.UnauthorizedAccess]: {\r\n title: T.OOPS,\r\n description: 'Unauthorized',\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectUserOrPassword]: {\r\n title: T.OOPS,\r\n description: T.WRONG_LOGIN_OR_PASSWORD,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.CannotPerformActionAsGuest]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.CannotPerformActionAsUser]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.CustomerDoesntExist]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.AmbiguousLogin]: {\r\n title: T.OOPS,\r\n description: T.AMBIGUOUS_LOGIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.PasswordDoesNotMeetLengthRequirements]: {\r\n title: T.OOPS,\r\n description: T.MINIMUM_8_CHARACTERS_AT_LEAST_ONE_CAPITAL,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.PhoneNumberAndItsCountryCodeCannotBeEmpty]: {\r\n title: T.OOPS,\r\n description: T.PHONE_CANNOT_BE_EMPTY,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.NewPasswordHasToBeDifferent]: {\r\n title: T.INCORRECT_PASSWORD,\r\n description: T.OLD_PASSWORD_MUST_BE_DIFFERENT_THEN_THE_NEW_PASSWORD,\r\n variant: 'error',\r\n },\r\n [ErrorCode.IncorrectConfirmToken]: {\r\n title: T.OOPS,\r\n description: T.INCORRECT_CONFIRM_TOKEN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectPin]: {\r\n title: T.OOPS,\r\n description: T.INVALID_ACTIVATION_CODE,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.NoUserAssignedToGivenEMail]: {\r\n title: T.OOPS,\r\n description: T.NO_E_MAIL_ASSIGNED_TO_GIVEN_PHONE_NUMBER,\r\n variant: 'error',\r\n },\r\n [ErrorCode.NotEnoughParameters]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.ParkingLotNotFound]: {\r\n title: T.OOPS,\r\n description: T.NO_PARKING_FOUND,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.InvalidParkerUser]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.InvalidMonthlyParkingGroup]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectMode]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectParameterException]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.CarNotFound]: {\r\n title: T.OOPS,\r\n description: T.NO_CARS_FOUND,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.CreditCardNotFound]: {\r\n title: T.OOPS,\r\n description: T.NO_CREDIT_CARDS_FOUND,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.TicketNotFound]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectPassword]: {\r\n title: T.OOPS,\r\n description: T.INCORRECT_PASSWORD,\r\n variant: 'error',\r\n },\r\n [ErrorCode.ObjectExist]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.IncorrectValidationCouponCode]: {\r\n title: T.INVALID_CODE,\r\n description: T.PROVIDED_CODE_IS_INVALID,\r\n variant: 'error',\r\n },\r\n [ErrorCode.ConflictWithCurrentObjectState]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.MonthlyParkingIsDisabledForThisLocation]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.ParkCarUsingExitGate]: {\r\n title: T.ERROR,\r\n description: T.UNFORTUNATELY_WE_CANNOT_FIND_YOUR_TICKET,\r\n variant: 'error',\r\n },\r\n [ErrorCode.ParkCarWhileAnotherIsParked]: {\r\n title: T.ERROR,\r\n description: T.IT_SEEMS_THAT_YOUR_VEHICLE_IS_CURRENTLY_ALREADY_PARKED,\r\n variant: 'error',\r\n },\r\n [ErrorCode.ParkingIsClosed]: {\r\n title: T.OOPS,\r\n description: T.PARKING_IS_CLOSED,\r\n variant: 'error',\r\n },\r\n [ErrorCode.TriedToExitWithUnpaidTicket]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'error',\r\n },\r\n [ErrorCode.PaymentTimeExpired]: {\r\n title: T.TIMEOUT,\r\n description: T.YOUR_SESSION_HAS_EXPIRED_PLEASE_START_OVER,\r\n variant: 'error',\r\n },\r\n [ErrorCode.AreaNoIntegrationEnabled]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'error',\r\n },\r\n [ErrorCode.AutoClearTimeExeeded]: {\r\n title: T.OOPS,\r\n description: T.RATE_HAS_EXPIRED_PLEASE_SELECT_YOUR_TIME_AGAIN,\r\n variant: 'error',\r\n },\r\n [ErrorCode.NotImplementedException]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.InconsistentData]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.FailedSaveCar]: {\r\n title: T.OOPS,\r\n description: T.YOUR_CAR_CANNOT_BE_ADDED,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.FailedSaveCarPayment]: {\r\n title: T.TRANSACTION_DECLINED,\r\n description: T.YOUR_TRANSACTION_HAS_BEEN_REJECTED,\r\n variant: 'error',\r\n },\r\n [ErrorCode.FailedParkCar]: {\r\n title: T.OOPS,\r\n description: T.FAILED_PARK_CAR,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.FailedDeleteCreditCard]: {\r\n title: T.OOPS,\r\n description: T.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.FailedBuyMoreTime]: {\r\n title: T.OOPS,\r\n description: T.FAILED_PARK_CAR,\r\n variant: 'warning',\r\n },\r\n [ErrorCode.CurrentPricingIsExpired]: {\r\n variant: 'error',\r\n description: T.RATE_HAS_EXPIRED_PLEASE_SELECT_YOUR_TIME_AGAIN,\r\n title: T.RATE_HAS_EXPIRED,\r\n },\r\n [ErrorCode.HasParkedCars]: {\r\n variant: 'error',\r\n description: T.HAS_PARKED_CARS,\r\n title: T.OOPS,\r\n },\r\n [ErrorCode.ParkingIsUnavailable]: {\r\n variant: 'error',\r\n description: T.PARKING_IS_UNAVAILABLE,\r\n title: T.OOPS,\r\n },\r\n [ErrorCode.TokenExpired]: {\r\n variant: 'warning',\r\n description: T.TOKEN_EXPIRED,\r\n title: T.OOPS,\r\n },\r\n [ErrorCode.UserIsNotHuman]: {\r\n variant: 'error',\r\n description: T.USER_IS_NOT_HUMAN,\r\n title: 'error',\r\n },\r\n}\r\n","import i18n from 'i18n'\r\nimport { ErrorCode, FetchStatus, Response, ErrorData } from 'typedef'\r\nimport { defaultErrorData } from './apiErrors/DefaultApiError'\r\n\r\nexport const isErrorCode = (value: any): boolean => value in ErrorCode\r\n\r\nexport const getErrorCode = (err: any): ErrorCode => {\r\n return err?.response?.data?.errors\r\n ? (err?.response?.data as Response)?.errors[0]?.errorCode\r\n : ErrorCode.OtherError\r\n}\r\nexport function hasErrorCode(toBeDetermined: any): toBeDetermined is ErrorCode {\r\n if (toBeDetermined in ErrorCode) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\ntype ErrorMessage = (\r\n defaultErrorData: any,\r\n e?: any,\r\n errorData?: any\r\n) => ErrorData\r\n\r\nexport const errorMessage: ErrorMessage = (\r\n defaultErrorData,\r\n errorCode,\r\n errorData\r\n) => {\r\n let combinedErrorData = defaultErrorData\r\n if (errorData) {\r\n combinedErrorData = { ...defaultErrorData, ...errorData }\r\n }\r\n if (!Number.isInteger(errorCode)) {\r\n return combinedErrorData[ErrorCode.OtherError]\r\n }\r\n let error = combinedErrorData[errorCode]\r\n if (!error) {\r\n error = {}\r\n }\r\n error.code = errorCode\r\n error.title = combinedErrorData[errorCode].title\r\n error.description = combinedErrorData[errorCode].description\r\n error.variant = combinedErrorData[errorCode].variant\r\n if (!error?.variant) {\r\n error.variant = defaultErrorData[errorCode].variant\r\n }\r\n if (!error?.title) {\r\n error.title = defaultErrorData[errorCode].title\r\n }\r\n if (!error?.description) {\r\n error.description = defaultErrorData[errorCode].description\r\n }\r\n\r\n return error\r\n}\r\n\r\ntype GetErrorMessage = (\r\n errorCode?: number,\r\n errorData?: Partial>>\r\n) => ErrorData\r\nexport const getErrorMessage: GetErrorMessage = (errorCode, errorData) => {\r\n const error = errorMessage(defaultErrorData, errorCode, errorData)\r\n return {\r\n ...error,\r\n title: i18n.t(error.title),\r\n description: i18n.t(error.description),\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated\r\n */\r\nexport const fetchStatusIs = (status: FetchStatus) => ({\r\n idle: status === FetchStatus.Idle,\r\n pending: status === FetchStatus.Pending,\r\n fulfilled: status === FetchStatus.Fulfilled,\r\n rejected: status === FetchStatus.Rejected,\r\n})\r\n\r\n/**\r\n * @deprecated, moved to slice utils\r\n */\r\nexport const getPromiseStatus = (statuses: FetchStatus[]) => ({\r\n idle: statuses.includes(FetchStatus.Idle),\r\n pending: statuses.includes(FetchStatus.Pending),\r\n pendingIdle:\r\n statuses.filter(el => el === FetchStatus.Pending || el === FetchStatus.Idle)\r\n .length === 2,\r\n pendingFulfilled:\r\n statuses.filter(\r\n el => el === FetchStatus.Pending || el === FetchStatus.Fulfilled\r\n ).length === 2,\r\n pendingRejected:\r\n statuses.filter(\r\n el => el === FetchStatus.Pending || el === FetchStatus.Rejected\r\n ).length === 2,\r\n fulfilled: statuses.includes(FetchStatus.Fulfilled),\r\n rejected: statuses.includes(FetchStatus.Rejected),\r\n})\r\n","import { GetPriceData } from 'typedef/price'\r\nimport moment from 'moment'\r\n\r\nexport const carParkPrices: GetPriceData[] = [\r\n {\r\n amount: 1111,\r\n totalAmount: 1111,\r\n convenienceFee: 50,\r\n parkingExpireDateTime: moment().add(25, 'm').toISOString(),\r\n validations: [],\r\n },\r\n {\r\n amount: 2233,\r\n totalAmount: 2233,\r\n convenienceFee: 20,\r\n parkingExpireDateTime: moment().add(40, 'm').toISOString(),\r\n convenienceFeeName: 'Test convenience fee name',\r\n validations: [],\r\n },\r\n {\r\n amount: 3233,\r\n totalAmount: 3233,\r\n convenienceFee: 213,\r\n parkingExpireDateTime: moment().add(55, 'm').toISOString(),\r\n convenienceFeeName: 'Test3 convenience fee name',\r\n validations: [],\r\n },\r\n]\r\n","import { PRICE, PRICE_EXTERNAL_PRICING } from 'api/constants'\r\nimport { ExternalPricingData, GetPriceData } from 'typedef/price'\r\nimport { carParkPrices } from '__fixtures__/prices'\r\nimport mock from '.'\r\nimport moment from 'moment'\r\nimport { generateExternalPricings } from './mocks.utils'\r\nmock.onGet(PRICE).replyOnce(config => {\r\n return [\r\n 200,\r\n {\r\n data: carParkPrices[0] as GetPriceData,\r\n },\r\n ]\r\n})\r\n\r\nmock.onGet(PRICE).replyOnce(config => {\r\n return [\r\n 200,\r\n {\r\n data: carParkPrices[1] as GetPriceData,\r\n },\r\n ]\r\n})\r\n\r\nmock.onGet(PRICE).replyOnce(config => {\r\n return [\r\n 200,\r\n {\r\n data: carParkPrices[2] as GetPriceData,\r\n },\r\n ]\r\n})\r\nconst pricings = generateExternalPricings(23)\r\nmock.onGet(PRICE_EXTERNAL_PRICING).reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: {\r\n currentDateUtc: moment().utc().toString(),\r\n pricingExpirationDateUtc: moment().add(5, 'minute').utc().toString(),\r\n pricings,\r\n } as ExternalPricingData,\r\n },\r\n ]\r\n})\r\n// mock.onGet(PRICE).networkErrorOnce()\r\n","import { ExternalPricingOption } from 'typedef'\r\nimport moment from 'moment'\r\nexport const generateExternalPricings = (amount = 4) => {\r\n const arr: ExternalPricingOption[] = Array.from(Array(amount)).map(\r\n (el, i) => ({\r\n amount: 200 + i,\r\n externalPricingId: `id-${i}`,\r\n parkingExpireDateTime: moment()\r\n .add(i, 'hour')\r\n .add(20, 'minute')\r\n .toString(),\r\n fees: [\r\n { amount: 100 + i, label: 'first fee' },\r\n {\r\n amount: 200 + i,\r\n label: 'Second fee',\r\n },\r\n ],\r\n })\r\n )\r\n return arr\r\n}\r\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nimport axios, { mockedAxios } from '.'\r\nimport { Response } from '../typedef/api'\r\nimport {\r\n ExternalPricingData,\r\n GetExternalPricingPayload,\r\n GetPriceData,\r\n GetPricePayload,\r\n} from '../typedef/price'\r\nimport { PRICE, PRICE_EXTERNAL_PRICING } from './constants'\r\nimport './mocks/PriceApiMock'\r\n\r\nexport const getPrice = async (params: GetPricePayload) => {\r\n try {\r\n const response = await axios.get>(PRICE, {\r\n params,\r\n })\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\nexport const getExternalPricing = async (params: GetExternalPricingPayload) => {\r\n try {\r\n const response = await axios.get>(\r\n PRICE_EXTERNAL_PRICING,\r\n {\r\n params,\r\n }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n","import { nanoid } from '@reduxjs/toolkit'\r\nimport { Receipt } from 'typedef/receipt'\r\n\r\nexport const receipts: Receipt[] = [\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 1,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 100,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 102,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 120,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 1000,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 1003,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 1030,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 1033,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 1300,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 132103,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 1330,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n cardUsed: false,\r\n locationName: 'Area st 11',\r\n carId: nanoid(),\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n {\r\n amount: {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n totalAmount: 2000,\r\n convenienceFee: 50,\r\n },\r\n areaAddress: 'area address',\r\n locationName: 'Area st 12',\r\n cardUsed: false,\r\n carId: 'carId2',\r\n dateInUTC: new Date().toUTCString(),\r\n externalServiceDeliversReceipts: false,\r\n },\r\n]\r\n","import {\r\n GetReceiptsData,\r\n SendQuestionData,\r\n SendReceiptsData,\r\n} from 'typedef/receipt'\r\nimport { receipts } from '__fixtures__/myReceipts'\r\nimport mock from '.'\r\nimport { Response } from '../../typedef/api'\r\n// Get Cars\r\n// mock.onGet('/Receipt').networkError()\r\n\r\nmock.onGet('/Receipt').reply(config => {\r\n return [\r\n 400,\r\n {\r\n data: { receipts } as GetReceiptsData,\r\n },\r\n ]\r\n})\r\n\r\nmock.onPost('/Receipt').reply(config => {\r\n return [\r\n 400,\r\n {\r\n data: true as SendReceiptsData,\r\n },\r\n ]\r\n})\r\n\r\nmock.onPost('/Question').reply(config => {\r\n return [\r\n 400,\r\n {\r\n data: true,\r\n } as Response,\r\n ]\r\n})\r\n","import { Response } from 'typedef/api'\r\nimport {\r\n AddContactInformationsData,\r\n AddContactInformationsPayload,\r\n GetContactInformationsData,\r\n GetReceiptsData,\r\n SendQuestionPayload,\r\n SendReceiptsData,\r\n SendReceiptsPayload,\r\n SendVerificationSMSData,\r\n SendVerificationSMSPayload,\r\n} from 'typedef/receipt'\r\nimport axios from '.'\r\nimport {\r\n CUSTOMER_ADD_GUEST_NOTIFICATION,\r\n CUSTOMER_GET_GUEST_NOTIFICATION,\r\n RECEIPT,\r\n RECEIPT_QUESTION,\r\n SMS_RESEND_VERIFICATION_SMS,\r\n SMS_SEND_VERIFICATION_SMS,\r\n} from './constants'\r\nimport './mocks/ReceipstApiMock'\r\n\r\nexport const getReceipts = async () => {\r\n try {\r\n const { data } = await axios.get>(RECEIPT)\r\n return data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const sendReceipt = async (params: SendReceiptsPayload) => {\r\n try {\r\n const { data } = await axios.post>(\r\n RECEIPT,\r\n params\r\n )\r\n return data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const sendQuestion = async (params: SendQuestionPayload) => {\r\n try {\r\n const { data } = await axios.post>(RECEIPT_QUESTION, params)\r\n return data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const addContactInformations = async (\r\n params: AddContactInformationsPayload\r\n) => {\r\n try {\r\n const response = await axios.put>(\r\n CUSTOMER_ADD_GUEST_NOTIFICATION,\r\n params\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const sendVerificationSMS = async (\r\n params: SendVerificationSMSPayload\r\n) => {\r\n try {\r\n const response = await axios.post>(\r\n SMS_SEND_VERIFICATION_SMS,\r\n params\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const resendVerificationSMS = async (\r\n params: SendVerificationSMSData\r\n) => {\r\n try {\r\n const response = await axios.post>(\r\n SMS_RESEND_VERIFICATION_SMS,\r\n params\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const getContactInformations = async () => {\r\n try {\r\n const response = await axios.get>(\r\n CUSTOMER_GET_GUEST_NOTIFICATION\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n","import { TERMS_AND_CONDITIONS } from 'api/constants'\r\nimport i18n from 'i18n'\r\nimport { GetTermsAndConditionsResult } from 'typedef/terms'\r\nimport T from 'utils/translations'\r\nimport mock from '.'\r\n\r\nmock.onGet(TERMS_AND_CONDITIONS).reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: {\r\n text: i18n.t(T.TERMS_AND_CONDITIONS_CONTENT),\r\n } as GetTermsAndConditionsResult,\r\n },\r\n ]\r\n})\r\n// mock.onGet('/Tickets').networkErrorOnce()\r\n","import {\r\n AcceptToSParams,\r\n GetTermsAndConditionsParams,\r\n GetTermsAndConditionsResult,\r\n GetTermsOfServiceContentParams,\r\n ShowForCustomerParams,\r\n ShowForCustomerResult,\r\n} from 'typedef/terms'\r\nimport axios from '.'\r\nimport { Response } from '../typedef/api'\r\nimport {\r\n ACCEPT_TOS,\r\n SHOW_FOR_CUSTOMER,\r\n TERMS_AND_CONDITIONS,\r\n} from './constants'\r\nimport './mocks/TermsAndConditionsApiMock'\r\n\r\nexport const getTerms = async (params: GetTermsAndConditionsParams) => {\r\n try {\r\n const response = await axios.get>(\r\n TERMS_AND_CONDITIONS,\r\n { params }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const showForCustomer = async (params: ShowForCustomerParams) => {\r\n try {\r\n const response = await axios.get>(\r\n SHOW_FOR_CUSTOMER,\r\n { params }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const accept = async (params: AcceptToSParams) => {\r\n try {\r\n const response = await axios.post>(ACCEPT_TOS, params)\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const getTermsOfServiceContent = async (\r\n params: GetTermsOfServiceContentParams\r\n) => {\r\n try {\r\n const response = await axios.get>(\r\n `${TERMS_AND_CONDITIONS}/${params.id}?language=${params.language}`\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n","import {\r\n PARK_CAR,\r\n PARK_CAR_PAY,\r\n PARK_CAR_REDIRECT,\r\n PARK_CAR_TRANSACTION_STATUS,\r\n} from 'api/constants'\r\nimport moment from 'moment'\r\nimport {\r\n CardType,\r\n CarStatus,\r\n ErrorCode,\r\n GetTicketData,\r\n GetTicketsData,\r\n ParkCarData,\r\n ParkCarRedirectData,\r\n ParkCarTransactionStatusData,\r\n ParkerType,\r\n PayForCarData,\r\n Ticket,\r\n TransactionStatus,\r\n Response,\r\n} from 'typedef'\r\nimport { parkLot } from '__fixtures__'\r\nimport mock from '.'\r\n\r\nexport const grticket: Ticket = {\r\n carId: '123456',\r\n customStyles: [],\r\n carStatus: CarStatus.RequiresPayment,\r\n parkingBeginDateTime: '2020-09-29T10:00:45',\r\n parkingExpireDateTime: '2020-09-29T11:15:45',\r\n currentDateTime: '2020-09-29T11:00:45',\r\n externalServiceDeliversReceipts: false,\r\n settlement: {\r\n finalAmount: 150,\r\n creditCardInfo: {\r\n cardType: CardType.JCB,\r\n last4Digits: '1234',\r\n creditCardId: 'creditCardId',\r\n },\r\n currency: {\r\n currencySymbol: '$',\r\n currencyFormat: 0,\r\n cultureName: 'en_US',\r\n },\r\n parkingAmount: 100,\r\n convenienceFee: 50,\r\n convenienceFeeName: '',\r\n paymentOperationList: [\r\n {\r\n amount: 100,\r\n name: '',\r\n type: 1,\r\n dateAtLocal: moment().toString(),\r\n dateAtUTC: '2020-09-29T15:40:45',\r\n },\r\n ],\r\n },\r\n parkerType: 1,\r\n advertisementUrl: '',\r\n plate: 'DASDA',\r\n spot: '1232',\r\n lot: {\r\n customStyles: [],\r\n lotType: 1,\r\n lotId: '145471',\r\n lotName: 'LOT 51 - Demo',\r\n locationId: 113041,\r\n locationName: 'PCA - Demo',\r\n logoLink: 'https://test1apismsvalet.t2p.mobi/api/v1/File/GetFile/31745640',\r\n geolocation: {\r\n latitude: 33.1139571,\r\n longitude: -96.8024388,\r\n },\r\n },\r\n validateEnable: true,\r\n addTimeEnable: false,\r\n}\r\n\r\nmock.onGet('/Tickets').reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: {\r\n tickets: [\r\n {\r\n ...grticket,\r\n carStatus: CarStatus.RequiresPayment,\r\n parkingExpireDateTime: '',\r\n },\r\n ],\r\n } as GetTicketsData,\r\n errors: [\r\n {\r\n errorCode: ErrorCode.ObjectExist,\r\n },\r\n ],\r\n },\r\n ]\r\n})\r\n\r\nmock\r\n .onGet(`/Tickets/${grticket.carId}`)\r\n .replyOnce(config => {\r\n return [\r\n 200,\r\n {\r\n data: {\r\n ...grticket,\r\n carStatus: CarStatus.RequiresPayment,\r\n parkingExpireDateTime: '',\r\n } as GetTicketData,\r\n },\r\n ]\r\n })\r\n .onGet(`/Tickets/${grticket.carId}`)\r\n .replyOnce(config => {\r\n return [\r\n 200,\r\n {\r\n data: {\r\n ...grticket,\r\n carStatus: CarStatus.ParkingHasExpired,\r\n } as GetTicketData,\r\n },\r\n ]\r\n })\r\n// mock.onGet('/Tickets').networkErrorOnce()\r\n\r\nmock.onPost(PARK_CAR).reply(config => {\r\n return [\r\n 400,\r\n {\r\n errors: [\r\n {\r\n errorCode: ErrorCode.CurrentPricingIsExpired,\r\n message: 'Current pricing is expired',\r\n },\r\n ],\r\n } as Response,\r\n // 200,\r\n // {\r\n // data: {\r\n // carId: 'test car id',\r\n // carStatus: 1,\r\n // } as ParkCarData,\r\n // },\r\n ]\r\n})\r\nmock.onPost(PARK_CAR_PAY).reply(config => {\r\n return [\r\n 400,\r\n {\r\n data: {\r\n success: true,\r\n } as PayForCarData,\r\n },\r\n ]\r\n})\r\nmock.onGet(PARK_CAR_REDIRECT).reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: {\r\n token: 'redirect-token',\r\n } as ParkCarRedirectData,\r\n },\r\n ]\r\n})\r\nmock.onGet(PARK_CAR_TRANSACTION_STATUS).reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: {\r\n transactionStatus: TransactionStatus.Failed,\r\n } as ParkCarTransactionStatusData,\r\n },\r\n ]\r\n})\r\n\r\nmock\r\n .onGet(\r\n 'https://portal-test.targetadnetwork.com/api/ads/location?uid=564850455&slot=21'\r\n )\r\n .reply(config => {\r\n return [\r\n 200,\r\n `\r\n \r\n

\r\n \r\n
\r\n`,\r\n ,\r\n ]\r\n })\r\nmock.onGet('https://test.pl').reply(config => {\r\n return [\r\n 200,\r\n\r\n `\r\n \r\n
\r\n \r\n
\r\n\r\n `,\r\n ,\r\n ]\r\n})\r\n","import {\r\n PARK_CAR,\r\n PARK_CAR_PAY,\r\n TICKETS,\r\n PARK_CAR_REDIRECT,\r\n PARK_CAR_TRANSACTION_STATUS,\r\n} from 'api/constants'\r\nimport {\r\n BuyMoreTimeData,\r\n BuyMoreTimePayload,\r\n GetTicketData,\r\n GetTicketPayload,\r\n GetTicketsData,\r\n ParkCarData,\r\n ParkCarPayload,\r\n ParkCarRedirectData,\r\n ParkCarRedirectPayload,\r\n ParkCarTransactionStatusData,\r\n ParkCarTransactionStatusPayload,\r\n PayForCarData,\r\n PayForCarPayload,\r\n Response,\r\n} from 'typedef'\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nimport axios, { mockedAxios } from '.'\r\nimport './mocks/TicketsApiMock'\r\n\r\nexport const getTicket = async (args: GetTicketPayload) => {\r\n return axios\r\n .get>(`${TICKETS}/${args.carId}`)\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n}\r\nexport const getTickets = async () =>\r\n axios\r\n .get>(TICKETS)\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n\r\nexport const parkCar = async (params: ParkCarPayload) =>\r\n axios\r\n .post>(PARK_CAR, params)\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n\r\nexport const buyMoreTime = async (params: BuyMoreTimePayload) =>\r\n axios\r\n .put>(PARK_CAR, params)\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n\r\nexport const payForCar = async (params: PayForCarPayload) =>\r\n axios\r\n .post>(PARK_CAR_PAY, params)\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n\r\nexport const parkCarRedirect = async (params: ParkCarRedirectPayload) =>\r\n axios\r\n .post>(PARK_CAR_REDIRECT, params )\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n\r\nexport const parkCarTransactionStatus = async (\r\n params: ParkCarTransactionStatusPayload\r\n) =>\r\n axios\r\n .get>(PARK_CAR_TRANSACTION_STATUS, {\r\n params,\r\n })\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n","import { Partner } from 'typedef/validator'\r\n\r\nexport const partners: Partner[] = [\r\n {\r\n couponId: 12312,\r\n name: 'Auchan',\r\n partnerId: 1237,\r\n logoDir: 'https://test1apismsvalet.t2p.mobi/api/v1/File/GetFile/23523040',\r\n isAddFieldEnable: false,\r\n addFields: [],\r\n qrCodeEnable: true,\r\n },\r\n {\r\n couponId: 123123,\r\n name: 'Pull&Bear',\r\n partnerId: 1235,\r\n logoDir: 'https://test1apismsvalet.t2p.mobi/api/v1/File/GetFile/23523040',\r\n isAddFieldEnable: false,\r\n qrCodeEnable: false,\r\n addFields: [],\r\n },\r\n {\r\n couponId: 1234,\r\n name: 'Burger King',\r\n partnerId: 1234,\r\n logoDir: 'https://test1apismsvalet.t2p.mobi/api/v1/File/GetFile/156394860',\r\n isAddFieldEnable: false,\r\n qrCodeEnable: false,\r\n addFields: [],\r\n },\r\n]\r\n","import mock from '.'\r\nimport { Response } from 'typedef/api'\r\nimport { GetValidatorsData, ValidateCodeData } from 'typedef/validator'\r\nimport { partners } from '__fixtures__/validators'\r\nimport { COUPON } from 'api/constants'\r\n\r\n// mock.onGet(COUPON).networkError()\r\nmock.onGet(COUPON).reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: { partners },\r\n } as Response,\r\n ]\r\n})\r\n\r\n// mock.onPost(COUPON).networkError()\r\nmock.onPost(COUPON).reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: true,\r\n } as Response,\r\n ]\r\n})\r\n","import {\r\n GetValidatorsData,\r\n GetValidatorsParams,\r\n ValidateCodeParams,\r\n ValidateCodeUpfrontParams,\r\n} from 'typedef/validator'\r\nimport axios from '.'\r\nimport { Response } from '../typedef/api'\r\nimport { COUPON, UPFRONT_COUPON } from './constants'\r\nimport './mocks/ValidatorsApiMock'\r\n\r\nexport const getValidators = async (params: GetValidatorsParams) => {\r\n try {\r\n const result = await axios.get>(COUPON, {\r\n params,\r\n })\r\n return result.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const validateCode = async (params: ValidateCodeParams) => {\r\n try {\r\n const { data } = await axios.post>(COUPON, params)\r\n return data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const validateCodeUpfront = async (\r\n params: ValidateCodeUpfrontParams\r\n) => {\r\n try {\r\n const { data } = await axios.post>(UPFRONT_COUPON, params)\r\n return data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n","import {\r\n GetCompanyContactInfoParams,\r\n GetCompanyContactInfoResult,\r\n} from 'typedef/companyDetails'\r\nimport axios from '.'\r\nimport { Response } from '../typedef/api'\r\nimport { LOTS_COMPANY_CONTACT_INFO } from './constants'\r\n\r\nexport const getCompanyContactInfo = async (\r\n params: GetCompanyContactInfoParams\r\n) => {\r\n try {\r\n const response = await axios.get>(\r\n LOTS_COMPANY_CONTACT_INFO,\r\n {\r\n params,\r\n }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n","import {\r\n GetLotDetailsMapData,\r\n GetLotDetailsParkData,\r\n GetLotsData,\r\n Lot,\r\n} from 'typedef/lot'\r\nexport const lots: Lot[] = [\r\n {\r\n customStyles: [],\r\n lotType: 1,\r\n lotId: '131361',\r\n lotName: 'A_Końcowa',\r\n locationName: 'L_Zawady',\r\n locationId: 3123,\r\n geolocation: {\r\n latitude: 53.1666491,\r\n longitude: 23.1170682,\r\n },\r\n },\r\n]\r\n\r\nexport const getLots: GetLotsData = {\r\n lots: [\r\n {\r\n customStyles: [],\r\n locationId: 3123,\r\n lotType: 1,\r\n lotId: '145471',\r\n lotName: 'LOT 51 - Demo',\r\n locationName: 'PCA - Demo',\r\n geolocation: {\r\n latitude: 33.1139571,\r\n longitude: -96.8024388,\r\n },\r\n pCode: 'PCA123',\r\n },\r\n {\r\n customStyles: [],\r\n locationId: 323,\r\n lotType: 1,\r\n lotId: '271011',\r\n lotName: 'Garage',\r\n locationName: \"Moose's Garage\",\r\n geolocation: {\r\n latitude: 33.0849878,\r\n longitude: -96.8033517,\r\n },\r\n pCode: 'M3RHVZ',\r\n },\r\n ],\r\n newTokens: {\r\n role: 1,\r\n tokens: {\r\n auth: 'new auth',\r\n expires: Date.now() + 120000,\r\n refresh: 'new refresh',\r\n },\r\n },\r\n}\r\nexport const mapLot: GetLotDetailsMapData = {\r\n ...lots[0],\r\n logoLink: 'https://test1apismsvalet.t2p.mobi/api/v1/File/GetFile/156394860',\r\n address: {\r\n fullAddress: 'Końcowa 2{NL}Białystok {NL}15-697{NL}Poland',\r\n street: 'Końcowa 2',\r\n country: 'Poland',\r\n postalCode: '15-697',\r\n city: 'Białystok',\r\n state: '',\r\n },\r\n currentDateTimeLocal: 'date',\r\n pCode: 'true',\r\n geolocation: {\r\n latitude: 53.1666491,\r\n longitude: 23.1170682,\r\n },\r\n isLocationStopped: false,\r\n locationStoppedMessage: '',\r\n lotCapacity: {\r\n capacityFullSMSMessage: 'test SMS message',\r\n capacityFullWEBMessage: 'test WEB message',\r\n lotIsFull: false,\r\n },\r\n openingHours: [\r\n {\r\n dayOfWeek: 0,\r\n openingHoursInDay: [\r\n {\r\n startTime: '00:00:00',\r\n endTime: '23:59:59',\r\n },\r\n ],\r\n },\r\n {\r\n dayOfWeek: 1,\r\n openingHoursInDay: [\r\n {\r\n startTime: '00:00:00',\r\n endTime: '23:59:59',\r\n },\r\n ],\r\n },\r\n {\r\n dayOfWeek: 2,\r\n openingHoursInDay: [\r\n {\r\n startTime: '00:00:00',\r\n endTime: '23:59:59',\r\n },\r\n ],\r\n },\r\n {\r\n dayOfWeek: 3,\r\n openingHoursInDay: [\r\n {\r\n startTime: '00:00:00',\r\n endTime: '23:59:59',\r\n },\r\n ],\r\n },\r\n {\r\n dayOfWeek: 4,\r\n openingHoursInDay: [\r\n {\r\n startTime: '00:00:00',\r\n endTime: '23:59:59',\r\n },\r\n ],\r\n },\r\n {\r\n dayOfWeek: 5,\r\n openingHoursInDay: [\r\n {\r\n startTime: '00:00:00',\r\n endTime: '23:59:59',\r\n },\r\n ],\r\n },\r\n {\r\n dayOfWeek: 6,\r\n openingHoursInDay: [\r\n {\r\n startTime: '00:00:00',\r\n endTime: '23:59:59',\r\n },\r\n ],\r\n },\r\n ],\r\n}\r\n\r\nexport const lotMIX: GetLotDetailsParkData = {\r\n parkerId: '40e748fd-400d-46ef-98b9-08d83fb8f424',\r\n lotType: 1,\r\n lotId: '131361',\r\n locationId: 12312,\r\n externalPricingType: 0,\r\n customStyles: [],\r\n isExternalPricingEnabled: false,\r\n lotName: 'A_Końcowa',\r\n locationName: 'L_Zawady',\r\n logoLink: 'https://test1apismsvalet.t2p.mobi/api/v1/File/GetFile/156394860',\r\n monthlyEnable: true,\r\n currentDateTimeLocal: '2020-08-13T23:59:00',\r\n isLocationStopped: false,\r\n isUpfrontCouponAvailable: false,\r\n locationStoppedMessage: '',\r\n lotCapacity: {\r\n capacityFullSMSMessage: 'test SMS message',\r\n capacityFullWEBMessage: 'test WEB message',\r\n lotIsFull: false,\r\n },\r\n currency: {\r\n cultureName: null,\r\n currencyFormat: 1,\r\n currencySymbol: '$',\r\n },\r\n spot: {\r\n isEnabled: true,\r\n minSpotNumber: 1,\r\n maxSpotNumber: 1000,\r\n },\r\n timeSelectOption: [\r\n {\r\n pricingType: 1,\r\n optionType: 0,\r\n showAllDayUntil: true,\r\n allDayUntilMessage: '',\r\n endDateTime: '2020-08-13T23:59:00',\r\n optionLabel: null,\r\n amount: null,\r\n convenienceFee: null,\r\n optionId: null,\r\n intervalOptions: {\r\n showDaySelect: false,\r\n showHourSelect: true,\r\n showMinuteSelect: true,\r\n maxDays: 14,\r\n maxHours: 48,\r\n maxMinutes: 59,\r\n dayInterval: 1,\r\n hourInterval: 1,\r\n minuteInterval: 3,\r\n },\r\n },\r\n ],\r\n}\r\nexport const parkLot: GetLotDetailsParkData = {\r\n ...lots[0],\r\n newTokens: {\r\n tokens: {\r\n auth: 'auth token',\r\n refresh: 'refresh token',\r\n expires: Date.now() + 120000,\r\n },\r\n role: 2,\r\n },\r\n parkerId: '5479dcb8-7681-4352-29d9-08d83ef0fb95',\r\n carId: '123456',\r\n logoLink: 'https://test1apismsvalet.t2p.mobi/api/v1/File/GetFile/156394860',\r\n currentDateTimeLocal: '2020-08-13T23:59:00',\r\n monthlyEnable: true,\r\n externalPricingType: 0,\r\n isExternalPricingEnabled: false,\r\n isUpfrontCouponAvailable: false,\r\n isLocationStopped: false,\r\n locationStoppedMessage: '',\r\n lotCapacity: {\r\n capacityFullSMSMessage: 'test SMS message',\r\n capacityFullWEBMessage: 'test WEB message',\r\n lotIsFull: false,\r\n },\r\n currency: {\r\n cultureName: null,\r\n currencyFormat: 1,\r\n currencySymbol: '$',\r\n },\r\n spot: {\r\n isEnabled: true,\r\n minSpotNumber: 1,\r\n maxSpotNumber: 1000,\r\n },\r\n timeSelectOption: [\r\n //MULTI\r\n {\r\n pricingType: 3,\r\n optionType: 4,\r\n showAllDayUntil: false,\r\n allDayUntilMessage: null,\r\n endDateTime: null,\r\n optionLabel: 'Parking until 03/19/2020 / 12:00 AM',\r\n amount: 200,\r\n convenienceFee: 5,\r\n optionId: '915f9f00-4edd-ea11-8b03-000d3a12cd78',\r\n intervalOptions: null,\r\n },\r\n {\r\n pricingType: 3,\r\n optionType: 4,\r\n showAllDayUntil: false,\r\n allDayUntilMessage: null,\r\n endDateTime: null,\r\n optionLabel: 'Parking: # 3',\r\n amount: 3,\r\n convenienceFee: 5,\r\n optionId: '11c9bdfb-8edd-ea11-8b03-000d3a12cd78',\r\n intervalOptions: null,\r\n },\r\n {\r\n pricingType: 3,\r\n optionType: 3,\r\n showAllDayUntil: false,\r\n allDayUntilMessage: null,\r\n endDateTime: null,\r\n optionLabel: 'Select your parking time',\r\n amount: null,\r\n convenienceFee: null,\r\n optionId: 'c59022a8-2068-ea11-a94c-000d3a705ce6',\r\n intervalOptions: {\r\n showDaySelect: true,\r\n showHourSelect: true,\r\n showMinuteSelect: true,\r\n maxDays: 14,\r\n maxHours: 23,\r\n maxMinutes: 59,\r\n dayInterval: 1,\r\n hourInterval: 1,\r\n minuteInterval: 3,\r\n },\r\n },\r\n {\r\n pricingType: 3,\r\n optionType: 4,\r\n showAllDayUntil: false,\r\n allDayUntilMessage: null,\r\n endDateTime: '2020-08-14T00:00:00',\r\n optionLabel: 'until 08/14 12:00 AM',\r\n amount: 400,\r\n convenienceFee: 5,\r\n optionId: '14836f1b-4edd-ea11-8b03-000d3a12cd78',\r\n intervalOptions: null,\r\n },\r\n ],\r\n}\r\n","import { LOTS, LOTS_DETAILS_PARK } from 'api/constants'\r\nimport { GetLotDetailsParkData, GetLotsData } from 'typedef/lot'\r\nimport { parkLot, getLots } from '__fixtures__/lots'\r\nimport mock from '.'\r\n\r\nmock.onGet(LOTS).reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: getLots as GetLotsData,\r\n },\r\n ]\r\n})\r\nmock.onGet(LOTS_DETAILS_PARK).reply(config => {\r\n return [\r\n 200,\r\n {\r\n data: { ...parkLot, carId: null } as GetLotDetailsParkData,\r\n },\r\n ]\r\n})\r\n// mock.onGet(LOTS_DETAILS_PARK).networkErrorOnce()\r\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nimport axios, { mockedAxios } from '.'\r\nimport { Response } from '../typedef/api'\r\nimport {\r\n GetLotDetailsMapData,\r\n GetLotDetailsMapPayload,\r\n GetLotDetailsParkData,\r\n GetLotDetailsParkPayload,\r\n GetLotsData,\r\n GetLotsPayload,\r\n GetSimulatedPricesRequest,\r\n GetSimulatedPricesResponse,\r\n} from 'typedef'\r\nimport {\r\n LOTS,\r\n LOTS_DETAILS_MAP,\r\n LOTS_DETAILS_PARK,\r\n LOTS_SIMULATED_PRICES,\r\n} from './constants'\r\nimport './mocks/LotsApiMock'\r\nimport './mocks/TicketsApiMock'\r\n\r\nexport const getLots = async (params: GetLotsPayload) => {\r\n try {\r\n const response = await axios.get>(LOTS, {\r\n params,\r\n })\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const getLotDetailsMap = async (params: GetLotDetailsMapPayload) => {\r\n try {\r\n const response = await axios.get>(\r\n LOTS_DETAILS_MAP,\r\n {\r\n params,\r\n }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const getLotDetailsPark = async (params: GetLotDetailsParkPayload) => {\r\n try {\r\n const response = await axios.get>(\r\n LOTS_DETAILS_PARK,\r\n {\r\n params,\r\n }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const getSimulatedPrices = async (params: GetSimulatedPricesRequest) =>\r\n axios\r\n .post>(LOTS_SIMULATED_PRICES, params)\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'\r\nimport { lotApiError, ticketsApiError } from 'api/apiErrors'\r\nimport * as lotApi from 'api/LotApi'\r\nimport * as priceApi from 'api/PriceApi'\r\nimport * as ticketsApi from 'api/TicketsApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n BuyMoreTimeData,\r\n BuyMoreTimeExternalPayload,\r\n BuyMoreTimePayload,\r\n CreditCard,\r\n ErrorData,\r\n ExternalPricingData,\r\n FetchStatus,\r\n GetExternalPricingPayload,\r\n GetLotDetailsParkData,\r\n GetLotDetailsParkPayload,\r\n GetPriceData,\r\n GetPricePayload,\r\n ParkCarData,\r\n ParkCarPayload,\r\n ParkCarRedirectData,\r\n ParkCarRedirectPayload,\r\n ParkCarTransactionStatusData,\r\n ParkCarTransactionStatusPayload,\r\n} from 'typedef'\r\nimport { creditCardsSlice, customerSlice, sliceUtil, mapSlice } from '.'\r\nimport { FETCH, initialPromiseStatus, PARK_CAR } from './constants'\r\nimport { ParkCarState } from './parkCarSlice types'\r\n\r\n/**\r\n * state\r\n */\r\nconst initialPromiseStatuses: ParkCarState['promisesStatus'] = {\r\n getLotDetailsPark: initialPromiseStatus,\r\n getPrice: initialPromiseStatus,\r\n parkCar: initialPromiseStatus,\r\n buyMoreTime: initialPromiseStatus,\r\n parkCarRedirect: initialPromiseStatus,\r\n parkCarTransactionStatus: initialPromiseStatus,\r\n getExternalPricing: initialPromiseStatus,\r\n}\r\nconst initialState: ParkCarState = {\r\n lot: null,\r\n pricingPayload: null,\r\n pricing: null,\r\n ticketId: null,\r\n cardId: null,\r\n addTimeCard: null,\r\n hasCardBeenUsed: false,\r\n zipCode: null,\r\n promisesStatus: initialPromiseStatuses,\r\n parkingDetails: {\r\n fees: [],\r\n totalAmount: 0,\r\n },\r\n isPaymentRequired: false,\r\n providedPlate: null,\r\n providedSpotNumber: null,\r\n recaptchaToken: null,\r\n}\r\n\r\n/**\r\n * thunks\r\n */\r\nexport const getLotDetailsPark = createAsyncThunk<\r\n GetLotDetailsParkData,\r\n GetLotDetailsParkPayload,\r\n { rejectValue: ErrorData }\r\n>(`${PARK_CAR}/${FETCH}/getLotDetailsPark`, async (params, thunkApi) => {\r\n try {\r\n const resp = await lotApi.getLotDetailsPark(params)\r\n if (resp.newTokens) {\r\n thunkApi.dispatch(customerSlice.actions.setLogin(resp.newTokens))\r\n }\r\n if (resp.corporationLotsToken) {\r\n thunkApi.dispatch(\r\n customerSlice.actions.setCorporationToken(resp.corporationLotsToken)\r\n )\r\n }\r\n thunkApi.dispatch(mapSlice.actions.addLot(resp))\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n lotApiError.getLotDetailsPark\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\nexport const getPrice = createAsyncThunk<\r\n GetPriceData & { time: number },\r\n GetPricePayload,\r\n { rejectValue: ErrorData }\r\n>(`${PARK_CAR}/${FETCH}/getPrice`, async (params, thunkApi) => {\r\n try {\r\n const resp = await priceApi.getPrice(params)\r\n const time = Date.now()\r\n return { ...resp, time }\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(getErrorCode(error))\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\nexport const getExternalPricing = createAsyncThunk<\r\n ExternalPricingData,\r\n GetExternalPricingPayload,\r\n { rejectValue: ErrorData }\r\n>(`${PARK_CAR}/${FETCH}/getExternalPricing`, async (params, thunkApi) => {\r\n try {\r\n const resp = await priceApi.getExternalPricing(params)\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(getErrorCode(error))\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\nexport const parkCar = createAsyncThunk<\r\n ParkCarData,\r\n ParkCarPayload,\r\n { rejectValue: ErrorData }\r\n>(`${PARK_CAR}/${FETCH}/parkCar`, async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.parkCar(params)\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.parkCar\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const buyMoreTime = createAsyncThunk<\r\n BuyMoreTimeData,\r\n BuyMoreTimePayload | BuyMoreTimeExternalPayload,\r\n { rejectValue: ErrorData }\r\n>(`${PARK_CAR}${FETCH}/buyMoreTime`, async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.buyMoreTime(params)\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.buyMoreTime\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const parkCarRedirect = createAsyncThunk<\r\n ParkCarRedirectData,\r\n ParkCarRedirectPayload,\r\n { rejectValue: ErrorData }\r\n>(`${PARK_CAR}/${FETCH}/parkCarRedirect`, async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.parkCarRedirect(params)\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.parkCarRedirect\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const parkCarTransactionStatus = createAsyncThunk<\r\n ParkCarTransactionStatusData,\r\n ParkCarTransactionStatusPayload,\r\n { rejectValue: ErrorData }\r\n>(`${PARK_CAR}/${FETCH}/parkCarTransactionStatus`, async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.parkCarTransactionStatus(params)\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.parkCarTransactionStatus\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const getSelectedTicket = createAsyncThunk<\r\n ParkCarData,\r\n ParkCarPayload,\r\n { rejectValue: ErrorData }\r\n>(`${PARK_CAR}/${FETCH}/getSelectedTicket`, async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.parkCar(params)\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.parkCar\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\n/**\r\n * reducers\r\n */\r\nconst parkCarSlice = createSlice({\r\n name: 'parkCar',\r\n initialState,\r\n reducers: {\r\n setlot(state, { payload }: PayloadAction) {\r\n state.lot = payload\r\n },\r\n setPricing(state, { payload }: PayloadAction) {\r\n state.pricing = payload\r\n },\r\n setTicket(state, { payload }: PayloadAction<{ carId: string }>) {\r\n state.ticketId = payload.carId\r\n },\r\n setCard(state, { payload }: PayloadAction<{ id: string }>) {\r\n state.cardId = payload.id\r\n },\r\n setParkingDetails(\r\n state,\r\n { payload }: PayloadAction>\r\n ) {\r\n state.parkingDetails = payload\r\n },\r\n\r\n updateParkingDetails(\r\n state,\r\n { payload }: PayloadAction>\r\n ) {\r\n state.parkingDetails = {\r\n ...state.parkingDetails,\r\n ...payload,\r\n }\r\n },\r\n resetParkingDetails(state) {\r\n state.parkingDetails = { fees: [], totalAmount: 0 }\r\n },\r\n setAddTimeCard(state, { payload }: PayloadAction<{ card: CreditCard }>) {\r\n state.addTimeCard = payload.card\r\n },\r\n setZipCode(state, { payload }: PayloadAction) {\r\n state.zipCode = payload\r\n },\r\n setRecaptchaToken(state, { payload }: PayloadAction) {\r\n state.recaptchaToken = payload\r\n },\r\n setHasCardBeenUsed(state, { payload }: PayloadAction) {\r\n state.hasCardBeenUsed = payload\r\n },\r\n setIsPaymentRequired(state, { payload }: PayloadAction) {\r\n state.isPaymentRequired = payload\r\n },\r\n setProvidedPlate(\r\n state,\r\n { payload }: PayloadAction<{ providedPlate: string }>\r\n ) {\r\n state.providedPlate = payload.providedPlate\r\n },\r\n setProvidedSpotNumber(\r\n state,\r\n { payload }: PayloadAction<{ providedSpotNumber: string }>\r\n ) {\r\n state.providedSpotNumber = payload.providedSpotNumber\r\n },\r\n resetAddTimeCard(state) {\r\n state.addTimeCard = null\r\n },\r\n resetTicket(state) {\r\n state.ticketId = null\r\n },\r\n resetPricing(state) {\r\n state.pricing = {\r\n amount: null,\r\n convenienceFee: null,\r\n parkingExpireDateTime: null,\r\n convenienceFeeName: null,\r\n totalAmount: null,\r\n validations: [],\r\n }\r\n state.pricingPayload = null\r\n },\r\n resetPromiseStatus(\r\n state,\r\n { payload }: PayloadAction\r\n ) {\r\n state.promisesStatus[payload] = initialPromiseStatus\r\n },\r\n resetState(state) {\r\n state = initialState\r\n },\r\n },\r\n extraReducers: builder => {\r\n builder\r\n /**\r\n * getLotDetailsPark\r\n */\r\n .addCase(getLotDetailsPark.fulfilled, (state, action) => {\r\n if (\r\n // eslint-disable-next-line\r\n state.promisesStatus.getLotDetailsPark.requestId !=\r\n action.meta.requestId\r\n )\r\n return\r\n parkCarSlice.caseReducers.setlot(state, action)\r\n state.promisesStatus.getLotDetailsPark = {\r\n ...sliceUtil.fulfilledPromise(),\r\n id: action.payload.lotId,\r\n }\r\n })\r\n .addCase(getLotDetailsPark.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.getLotDetailsPark = {\r\n ...sliceUtil.pendingPromise(promisesStatus.getLotDetailsPark, action),\r\n id: action.meta.arg.lotId,\r\n }\r\n })\r\n .addCase(getLotDetailsPark.rejected, (state, action) => {\r\n if (\r\n // eslint-disable-next-line\r\n state.promisesStatus.getLotDetailsPark.requestId !=\r\n action.meta.requestId\r\n )\r\n return\r\n if (action.meta.aborted) {\r\n state.promisesStatus.getLotDetailsPark = initialPromiseStatus\r\n } else {\r\n state.promisesStatus.getLotDetailsPark = {\r\n ...sliceUtil.rejectedPromise(action.payload),\r\n id: action.meta.arg.lotId,\r\n }\r\n }\r\n })\r\n\r\n /**\r\n * getPrice\r\n */\r\n .addCase(getPrice.fulfilled, (state, action) => {\r\n parkCarSlice.caseReducers.setPricing(state, action)\r\n state.pricingPayload = { ...action.meta.arg, time: action.payload.time }\r\n state.promisesStatus.getPrice = sliceUtil.fulfilledPromise()\r\n })\r\n .addCase(getPrice.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.getPrice = sliceUtil.pendingPromise(\r\n promisesStatus.getPrice,\r\n action\r\n )\r\n })\r\n .addCase(getPrice.rejected, (state, action) => {\r\n state.promisesStatus.getPrice = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n\r\n /**\r\n * parkCar\r\n */\r\n .addCase(parkCar.fulfilled, (state, action) => {\r\n state.promisesStatus.parkCar = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n })\r\n .addCase(parkCar.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.parkCar = {\r\n ...initialPromiseStatus,\r\n status: promisesStatus.parkCar.status.concat(FetchStatus.Pending),\r\n }\r\n })\r\n .addCase(parkCar.rejected, (state, action) => {\r\n state.promisesStatus.parkCar = {\r\n ...action.payload,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n /**\r\n * getExternalPricing\r\n */\r\n .addCase(getExternalPricing.fulfilled, (state, action) => {\r\n state.promisesStatus.getExternalPricing = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n })\r\n .addCase(getExternalPricing.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.getExternalPricing = {\r\n ...initialPromiseStatus,\r\n status: promisesStatus.getExternalPricing.status.concat(\r\n FetchStatus.Pending\r\n ),\r\n }\r\n })\r\n .addCase(getExternalPricing.rejected, (state, action) => {\r\n state.promisesStatus.getExternalPricing = {\r\n ...action.payload,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n\r\n /**\r\n * parkCarRedirect\r\n */\r\n .addCase(parkCarRedirect.fulfilled, (state, action) => {\r\n state.promisesStatus.parkCarRedirect = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n })\r\n .addCase(parkCarRedirect.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.parkCarRedirect = {\r\n ...initialPromiseStatus,\r\n status: promisesStatus.parkCarRedirect.status.concat(\r\n FetchStatus.Pending\r\n ),\r\n }\r\n })\r\n .addCase(parkCarRedirect.rejected, (state, action) => {\r\n state.promisesStatus.parkCarRedirect = {\r\n ...action.payload,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n\r\n /**\r\n * parkCarRedirect\r\n */\r\n .addCase(parkCarTransactionStatus.fulfilled, (state, action) => {\r\n state.promisesStatus.parkCarTransactionStatus = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n })\r\n .addCase(\r\n parkCarTransactionStatus.pending,\r\n ({ promisesStatus }, action) => {\r\n promisesStatus.parkCarTransactionStatus = {\r\n ...initialPromiseStatus,\r\n status: promisesStatus.parkCarTransactionStatus.status.concat(\r\n FetchStatus.Pending\r\n ),\r\n }\r\n }\r\n )\r\n .addCase(parkCarTransactionStatus.rejected, (state, action) => {\r\n state.promisesStatus.parkCarTransactionStatus = {\r\n ...action.payload,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n\r\n /**\r\n * buyMoreTime\r\n */\r\n .addCase(buyMoreTime.fulfilled, (state, action) => {\r\n state.promisesStatus.buyMoreTime = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n })\r\n .addCase(buyMoreTime.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.buyMoreTime = {\r\n ...initialPromiseStatus,\r\n status: promisesStatus.buyMoreTime.status.concat(FetchStatus.Pending),\r\n }\r\n })\r\n .addCase(buyMoreTime.rejected, (state, action) => {\r\n state.promisesStatus.buyMoreTime = {\r\n ...action.payload,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n },\r\n})\r\n\r\nexport default parkCarSlice.reducer\r\nexport const { actions } = parkCarSlice\r\n\r\n/**\r\n * selectors\r\n */\r\nexport const selectPromiseStatus = (state: RootState) =>\r\n state.parkCar.promisesStatus\r\nexport const stateSelectors = (state: RootState) => state.parkCar\r\nexport const selectPricing = (state: RootState) => state.parkCar.pricing\r\nexport const selectedTicket = (state: RootState) => {\r\n if (!state.parkCar.ticketId) return null\r\n return state.tickets.entities[state.parkCar.ticketId]\r\n}\r\n\r\nexport const selectCardId = (state: RootState) => {\r\n const id = state.parkCar.cardId\r\n if (!id) {\r\n return null\r\n }\r\n return creditCardsSlice.selectEntities(state)[id]\r\n}\r\nexport const promiseStatusSelectors = (state: RootState) => {\r\n const promises = stateSelectors(state).promisesStatus\r\n return {\r\n getLotDetailsParkStatus: sliceUtil.fetchStatus(promises.getLotDetailsPark),\r\n getPriceStatus: sliceUtil.fetchStatus(promises.getPrice),\r\n parkCarStatus: sliceUtil.fetchStatus(promises.parkCar),\r\n buyMoreTimeStatus: sliceUtil.fetchStatus(promises.buyMoreTime),\r\n parkCarRedirectStatus: sliceUtil.fetchStatus(promises.parkCarRedirect),\r\n getExternalPricingStatus: sliceUtil.fetchStatus(\r\n promises.getExternalPricing\r\n ),\r\n }\r\n}\r\n","import {\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit'\r\nimport { LotApiError } from 'api/apiErrors/LotApiError'\r\nimport * as lotApi from 'api/LotApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { Bounds, Coords } from 'google-map-react'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { AppState } from 'store/store'\r\nimport {\r\n CarStatus,\r\n ErrorData,\r\n GetLotDetailsMapData,\r\n GetLotDetailsMapPayload,\r\n GetLotsData,\r\n GetLotsPayload,\r\n} from 'typedef'\r\nimport { customerSlice, sliceUtil, ticketsSlice } from '.'\r\nimport { FETCH, initialPromiseStatus, MAP } from './constants'\r\nimport { LotState, MapState, MyPosition } from './mapSlice.types'\r\n\r\n/**\r\n * state\r\n */\r\nconst initialPromiseStatuses = {\r\n getLots: initialPromiseStatus,\r\n getLotDetailsMap: initialPromiseStatus,\r\n}\r\n\r\nconst initialZoom = 14\r\n\r\nexport const initialMapPosition: Coords = {\r\n lat: 33.11395709999999,\r\n lng: -96.8024388,\r\n}\r\nexport const initialBounds = [\r\n -96.835397784375, 33.08066546844681, -96.769479815625, 33.14723611938656,\r\n]\r\n\r\nconst mapAdapter = createEntityAdapter({\r\n selectId: en => en.lotId,\r\n})\r\nconst initialState = mapAdapter.getInitialState({\r\n promisesStatus: initialPromiseStatuses,\r\n position: initialMapPosition,\r\n zoom: initialZoom,\r\n selectedLot: null,\r\n lotsToSelect: [],\r\n myPosition: null,\r\n findCarMode: false,\r\n cachedMapPosition: {\r\n position: null,\r\n zoom: initialZoom,\r\n bounds: null,\r\n },\r\n bounds: initialBounds,\r\n isGeoOn: false,\r\n geoError: '',\r\n geoState: null,\r\n boundsToOmit: [],\r\n noClusteredLots: [],\r\n})\r\n\r\n/**\r\n * thunks\r\n */\r\nexport const getLots = createAsyncThunk<\r\n GetLotsData,\r\n GetLotsPayload,\r\n { rejectValue: ErrorData }\r\n>(`${MAP}${FETCH}/getLots`, async (params, thunkApi) => {\r\n try {\r\n const state = thunkApi.getState() as RootState\r\n const token = state.customer.corporationLotsToken\r\n const pcode = state.customer.corporationLotsGlobalPcode\r\n const additionalParam = token || pcode\r\n const argsWithAdditionalParam = token\r\n ? { ...params, token }\r\n : { ...params, pcode }\r\n const args = additionalParam ? argsWithAdditionalParam : params\r\n const resp = await lotApi.getLots(args)\r\n if (resp.newTokens) {\r\n thunkApi.dispatch(customerSlice.actions.setLogin(resp.newTokens))\r\n }\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n LotApiError.getLots\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const getLotsByPcode = createAsyncThunk<\r\n GetLotsData,\r\n GetLotsPayload,\r\n { rejectValue: ErrorData }\r\n>(`${MAP}${FETCH}/getLotsByPcode`, async (params, thunkApi) => {\r\n try {\r\n const resp = await lotApi.getLots(params)\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n LotApiError.getLots\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const getLotDetailsMap = createAsyncThunk<\r\n GetLotDetailsMapData,\r\n GetLotDetailsMapPayload,\r\n { rejectValue: ErrorData & { skip?: boolean } }\r\n>(`${MAP}${FETCH}/getLotDetailsMap`, async (params, thunkApi) => {\r\n try {\r\n const res = await lotApi.getLotDetailsMap(params)\r\n const { map } = thunkApi.getState() as AppState\r\n const { requestId } = map.promisesStatus.getLotDetailsMap\r\n\r\n if (thunkApi.requestId !== requestId) {\r\n const errorMessage = { ...getErrorMessage(), skip: true }\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n return res\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n LotApiError.getLots\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\n/**\r\n * reducers\r\n */\r\nconst mapSlice = createSlice({\r\n name: MAP,\r\n initialState,\r\n reducers: {\r\n setGeo(state, { payload }: PayloadAction) {\r\n state.isGeoOn = payload\r\n },\r\n setGeoError(state, { payload }: PayloadAction) {\r\n state.geoError = payload\r\n },\r\n setGeoState(state, { payload }: PayloadAction) {\r\n state.geoState = payload\r\n },\r\n addLots(state, { payload }: PayloadAction<{ lots: LotState[] }>) {\r\n if (payload?.lots) {\r\n const lots = payload.lots.filter(el => el.geolocation)\r\n mapAdapter.upsertMany(state, lots)\r\n }\r\n },\r\n addLot(state, { payload }: PayloadAction) {\r\n mapAdapter.upsertOne(state, payload)\r\n },\r\n removeLots(state) {\r\n mapAdapter.removeAll(state)\r\n },\r\n setPosition(state, { payload }: PayloadAction) {\r\n state.position = payload\r\n },\r\n unsetFindCarMode(state) {\r\n state.findCarMode = false\r\n },\r\n foundParkedCar(state, { payload }: PayloadAction<{ lotId: string }>) {\r\n const lot = mapAdapter.getSelectors().selectById(state, payload.lotId)\r\n state.cachedMapPosition = {\r\n zoom: state.zoom,\r\n position: state.position,\r\n bounds: state.bounds,\r\n }\r\n state.findCarMode = true\r\n state.zoom = 17\r\n state.selectedLot = lot.lotId\r\n state.position = {\r\n lat: lot?.geolocation?.latitude,\r\n lng: lot?.geolocation?.longitude,\r\n }\r\n },\r\n exitParkedCarMode(state) {\r\n state.findCarMode = false\r\n state.selectedLot = null\r\n state.zoom = state.cachedMapPosition.zoom\r\n state.position = {\r\n lat: state.cachedMapPosition.position.lat,\r\n lng: state.cachedMapPosition.position.lng,\r\n }\r\n state.cachedMapPosition = null\r\n },\r\n setMyPosition(state, { payload }: PayloadAction) {\r\n state.myPosition = payload\r\n },\r\n setCachedPosition(\r\n state,\r\n {\r\n payload,\r\n }: PayloadAction<{\r\n position: Coords | null\r\n zoom: number\r\n bounds: number[]\r\n }>\r\n ) {\r\n state.cachedMapPosition = payload\r\n },\r\n focusMapOnMyLocation(state) {\r\n if (state.myPosition) {\r\n state.position = state.myPosition\r\n } else {\r\n console.warn('No gps location')\r\n }\r\n },\r\n setZoom(state, { payload }: PayloadAction) {\r\n state.zoom = payload\r\n },\r\n setDefaultZoom(state) {\r\n state.zoom = initialZoom\r\n },\r\n toggleFindCarMode(state) {\r\n state.findCarMode = !state.findCarMode\r\n },\r\n selectLot(\r\n state,\r\n { payload }: PayloadAction<{ lotId: string; position?: boolean }>\r\n ) {\r\n if (!payload?.lotId) return\r\n const lot = mapAdapter.getSelectors().selectById(state, payload.lotId)\r\n state.selectedLot = lot.lotId\r\n if (payload.position) {\r\n state.position = {\r\n lat: lot.geolocation.latitude,\r\n lng: lot.geolocation.longitude,\r\n }\r\n // state.zoom = initialZoom\r\n }\r\n },\r\n setLotsToSelect(state, { payload }: PayloadAction<{ ids: string[] }>) {\r\n state.lotsToSelect = payload.ids\r\n },\r\n unsetLotsToSelect(state) {\r\n state.lotsToSelect = []\r\n },\r\n unselectLot(state) {\r\n state.selectedLot = null\r\n },\r\n setBounds(state, { payload }: PayloadAction) {\r\n state.bounds = sliceUtil.mapMapBoundsToCluster(payload)\r\n },\r\n resetPromiseStatus(\r\n state,\r\n { payload }: PayloadAction\r\n ) {\r\n state.promisesStatus[payload] = initialPromiseStatus\r\n },\r\n resetState(state) {\r\n state = initialState\r\n },\r\n addBoundsToOmit(\r\n state,\r\n { payload, ...action }: PayloadAction\r\n ) {\r\n state.boundsToOmit = [\r\n ...state.boundsToOmit,\r\n sliceUtil.mapApiBoundsToCluster(payload),\r\n ]\r\n },\r\n removeBoundsFromOmit(state, { payload }: PayloadAction) {\r\n const payloadBoundsString = sliceUtil\r\n .mapApiBoundsToCluster(payload)\r\n .toString()\r\n state.boundsToOmit = state.boundsToOmit.filter(\r\n el => !(el.toString() === payloadBoundsString)\r\n )\r\n },\r\n resetBoundsToOmit(state) {\r\n state.boundsToOmit = []\r\n },\r\n setNoClusteredLots(state, { payload }: PayloadAction) {\r\n state.noClusteredLots = payload\r\n },\r\n },\r\n extraReducers: builder => {\r\n builder\r\n /**\r\n * getLots\r\n */\r\n .addCase(getLots.fulfilled, (state, action) => {\r\n mapSlice.caseReducers.addLots(state, action)\r\n state.promisesStatus.getLots = sliceUtil.fulfilledPromise()\r\n })\r\n .addCase(getLots.pending, (state, action) => {\r\n const fwdAction = mapSlice.actions.addBoundsToOmit(action.meta.arg)\r\n mapSlice.caseReducers.addBoundsToOmit(state, fwdAction)\r\n state.promisesStatus.getLots = sliceUtil.pendingPromise(\r\n state.promisesStatus.getLots,\r\n action\r\n )\r\n })\r\n .addCase(getLots.rejected, (state, action) => {\r\n const fwdAction = mapSlice.actions.removeBoundsFromOmit(action.meta.arg)\r\n mapSlice.caseReducers.removeBoundsFromOmit(state, fwdAction)\r\n state.promisesStatus.getLots = sliceUtil.rejectedPromise(action.payload)\r\n })\r\n /**\r\n * getLotsByPcode\r\n */\r\n .addCase(getLotsByPcode.fulfilled, (state, action) => {\r\n mapSlice.caseReducers.removeLots(state)\r\n mapSlice.caseReducers.addLots(state, action)\r\n state.promisesStatus.getLots = sliceUtil.fulfilledPromise()\r\n })\r\n .addCase(getLotsByPcode.pending, (state, action) => {\r\n state.promisesStatus.getLots = sliceUtil.pendingPromise(\r\n state.promisesStatus.getLots,\r\n action\r\n )\r\n })\r\n .addCase(getLotsByPcode.rejected, (state, action) => {\r\n state.promisesStatus.getLots = sliceUtil.rejectedPromise(action.payload)\r\n })\r\n /**\r\n * getLotDetailsMap\r\n */\r\n .addCase(getLotDetailsMap.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.getLotDetailsMap = sliceUtil.pendingPromise(\r\n promisesStatus.getLotDetailsMap,\r\n action\r\n )\r\n })\r\n .addCase(getLotDetailsMap.rejected, ({ promisesStatus }, action) => {\r\n // eslint-disable-next-line\r\n if (promisesStatus.getLotDetailsMap.requestId != action.meta.requestId)\r\n return\r\n promisesStatus.getLotDetailsMap = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n .addCase(getLotDetailsMap.fulfilled, (state, action) => {\r\n state.promisesStatus.getLotDetailsMap = sliceUtil.fulfilledPromise()\r\n mapSlice.reducer(\r\n state,\r\n mapSlice.actions.addLot({ ...action.payload, hasDetails: true })\r\n )\r\n })\r\n },\r\n})\r\n\r\nexport default mapSlice.reducer\r\nexport const { actions } = mapSlice\r\n\r\n/**\r\n * selectors\r\n */\r\nexport const { selectAll, selectById, selectEntities, selectIds, selectTotal } =\r\n mapAdapter.getSelectors((state: RootState) => state.map)\r\n\r\nexport const selectByIds = (state: RootState, ids: string[] = []) => {\r\n const entities = selectEntities(state)\r\n return ids.map(id => entities[id]).filter(el => el)\r\n}\r\nexport const selectLotsToSelect = (state: RootState) => {\r\n return selectByIds(state, state.map.lotsToSelect)\r\n}\r\nexport const selectLotByTicketId = (state: RootState, id?: string) => {\r\n if (!id) {\r\n return null\r\n }\r\n const ticket = ticketsSlice.selectById(state, id)\r\n if (!ticket) {\r\n return null\r\n }\r\n return selectById(state, ticket.lot.lotId)\r\n}\r\n\r\nexport const stateSelectors = (state: RootState) => state.map\r\nexport const selectHasParkedCar = (state: RootState, lotId: string) => {\r\n const parkedCar = ticketsSlice\r\n .selectParkedCars(state)\r\n .find(el => el.lot.lotId === lotId && el.carStatus === CarStatus.Parked)\r\n return { hasParkedCar: Boolean(parkedCar), parkedCar }\r\n}\r\nexport const selectParkedLots = (state: RootState) => {\r\n const lotIds = ticketsSlice.selectParkedCars(state).map(el => el.lot.lotId)\r\n if (!lotIds.length) return []\r\n return lotIds.map(el => state.map.entities[el]).filter(el => el?.geolocation)\r\n}\r\nexport const selectManyAreas = (state: RootState, coords: Coords) => {\r\n const lots = selectAll(state).filter(el => {\r\n if (!el.geolocation?.latitude || !el.geolocation?.longitude) return false\r\n if (\r\n el.geolocation.latitude === coords.lat &&\r\n el.geolocation.longitude === coords.lng\r\n )\r\n return true\r\n return false\r\n })\r\n return lots.map(el => el.lotId)\r\n}\r\n\r\nexport const selectMapLots = (state: RootState) => {\r\n return selectAll(state)\r\n .filter(el => {\r\n if (!el.geolocation) return false\r\n return true\r\n })\r\n .map(el => {\r\n const lotsIds = selectManyAreas(state, {\r\n lat: el.geolocation.latitude,\r\n lng: el.geolocation.longitude,\r\n })\r\n const manyLots = Boolean(lotsIds.filter(elm => elm !== el.lotId).length)\r\n\r\n return { ...el, lotsIds, manyLots }\r\n })\r\n}\r\n\r\nexport const selectLotsIdsWithinMap = (state: RootState) => {\r\n const [wLng, sLat, eLng, nLat] = stateSelectors(state).bounds\r\n const lots = selectAll(state).filter(el => {\r\n if (!el.geolocation) return false\r\n return true\r\n })\r\n\r\n const filter = (el: LotState) => {\r\n const { latitude: lat, longitude: lng } = el.geolocation\r\n return lng >= wLng && lng <= eLng && lat <= nLat && lat >= sLat\r\n }\r\n return lots.filter(filter).map(el => el.lotId)\r\n}\r\n\r\n/** @returns [nw.lng, se.lat, se.lng, nw.lat] (cluster order) */\r\nexport const selectUnfetchedBounds = (state: RootState) => {\r\n const [wLng, sLat, eLng, nLat] = stateSelectors(state).bounds\r\n const { boundsToOmit } = stateSelectors(state)\r\n const shouldSkip = boundsToOmit.some(\r\n ([wLngO, sLatO, eLngO, nLatO]) =>\r\n wLngO <= wLng && sLatO <= sLat && eLngO >= eLng && nLatO >= nLat\r\n )\r\n return shouldSkip ? [] : [wLng, sLat, eLng, nLat]\r\n}\r\n","import {\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit'\r\nimport axios from 'axios'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { FETCH, ADS } from './constants'\r\n\r\nexport interface Ad {\r\n advertisementUrl: string\r\n scriptString?: string\r\n fullHtmlString?: string\r\n}\r\nexport interface AdState {\r\n scriptString?: string\r\n adsToAppend?: string[]\r\n}\r\nconst adsAdapter = createEntityAdapter({\r\n selectId: ad => ad.advertisementUrl,\r\n})\r\n\r\nconst initialState = adsAdapter.getInitialState({\r\n scriptString: '',\r\n adsToAppend: [],\r\n})\r\n\r\n/**\r\n * thunks\r\n */\r\nexport const getAd = createAsyncThunk(\r\n `${ADS}${FETCH}/getAd`,\r\n async (params, thunkApi) => {\r\n try {\r\n const resp = await axios.request({\r\n headers: { 'Access-Control-Allow-Origin': '*' },\r\n method: 'get',\r\n url: params,\r\n responseType: 'text',\r\n })\r\n\r\n if (!resp.data) throw Error\r\n\r\n let scriptString = resp.data.substring(\r\n resp.data.lastIndexOf('')\r\n )\r\n if (resp.data.lastIndexOf('') === -1) {\r\n scriptString = ''\r\n }\r\n\r\n return {\r\n advertisementUrl: params,\r\n scriptString,\r\n fullHtmlString: resp.data,\r\n }\r\n } catch (error) {\r\n throw error\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { ads } = api.getState() as RootState\r\n if (!arg) return false\r\n return !ads.ids.find(el => el === arg)\r\n },\r\n }\r\n)\r\n\r\n/**\r\n * reducers\r\n */\r\nconst adsSlice = createSlice({\r\n name: ADS,\r\n initialState,\r\n reducers: {\r\n removeScriptString(state) {\r\n state.scriptString = ''\r\n },\r\n addAdToAppend(state, { payload }: PayloadAction) {\r\n state.adsToAppend = [...state.adsToAppend, payload]\r\n },\r\n addAllAdsToAppend(state) {\r\n state.adsToAppend = state.ids.map(el => el) as string[]\r\n },\r\n /** @description empty string removes all */\r\n removeAdsToAppend(state, { payload }: PayloadAction) {\r\n if (payload === 'all') {\r\n state.adsToAppend = []\r\n } else if (Array.isArray(payload)) {\r\n payload.forEach(payEl => {\r\n state.adsToAppend = state.adsToAppend.filter(el => el !== payEl)\r\n })\r\n } else {\r\n console.warn('removeAdToAppend - wrong payload')\r\n }\r\n },\r\n },\r\n extraReducers: builder => {\r\n builder.addCase(getAd.fulfilled, (state, action) => {\r\n if (!state.scriptString) {\r\n state.scriptString = action.payload.scriptString\r\n }\r\n adsAdapter.upsertOne(state, action.payload)\r\n const fwdAction = adsSlice.actions.addAdToAppend(action.meta.arg)\r\n adsSlice.caseReducers.addAdToAppend(state, fwdAction)\r\n })\r\n },\r\n})\r\n\r\n/**\r\n * selectors\r\n */\r\nexport const stateSelectors = (state: RootState) => state.ads\r\n\r\nexport const { selectAll, selectById, selectIds } =\r\n adsAdapter.getSelectors(stateSelectors)\r\n\r\nexport const selectAdsToAppend = (state: RootState) =>\r\n stateSelectors(state).adsToAppend.map(el => selectById(state, el))\r\nexport const { actions } = adsSlice\r\nexport default adsSlice.reducer\r\n","import { PayloadAction } from '@reduxjs/toolkit'\r\nimport { Bounds } from 'google-map-react'\r\nimport { ErrorData, FetchStatus, GetLotsPayload } from 'typedef'\r\nimport { initialPromiseStatus } from './constants'\r\nimport { PromiseStatus } from './slices.types'\r\n\r\ntype Action = PayloadAction<\r\n undefined,\r\n string,\r\n {\r\n arg: any\r\n requestId: string\r\n },\r\n never\r\n>\r\nexport const pendingPromise = (\r\n promiseStatus: PromiseStatus,\r\n action?: Action\r\n) => ({\r\n ...promiseStatus,\r\n status: promiseStatus.status.concat(FetchStatus.Pending),\r\n requestId: action?.meta?.requestId,\r\n})\r\nexport const rejectedPromise = (errors: ErrorData) => ({\r\n ...errors,\r\n status: [FetchStatus.Rejected],\r\n})\r\nexport const fulfilledPromise = () => ({\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n time: new Date().getTime(),\r\n})\r\n\r\nfunction isPromiseStatus(x: any): x is PromiseStatus {\r\n return x.status !== undefined\r\n}\r\n\r\nexport const fetchStatus = (arg?: FetchStatus[] | PromiseStatus) => {\r\n if (!arg)\r\n return {\r\n idle: true,\r\n pending: false,\r\n pendingIdle: false,\r\n pendingFulfilled: false,\r\n pendingRejected: false,\r\n fulfilled: false,\r\n rejected: false,\r\n }\r\n\r\n let statuses: FetchStatus[] | PromiseStatus\r\n if (isPromiseStatus(arg)) {\r\n statuses = arg.status\r\n } else {\r\n statuses = arg\r\n }\r\n\r\n return {\r\n idle: statuses.includes(FetchStatus.Idle) && statuses.length === 1,\r\n pending: statuses.includes(FetchStatus.Pending),\r\n pendingIdle:\r\n statuses.filter(\r\n el => el === FetchStatus.Pending || el === FetchStatus.Idle\r\n ).length === 2,\r\n pendingFulfilled:\r\n statuses.filter(\r\n el => el === FetchStatus.Pending || el === FetchStatus.Fulfilled\r\n ).length === 2,\r\n pendingRejected:\r\n statuses.filter(\r\n el => el === FetchStatus.Pending || el === FetchStatus.Rejected\r\n ).length === 2,\r\n fulfilled:\r\n statuses.includes(FetchStatus.Fulfilled) && statuses.length === 1,\r\n rejected: statuses.includes(FetchStatus.Rejected) && statuses.length === 1,\r\n }\r\n}\r\n\r\ntype MapBoundsToState = (bounds: Bounds) => number[]\r\n/** @returns [nw.lng, se.lat, se.lng, nw.lat] (cluster order) */\r\nexport const mapMapBoundsToCluster: MapBoundsToState = bounds => [\r\n bounds.nw.lng,\r\n bounds.se.lat,\r\n bounds.se.lng,\r\n bounds.nw.lat,\r\n]\r\n\r\n/** @params [nw.lng, se.lat, se.lng, nw.lat] (cluster order)\r\n * @returns API object\r\n */\r\nexport const mapClusterBoundsToApi = (el: number[]): GetLotsPayload => {\r\n const rev = el.reverse()\r\n return {\r\n northEastBoundLat: rev[0],\r\n northEastBoundLng: rev[1],\r\n southWestBoundLat: rev[2],\r\n southWestBoundLng: rev[3],\r\n }\r\n}\r\n\r\n/** @returns [nw.lng, se.lat, se.lng, nw.lat] (cluster order) */\r\nexport const mapApiBoundsToCluster = (arg: GetLotsPayload): number[] => [\r\n arg.southWestBoundLng,\r\n arg.southWestBoundLat,\r\n arg.northEastBoundLng,\r\n arg.northEastBoundLat,\r\n]\r\n","import {\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit'\r\nimport { ticketsApiError } from 'api/apiErrors'\r\nimport * as ticketsApi from 'api/TicketsApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport moment from 'moment'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { TicketsState, TicketState } from 'store/slices/ticketsSlice.types'\r\nimport {\r\n CarStatus,\r\n FetchStatus,\r\n GetTicketPayload,\r\n ParkCarRedirectData,\r\n ParkCarRedirectPayload,\r\n PayForCarData,\r\n PayForCarPayload,\r\n Ticket,\r\n ErrorData,\r\n} from 'typedef'\r\nimport * as adsSlice from './adsSlice'\r\nimport { FETCH, initialPromiseStatus, TICKETS } from './constants'\r\nimport * as mapSlice from './mapSlice'\r\nimport { LotState } from './mapSlice.types'\r\nimport * as sliceUtil from './slice.utils'\r\nimport { SelectParkedCars } from './ticketsSlice.types'\r\n\r\n/**\r\n * state\r\n */\r\nconst ticketsAdapter = createEntityAdapter({\r\n selectId: ticket => ticket.carId,\r\n})\r\n\r\nconst initialState = ticketsAdapter.getInitialState({\r\n selectedTicket: null,\r\n promisesStatus: {\r\n getTickets: initialPromiseStatus,\r\n getTicket: {},\r\n payForCar: {},\r\n },\r\n})\r\n\r\n/**\r\n * thunks\r\n */\r\nexport const getTickets = createAsyncThunk<\r\n { tickets: TicketState[] },\r\n null,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${TICKETS}${FETCH}/getTickets`,\r\n async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.getTickets()\r\n const tickets: TicketState[] = resp.tickets\r\n .filter(el => el.lot?.geolocation)\r\n .map(el => ({ ...el, refCurrentTime: Date.now() }))\r\n\r\n ;(function () {\r\n if (!tickets.length) return\r\n new Set(\r\n tickets.map(el => el.advertisementUrl).filter(el => el)\r\n ).forEach(el => {\r\n thunkApi.dispatch(adsSlice.getAd(el))\r\n })\r\n })()\r\n const lots = tickets.map(el => el.lot)\r\n thunkApi.dispatch(mapSlice.actions.addLots({ lots }))\r\n\r\n return { tickets }\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.getTickets\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { tickets } = api.getState() as RootState\r\n return !tickets.promisesStatus.getTickets.status.includes(\r\n FetchStatus.Pending\r\n )\r\n },\r\n }\r\n)\r\n\r\nexport const getTicket = createAsyncThunk<\r\n TicketState,\r\n GetTicketPayload,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${TICKETS}${FETCH}/getTicket`,\r\n async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.getTicket(params)\r\n\r\n thunkApi.dispatch(adsSlice.getAd(resp.advertisementUrl))\r\n thunkApi.dispatch(mapSlice.actions.addLots({ lots: [resp.lot] }))\r\n return { ...resp, refCurrentTime: Date.now() }\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.getTicket\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { tickets } = api.getState() as RootState\r\n if (!tickets.promisesStatus.getTicket[arg.carId]) return true\r\n return !tickets.promisesStatus.getTicket[arg.carId].status.includes(\r\n FetchStatus.Pending\r\n )\r\n },\r\n }\r\n)\r\n\r\nexport const payForCar = createAsyncThunk<\r\n PayForCarData,\r\n PayForCarPayload,\r\n { rejectValue: ErrorData }\r\n>(`${TICKETS}${FETCH}/payForCar`, async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.payForCar(params)\r\n\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.payForCar\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const parkCarRedirect = createAsyncThunk<\r\n ParkCarRedirectData,\r\n ParkCarRedirectPayload,\r\n { rejectValue: ErrorData }\r\n>(`${TICKETS}${FETCH}/parkCarRedirect`, async (params, thunkApi) => {\r\n try {\r\n const resp = await ticketsApi.parkCarRedirect(params)\r\n\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n ticketsApiError.payForCar\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\n/**\r\n * reducers\r\n */\r\nconst ticketsSlice = createSlice({\r\n name: TICKETS,\r\n initialState,\r\n reducers: {\r\n setTickets(state, { payload }: PayloadAction<{ tickets: Ticket[] }>) {\r\n ticketsAdapter.setAll(\r\n state,\r\n payload.tickets.map(el => ({ ...el, refCurrentTime: Date.now() }))\r\n )\r\n },\r\n setSelectedTicket(state, { payload }: PayloadAction<{ ticketId: string }>) {\r\n state.selectedTicket = ticketsAdapter\r\n .getSelectors()\r\n .selectById(state, payload.ticketId)\r\n },\r\n unsetSelectedTicket(state) {\r\n state.selectedTicket = null\r\n },\r\n addTicket(state, { payload }: PayloadAction<{ ticket: Ticket }>) {\r\n ticketsAdapter.upsertOne(state, {\r\n ...payload.ticket,\r\n refCurrentTime: Date.now(),\r\n })\r\n },\r\n setTicketStatus(\r\n state,\r\n { payload }: PayloadAction<{ ticketId: string; status: CarStatus }>\r\n ) {\r\n ticketsAdapter.updateOne(state, {\r\n id: payload.ticketId,\r\n changes: { carStatus: payload.status },\r\n })\r\n },\r\n removeTicket(\r\n state,\r\n { payload }: PayloadAction<{ ticketId: string; status: CarStatus }>\r\n ) {\r\n ticketsAdapter.removeOne(state, payload.ticketId)\r\n },\r\n resetTicketPromiseStatus(state, { payload }: PayloadAction) {\r\n state.promisesStatus.getTicket[payload] = initialPromiseStatus\r\n },\r\n },\r\n extraReducers: builder => {\r\n builder\r\n\r\n /**\r\n * getTickets\r\n */\r\n .addCase(getTickets.pending, (state, action) => {\r\n state.promisesStatus.getTickets = sliceUtil.pendingPromise(\r\n state.promisesStatus.getTickets,\r\n action\r\n )\r\n })\r\n .addCase(getTickets.fulfilled, (state, action) => {\r\n // eslint-disable-next-line\r\n if (state.promisesStatus.getTickets.requestId != action.meta.requestId)\r\n return\r\n state.promisesStatus.getTickets = sliceUtil.fulfilledPromise()\r\n action.payload.tickets.forEach(\r\n el =>\r\n (state.promisesStatus.getTicket[el.carId] =\r\n sliceUtil.fulfilledPromise())\r\n )\r\n // ticketsAdapter.upsertMany(state, action.payload.tickets)\r\n ticketsAdapter.upsertMany(state, action.payload.tickets)\r\n })\r\n .addCase(getTickets.rejected, (state, action) => {\r\n // eslint-disable-next-line\r\n if (state.promisesStatus.getTickets.requestId != action.meta.requestId)\r\n return\r\n state.promisesStatus.getTickets = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n\r\n /**\r\n * getTicket\r\n */\r\n .addCase(getTicket.pending, (state, action) => {\r\n const { carId } = action.meta.arg\r\n const currentStatus = Boolean(state.promisesStatus.getTicket[carId])\r\n ? state.promisesStatus.getTicket[carId]\r\n : initialPromiseStatus\r\n state.promisesStatus.getTicket[carId] =\r\n sliceUtil.pendingPromise(currentStatus)\r\n })\r\n .addCase(getTicket.fulfilled, (state, action) => {\r\n const { carId } = action.meta.arg\r\n ticketsAdapter.upsertOne(state, action.payload)\r\n state.promisesStatus.getTicket[carId] = sliceUtil.fulfilledPromise()\r\n })\r\n .addCase(getTicket.rejected, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.getTicket[carId] = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n\r\n /**\r\n * payForCar\r\n */\r\n .addCase(payForCar.pending, (state, action) => {\r\n const { carId } = action.meta.arg\r\n const currentStatus = Boolean(state.promisesStatus.payForCar[carId])\r\n ? state.promisesStatus.payForCar[carId]\r\n : initialPromiseStatus\r\n state.promisesStatus.payForCar[carId] =\r\n sliceUtil.pendingPromise(currentStatus)\r\n })\r\n .addCase(payForCar.fulfilled, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.entities[carId].carStatus = CarStatus.Parked\r\n state.promisesStatus.payForCar[carId] = sliceUtil.fulfilledPromise()\r\n })\r\n .addCase(payForCar.rejected, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.payForCar[carId] = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n },\r\n})\r\n\r\nexport default ticketsSlice.reducer\r\nexport const { actions } = ticketsSlice\r\n\r\n/**\r\n * selectors\r\n */\r\nexport const stateSelectors = (state: RootState) => state.tickets\r\n\r\nexport const { selectAll, selectById, selectIds } =\r\n ticketsAdapter.getSelectors(state => state.tickets)\r\n\r\nexport const selectParkedTickets = (state: RootState) => {\r\n const allParkedTicketsFilter = (el: TicketState) =>\r\n el.carStatus === CarStatus.Parked\r\n\r\n return selectAll(state).filter(allParkedTicketsFilter)\r\n}\r\n\r\nexport const selectExpiredTickets = (state: RootState) =>\r\n selectAll(state).filter(el => el.carStatus === CarStatus.ParkingHasExpired)\r\n\r\nexport const selectSortedParkedTickets = (state: RootState) =>\r\n selectParkedTickets(state).sort((a, b) =>\r\n moment(a.parkingExpireDateTime).diff(moment(b.parkingExpireDateTime))\r\n )\r\nexport const selectSortedExpiredTickets = (state: RootState) =>\r\n selectExpiredTickets(state).sort((a, b) =>\r\n moment(b.parkingExpireDateTime).diff(moment(a.parkingExpireDateTime))\r\n )\r\n\r\nexport const selectParkAnotherCarLots = (state: RootState) => {\r\n const parkedlotsIds = selectParkedTickets(state).map(el => el.lot.lotId)\r\n const entities = mapSlice.selectEntities(state)\r\n const uniqLots: LotState[] = []\r\n new Set(parkedlotsIds).forEach(el => uniqLots.push(entities[el]))\r\n return uniqLots.filter(el => el)\r\n}\r\n\r\nexport const selectParkingHistory = (state: RootState) => {\r\n const tickets = selectAll(state).sort((a, b) =>\r\n moment(b.parkingExpireDateTime).diff(moment(a.parkingExpireDateTime))\r\n )\r\n const lotEntities = mapSlice.selectEntities(state)\r\n const history = [] as (LotState & Pick)[]\r\n const uniqLotsIds = new Set(tickets.map(el => el.lot.lotId))\r\n uniqLotsIds.forEach(lotId => {\r\n const ticket = tickets.find(el => el.lot.lotId === lotId)\r\n if (ticket) {\r\n history.push({\r\n ...lotEntities[lotId],\r\n carStatus: ticket.carStatus,\r\n })\r\n }\r\n })\r\n return history\r\n}\r\n\r\nexport const selectParkedCars: SelectParkedCars = state =>\r\n selectParkedTickets(state).map(el => ({\r\n carId: el.carId,\r\n carStatus: el.carStatus,\r\n plate: el.plate,\r\n lot: el.lot,\r\n }))\r\n\r\nexport const promiseStatusSelectors = (state: RootState, carId?: string) => {\r\n const promises = stateSelectors(state).promisesStatus\r\n return {\r\n getTicketsStatus: sliceUtil.fetchStatus(promises.getTickets),\r\n getTicketStatus: carId\r\n ? sliceUtil.fetchStatus(promises.getTicket[carId])\r\n : sliceUtil.fetchStatus(),\r\n payForCarStatus: carId\r\n ? sliceUtil.fetchStatus(promises.payForCar[carId])\r\n : sliceUtil.fetchStatus(),\r\n }\r\n}\r\n\r\nexport const singleTicketsFetchSuccess = (state: RootState) => {\r\n let success = true\r\n Object.entries(state.tickets.promisesStatus.getTicket).find(([key, val]) => {\r\n const { fulfilled } = sliceUtil.fetchStatus(val.status)\r\n if (!fulfilled) {\r\n success = false\r\n return true\r\n }\r\n return false\r\n })\r\n return success\r\n}\r\n\r\nexport const selectTicketByLotId = (state: RootState, lotId?: string) => {\r\n if (!lotId) return null\r\n return selectAll(state).find(el => el?.lot?.lotId === lotId)\r\n}\r\n","import {\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit'\r\nimport { carsApiError } from 'api/apiErrors'\r\nimport * as carsApi from 'api/CarsApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n AddCarPayload,\r\n Car,\r\n DeleteCarPayload,\r\n GetCarsData,\r\n ErrorData,\r\n FetchStatus,\r\n} from 'typedef'\r\nimport { CarPromiseStatuses, CarsState, CarStateType } from './carsSlice.types'\r\nimport { FETCH, initialPromiseStatus, CARS } from './constants'\r\nimport * as sliceUtil from './slice.utils'\r\n\r\nconst carsAdapter = createEntityAdapter({\r\n selectId: car => car.carId,\r\n})\r\n/**\r\n * state\r\n */\r\nexport const initialPromiseStatuses: CarPromiseStatuses = {\r\n getCars: initialPromiseStatus,\r\n addCar: initialPromiseStatus,\r\n removeCar: {},\r\n}\r\nconst initialState = carsAdapter.getInitialState({\r\n promisesStatus: initialPromiseStatuses,\r\n})\r\n\r\nexport const getCars = createAsyncThunk<\r\n GetCarsData,\r\n null,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${CARS}/${FETCH}/getCars`,\r\n async (_, thunkApi) => {\r\n try {\r\n const response = await carsApi.getCars()\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n carsApiError.getCars\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { cars } = api.getState() as RootState\r\n return !cars.promisesStatus.getCars.status.includes(FetchStatus.Pending)\r\n },\r\n }\r\n)\r\n\r\nexport const addCar = createAsyncThunk<\r\n Car,\r\n AddCarPayload,\r\n { rejectValue: ErrorData }\r\n>(`${CARS}/${FETCH}/addCar`, async (car, thunkApi) => {\r\n try {\r\n const response = await carsApi.addCar(car)\r\n return { ...response, ...car }\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n carsApiError.AddCar\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const removeCar = createAsyncThunk<\r\n { carId: string },\r\n DeleteCarPayload,\r\n { rejectValue: ErrorData }\r\n>(`${CARS}/${FETCH}/removeCar`, async (arg, thunkApi) => {\r\n try {\r\n await carsApi.deleteCar({ carId: arg.carId })\r\n return arg\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n carsApiError.AddCar\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nconst carsSlice = createSlice({\r\n name: CARS,\r\n initialState,\r\n reducers: {\r\n addCars(state, action: PayloadAction<{ cars: CarStateType[] }>) {\r\n carsAdapter.upsertMany(state, action.payload.cars)\r\n },\r\n setCars(state, action: PayloadAction<{ cars: Car[] }>) {\r\n carsAdapter.setAll(state, action.payload.cars)\r\n },\r\n },\r\n extraReducers: builder => {\r\n // Fetch cars\r\n builder.addCase(getCars.pending, ({ promisesStatus }) => {\r\n promisesStatus.getCars = sliceUtil.pendingPromise(promisesStatus.getCars)\r\n })\r\n builder.addCase(getCars.fulfilled, (state, action) => {\r\n state.promisesStatus.getCars = sliceUtil.fulfilledPromise()\r\n carsAdapter.setAll(state, action.payload.cars)\r\n })\r\n builder.addCase(getCars.rejected, (state, action) => {\r\n state.promisesStatus.getCars = sliceUtil.rejectedPromise(action.payload)\r\n })\r\n\r\n // Add car\r\n builder.addCase(addCar.fulfilled, (state, action) => {\r\n state.promisesStatus.addCar = sliceUtil.fulfilledPromise()\r\n carsAdapter.addOne(state, action.payload)\r\n })\r\n builder.addCase(addCar.pending, ({ promisesStatus }) => {\r\n promisesStatus.addCar = sliceUtil.pendingPromise(promisesStatus.addCar)\r\n })\r\n builder.addCase(addCar.rejected, (state, action) => {\r\n state.promisesStatus.addCar = sliceUtil.rejectedPromise(action.payload)\r\n })\r\n\r\n // Remove car\r\n builder.addCase(removeCar.fulfilled, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.removeCar[carId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n carsAdapter.removeOne(state, carId)\r\n })\r\n builder.addCase(removeCar.pending, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.removeCar[carId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Pending],\r\n }\r\n })\r\n builder.addCase(removeCar.rejected, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.removeCar[carId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n },\r\n})\r\n\r\nexport default carsSlice.reducer\r\nexport const { actions } = carsSlice\r\n\r\nconst carsSelectors = carsAdapter.getSelectors(state => state.cars)\r\nexport const {\r\n selectAll: selectAllCars,\r\n selectById: selectCarById,\r\n selectIds: selectCarIds,\r\n} = carsSelectors\r\n\r\nexport const stateSelectors = (state: RootState) => state.cars\r\n\r\nexport const promiseStatusSelectors = (state: RootState, carId?: string) => {\r\n const promises = stateSelectors(state).promisesStatus\r\n return {\r\n getCarsStatus: sliceUtil.fetchStatus(promises.getCars),\r\n addCarStatus: sliceUtil.fetchStatus(promises.addCar),\r\n removeCarStatus: carId\r\n ? sliceUtil.fetchStatus(promises.removeCar[carId])\r\n : null,\r\n }\r\n}\r\n","import {\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n} from '@reduxjs/toolkit'\r\nimport { receiptsApiError } from 'api/apiErrors'\r\nimport * as receiptsApi from 'api/ReceiptsApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n GetReceiptsData,\r\n Receipt,\r\n SendQuestionPayload,\r\n ErrorData,\r\n SendReceiptsData,\r\n SendReceiptsPayload,\r\n FetchStatus,\r\n} from 'typedef'\r\nimport { RECEIPTS, FETCH, initialPromiseStatus } from './constants'\r\nimport { ReceiptsState } from './receiptsSlice.types'\r\nimport * as sliceUtil from './slice.utils'\r\n\r\nconst receiptsAdapter = createEntityAdapter({\r\n selectId: receipt => receipt.carId,\r\n})\r\n\r\nconst initialState = receiptsAdapter.getInitialState({\r\n error: null,\r\n promisesStatus: {\r\n sendReceipt: {},\r\n sendQuestion: {},\r\n getReceipts: initialPromiseStatus,\r\n },\r\n})\r\n\r\nexport const getReceipts = createAsyncThunk<\r\n GetReceiptsData,\r\n null,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${RECEIPTS}/${FETCH}/getReceipts`,\r\n async (_, thunkApi) => {\r\n try {\r\n const response = await receiptsApi.getReceipts()\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n receiptsApiError.getReceipts\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { receipts } = api.getState() as RootState\r\n return !receipts.promisesStatus.getReceipts.status.includes(\r\n FetchStatus.Pending\r\n )\r\n },\r\n }\r\n)\r\n\r\nexport const sendReceipt = createAsyncThunk<\r\n SendReceiptsData,\r\n SendReceiptsPayload,\r\n { rejectValue: ErrorData }\r\n>(`${RECEIPTS}/${FETCH}/sendReceipt`, async (arg, thunkApi) => {\r\n try {\r\n const response = await receiptsApi.sendReceipt(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n receiptsApiError.sendReceipt\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const sendQuestion = createAsyncThunk<\r\n null,\r\n SendQuestionPayload,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${RECEIPTS}/${FETCH}/sendQuestion`,\r\n async (arg, thunkApi) => {\r\n try {\r\n await receiptsApi.sendQuestion(arg)\r\n return null\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n receiptsApiError.sendQuestion\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { receipts } = api.getState() as RootState\r\n if (!receipts.promisesStatus.sendQuestion[arg.carId]) return true\r\n return !sliceUtil.fetchStatus(\r\n receipts.promisesStatus.sendQuestion[arg.carId]\r\n ).pending\r\n },\r\n }\r\n)\r\n\r\nconst receiptsSlice = createSlice({\r\n name: RECEIPTS,\r\n initialState,\r\n reducers: {\r\n resetFinalSendReceiptStatus(state) {\r\n const keysArr = Object.keys(state.promisesStatus.sendReceipt)\r\n keysArr.forEach(key => {\r\n let status = [FetchStatus.Idle]\r\n if (\r\n state.promisesStatus.sendReceipt[key]?.status.includes(\r\n FetchStatus.Pending\r\n )\r\n ) {\r\n status = status.concat(FetchStatus.Pending)\r\n }\r\n state.promisesStatus.sendReceipt[key] = {\r\n ...initialPromiseStatus,\r\n status,\r\n }\r\n })\r\n },\r\n resetFinalSendQuestionStatus(state) {\r\n const keysArr = Object.keys(state.promisesStatus.sendQuestion)\r\n keysArr.forEach(key => {\r\n let status = [FetchStatus.Idle]\r\n if (\r\n state.promisesStatus.sendQuestion[key]?.status.includes(\r\n FetchStatus.Pending\r\n )\r\n ) {\r\n status = status.concat(FetchStatus.Pending)\r\n }\r\n state.promisesStatus.sendQuestion[key] = {\r\n ...initialPromiseStatus,\r\n status,\r\n }\r\n })\r\n },\r\n },\r\n extraReducers: builder => {\r\n /**\r\n * Fetch receipts\r\n **/\r\n builder\r\n .addCase(getReceipts.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.getReceipts = sliceUtil.pendingPromise(\r\n promisesStatus.getReceipts,\r\n action\r\n )\r\n })\r\n .addCase(getReceipts.fulfilled, (state, action) => {\r\n // eslint-disable-next-line\r\n if (state.promisesStatus.getReceipts.requestId != action.meta.requestId)\r\n return\r\n state.promisesStatus.getReceipts = sliceUtil.fulfilledPromise()\r\n receiptsAdapter.setAll(\r\n state,\r\n action.payload ? action.payload.receipts : []\r\n )\r\n })\r\n .addCase(getReceipts.rejected, (state, action) => {\r\n // eslint-disable-next-line\r\n if (state.promisesStatus.getReceipts.requestId != action.meta.requestId)\r\n return\r\n state.promisesStatus.getReceipts = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n\r\n /**\r\n * Send receipt\r\n */\r\n .addCase(sendReceipt.fulfilled, (state, action) => {\r\n state.promisesStatus.sendReceipt[action.meta.arg.carId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n })\r\n .addCase(sendReceipt.pending, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.sendReceipt[carId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Pending],\r\n }\r\n })\r\n .addCase(sendReceipt.rejected, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.sendReceipt[carId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n\r\n /**\r\n * Send question\r\n */\r\n .addCase(sendQuestion.pending, (state, action) => {\r\n const { carId } = action.meta.arg\r\n const currentStatus = Boolean(state.promisesStatus.sendQuestion[carId])\r\n ? state.promisesStatus.sendQuestion[carId]\r\n : initialPromiseStatus\r\n state.promisesStatus.sendQuestion[carId] = sliceUtil.pendingPromise(\r\n currentStatus,\r\n action\r\n )\r\n })\r\n .addCase(sendQuestion.fulfilled, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.sendQuestion[carId] = sliceUtil.fulfilledPromise()\r\n })\r\n .addCase(sendQuestion.rejected, (state, action) => {\r\n const { carId } = action.meta.arg\r\n state.promisesStatus.sendQuestion[carId] = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n },\r\n})\r\n\r\nexport default receiptsSlice.reducer\r\nexport const { actions } = receiptsSlice\r\n\r\nconst receiptsSelectors = receiptsAdapter.getSelectors(\r\n (state: RootState) => state.receipts\r\n)\r\nexport const {\r\n selectAll: selectAllReceipts,\r\n selectById: selectReceiptById,\r\n selectIds: selectReceiptIds,\r\n} = receiptsSelectors\r\n\r\nexport const stateSelectors = (state: RootState) => state.receipts\r\nexport const promiseStatusSelectors = (state: RootState, carId?: string) => {\r\n const promises = stateSelectors(state).promisesStatus\r\n return {\r\n getReceiptsStatus: sliceUtil.fetchStatus(promises.getReceipts),\r\n sendReceiptStatus: carId\r\n ? sliceUtil.fetchStatus(promises.sendReceipt[carId])\r\n : sliceUtil.fetchStatus(),\r\n sendQuestionStatus: carId\r\n ? sliceUtil.fetchStatus(promises.sendQuestion[carId])\r\n : sliceUtil.fetchStatus(),\r\n }\r\n}\r\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'\r\nimport * as customerApiError from 'api/apiErrors/CustomerApiError'\r\nimport { removeAuthHeader, setAuthHeader } from 'api/auth'\r\nimport * as customerApi from 'api/CustomerApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { CUSTOMER, FETCH, initialPromiseStatus } from 'store/slices/constants'\r\nimport * as sliceUtil from 'store/slices/slice.utils'\r\nimport {\r\n ChangePasswordRequest,\r\n ConfirmRegisterData,\r\n ConfirmRegisterParams,\r\n CustomerDetails,\r\n EditCustomerParams,\r\n FindCarData,\r\n FindCarPayload,\r\n LoginRequest,\r\n LoginResult,\r\n RefreshTokenRequest,\r\n RefreshTokenResult,\r\n RegisterParams,\r\n RegisterResult,\r\n RemindPasswordParams,\r\n ResetPasswordRequest,\r\n ResetPasswordResult,\r\n UserRole,\r\n ErrorData,\r\n FetchStatus,\r\n} from 'typedef'\r\nimport tokensStorageService from 'utils/tokenStorageService'\r\nimport { mapSlice, ticketsSlice } from '.'\r\nimport { CustomerState } from './customerSlice.types'\r\n\r\n/**\r\n * state\r\n */\r\nexport const initialPromiseStatuses = {\r\n getCustomerDetails: initialPromiseStatus,\r\n refreshToken: initialPromiseStatus,\r\n findCar: initialPromiseStatus,\r\n deleteAccount: initialPromiseStatus,\r\n}\r\nexport const initialState: CustomerState = {\r\n details: null,\r\n tokens: null,\r\n role: null,\r\n corporationLotsToken: '',\r\n corporationLotsGlobalPcode: '',\r\n fetchingEditCustomerDetailsStatus: FetchStatus.Idle,\r\n promisesStatus: initialPromiseStatuses,\r\n}\r\n\r\n/**\r\n * thunks\r\n */\r\nexport const register = createAsyncThunk<\r\n RegisterResult,\r\n RegisterParams,\r\n { rejectValue: ErrorData }\r\n>(`${CUSTOMER}${FETCH}/register`, async (arg, thunkApi) => {\r\n try {\r\n const response = await customerApi.register(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.register\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const login = createAsyncThunk<\r\n LoginResult,\r\n LoginRequest,\r\n { rejectValue: ErrorData }\r\n>(`${CUSTOMER}${FETCH}/login`, async (arg, thunkApi) => {\r\n try {\r\n const response = await customerApi.login(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.getCustomerDetails\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const remindPassword = createAsyncThunk<\r\n boolean,\r\n RemindPasswordParams,\r\n { rejectValue: ErrorData }\r\n>(`${CUSTOMER}${FETCH}/remindPassword`, async (arg, thunkApi) => {\r\n try {\r\n const response = await customerApi.remindPassword(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.remindPassword\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const resetPassword = createAsyncThunk<\r\n ResetPasswordResult,\r\n ResetPasswordRequest,\r\n { rejectValue: ErrorData }\r\n>(`${CUSTOMER}${FETCH}/resetPassword`, async (arg, thunkApi) => {\r\n try {\r\n const response = await customerApi.resetPassword(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.resetPassword\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\nexport const changePassword = createAsyncThunk<\r\n boolean,\r\n ChangePasswordRequest,\r\n { rejectValue: ErrorData }\r\n>(`${CUSTOMER}${FETCH}/changePassword`, async (arg, thunkApi) => {\r\n try {\r\n const response = await customerApi.changePassword(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.changePassword\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const confirmRegister = createAsyncThunk<\r\n ConfirmRegisterData,\r\n ConfirmRegisterParams,\r\n { rejectValue: ErrorData }\r\n>(`${CUSTOMER}${FETCH}/confirmRegister`, async (arg, thunkApi) => {\r\n try {\r\n const response = await customerApi.confirmRegister(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.confirmRegister\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const refreshToken = createAsyncThunk<\r\n RefreshTokenResult,\r\n RefreshTokenRequest,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${CUSTOMER}${FETCH}/refreshToken`,\r\n async (arg, thunkApi) => {\r\n try {\r\n const response = await customerApi.refreshToken(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.refreshToken\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { customer } = api.getState() as RootState\r\n return !customer.promisesStatus.refreshToken.status.includes(\r\n FetchStatus.Pending\r\n )\r\n },\r\n }\r\n)\r\n\r\nexport const getCustomerDetails = createAsyncThunk<\r\n CustomerDetails,\r\n null,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${CUSTOMER}${FETCH}/getCustomerDetails`,\r\n async (params, thunkApi) => {\r\n try {\r\n const res = await customerApi.getCustomerDetails()\r\n\r\n return res\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.getCustomerDetails\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { customer } = api.getState() as RootState\r\n return !customer.promisesStatus.getCustomerDetails.status.includes(\r\n FetchStatus.Pending\r\n )\r\n },\r\n }\r\n)\r\nexport const editCustomerDetails = createAsyncThunk<\r\n boolean,\r\n EditCustomerParams\r\n>('customer/editCustomerDetails', async arg => {\r\n const response = await customerApi.editCustomer(arg)\r\n return response\r\n})\r\n\r\nexport const deleteAccount = createAsyncThunk<\r\n boolean,\r\n string,\r\n { rejectValue: ErrorData }\r\n>('customer/deleteAccount', async (password, thunkApi) => {\r\n try {\r\n const response = await customerApi.deleteAccount(password)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.getCustomerDetails\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\nexport const findCar = createAsyncThunk<\r\n FindCarData,\r\n FindCarPayload,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${CUSTOMER}${FETCH}/findCar`,\r\n async (args, thunkApi) => {\r\n try {\r\n const resp = await customerApi.findCar(args)\r\n thunkApi.dispatch(mapSlice.actions.addLots({ lots: [resp.ticket.lot] }))\r\n thunkApi.dispatch(\r\n ticketsSlice.actions.addTicket({\r\n ticket: resp.ticket,\r\n })\r\n )\r\n return resp\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n customerApiError.findCar\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { customer } = api.getState() as RootState\r\n return !customer.promisesStatus.findCar.status.includes(\r\n FetchStatus.Pending\r\n )\r\n },\r\n }\r\n)\r\n\r\nconst customerSlice = createSlice({\r\n name: CUSTOMER,\r\n initialState,\r\n reducers: {\r\n setLogin(state, { payload }: PayloadAction) {\r\n state.role = payload.role\r\n state.tokens = payload.tokens\r\n setAuthHeader(payload.tokens.auth)\r\n tokensStorageService.set(payload.tokens)\r\n },\r\n setLogout(state) {\r\n state.role = null\r\n state.tokens = null\r\n removeAuthHeader()\r\n tokensStorageService.clear()\r\n },\r\n setDetails(state, { payload }: PayloadAction) {\r\n state.details = payload\r\n },\r\n setRole(state, { payload }: PayloadAction) {\r\n state.role = payload\r\n },\r\n setCorporationToken(state, { payload }: PayloadAction) {\r\n state.corporationLotsToken = payload\r\n },\r\n setCorporationGlobalPcode(state, { payload }: PayloadAction) {\r\n state.corporationLotsGlobalPcode = payload\r\n },\r\n destroySession() {\r\n // middleware is listening to the action\r\n // destroySession.ts, rootReducer.ts\r\n },\r\n },\r\n extraReducers: builder => {\r\n builder.addCase(login.fulfilled, (state, action) => {\r\n customerSlice.caseReducers.setLogin(state, action)\r\n })\r\n /**\r\n * refreshToken\r\n */\r\n builder.addCase(refreshToken.pending, ({ promisesStatus }) => {\r\n promisesStatus.refreshToken = sliceUtil.pendingPromise(\r\n promisesStatus.refreshToken\r\n )\r\n })\r\n builder.addCase(refreshToken.fulfilled, (state, action) => {\r\n state.promisesStatus.refreshToken = sliceUtil.fulfilledPromise()\r\n customerSlice.caseReducers.setLogin(state, action)\r\n })\r\n builder\r\n .addCase(refreshToken.rejected, (state, action) => {\r\n state.promisesStatus.refreshToken = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n // Get Customer Details\r\n .addCase(getCustomerDetails.pending, ({ promisesStatus }) => {\r\n promisesStatus.getCustomerDetails = sliceUtil.pendingPromise(\r\n promisesStatus.getCustomerDetails\r\n )\r\n })\r\n .addCase(getCustomerDetails.fulfilled, (state, { payload }) => {\r\n state.promisesStatus.getCustomerDetails = sliceUtil.fulfilledPromise()\r\n state.details = payload\r\n })\r\n .addCase(confirmRegister.fulfilled, (state, action) => {\r\n customerSlice.caseReducers.setLogin(state, {\r\n ...action,\r\n payload: { ...action.payload, role: state.role },\r\n })\r\n })\r\n .addCase(resetPassword.fulfilled, (state, action) => {\r\n customerSlice.caseReducers.setLogin(state, {\r\n ...action,\r\n payload: { ...action.payload, role: state.role },\r\n })\r\n })\r\n .addCase(getCustomerDetails.rejected, (state, { payload }) => {\r\n state.promisesStatus.getCustomerDetails =\r\n sliceUtil.rejectedPromise(payload)\r\n })\r\n\r\n // Edit customer details\r\n .addCase(editCustomerDetails.pending, state => {\r\n state.fetchingEditCustomerDetailsStatus = FetchStatus.Pending\r\n })\r\n .addCase(editCustomerDetails.fulfilled, (state, action) => {\r\n state.fetchingEditCustomerDetailsStatus = FetchStatus.Fulfilled\r\n if (!!state.details) {\r\n state.details.firstName = action.meta.arg.firstName\r\n state.details.lastName = action.meta.arg.lastName\r\n state.details.email = action.meta.arg.email\r\n }\r\n })\r\n .addCase(editCustomerDetails.rejected, (state, action) => {\r\n state.fetchingEditCustomerDetailsStatus = FetchStatus.Rejected\r\n })\r\n\r\n // Delete customer\r\n .addCase(deleteAccount.fulfilled, (state, { payload }) => {\r\n state.promisesStatus.deleteAccount = sliceUtil.fulfilledPromise()\r\n customerSlice.caseReducers.setLogout(state)\r\n })\r\n .addCase(deleteAccount.pending, state => {\r\n state.promisesStatus.deleteAccount = sliceUtil.pendingPromise(\r\n state.promisesStatus.deleteAccount\r\n )\r\n })\r\n .addCase(deleteAccount.rejected, (state, { payload }) => {\r\n state.promisesStatus.deleteAccount = sliceUtil.rejectedPromise(payload)\r\n })\r\n\r\n /**\r\n * findCar\r\n */\r\n .addCase(findCar.pending, (state, action) => {\r\n state.promisesStatus.findCar = sliceUtil.pendingPromise(\r\n state.promisesStatus.findCar\r\n )\r\n })\r\n .addCase(findCar.fulfilled, (state, action) => {\r\n state.promisesStatus.findCar = sliceUtil.fulfilledPromise()\r\n })\r\n .addCase(findCar.rejected, (state, action) => {\r\n state.promisesStatus.findCar = sliceUtil.rejectedPromise(action.payload)\r\n })\r\n },\r\n})\r\n\r\nexport default customerSlice.reducer\r\nexport const { actions } = customerSlice\r\nexport const selectCustomerStatus = (state: RootState) => ({\r\n customerSignedOut: !state.customer.role,\r\n customerSignedIn: state.customer.role === UserRole.User,\r\n customerSignedInAsGuest: state.customer.role === UserRole.Guest,\r\n})\r\n\r\nexport const stateSelectors = (state: RootState) => state.customer\r\n\r\nexport const selectEditCustomerDetailsFetchStatus = (state: RootState) =>\r\n state.customer.fetchingEditCustomerDetailsStatus\r\n\r\nexport const promiseStatusSelectors = (state: RootState) => {\r\n const promises = stateSelectors(state).promisesStatus\r\n return {\r\n findCarStatus: sliceUtil.fetchStatus(promises.findCar),\r\n getCustomerDetailsStatus: sliceUtil.fetchStatus(\r\n promises.getCustomerDetails\r\n ),\r\n deleteAccountStatus: sliceUtil.fetchStatus(promises.deleteAccount),\r\n }\r\n}\r\n","import {\r\n ChangePasswordRequest,\r\n ConfirmRegisterData,\r\n ConfirmRegisterParams,\r\n CustomerDetails,\r\n EditCustomerParams,\r\n FindCarData,\r\n FindCarPayload,\r\n LoginRequest,\r\n LoginResult,\r\n PhoneNumberAvailableParams,\r\n PhoneNumberAvailableResult,\r\n RefreshTokenRequest,\r\n RefreshTokenResult,\r\n RegisterParams,\r\n RegisterResult,\r\n RemindPasswordParams,\r\n ResendRegistrationPinParams,\r\n ResetPasswordRequest,\r\n ResetPasswordResult,\r\n} from 'typedef/customer'\r\nimport axios from '.'\r\nimport { Response } from '../typedef/api'\r\nimport {\r\n CUSTOMER_CHANGE_PASSWORD,\r\n CUSTOMER_CONFIRM_REGISTER,\r\n CUSTOMER_DELETE,\r\n CUSTOMER_EDIT,\r\n CUSTOMER_FIND_MY_CAR,\r\n CUSTOMER_GET_DETAILS,\r\n CUSTOMER_LOGIN,\r\n CUSTOMER_PHONE_NO_IS_AVAILABLE,\r\n CUSTOMER_REFRESH_TOKEN,\r\n CUSTOMER_REGISTER,\r\n CUSTOMER_REMIND_PASSWORD,\r\n CUSTOMER_RESEND_REGISTRATION_PIN,\r\n CUSTOMER_RESET_PASSWORD,\r\n} from './constants'\r\nimport './mocks/CustomerApiMock'\r\nimport { getErrorCode } from './utils'\r\n\r\nexport const login = async (params: LoginRequest) => {\r\n try {\r\n const response = await axios.post>(\r\n CUSTOMER_LOGIN,\r\n params\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const getCustomerDetails = async () => {\r\n try {\r\n const axiosResponse = await axios.get(CUSTOMER_GET_DETAILS)\r\n const response = axiosResponse.data as Response\r\n return response.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const refreshToken = async (args: RefreshTokenRequest) => {\r\n try {\r\n const response = await axios.post>(\r\n CUSTOMER_REFRESH_TOKEN,\r\n {},\r\n {\r\n headers: { Authorization: `Bearer ${args.token}` },\r\n }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const editCustomer = async (params: EditCustomerParams) => {\r\n try {\r\n await axios.put(CUSTOMER_EDIT, params)\r\n return true\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const changePassword = async (args: ChangePasswordRequest) => {\r\n try {\r\n await axios.put(CUSTOMER_CHANGE_PASSWORD, args)\r\n return true\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const deleteAccount = async (password: string): Promise => {\r\n try {\r\n await axios.delete(CUSTOMER_DELETE, {\r\n data: {\r\n password,\r\n },\r\n })\r\n return true\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const remindPassword = async (args: RemindPasswordParams) => {\r\n try {\r\n await axios.post(CUSTOMER_REMIND_PASSWORD, args)\r\n return true\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const resetPassword = async (args: ResetPasswordRequest) => {\r\n try {\r\n const response = await axios.post>(\r\n CUSTOMER_RESET_PASSWORD,\r\n args\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const register = async (params: RegisterParams) => {\r\n try {\r\n const response = await axios.post>(\r\n CUSTOMER_REGISTER,\r\n params\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const confirmRegister = async (params: ConfirmRegisterParams) => {\r\n try {\r\n const response = await axios.put>(\r\n CUSTOMER_CONFIRM_REGISTER,\r\n params\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\n// TODO:\r\nexport const phoneNumberAvailable = async (\r\n params: PhoneNumberAvailableParams\r\n) => {\r\n try {\r\n const response = await axios.get>(\r\n CUSTOMER_PHONE_NO_IS_AVAILABLE,\r\n {\r\n params,\r\n }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n return getErrorCode(err)\r\n }\r\n}\r\n\r\nexport const resendRegistrationPin = async (\r\n params: ResendRegistrationPinParams\r\n): Promise => {\r\n try {\r\n await axios.post(CUSTOMER_RESEND_REGISTRATION_PIN, params)\r\n return true\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport const findCar = async (params: FindCarPayload) =>\r\n axios\r\n .get>(CUSTOMER_FIND_MY_CAR, { params })\r\n .then(resp => {\r\n return resp.data.data\r\n })\r\n .catch(err => {\r\n throw err\r\n })\r\n","import axios, { mockedAxios } from '.'\r\n\r\nexport const setAuthHeader = (token: string) => {\r\n axios.defaults.headers.common['Authorization'] = `Bearer ${token}`\r\n mockedAxios.defaults.headers.common['Authorization'] = `Bearer ${token}`\r\n}\r\n\r\nexport const removeAuthHeader = () => {\r\n delete axios.defaults.headers.common['Authorization']\r\n delete mockedAxios.defaults.headers.common['Authorization']\r\n}\r\n","export default __webpack_public_path__ + \"static/media/american_express.a5528966.svg\";","export default __webpack_public_path__ + \"static/media/diners_club.bf6d630c.svg\";","export default __webpack_public_path__ + \"static/media/discover.24f71039.svg\";","export default __webpack_public_path__ + \"static/media/jcb.f8bc70ae.svg\";","export default __webpack_public_path__ + \"static/media/master_card.80ba1409.svg\";","export default __webpack_public_path__ + \"static/media/unknown.e8a7746e.svg\";","export default __webpack_public_path__ + \"static/media/visa.cf9d4300.svg\";","import americanExpress from '../assets/icons/credit_cards/american_express.svg'\r\nimport dinersClub from '../assets/icons/credit_cards/diners_club.svg'\r\nimport discover from '../assets/icons/credit_cards/discover.svg'\r\nimport jcb from '../assets/icons/credit_cards/jcb.svg'\r\nimport masterCard from '../assets/icons/credit_cards/master_card.svg'\r\nimport unknown from '../assets/icons/credit_cards/unknown.svg'\r\nimport visa from '../assets/icons/credit_cards/visa.svg'\r\nimport { CardType } from '../typedef/creditCards'\r\n\r\nexport const getCreditCardIcon = (type: CardType) => {\r\n switch (type) {\r\n case CardType.MasterCard:\r\n return masterCard\r\n case CardType.DinersClub:\r\n return dinersClub\r\n case CardType.Visa:\r\n return visa\r\n case CardType.JCB:\r\n return jcb\r\n case CardType.Discover:\r\n return discover\r\n case CardType.AmericanExpress:\r\n return americanExpress\r\n default:\r\n return unknown\r\n }\r\n}\r\n\r\nexport const getCreditCardType = (creditCardNumber: string): CardType => {\r\n const dict = [\r\n [CardType.Visa, /^4[0-9 ]*$/],\r\n [\r\n CardType.MasterCard,\r\n /^(5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9 ]*$/,\r\n ],\r\n [CardType.AmericanExpress, /^3[47][0-9 ]*$/],\r\n [CardType.DinersClub, /^3(0[0-5]|[68][0-9])[0-9 ]*$/],\r\n [CardType.Discover, /^6(011|5[0-9])[0-9 ]*$/],\r\n [CardType.JCB, /^(2131|1800|35)[0-9 ]*$/],\r\n ]\r\n\r\n const cardNumber = creditCardNumber.split(' ').join('')\r\n\r\n for (let i = 0; i < dict.length; i++) {\r\n const regexp = dict[i][1] as RegExp\r\n\r\n if (regexp.test(cardNumber)) return dict[i][0] as CardType\r\n }\r\n\r\n return CardType.Invalid\r\n}\r\n","import {\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit'\r\nimport { creditCardsApiError } from 'api/apiErrors'\r\nimport * as CreditCardApi from 'api/CreditCardApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n ErrorData,\r\n FetchStatus,\r\n AddCreditCardPayload,\r\n CreditCard,\r\n GetCreditCardsPayload,\r\n GetCreditCardsData,\r\n RemoveCreditCardData,\r\n RemoveCreditCardPayload,\r\n} from 'typedef'\r\n\r\nimport { getCreditCardType } from 'utils/creditCardTypeMapper'\r\nimport { FETCH, initialPromiseStatus, CREDIT_CARDS } from './constants'\r\nimport { CreditCardsState } from './creditCardsSlice.types'\r\nimport * as sliceUtil from './slice.utils'\r\n\r\n/**\r\n * state\r\n */\r\nconst adapter = createEntityAdapter({\r\n selectId: card => card.creditCardId,\r\n})\r\nexport const initialPromiseStatuses: CreditCardsState['promisesStatus'] = {\r\n getCreditCards: initialPromiseStatus,\r\n addCreditCard: initialPromiseStatus,\r\n removeCreditCard: {},\r\n}\r\nconst initialState = adapter.getInitialState({\r\n promisesStatus: initialPromiseStatuses,\r\n})\r\n\r\n/**\r\n * thunks\r\n */\r\nexport const getCreditCards = createAsyncThunk<\r\n GetCreditCardsData,\r\n GetCreditCardsPayload,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${CREDIT_CARDS}${FETCH}/getCreditCards`,\r\n async (arg, thunkApi) => {\r\n try {\r\n const response = await CreditCardApi.getCreditCards(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n creditCardsApiError.getCreditCards\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { creditCards } = api.getState() as RootState\r\n return !creditCards.promisesStatus.getCreditCards.status.includes(\r\n FetchStatus.Pending\r\n )\r\n },\r\n }\r\n)\r\nexport const addCreditCard = createAsyncThunk<\r\n CreditCard,\r\n AddCreditCardPayload,\r\n { rejectValue: ErrorData }\r\n>(`${CREDIT_CARDS}${FETCH}/addCreditCard`, async (arg, thunkApi) => {\r\n try {\r\n const response = await CreditCardApi.addCreditCard(arg)\r\n const cardType = getCreditCardType(arg.ccNumber)\r\n return {\r\n cardType,\r\n creditCardId: response.creditCardId,\r\n last4Digits: arg.ccNumber.slice(-4),\r\n zipCode: arg.zipCode,\r\n }\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n creditCardsApiError.addCreditCard\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\nexport const removeCreditCard = createAsyncThunk<\r\n RemoveCreditCardData,\r\n RemoveCreditCardPayload,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${CREDIT_CARDS}${FETCH}/removeCreditCard`,\r\n async (arg, thunkApi) => {\r\n try {\r\n const response = await CreditCardApi.removeCreditCard(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n creditCardsApiError.addCreditCard\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { creditCards } = api.getState() as RootState\r\n if (!creditCards.promisesStatus.removeCreditCard[arg.creditCardId])\r\n return true\r\n return !creditCards.promisesStatus.removeCreditCard[\r\n arg.creditCardId\r\n ].status.includes(FetchStatus.Pending)\r\n },\r\n }\r\n)\r\n\r\n/**\r\n * reducers\r\n */\r\nconst creditCardsSlice = createSlice({\r\n name: CREDIT_CARDS,\r\n initialState,\r\n reducers: {\r\n resetPromiseStatus(\r\n state,\r\n { payload }: PayloadAction\r\n ) {\r\n if (payload === 'removeCreditCard') {\r\n state.promisesStatus[payload] = {}\r\n } else {\r\n state.promisesStatus[payload] = initialPromiseStatus\r\n }\r\n },\r\n addCard(state, { payload }: PayloadAction) {\r\n adapter.upsertOne(state, payload)\r\n },\r\n removeCard(state, { payload }: PayloadAction) {\r\n adapter.removeOne(state, payload)\r\n },\r\n removeCardZip(state, { payload }: PayloadAction) {\r\n adapter.updateOne(state, { id: payload, changes: { zipCode: '' } })\r\n },\r\n },\r\n extraReducers: builder => {\r\n /**\r\n * getCreditCards\r\n */\r\n builder.addCase(getCreditCards.pending, ({ promisesStatus }, action) => {\r\n promisesStatus.getCreditCards = sliceUtil.pendingPromise(\r\n promisesStatus.getCreditCards,\r\n action\r\n )\r\n })\r\n builder.addCase(getCreditCards.fulfilled, (state, action) => {\r\n if (\r\n // eslint-disable-next-line\r\n state.promisesStatus.getCreditCards.requestId != action.meta.requestId\r\n )\r\n return\r\n state.promisesStatus.getCreditCards = sliceUtil.fulfilledPromise()\r\n adapter.setAll(state, action.payload.creditCards)\r\n })\r\n builder.addCase(getCreditCards.rejected, (state, action) => {\r\n if (\r\n // eslint-disable-next-line\r\n state.promisesStatus.getCreditCards.requestId != action.meta.requestId\r\n )\r\n return\r\n state.promisesStatus.getCreditCards = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n\r\n /**\r\n * addCreditCard\r\n */\r\n builder.addCase(addCreditCard.pending, ({ promisesStatus }) => {\r\n promisesStatus.addCreditCard = sliceUtil.pendingPromise(\r\n promisesStatus.addCreditCard\r\n )\r\n })\r\n builder.addCase(addCreditCard.fulfilled, (state, { payload }) => {\r\n state.promisesStatus.addCreditCard = sliceUtil.fulfilledPromise()\r\n adapter.addOne(state, payload)\r\n })\r\n builder.addCase(addCreditCard.rejected, (state, action) => {\r\n state.promisesStatus.addCreditCard = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n\r\n /**\r\n * removeCreditCard\r\n */\r\n builder.addCase(removeCreditCard.fulfilled, (state, action) => {\r\n const { creditCardId } = action.meta.arg\r\n state.promisesStatus.removeCreditCard[creditCardId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n adapter.removeOne(state, creditCardId)\r\n })\r\n builder.addCase(removeCreditCard.pending, (state, action) => {\r\n const { creditCardId } = action.meta.arg\r\n state.promisesStatus.removeCreditCard[creditCardId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Pending],\r\n }\r\n })\r\n builder.addCase(removeCreditCard.rejected, (state, action) => {\r\n const { creditCardId } = action.meta.arg\r\n state.promisesStatus.removeCreditCard[creditCardId] = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n },\r\n})\r\n\r\nexport default creditCardsSlice.reducer\r\nexport const { actions } = creditCardsSlice\r\n\r\n/**\r\n * selectors\r\n */\r\nexport const stateSelectors = (state: RootState) => state.creditCards\r\nexport const {\r\n selectAll,\r\n selectById,\r\n selectEntities,\r\n selectIds,\r\n selectTotal,\r\n} = adapter.getSelectors(stateSelectors)\r\n\r\nexport const promiseStatusSelectors = (\r\n state: RootState,\r\n creditCardId?: string\r\n) => {\r\n const promises = stateSelectors(state).promisesStatus\r\n return {\r\n getCreditCardsStatus: sliceUtil.fetchStatus(promises.getCreditCards),\r\n addCreditCardStatus: sliceUtil.fetchStatus(promises.addCreditCard),\r\n removeCreditCardStatus: creditCardId\r\n ? sliceUtil.fetchStatus(promises.removeCreditCard[creditCardId])\r\n : null,\r\n }\r\n}\r\n","import axios from '.'\r\nimport { Response } from '../typedef/api'\r\nimport {\r\n AddCreditCardData,\r\n AddCreditCardPayload,\r\n GetCreditCardsPayload,\r\n GetCreditCardsData,\r\n RemoveCreditCardData,\r\n RemoveCreditCardPayload,\r\n} from '../typedef/creditCards'\r\nimport { CREDIT_CARD } from './constants'\r\nimport './mocks/CreditCardApiMock'\r\n\r\nexport const getCreditCards = async (arg: GetCreditCardsPayload) => {\r\n try {\r\n const params = { lotId: arg.lotId }\r\n const response = await axios.get>(\r\n CREDIT_CARD,\r\n { params }\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const addCreditCard = async (arg: AddCreditCardPayload) => {\r\n try {\r\n const response = await axios.post>(\r\n CREDIT_CARD,\r\n arg\r\n )\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n\r\nexport const removeCreditCard = async (arg: RemoveCreditCardPayload) => {\r\n try {\r\n const lotId = arg.lotId ? `${arg.lotId}/` : ''\r\n await axios.delete>(\r\n `${CREDIT_CARD}/${lotId}${arg.creditCardId}`\r\n )\r\n return true\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n","import {\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n} from '@reduxjs/toolkit'\r\nimport * as validatorsApi from 'api/ValidatorsApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n Partner,\r\n FetchStatus,\r\n GetValidatorsParams,\r\n ValidateCodeParams,\r\n GetValidatorsData,\r\n ErrorData,\r\n ValidateCodeUpfrontParams,\r\n} from 'typedef'\r\nimport { PromiseStatus } from 'store/slices/slices.types'\r\nimport { validatorsApiError } from 'api/apiErrors'\r\nimport { FETCH, initialPromiseStatus, COUPON } from 'store/slices/constants'\r\nimport { sliceUtil } from 'store/slices'\r\n\r\nconst validateAdapter = createEntityAdapter({\r\n selectId: partner => partner.couponId,\r\n})\r\n\r\ninterface ValidateState {\r\n error: number | null\r\n carId?: string\r\n lotId?: string\r\n promisesStatus: {\r\n getValidators: PromiseStatus\r\n }\r\n sendValidateCodeStatus: FetchStatus\r\n sendValidateCodeUpfrontStatus: FetchStatus\r\n}\r\n\r\nconst initialState = validateAdapter.getInitialState({\r\n sendValidateCodeStatus: FetchStatus.Idle,\r\n sendValidateCodeUpfrontStatus: FetchStatus.Idle,\r\n carId: null,\r\n lotId: null,\r\n promisesStatus: {\r\n getValidators: initialPromiseStatus,\r\n },\r\n error: null,\r\n})\r\n\r\nexport const getValidators = createAsyncThunk<\r\n GetValidatorsData,\r\n GetValidatorsParams,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${COUPON}${FETCH}/getValidators`,\r\n async (params, thunkApi) => {\r\n try {\r\n const response = await validatorsApi.getValidators(params)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n validatorsApiError.getValidators\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { validators } = api.getState() as RootState\r\n if (arg.carId === validators.carId && arg.lotId === validators.lotId) {\r\n if (\r\n validators.promisesStatus.getValidators.status.includes(\r\n FetchStatus.Pending\r\n )\r\n )\r\n return false\r\n }\r\n },\r\n }\r\n)\r\n\r\nexport const validateCode = createAsyncThunk<\r\n boolean,\r\n ValidateCodeParams,\r\n { rejectValue: ErrorData }\r\n>(`${COUPON}${FETCH}/validateCode`, async (payload, thunkApi) => {\r\n try {\r\n const response = await validatorsApi.validateCode(payload)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n validatorsApiError.validateCode\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const validateCodeUpfront = createAsyncThunk<\r\n boolean,\r\n ValidateCodeUpfrontParams,\r\n { rejectValue: ErrorData }\r\n>(`${COUPON}${FETCH}/validateCodeUpfront`, async (payload, thunkApi) => {\r\n try {\r\n const response = await validatorsApi.validateCodeUpfront(payload)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n validatorsApiError.validateCode\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nconst validatorsSlice = createSlice({\r\n name: COUPON,\r\n initialState,\r\n reducers: {},\r\n extraReducers: builder => {\r\n /**\r\n * getValidators\r\n */\r\n builder.addCase(getValidators.pending, ({ promisesStatus }, action) => {\r\n const init =\r\n promisesStatus.getValidators.requestId !== action.meta.requestId\r\n ? initialPromiseStatus\r\n : promisesStatus.getValidators\r\n promisesStatus.getValidators = sliceUtil.pendingPromise(init, action)\r\n })\r\n builder.addCase(getValidators.fulfilled, (state, action) => {\r\n if (\r\n state.promisesStatus.getValidators.requestId !== action.meta.requestId\r\n )\r\n return\r\n state.promisesStatus.getValidators = sliceUtil.fulfilledPromise()\r\n state.carId = action.meta.arg.carId\r\n state.lotId = action.meta.arg.lotId\r\n validateAdapter.setAll(state, action.payload.partners)\r\n })\r\n builder\r\n .addCase(getValidators.rejected, (state, action) => {\r\n if (\r\n state.promisesStatus.getValidators.requestId !== action.meta.requestId\r\n )\r\n return\r\n state.promisesStatus.getValidators = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n\r\n //Validate code\r\n .addCase(validateCode.fulfilled, (state, action) => {\r\n state.sendValidateCodeStatus = FetchStatus.Fulfilled\r\n })\r\n .addCase(validateCode.pending, (state, action) => {\r\n state.sendValidateCodeStatus = FetchStatus.Pending\r\n })\r\n .addCase(validateCode.rejected, (state, action) => {\r\n state.sendValidateCodeStatus = FetchStatus.Rejected\r\n })\r\n\r\n //Validate code upfront\r\n .addCase(validateCodeUpfront.fulfilled, (state, action) => {\r\n state.sendValidateCodeUpfrontStatus = FetchStatus.Fulfilled\r\n })\r\n .addCase(validateCodeUpfront.pending, (state, action) => {\r\n state.sendValidateCodeUpfrontStatus = FetchStatus.Pending\r\n })\r\n .addCase(validateCodeUpfront.rejected, (state, action) => {\r\n state.sendValidateCodeUpfrontStatus = FetchStatus.Rejected\r\n })\r\n },\r\n})\r\n\r\nexport default validatorsSlice.reducer\r\n\r\nexport const stateSelectors = (state: RootState) => state.validators\r\nexport const {\r\n selectAll: selectAllValidators,\r\n selectById: selectValidatorById,\r\n selectIds: selectValidatorIds,\r\n} = validateAdapter.getSelectors(state => state.validators)\r\n\r\nexport const selectSendValidateCodeStatus = (state: RootState) =>\r\n state.validators.sendValidateCodeStatus\r\nexport const selectSendValidateCodeUpfrontStatus = (state: RootState) =>\r\n state.validators.sendValidateCodeUpfrontStatus\r\nexport const promiseStatusSelectors = (state: RootState) => {\r\n const promises = stateSelectors(state).promisesStatus\r\n return {\r\n getValidatorsStatus: sliceUtil.fetchStatus(promises.getValidators),\r\n }\r\n}\r\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'\r\nimport { termsApiError } from 'api/apiErrors'\r\nimport * as termsApi from 'api/TermsAndConditionsApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport i18n from 'i18n'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { FETCH, initialPromiseStatus, TERMS } from 'store/slices/constants'\r\nimport * as sliceUtil from 'store/slices/slice.utils'\r\nimport { ErrorData, FetchStatus, GetTermsAndConditionsParams } from 'typedef'\r\nimport { Terms, TermsAndConditionState } from './termsSlice.types'\r\n\r\n/**\r\n * state\r\n */\r\nexport const initialPromiseStatuses = {\r\n getTerms: initialPromiseStatus,\r\n}\r\nexport const initialState: TermsAndConditionState = {\r\n terms: {},\r\n lang: null,\r\n logoLink: '',\r\n promisesStatus: initialPromiseStatuses,\r\n}\r\n\r\n/**\r\n * thunks\r\n */\r\n\r\nexport const getTerms = createAsyncThunk<\r\n Terms,\r\n GetTermsAndConditionsParams,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${TERMS}${FETCH}/getTerms`,\r\n async (arg, thunkApi) => {\r\n try {\r\n thunkApi.dispatch(termsSlice.actions.setLang({ lang: i18n.language }))\r\n const response = await termsApi.getTerms({\r\n ...arg,\r\n languageCode: i18n.language,\r\n })\r\n return {\r\n languageCode: i18n.language,\r\n lotId: arg.lotId,\r\n type: arg.type,\r\n text: response.text,\r\n }\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n termsApiError.getTerms\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n },\r\n {\r\n condition: (arg, api) => {\r\n const { terms } = api.getState() as RootState\r\n const { lotId, text, type } = terms.terms\r\n if (\r\n // eslint-disable-next-line\r\n lotId == arg.lotId &&\r\n // eslint-disable-next-line\r\n type == arg.type &&\r\n text\r\n ) {\r\n return false\r\n }\r\n },\r\n }\r\n)\r\n\r\nconst termsSlice = createSlice({\r\n name: TERMS,\r\n initialState,\r\n reducers: {\r\n setTerms(state, { payload }: PayloadAction) {\r\n state.terms = payload\r\n },\r\n setLang(state, { payload }: PayloadAction<{ lang: string }>) {\r\n state.lang = payload.lang\r\n },\r\n setLogoLink(state, { payload }: PayloadAction) {\r\n state.logoLink = payload\r\n },\r\n },\r\n extraReducers: builder => {\r\n builder\r\n .addCase(getTerms.fulfilled, (state, action) => {\r\n termsSlice.caseReducers.setTerms(state, action)\r\n state.promisesStatus.getTerms = {\r\n ...initialPromiseStatus,\r\n status: [FetchStatus.Fulfilled],\r\n }\r\n })\r\n .addCase(getTerms.pending, ({ promisesStatus }) => {\r\n promisesStatus.getTerms.status = promisesStatus.getTerms.status.concat(\r\n FetchStatus.Pending\r\n )\r\n })\r\n .addCase(getTerms.rejected, (state, action) => {\r\n state.promisesStatus.getTerms = {\r\n ...action.payload,\r\n status: [FetchStatus.Rejected],\r\n }\r\n })\r\n },\r\n})\r\n\r\nexport default termsSlice.reducer\r\nexport const { actions } = termsSlice\r\n\r\nexport const stateSelectors = (state: RootState) => state.terms\r\nexport const promiseStatusSelectors = (state: RootState) => {\r\n const promises = stateSelectors(state).promisesStatus\r\n return {\r\n getTermstatus: sliceUtil.fetchStatus(promises.getTerms),\r\n }\r\n}\r\n","import { Currency, CurrencyFormat } from 'typedef/ticket'\r\nimport { layoutSlice } from 'store/slices'\r\nimport {\r\n LotCustomStyles,\r\n CustomStylesElement,\r\n CustomStylesValue,\r\n} from 'typedef'\r\nimport bg from 'assets/images/bg.png'\r\nimport localCurrency from 'locale-currency'\r\n\r\nexport const centsToDollars = (amount?: number, currency?: string) => {\r\n if (typeof amount !== 'number') {\r\n return !!currency ? `${currency} -` : '-'\r\n }\r\n\r\n return !!currency\r\n ? `${currency}${(amount / 100).toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}`\r\n : (amount / 100).toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })\r\n}\r\n/**\r\n * @param number: with country code (+48123123123)\r\n * @param contryCode: integer\r\n */\r\nexport const trimCountryCode = (number: string, countryCode: number) => {\r\n if (!number || !countryCode) return ''\r\n return number.slice(1).replace(countryCode.toString(), '')\r\n}\r\n\r\nexport const isPageRefreshed = () => {\r\n return window.performance && performance.navigation.type === 1\r\n}\r\n\r\nexport const formatCurrency = (currency: Currency, amount = 0) => {\r\n if (!currency) return null\r\n const { cultureName, currencyFormat, currencySymbol } = currency\r\n if (\r\n currencyFormat !== CurrencyFormat.BeforeAmount &&\r\n currencyFormat !== CurrencyFormat.AfterAmount\r\n ) {\r\n if (currencySymbol) {\r\n return `${currencySymbol}${(amount / 100).toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}`\r\n } else {\r\n if (!cultureName) return '-'\r\n const formattedCultureName = cultureName.replace('_', '-')\r\n const currency = localCurrency.getCurrency(cultureName)\r\n return new Intl.NumberFormat(formattedCultureName, {\r\n style: 'currency',\r\n currency,\r\n }).format(amount / 100)\r\n }\r\n }\r\n if (currencyFormat === CurrencyFormat.BeforeAmount) {\r\n return `${currencySymbol}${(amount / 100).toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}`\r\n }\r\n if (currencyFormat === CurrencyFormat.AfterAmount) {\r\n return `${(amount / 100).toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}${currencySymbol}`\r\n }\r\n}\r\n\r\nexport const chunk = (arr: any[], size: number) =>\r\n Array.from({ length: Math.ceil(arr.length / size) }, (v, i) =>\r\n arr.slice(i * size, i * size + size)\r\n )\r\n\r\nexport const parseCustomStyles = (\r\n arg?: LotCustomStyles[]\r\n): layoutSlice.LayoutState['customStyles'] => {\r\n let cardBgUrl = '#fff'\r\n let headerBgUrl = bg\r\n if (!arg) return { cardBgUrl, headerBgUrl }\r\n const header = arg.find(el => el.elementType === CustomStylesElement.Header)\r\n const cardBg = arg.find(\r\n el => el.elementType === CustomStylesElement.CardBackground\r\n )\r\n if (header && header.valueType === CustomStylesValue.Url) {\r\n headerBgUrl = header.value\r\n }\r\n if (cardBg && cardBg.valueType === CustomStylesValue.Url) {\r\n cardBgUrl = cardBg.value\r\n }\r\n return { cardBgUrl, headerBgUrl }\r\n}\r\n","import moment from 'moment'\r\nimport 'moment/min/locales'\r\n// import momentDurationFormatSetup from 'moment-duration-format'\r\n// var moment = require('moment')\r\nimport momentDurationFormatSetup from 'moment-duration-format'\r\nmomentDurationFormatSetup(moment as any)\r\n\r\nexport const timeSpanFormat = 'HH:mm'\r\nexport const getDate = (arg: string | Date) => moment(arg).format('L')\r\n\r\nexport const isValid = (endDate: string | Date) =>\r\n moment(endDate).startOf('minute') >= moment().startOf('minute')\r\n\r\nexport interface CountDiffParkingTimeArgs {\r\n /** Current time on lot at its zone */\r\n currParkingTime: string\r\n /** Current time on lot at local zone */\r\n currLocalTime: number\r\n /** End parking time at lot zone*/\r\n endParkingTime: string\r\n}\r\ntype CountDiffParkingTime = (\r\n args: CountDiffParkingTimeArgs\r\n) => /** Time difference */ number\r\nexport const countDiffParkingTime: CountDiffParkingTime = ({\r\n currParkingTime,\r\n currLocalTime,\r\n endParkingTime,\r\n}) => {\r\n return (\r\n +moment(endParkingTime) -\r\n +moment(currParkingTime) -\r\n (Date.now() - currLocalTime) +\r\n 55000\r\n )\r\n}\r\nexport const countParkTime = (parkStateDate: string, parkEndDate: string) => {\r\n const dateFormat = 'd[D] h[H] m[M] '\r\n const time = moment.duration(\r\n moment(parkEndDate)\r\n .startOf('minute')\r\n .diff(moment(parkStateDate).startOf('minute')),\r\n 'milliseconds'\r\n )\r\n return time.format(dateFormat, {\r\n minValue: 1,\r\n trim: 'all',\r\n useSignificantDigits: true,\r\n })\r\n}\r\nexport const getMinutesHoursDays = (diff: number) => {\r\n if (!diff) {\r\n console.warn('Parking time error')\r\n return { days: 0, hours: 0, minutes: 0 }\r\n }\r\n if (diff < 0) {\r\n return { days: 0, hours: 0, minutes: 0 }\r\n }\r\n const day = 1000 * 3600 * 24\r\n const hour = 1000 * 3600\r\n const minute = 1000 * 60\r\n const days = parseInt((diff / day).toString())\r\n const hours = parseInt(((diff - days * day) / hour).toString())\r\n const minutes = parseInt(\r\n ((diff - days * day - hours * hour) / minute).toString()\r\n )\r\n return { days, hours, minutes }\r\n}\r\n\r\nexport const formatParkingtime = (diff: number) => {\r\n const { days, hours, minutes } = getMinutesHoursDays(diff)\r\n let timeString = ''\r\n if (days) {\r\n timeString = `${days}D`\r\n }\r\n if (hours) {\r\n timeString = `${timeString} ${hours}H`\r\n }\r\n if (minutes) {\r\n timeString = `${timeString} ${minutes}M`\r\n }\r\n return timeString\r\n}\r\n\r\nexport const getDateWithCustomTime = (\r\n fullDate: moment.MomentInput,\r\n time: string /**01:25:20 */\r\n) => {\r\n if (!fullDate || !time || time.length < 8) return null\r\n const hour = parseInt(time.slice(0, 2))\r\n const minute = parseInt(time.slice(3, 5))\r\n const second = parseInt(time.slice(6, 8))\r\n const fullMomentDate = moment(fullDate)\r\n .hour(hour)\r\n .minute(minute)\r\n .second(second)\r\n return { hour, minute, second, fullMomentDate }\r\n}\r\n\r\ntype GetDurationString = (\r\n beginTime: string,\r\n expireTime: string,\r\n /** in minutes*/ paymentTime: number,\r\n /** in minutes*/ parkingExitTime: number,\r\n dateFormat?: string\r\n) => string\r\nexport const getDurationString: GetDurationString = (\r\n beginTime,\r\n expireTime,\r\n paymentTime,\r\n parkingExitTime,\r\n dateFormat\r\n) => {\r\n const defaultDateFormat = dateFormat ? dateFormat : 'd __ h __ m __'\r\n const duration = moment.duration(\r\n moment(expireTime)\r\n .startOf('minute')\r\n .diff(moment(beginTime).startOf('minute')) -\r\n (paymentTime + parkingExitTime) * 60 * 1000,\r\n 'milliseconds'\r\n )\r\n return duration.format(defaultDateFormat, {\r\n minValue: 1,\r\n trim: 'all',\r\n useSignificantDigits: true,\r\n })\r\n}\r\n\r\nexport const apiDateFormat = (date: string) =>\r\n moment(date).format('YYYY-MM-DDTHH:mm:SS')\r\n","import { FormikErrors } from 'formik'\r\nimport i18n from 'i18next'\r\nimport { ErrorCode } from 'typedef/api'\r\nimport { Popup } from 'typedef/popup'\r\nimport Translations from 'utils/translations'\r\n\r\nexport const handleFormikErrors = (\r\n errors: FormikErrors>,\r\n handleValid: () => void,\r\n handleInvalid: (arg: string) => void\r\n) => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n handleValid()\r\n } else {\r\n entries.forEach(el => {\r\n if (typeof el[1] === 'string') {\r\n handleInvalid(el[1])\r\n }\r\n })\r\n }\r\n}\r\n/**\r\n * @deprecated\r\n * */\r\ntype GetErrorPopupProps = (e: ErrorCode) => Popup\r\nexport const getErrorPopupProps: GetErrorPopupProps = errorCode => {\r\n const popupProps: Popup = {\r\n title: i18n.t(Translations.OOPS),\r\n description: i18n.t(Translations.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN),\r\n variant: 'warning' as const,\r\n }\r\n\r\n return popupProps\r\n}\r\n","export const phoneNumberRegex = /^\\d+$/\r\nexport const expDateRegex = /([1][0-2]|[0][1-9]) \\/ \\d{4}/\r\nexport const licencePlateRegex = /^[a-zA-Z0-9\\s]+$/\r\nexport const countryCodeRegex = /^(\\+?\\d{1,3}|\\d{1,4})$/\r\nexport const allowedCodeCharactersRegex = /^[0-9]$/\r\nexport const zipCodeRegex = /^[\\w\\-\\s]+$/\r\n","export const blurLastInput = (e: any) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault()\r\n e.target.blur()\r\n }\r\n}\r\n","import {\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n PayloadAction,\r\n} from '@reduxjs/toolkit'\r\nimport { LotApiError } from 'api/apiErrors/LotApiError'\r\nimport { LOTS_SIMULATED_PRICES } from 'api/constants'\r\nimport * as lotApi from 'api/LotApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n ErrorData,\r\n GetSimulatedPricesRequest,\r\n GetSimulatedPricesResponse,\r\n SimulatedPrice,\r\n} from 'typedef'\r\nimport { formatCurrency } from 'utils'\r\nimport { SIMULATE_PRICE } from './constants'\r\nimport * as mapSlice from './mapSlice'\r\n\r\n/**\r\n * state\r\n */\r\nexport interface SimulatePriceState {\r\n pricingMode: boolean\r\n idsToOmit: string[]\r\n /** 2020-09-28T10:30:00 */\r\n simulateStartTime?: string\r\n /** 2020-09-28T11:30:00 */\r\n simulateEndTime?: string\r\n pendingCallsNumber: number\r\n}\r\nconst simulatePriceAdapter = createEntityAdapter({\r\n selectId: en => en.parkingLotId,\r\n})\r\n\r\nconst initialState = simulatePriceAdapter.getInitialState({\r\n idsToOmit: [],\r\n pricingMode: false,\r\n simulateStartTime: null,\r\n simulateEndTime: null,\r\n pendingCallsNumber: 0,\r\n})\r\n/**\r\n * thunks\r\n */\r\nexport const getSimulatedPrices = createAsyncThunk<\r\n GetSimulatedPricesResponse,\r\n GetSimulatedPricesRequest,\r\n { rejectValue: ErrorData & { skip?: boolean } }\r\n>(LOTS_SIMULATED_PRICES, async (params, thunkApi) => {\r\n try {\r\n const res = await lotApi.getSimulatedPrices(params)\r\n return res\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n LotApiError.getLots\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\n/**\r\n * reducers\r\n */\r\nconst simulatePriceSlice = createSlice({\r\n name: SIMULATE_PRICE,\r\n initialState,\r\n reducers: {\r\n addPrices(state, { payload }: PayloadAction) {\r\n simulatePriceAdapter.upsertMany(state, payload)\r\n },\r\n addIdsToOmit(state, { payload }: PayloadAction) {\r\n state.idsToOmit = [...state.idsToOmit, ...payload]\r\n },\r\n removeIdsFromOmit(state, { payload }: PayloadAction) {\r\n state.idsToOmit = state.idsToOmit.filter(el => payload.includes(el))\r\n },\r\n setDates(\r\n state,\r\n {\r\n payload,\r\n }: PayloadAction<{\r\n /** 2020-09-28T10:30:00 */\r\n simulateStartTime: string\r\n /** 2020-09-28T11:30:00 */\r\n simulateEndTime: string\r\n }>\r\n ) {\r\n state.simulateStartTime = payload.simulateStartTime\r\n state.simulateEndTime = payload.simulateEndTime\r\n },\r\n setPricingMode(state, { payload }: PayloadAction) {\r\n state.pricingMode = payload\r\n },\r\n resetState(state) {\r\n Object.assign(state, initialState)\r\n },\r\n },\r\n extraReducers: builder => {\r\n builder\r\n .addCase(getSimulatedPrices.fulfilled, (state, action) => {\r\n simulatePriceSlice.caseReducers.addPrices(state, action)\r\n state.pendingCallsNumber = state.pendingCallsNumber - 1\r\n })\r\n .addCase(getSimulatedPrices.pending, (state, action) => {\r\n const fwdAction = simulatePriceSlice.actions.addIdsToOmit(\r\n action.meta.arg.parkings\r\n )\r\n simulatePriceSlice.caseReducers.addIdsToOmit(state, fwdAction)\r\n state.pendingCallsNumber = state.pendingCallsNumber + 1\r\n })\r\n .addCase(getSimulatedPrices.rejected, (state, action) => {\r\n const fwdAction = simulatePriceSlice.actions.removeIdsFromOmit(\r\n action.meta.arg.parkings\r\n )\r\n simulatePriceSlice.caseReducers.removeIdsFromOmit(state, fwdAction)\r\n state.pendingCallsNumber = state.pendingCallsNumber - 1\r\n })\r\n },\r\n})\r\n\r\nexport const { actions } = simulatePriceSlice\r\n\r\n/**\r\n * selectors\r\n */\r\nexport const stateSelectors = (state: RootState) => state.simulatedPrices\r\nexport const { selectAll, selectById, selectEntities, selectIds, selectTotal } =\r\n simulatePriceAdapter.getSelectors((state: RootState) => state.simulatedPrices)\r\n\r\nexport const selectByIds = (state: RootState, ids: string[] = []) => {\r\n const entities = selectEntities(state)\r\n return ids.map(id => entities[id]).filter(el => el)\r\n}\r\n\r\nexport const selectMissingPricesLots = (state: RootState) => {\r\n const mapLots = mapSlice.selectLotsIdsWithinMap(state)\r\n const { noClusteredLots } = mapSlice.stateSelectors(state)\r\n const { idsToOmit } = stateSelectors(state)\r\n const missing = mapLots.filter(el => !idsToOmit.includes(el))\r\n if (missing.length < 24) {\r\n return missing\r\n } else {\r\n return noClusteredLots.filter(el => !idsToOmit.includes(el))\r\n }\r\n}\r\n\r\nexport const selectPriceString = (state: RootState, id: string) => {\r\n if (!id) return ''\r\n const simulatedPrice = selectById(state, id)\r\n return formatCurrency(\r\n simulatedPrice?.currency,\r\n simulatedPrice?.simulatedPrice\r\n )\r\n}\r\n\r\nexport const selectAvailableCallsNumber = (state: RootState) =>\r\n 5 - stateSelectors(state).pendingCallsNumber\r\n\r\nexport default simulatePriceSlice.reducer\r\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'\r\nimport { needHelpApi, receiptsApi } from 'api'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n AddContactInformationsPayload,\r\n AddContactInformationsData,\r\n GetContactInformationsData,\r\n ErrorData,\r\n SendVerificationSMSData,\r\n SendVerificationSMSPayload,\r\n ParkCarData,\r\n} from 'typedef'\r\nimport { CONTACT_INFORMATIONS } from './constants'\r\nimport { ContactInformationState } from './contactInformationsSlice.types'\r\nimport { customerSlice } from '.'\r\nimport {\r\n GetCompanyContactInfoParams,\r\n GetCompanyContactInfoResult,\r\n} from 'typedef/companyDetails'\r\n\r\nexport const initialState: ContactInformationState = {\r\n contactDataRequired: null,\r\n customerHasEmail: null,\r\n paymentRedirectionAvailable: null,\r\n}\r\n\r\nexport const sendVerificationSMS = createAsyncThunk<\r\n SendVerificationSMSData,\r\n SendVerificationSMSPayload,\r\n { rejectValue: ErrorData }\r\n>(`${CONTACT_INFORMATIONS}/sendVerificationSMS`, async (arg, thunkApi) => {\r\n try {\r\n const response = await receiptsApi.sendVerificationSMS(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(getErrorCode(error))\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const resendVerificationSMS = createAsyncThunk<\r\n SendVerificationSMSData,\r\n SendVerificationSMSData,\r\n { rejectValue: ErrorData }\r\n>(`${CONTACT_INFORMATIONS}/resendVerificationSMS`, async (arg, thunkApi) => {\r\n try {\r\n const response = await receiptsApi.resendVerificationSMS(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(getErrorCode(error))\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const addContactInformations = createAsyncThunk<\r\n AddContactInformationsData,\r\n AddContactInformationsPayload,\r\n { rejectValue: ErrorData }\r\n>(`${CONTACT_INFORMATIONS}/addContactInformations`, async (arg, thunkApi) => {\r\n try {\r\n const response = await receiptsApi.addContactInformations(arg)\r\n if (response.newTokens) {\r\n thunkApi.dispatch(customerSlice.actions.setLogin(response.newTokens))\r\n }\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(getErrorCode(error))\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const getContactInformations = createAsyncThunk<\r\n GetContactInformationsData,\r\n null,\r\n { rejectValue: ErrorData }\r\n>(`${CONTACT_INFORMATIONS}/getContactInformations`, async (_, thunkApi) => {\r\n try {\r\n const response = await receiptsApi.getContactInformations()\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(getErrorCode(error))\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const getCompanyContactInfo = createAsyncThunk<\r\n GetCompanyContactInfoResult,\r\n GetCompanyContactInfoParams,\r\n { rejectValue: ErrorData }\r\n>(`${CONTACT_INFORMATIONS}/getCompanyContactInfo`, async (arg, thunkApi) => {\r\n try {\r\n const response = await needHelpApi.getCompanyContactInfo(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(getErrorCode(error))\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nconst contactInformationsSlice = createSlice({\r\n name: CONTACT_INFORMATIONS,\r\n initialState,\r\n reducers: {\r\n setRequirements(\r\n state,\r\n {\r\n payload,\r\n }: PayloadAction<\r\n Pick<\r\n ParkCarData,\r\n | 'contactDataRequired'\r\n | 'customerHasEmail'\r\n | 'paymentRedirectionAvailable'\r\n >\r\n >\r\n ) {\r\n state.contactDataRequired = payload.contactDataRequired\r\n state.customerHasEmail = payload.customerHasEmail\r\n state.paymentRedirectionAvailable = payload.paymentRedirectionAvailable\r\n },\r\n resetState(state) {\r\n state.contactDataRequired = null\r\n state.customerHasEmail = null\r\n state.paymentRedirectionAvailable = null\r\n },\r\n },\r\n})\r\n\r\nexport default contactInformationsSlice.reducer\r\nexport const { actions } = contactInformationsSlice\r\nexport const stateSelectors = (state: RootState) => state.contactInformations\r\n","import {\r\n PayloadAction,\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSlice,\r\n} from '@reduxjs/toolkit'\r\nimport {\r\n AcceptToSParams,\r\n ErrorData,\r\n GetTermsOfServiceContentParams,\r\n ShowForCustomerParams,\r\n ShowForCustomerResult,\r\n TermsOfService,\r\n} from 'typedef'\r\nimport { FETCH, TERMS_OF_SERVICE, initialPromiseStatus } from './constants'\r\nimport * as termsApi from 'api/TermsAndConditionsApi'\r\nimport { getErrorCode, getErrorMessage } from 'api/utils'\r\nimport { termsApiError } from 'api'\r\nimport { TermsOfServiceState } from './termsOfServiceSlice.types'\r\nimport { sliceUtil } from '.'\r\nimport { RootState } from 'store/rootReducer'\r\n\r\nconst adapter = createEntityAdapter({\r\n selectId: tos => tos.termsAndConditionsId,\r\n})\r\nexport const initialPromiseStatuses: TermsOfServiceState['promisesStatus'] = {\r\n showForCustomer: initialPromiseStatus,\r\n accept: initialPromiseStatus,\r\n getTermsOfServiceContent: initialPromiseStatus,\r\n}\r\nconst initialState = adapter.getInitialState({\r\n promisesStatus: initialPromiseStatuses,\r\n termsOfService: {\r\n termsAndConditionsID: '',\r\n show: false,\r\n },\r\n termsOfServiceContent: '',\r\n})\r\n\r\nexport const showForCustomer = createAsyncThunk<\r\n ShowForCustomerResult,\r\n ShowForCustomerParams,\r\n { rejectValue: ErrorData }\r\n>(`${TERMS_OF_SERVICE}${FETCH}/showForCustomer`, async (arg, thunkApi) => {\r\n try {\r\n const response = await termsApi.showForCustomer(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n termsApiError.getTerms\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const accept = createAsyncThunk<\r\n boolean,\r\n AcceptToSParams,\r\n { rejectValue: ErrorData }\r\n>(`${TERMS_OF_SERVICE}${FETCH}/accept`, async (arg, thunkApi) => {\r\n try {\r\n const response = await termsApi.accept(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n termsApiError.getTerms\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n})\r\n\r\nexport const getTermsOfServiceContent = createAsyncThunk<\r\n string,\r\n GetTermsOfServiceContentParams,\r\n { rejectValue: ErrorData }\r\n>(\r\n `${TERMS_OF_SERVICE}${FETCH}/getTermsOfServiceContent`,\r\n async (arg, thunkApi) => {\r\n try {\r\n const response = await termsApi.getTermsOfServiceContent(arg)\r\n return response\r\n } catch (error) {\r\n const errorMessage = getErrorMessage(\r\n getErrorCode(error),\r\n termsApiError.getTerms\r\n )\r\n return thunkApi.rejectWithValue(errorMessage)\r\n }\r\n }\r\n)\r\n\r\nconst termsOfServiceSlice = createSlice({\r\n name: TERMS_OF_SERVICE,\r\n initialState,\r\n reducers: {\r\n showForCustomer(state, { payload }: PayloadAction) {\r\n state.termsOfService = payload\r\n },\r\n getTermsOfServiceContent(state, { payload }: PayloadAction) {\r\n state.termsOfServiceContent = payload\r\n },\r\n },\r\n extraReducers: builder => {\r\n // Show for customer\r\n builder.addCase(showForCustomer.pending, ({ promisesStatus }) => {\r\n promisesStatus.showForCustomer = sliceUtil.pendingPromise(\r\n promisesStatus.showForCustomer\r\n )\r\n })\r\n builder.addCase(\r\n showForCustomer.fulfilled,\r\n (state, { payload }: PayloadAction) => {\r\n state.promisesStatus.showForCustomer = sliceUtil.fulfilledPromise()\r\n state.termsOfService = payload\r\n }\r\n )\r\n builder.addCase(showForCustomer.rejected, (state, action) => {\r\n state.promisesStatus.showForCustomer = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n\r\n // Accept\r\n builder.addCase(accept.pending, ({ promisesStatus }) => {\r\n promisesStatus.accept = sliceUtil.pendingPromise(promisesStatus.accept)\r\n })\r\n builder.addCase(accept.fulfilled, state => {\r\n state.promisesStatus.accept = sliceUtil.fulfilledPromise()\r\n })\r\n builder.addCase(accept.rejected, (state, action) => {\r\n state.promisesStatus.accept = sliceUtil.rejectedPromise(action.payload)\r\n })\r\n\r\n // Get terms of service content\r\n builder.addCase(getTermsOfServiceContent.pending, ({ promisesStatus }) => {\r\n promisesStatus.getTermsOfServiceContent = sliceUtil.pendingPromise(\r\n promisesStatus.getTermsOfServiceContent\r\n )\r\n })\r\n builder.addCase(\r\n getTermsOfServiceContent.fulfilled,\r\n (state, { payload }: PayloadAction) => {\r\n state.promisesStatus.getTermsOfServiceContent =\r\n sliceUtil.fulfilledPromise()\r\n state.termsOfServiceContent = payload\r\n }\r\n )\r\n builder.addCase(getTermsOfServiceContent.rejected, (state, action) => {\r\n state.promisesStatus.getTermsOfServiceContent = sliceUtil.rejectedPromise(\r\n action.payload\r\n )\r\n })\r\n },\r\n})\r\n\r\nexport default termsOfServiceSlice.reducer\r\nexport const { actions } = termsOfServiceSlice\r\nexport const stateSelectors = (state: RootState) => state.termsOfService\r\n","import { Dispatch } from 'react'\r\nimport { Action, MiddlewareAPI } from 'redux'\r\nimport { customerSlice, sliceUtil } from 'store/slices'\r\nimport { UserRole } from 'typedef/customer'\r\n\r\nexport const refreshToken =\r\n (store: MiddlewareAPI) => (next: Dispatch) => (action: Action) => {\r\n const { customer } = store.getState()\r\n next(action)\r\n if (customer.role !== UserRole.Guest && customer.role !== UserRole.User)\r\n return\r\n if (sliceUtil.fetchStatus(customer.promisesStatus.refreshToken).pending)\r\n return\r\n if (!customer?.tokens) return\r\n const { expires } = customer.tokens\r\n const refreshThreshold = 60000\r\n\r\n if (expires < Date.now()) {\r\n store.dispatch(customerSlice.actions.destroySession())\r\n return\r\n }\r\n\r\n if (expires > Date.now() && expires - Date.now() < refreshThreshold) {\r\n store.dispatch(\r\n customerSlice.refreshToken({\r\n token: customer.tokens.refresh,\r\n })\r\n )\r\n }\r\n }\r\n\r\nexport default refreshToken\r\n","import { Dispatch } from 'react'\r\nimport { Action, MiddlewareAPI } from 'redux'\r\nimport { customerSlice, layoutSlice } from 'store/slices'\r\n\r\nexport const destroySession =\r\n (store: MiddlewareAPI) => (next: Dispatch) => (action: Action) => {\r\n if (action.type === customerSlice.actions.destroySession.type) {\r\n store.dispatch(customerSlice.actions.setLogout())\r\n store.dispatch(\r\n layoutSlice.actions.setLayout({\r\n layout: {\r\n center: true,\r\n hasTopBar: true,\r\n },\r\n bottomMenu: false,\r\n topbar: null,\r\n })\r\n )\r\n }\r\n next(action)\r\n }\r\n\r\nexport default destroySession\r\n","export const SHOW_POPUP = 'SHOW_POPUP'\r\nexport const CLOSE_POPUP = 'CLOSE_POPUP'\r\nexport const SHOW_TERMS = 'SHOW_TERMS'\r\nexport const CLOSE_TERMS = 'CLOSE_TERMS'\r\n","import { Actions } from './actions'\r\nimport { SHOW_POPUP, CLOSE_POPUP, SHOW_TERMS, CLOSE_TERMS } from './constants'\r\nimport { Popup } from '../../typedef/popup'\r\n\r\nexport type PopupState = {\r\n popup: Popup\r\n show: boolean\r\n showTerms: boolean\r\n}\r\n\r\nconst initialState: PopupState = {\r\n popup: {\r\n title: '',\r\n description: '',\r\n variant: 'info',\r\n handleAdditionalButtonClick: () => undefined,\r\n },\r\n show: false,\r\n showTerms: false,\r\n}\r\n\r\nexport const popupReducer = (\r\n state = initialState,\r\n action: Actions\r\n): PopupState => {\r\n switch (action.type) {\r\n case SHOW_POPUP:\r\n return {\r\n ...state,\r\n show: true,\r\n popup: action.popup,\r\n }\r\n case CLOSE_POPUP:\r\n return {\r\n ...state,\r\n show: false,\r\n }\r\n case SHOW_TERMS:\r\n return {\r\n ...state,\r\n showTerms: true,\r\n }\r\n case CLOSE_TERMS:\r\n return {\r\n ...state,\r\n showTerms: false,\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","export const SHOW_LOADER = 'SHOW_LOADER'\r\nexport const HIDE_LOADER = 'HIDE_LOADER'\r\nexport const SHOW_LOADING_PAGE = 'SHOW_LOADING_PAGE'\r\nexport const HIDE_LOADING_PAGE = 'HIDE_LOADING_PAGE'\r\n","import { Actions } from './actions'\r\nimport {\r\n SHOW_LOADER,\r\n HIDE_LOADER,\r\n HIDE_LOADING_PAGE,\r\n SHOW_LOADING_PAGE,\r\n} from './constants'\r\n\r\nexport type LoaderState = {\r\n show: boolean\r\n showLoadingPage: boolean\r\n spinners: string[]\r\n}\r\n\r\nconst initialState: LoaderState = {\r\n show: false,\r\n showLoadingPage: false,\r\n spinners: [],\r\n}\r\n\r\nexport const loaderReducer = (\r\n state = initialState,\r\n action: Actions\r\n): LoaderState => {\r\n switch (action.type) {\r\n case SHOW_LOADER:\r\n return {\r\n ...state,\r\n spinners: [...state.spinners, ...action.spinnerNames],\r\n show: action.spinnerNames.length ? state.show : true,\r\n }\r\n\r\n case HIDE_LOADER:\r\n return {\r\n ...state,\r\n spinners: state.spinners.filter(\r\n el => !action.spinnerNames.includes(el)\r\n ),\r\n show: action.spinnerNames.length ? state.show : false,\r\n }\r\n case SHOW_LOADING_PAGE:\r\n return {\r\n ...state,\r\n showLoadingPage: true,\r\n }\r\n case HIDE_LOADING_PAGE:\r\n return {\r\n ...state,\r\n showLoadingPage: false,\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","import { Action, combineReducers } from '@reduxjs/toolkit'\r\nimport { popupReducer } from './globalPopup/reducers'\r\nimport { loaderReducer } from './loader/reducers'\r\nimport { customerSlice } from './slices'\r\nimport adsReducer from './slices/adsSlice'\r\nimport carsReducer from './slices/carsSlice'\r\nimport creditCardsReducer from './slices/creditCardsSlice'\r\nimport customerReducer from './slices/customerSlice'\r\nimport layoutReducer from './slices/layoutSlice'\r\nimport mapReducer from './slices/mapSlice'\r\nimport parkCarReducer from './slices/parkCarSlice'\r\nimport receiptsReducer from './slices/receiptsSlice'\r\nimport simulatePriceReducer from './slices/simulatePriceSlice'\r\nimport termsReducer from './slices/termsSlice'\r\nimport ticketsReducer from './slices/ticketsSlice'\r\nimport validatorsReducer from './slices/validatorsSlice'\r\nimport contactInformationsReducer from './slices/contactInformationsSlice'\r\nimport termsOfServiceReducer from './slices/termsOfServiceSlice'\r\n\r\nconst combinedReducer = combineReducers({\r\n ads: adsReducer,\r\n cars: carsReducer,\r\n creditCards: creditCardsReducer,\r\n customer: customerReducer,\r\n layout: layoutReducer,\r\n loader: loaderReducer,\r\n map: mapReducer,\r\n parkCar: parkCarReducer,\r\n popup: popupReducer,\r\n receipts: receiptsReducer,\r\n terms: termsReducer,\r\n tickets: ticketsReducer,\r\n validators: validatorsReducer,\r\n simulatedPrices: simulatePriceReducer,\r\n contactInformations: contactInformationsReducer,\r\n termsOfService: termsOfServiceReducer,\r\n})\r\nconst rootReducer = (state: RootState, action: Action) => {\r\n if (action.type === customerSlice.actions.destroySession().type) {\r\n const { map, layout, terms } = state\r\n state = { map, layout, terms } as RootState\r\n }\r\n return combinedReducer(state, action)\r\n}\r\n\r\nexport type RootState = ReturnType\r\n\r\nexport default rootReducer\r\n","import { configureStore } from '@reduxjs/toolkit'\r\nimport { useDispatch } from 'react-redux'\r\nimport { refreshTokenMiddlaware, destroySession } from 'store/middlewares'\r\nimport rootReducer, { RootState } from './rootReducer'\r\n\r\nconst store = configureStore({\r\n reducer: rootReducer,\r\n middleware: getDefaultMiddleware =>\r\n getDefaultMiddleware({ serializableCheck: false }).concat([\r\n refreshTokenMiddlaware,\r\n destroySession,\r\n ]),\r\n})\r\n\r\nexport type AppDispatch = typeof store.dispatch\r\nexport const useAppDispatch = () => useDispatch()\r\nexport type { RootState as AppState }\r\nexport default store\r\n","import * as React from 'react'\r\nimport { Route, RouteProps, Redirect } from 'react-router-dom'\r\nexport interface ConditionalRouteProps {\r\n redirectTo: string\r\n shouldRedirect: boolean\r\n}\r\n\r\nconst ConditionalRoute: React.SFC = ({\r\n redirectTo,\r\n shouldRedirect,\r\n ...props\r\n}) => {\r\n return (\r\n \r\n {shouldRedirect ? : props.children}\r\n \r\n )\r\n}\r\n\r\nexport default ConditionalRoute\r\n","const ROOT = '/'\r\nconst AUTH = '/auth'\r\nconst HOME = '/home'\r\nconst MAP = '/map'\r\nconst PARKER = '/parker'\r\nconst PARKING = '/parking'\r\nconst MY_PROFILE = '/my-profile'\r\nconst SIGN_UP = '/sign-up'\r\nconst SMS = '/sms'\r\nconst OLD_MOBI = '/old-mobi'\r\nconst REDIRECT = '/redirect'\r\n\r\nexport const paths = {\r\n root: {\r\n root: ROOT,\r\n oldMobi: OLD_MOBI,\r\n },\r\n home: {\r\n map: `${HOME}${MAP}`,\r\n },\r\n parker: {\r\n info: `${PARKER}/info`,\r\n edit: `${PARKER}${MY_PROFILE}/edit`,\r\n delete: `${PARKER}${MY_PROFILE}/delete`,\r\n changePassword: `${PARKER}${MY_PROFILE}/change-password`,\r\n myProfile: `${PARKER}${MY_PROFILE}`,\r\n myReceipts: `${PARKER}/my-receipts`,\r\n sendReceipt: `${PARKER}/send-receipt`,\r\n addCar: `${PARKER}/add-car`,\r\n addCard: `${PARKER}/add-card`,\r\n question: `${PARKER}/question`,\r\n receiptsAndNotifications: `${PARKER}/receipts-and-notifications`,\r\n paymentSuccessful: `${PARKER}/payment-successful`,\r\n },\r\n auth: {\r\n login: `${AUTH}/login`,\r\n forgotPassword: `${AUTH}/forgot-password`,\r\n resetPassword: `${AUTH}/reset-password`,\r\n signUp: `${AUTH}${SIGN_UP}`,\r\n setPassword: `${AUTH}${SIGN_UP}/set-password`,\r\n code: `${AUTH}${SIGN_UP}/code`,\r\n addCard: `${AUTH}${SIGN_UP}/add-card`,\r\n },\r\n parking: {\r\n tickets: `${PARKING}/tickets`,\r\n parkCar: `${PARKING}/park-car`,\r\n selectCard: `${PARKING}/select-card`,\r\n pay: `${PARKING}/pay`,\r\n paid: `${PARKING}/paid`,\r\n addTime: `${PARKING}/add-time`,\r\n addTimePay: `${PARKING}/add-time-pay`,\r\n addTimeManageCards: `${PARKING}/add-time-manage-cards`,\r\n addTimeSelectCard: `${PARKING}/add-time-select-card`,\r\n addTimeAddCard: `${PARKING}/add-time-add-card`,\r\n manageCards: `${PARKING}/manage-cards`,\r\n addCard: `${PARKING}/add-card`,\r\n validators: `${PARKING}/validators`,\r\n validate: `validate`,\r\n upfrontValidate: `${PARKING}/upfront-validation`,\r\n findCar: `${PARKING}/find-car`,\r\n transaction: `${PARKING}/transaction`,\r\n contactInformations: `${PARKING}/contact-informations`,\r\n login: `${PARKING}/login`,\r\n forgotPassword: `${PARKING}/forgot-password`,\r\n signUp: `${PARKING}${SIGN_UP}`,\r\n },\r\n sms: {\r\n park: `${SMS}/park`,\r\n map: `${SMS}/map`,\r\n corp: `${SMS}/corporation`,\r\n addTime: `${SMS}/add-time`,\r\n },\r\n redirect: {\r\n landingPage: `${REDIRECT}/landing-page`,\r\n },\r\n}\r\n\r\nexport default paths\r\n","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEmail(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 3.5,\n y: 6.5,\n width: 19,\n height: 13,\n rx: 1.324,\n stroke: \"#9D9D9D\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 7l9 6 9-6\",\n stroke: \"#9D9D9D\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmail);\nexport default __webpack_public_path__ + \"static/media/email.b65b6c07.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/outlined/email.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPhone(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 7.5,\n y: 3.5,\n width: 11,\n height: 19,\n rx: 1.5,\n stroke: \"#9D9D9D\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 19h12M12 5h2\",\n stroke: \"#9D9D9D\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPhone);\nexport default __webpack_public_path__ + \"static/media/phone.b3951eaa.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/outlined/phone.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPin(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 18,\n viewBox: \"0 0 22 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.499 14.5c0 .254-.162.585-.665.963-.494.372-1.24.728-2.208 1.035-1.93.614-4.626 1.002-7.627 1.002-3 0-5.697-.388-7.627-1.002-.967-.308-1.714-.664-2.208-1.035-.503-.378-.665-.709-.665-.963s.162-.585.665-.963c.494-.372 1.24-.728 2.208-1.035C5.302 11.888 7.998 11.5 11 11.5c3 0 5.697.388 7.627 1.002.967.307 1.714.663 2.208 1.035.503.378.665.709.665.963z\",\n stroke: \"#9D9D9D\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.598 5.17c0 1.298-.642 3.053-1.617 4.799-.874 1.566-1.98 3.06-3.015 4.121-1.137-1.052-2.24-2.544-3.085-4.114-.933-1.736-1.51-3.497-1.51-4.805C6.37 2.586 8.44.5 10.983.5c2.543 0 4.614 2.086 4.614 4.67z\",\n stroke: \"#9D9D9D\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 10.998,\n cy: 5.1,\n r: 1.45,\n stroke: \"#9D9D9D\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPin);\nexport default __webpack_public_path__ + \"static/media/pin.bac8db02.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/outlined/pin.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPin(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.5 10c0 1.8-.897 4.208-2.235 6.579-1.239 2.194-2.816 4.288-4.284 5.744-1.621-1.447-3.197-3.538-4.392-5.737C7.306 14.226 6.5 11.812 6.5 10a6.5 6.5 0 0113 0z\",\n stroke: \"#000\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 13,\n cy: 10,\n r: 2,\n fill: \"#000\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPin);\nexport default __webpack_public_path__ + \"static/media/pin.c057362c.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/history_list/pin.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgClock(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 5a8 8 0 110 16M13 21a8 8 0 01-8-8\",\n stroke: \"#000\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 5c-2.898 0-5.459 1.582-7 4M13 8v5l2.5 2.5\",\n stroke: \"#000\",\n strokeLinecap: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 11l1.732 2.25H3.268L5 11z\",\n fill: \"#000\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgClock);\nexport default __webpack_public_path__ + \"static/media/clock.b2f5c5c0.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/history_list/clock.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSendComplete(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 13,\n cy: 13,\n r: 10.5,\n stroke: \"#00DA7E\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 13l4 4 7-7\",\n stroke: \"#00DA7E\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSendComplete);\nexport default __webpack_public_path__ + \"static/media/send-complete.0d0c149d.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/history_list/send-complete.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _circle3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _circle4, _mask, _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgErrorIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 199,\n height: 164,\n fill: \"none\",\n viewBox: \"0 0 199 164\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 45.329,\n height: 16.942,\n x: 33.885,\n y: 149.013,\n fill: \"#FFE6E6\",\n rx: 8.471,\n transform: \"rotate(-30 33.885 149.013)\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 22.565,\n height: 16.924,\n x: 11.066,\n y: 103.474,\n fill: \"#FFE6E6\",\n rx: 8.462,\n transform: \"rotate(-30 11.066 103.474)\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16.942,\n height: 16.942,\n x: 141.77,\n y: 8.471,\n fill: \"#FFE6E6\",\n rx: 8.471,\n transform: \"rotate(-30 141.77 8.471)\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFE6E6\",\n fillRule: \"evenodd\",\n d: \"M43.094 65.442a8.471 8.471 0 008.46 14.679l26.053-15.042a8.471 8.471 0 118.471 14.673L57.122 96.47l-.026.014-7.165 4.137a8.471 8.471 0 00-3.1 11.572 8.471 8.471 0 0011.571 3.101l104.36-60.252a8.471 8.471 0 00-8.446-14.688l-22.18 12.806a8.472 8.472 0 01-8.471-14.673l6.23-3.596a8.472 8.472 0 00-8.482-14.667L43.094 65.442zm41.762 34.579a8.471 8.471 0 018.448 14.686l-11.391 6.577.022-.013 10.494-6.059a8.471 8.471 0 108.471 14.672l62.869-36.297a8.471 8.471 0 10-8.471-14.672l-20.892 12.061a8.83 8.83 0 00.336-.204 8.472 8.472 0 01-8.463-14.657c-.115.06-.23.123-.344.189l-41.08 23.717z\",\n clipRule: \"evenodd\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 189.922,\n cy: 99.85,\n r: 4.15,\n stroke: \"#FFE5E5\",\n strokeWidth: 2.605\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32.343,\n cy: 43.625,\n r: 3.022,\n stroke: \"#FFE5E5\",\n strokeWidth: 2.605\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 93.456,\n cy: 150.809,\n r: 3.022,\n stroke: \"#FFE5E5\",\n strokeWidth: 2.605\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 10.53,\n height: 1.88,\n x: 120.533,\n y: 4.325,\n fill: \"#FFE6E6\",\n rx: 0.94\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 10.53,\n height: 1.88,\n x: 126.738,\n y: 0,\n fill: \"#FFE6E6\",\n rx: 0.94,\n transform: \"rotate(90 126.738 0)\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.898,\n height: 1.88,\n x: 157.014,\n y: 125.329,\n fill: \"#FFE6E6\",\n rx: 0.94\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.898,\n height: 1.88,\n x: 161.902,\n y: 122.414,\n fill: \"#FFE6E6\",\n rx: 0.94,\n transform: \"rotate(90 161.902 122.414)\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.898,\n height: 1.88,\n x: 7.146,\n y: 87.157,\n fill: \"#FFE6E6\",\n rx: 0.94\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.898,\n height: 1.88,\n x: 12.035,\n y: 84.242,\n fill: \"#FFE6E6\",\n rx: 0.94,\n transform: \"rotate(90 12.035 84.242)\"\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 99.529,\n cy: 81.812,\n r: 40.385,\n fill: \"#fff\",\n stroke: \"#F33\",\n strokeWidth: 2.605\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n width: 79,\n height: 79,\n x: 60,\n y: 42,\n maskUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 99.529,\n cy: 81.812,\n r: 39.082,\n fill: \"#fff\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFC4C4\",\n d: \"M99.529 39.343H142.78V123.239H99.529z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F33\",\n d: \"M102.839 89.104h-6.31V62.792h6.31v26.312zm-3.18 4.337c1.144 0 2.103.344 2.877 1.034.774.723 1.161 1.61 1.161 2.661s-.387 1.922-1.161 2.612c-.774.722-1.733 1.084-2.877 1.084-1.144 0-2.104-.345-2.878-1.035-.774-.657-1.16-1.495-1.16-2.513 0-1.084.386-2.004 1.16-2.76.74-.722 1.7-1.084 2.878-1.084z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgErrorIcon);\nexport default __webpack_public_path__ + \"static/media/error-icon.89875e7f.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/popup_placeholder/error-icon.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _circle3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _circle4, _mask, _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgInfoIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 191,\n height: 158,\n fill: \"none\",\n viewBox: \"0 0 191 158\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 43.495,\n height: 16.257,\n x: 32.514,\n y: 142.981,\n fill: \"#DCF3FF\",\n rx: 8.128,\n transform: \"rotate(-30 32.514 142.981)\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 21.651,\n height: 16.239,\n x: 10.619,\n y: 99.286,\n fill: \"#DCF3FF\",\n rx: 8.119,\n transform: \"rotate(-30 10.62 99.286)\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16.257,\n height: 16.257,\n x: 136.031,\n y: 8.128,\n fill: \"#DCF3FF\",\n rx: 8.128,\n transform: \"rotate(-30 136.031 8.128)\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DCF3FF\",\n fillRule: \"evenodd\",\n d: \"M41.351 62.793A8.128 8.128 0 0049.43 76.9l25.037-14.455a8.128 8.128 0 018.129 14.078l-20.28 11.709.048-.028L128 50.308l.059-.034-1.272.734a8.128 8.128 0 01-11.103-2.975 8.128 8.128 0 012.975-11.104l6.029-3.48a8.129 8.129 0 00-8.19-14.043L41.351 62.793zm47.32 47.765a8.129 8.129 0 008.146 14.069l60.324-34.828a8.13 8.13 0 00-8.129-14.079l-20.029 11.564a7.96 7.96 0 00.307-.187 8.129 8.129 0 01-8.123-14.062c-.096.05-.191.102-.286.155l.546-.315.063-.037 27.785-16.041.063-.036 6.837-3.948a8.128 8.128 0 002.975-11.103 8.128 8.128 0 00-11.103-2.975L47.911 96.548a8.129 8.129 0 008.084 14.104l25.404-14.667a8.128 8.128 0 118.129 14.079l-.856.494z\",\n clipRule: \"evenodd\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 182.232,\n cy: 95.808,\n r: 3.982,\n stroke: \"#DCF3FF\",\n strokeWidth: 2.5\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 31.033,\n cy: 41.859,\n r: 2.9,\n stroke: \"#DCF3FF\",\n strokeWidth: 2.5\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 89.673,\n cy: 144.704,\n r: 2.9,\n stroke: \"#DCF3FF\",\n strokeWidth: 2.5\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 10.104,\n height: 1.804,\n x: 115.654,\n y: 4.15,\n fill: \"#DCF3FF\",\n rx: 0.902\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 10.104,\n height: 1.804,\n x: 121.609,\n fill: \"#DCF3FF\",\n rx: 0.902,\n transform: \"rotate(90 121.609 0)\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.578,\n height: 1.804,\n x: 150.658,\n y: 120.256,\n fill: \"#DCF3FF\",\n rx: 0.902\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.578,\n height: 1.804,\n x: 155.35,\n y: 117.459,\n fill: \"#DCF3FF\",\n rx: 0.902,\n transform: \"rotate(90 155.35 117.459)\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.578,\n height: 1.804,\n x: 6.857,\n y: 83.629,\n fill: \"#DCF3FF\",\n rx: 0.902\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.578,\n height: 1.804,\n x: 11.549,\n y: 80.832,\n fill: \"#DCF3FF\",\n rx: 0.902,\n transform: \"rotate(90 11.549 80.832)\"\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 95.5,\n cy: 78.5,\n r: 38.75,\n fill: \"#fff\",\n stroke: \"#32A3F5\",\n strokeWidth: 2.5\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n width: 75,\n height: 75,\n x: 58,\n y: 41,\n maskUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 95.5,\n cy: 78.5,\n r: 37.5,\n fill: \"#fff\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C0E4FF\",\n d: \"M95.5 37.75H137V118.25H95.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#32A3F5\",\n d: \"M92.573 71.503h6.055V96.75h-6.055V71.503zm3.052-4.161c-1.098 0-2.018-.331-2.76-.993-.744-.693-1.115-1.544-1.115-2.553s.371-1.844 1.114-2.506c.743-.693 1.663-1.04 2.761-1.04s2.018.331 2.76.993c.744.63 1.115 1.434 1.115 2.411 0 1.04-.371 1.923-1.114 2.648-.71.693-1.63 1.04-2.761 1.04z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfoIcon);\nexport default __webpack_public_path__ + \"static/media/info-icon.7025757e.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/popup_placeholder/info-icon.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _circle3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _circle4, _mask, _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSuccessIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 199,\n height: 164,\n fill: \"none\",\n viewBox: \"0 0 199 164\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 45.329,\n height: 16.942,\n x: 33.885,\n y: 149.013,\n fill: \"#E4F4FF\",\n rx: 8.471,\n transform: \"rotate(-30 33.885 149.013)\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 22.565,\n height: 16.924,\n x: 11.068,\n y: 103.474,\n fill: \"#E4F4FF\",\n rx: 8.462,\n transform: \"rotate(-30 11.068 103.474)\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16.942,\n height: 16.942,\n x: 141.77,\n y: 8.471,\n fill: \"#E4F4FF\",\n rx: 8.471,\n transform: \"rotate(-30 141.77 8.471)\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E4F4FF\",\n fillRule: \"evenodd\",\n d: \"M43.094 65.442a8.471 8.471 0 008.45 14.685l26.063-15.048a8.471 8.471 0 118.47 14.673L64.986 91.93l-.003.002-7.86 4.538-7.19 4.151a8.472 8.472 0 008.47 14.673l26.43-15.259 41.762-24.111.021-.013 28.956-16.718.023-.013 7.168-4.138a8.471 8.471 0 10-8.471-14.673l-20.884 12.058a.226.226 0 01.016-.01l-1.287.743a8.472 8.472 0 01-8.471-14.672l6.249-3.608a8.471 8.471 0 00-8.501-14.656L43.094 65.442zm83.184 10.674a8.472 8.472 0 008.465 14.656 8.345 8.345 0 01-.319.194l20.874-12.051a8.472 8.472 0 018.471 14.672L100.9 129.885a8.471 8.471 0 01-8.488-14.663l-10.477 6.049-.041.024 11.41-6.588a8.471 8.471 0 00-8.43-14.696l41.061-23.707a9.15 9.15 0 01.343-.188z\",\n clipRule: \"evenodd\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 189.922,\n cy: 99.85,\n r: 4.15,\n stroke: \"#E4F4FF\",\n strokeWidth: 2.605\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32.343,\n cy: 43.625,\n r: 3.022,\n stroke: \"#E4F4FF\",\n strokeWidth: 2.605\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 93.456,\n cy: 150.809,\n r: 3.022,\n stroke: \"#E4F4FF\",\n strokeWidth: 2.605\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 10.53,\n height: 1.88,\n x: 120.533,\n y: 4.325,\n fill: \"#E4F4FF\",\n rx: 0.94\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 10.53,\n height: 1.88,\n x: 126.738,\n fill: \"#E4F4FF\",\n rx: 0.94,\n transform: \"rotate(90 126.738 0)\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.898,\n height: 1.88,\n x: 157.014,\n y: 125.329,\n fill: \"#E4F4FF\",\n rx: 0.94\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.898,\n height: 1.88,\n x: 161.902,\n y: 122.414,\n fill: \"#E4F4FF\",\n rx: 0.94,\n transform: \"rotate(90 161.902 122.414)\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.898,\n height: 1.88,\n x: 7.146,\n y: 87.157,\n fill: \"#E4F4FF\",\n rx: 0.94\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.898,\n height: 1.88,\n x: 12.035,\n y: 84.242,\n fill: \"#E4F4FF\",\n rx: 0.94,\n transform: \"rotate(90 12.035 84.242)\"\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 99.529,\n cy: 81.812,\n r: 40.385,\n fill: \"#fff\",\n stroke: \"#32A3F5\",\n strokeWidth: 2.605\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n width: 79,\n height: 79,\n x: 60,\n y: 42,\n maskUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 99.529,\n cy: 81.812,\n r: 39.082,\n fill: \"#fff\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C7E8FF\",\n d: \"M99.529 39.343H142.78V123.239H99.529z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#32A3F5\",\n strokeWidth: 5.732,\n d: \"M82.072 84.287l10.683 10.682 24.361-24.36\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSuccessIcon);\nexport default __webpack_public_path__ + \"static/media/success-icon.549cd10a.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/popup_placeholder/success-icon.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _circle3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgWarningIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 199,\n height: 164,\n viewBox: \"0 0 199 164\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 33.8848,\n y: 149.013,\n width: 45.3294,\n height: 16.9424,\n rx: 8.47122,\n transform: \"rotate(-30 33.8848 149.013)\",\n fill: \"#E6E6E6\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 11.0684,\n y: 103.474,\n width: 22.5649,\n height: 16.9237,\n rx: 8.46183,\n transform: \"rotate(-30 11.0684 103.474)\",\n fill: \"#E6E6E6\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 141.77,\n y: 8.47125,\n width: 16.9424,\n height: 16.9424,\n rx: 8.47122,\n transform: \"rotate(-30 141.77 8.47125)\",\n fill: \"#E6E6E6\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.0943 65.4416C39.0425 67.7809 37.6543 72.9618 39.9936 77.0135C42.328 81.0568 47.4921 82.4476 51.5401 80.1288L77.6068 65.0792C81.6585 62.7399 86.8394 64.1281 89.1787 68.1799C91.5179 72.2316 90.1297 77.4125 86.078 79.7518L64.975 91.9355C64.9808 91.9322 64.9865 91.9289 64.9923 91.9256L133.4 52.4307C133.408 52.4256 133.417 52.4205 133.426 52.4154L132.136 53.16C128.084 55.4993 122.904 54.111 120.564 50.0593C118.225 46.0076 119.613 40.8267 123.665 38.4874L129.917 34.878C133.943 32.5299 135.318 27.3659 132.985 23.325C130.645 19.2733 125.465 17.8851 121.413 20.2244L43.0943 65.4416ZM92.412 115.222C88.3736 117.566 86.9926 122.738 89.3285 126.784C91.6678 130.836 96.8487 132.224 100.9 129.884L163.769 93.5873C167.821 91.248 169.209 86.0671 166.87 82.0154C164.53 77.9636 159.35 76.5754 155.298 78.9147L134.424 90.9664C134.532 90.9033 134.639 90.8383 134.744 90.7712C130.747 92.8432 125.788 91.4214 123.514 87.483C121.241 83.5459 122.488 78.5425 126.278 76.1163C126.163 76.1759 126.049 76.2384 125.935 76.3038L84.8751 100.01C88.9204 97.705 94.0731 99.0977 96.4041 103.135C98.7434 107.187 97.3552 112.368 93.3034 114.707L81.8927 121.295C81.9068 121.287 81.9209 121.279 81.935 121.271L92.412 115.222ZM84.8545 100.022C84.8471 100.026 84.8396 100.03 84.8322 100.034L58.38 115.307C54.3316 117.628 49.1654 116.237 46.8304 112.193C44.4911 108.141 45.8794 102.961 49.9311 100.621L154.291 40.369C158.343 38.0297 163.524 39.418 165.863 43.4697C168.202 47.5214 166.814 52.7023 162.762 55.0416L155.607 59.1724C155.595 59.1793 155.583 59.1861 155.571 59.1931L126.615 75.9111C126.603 75.918 126.591 75.9249 126.579 75.9319L84.8545 100.022Z\",\n fill: \"#E6E6E6\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 189.922,\n cy: 99.8496,\n r: 4.15044,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.60547\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32.3425,\n cy: 43.6254,\n r: 3.0222,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.60547\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 93.4558,\n cy: 150.809,\n r: 3.0222,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.60547\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 120.533,\n y: 4.32495,\n width: 10.5303,\n height: 1.88041,\n rx: 0.940203,\n fill: \"#E6E6E6\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 126.738,\n width: 10.5303,\n height: 1.88041,\n rx: 0.940203,\n transform: \"rotate(90 126.738 0)\",\n fill: \"#E6E6E6\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 157.014,\n y: 125.329,\n width: 7.89771,\n height: 1.88041,\n rx: 0.940203,\n fill: \"#E6E6E6\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 161.902,\n y: 122.414,\n width: 7.89771,\n height: 1.88041,\n rx: 0.940203,\n transform: \"rotate(90 161.902 122.414)\",\n fill: \"#E6E6E6\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 7.14648,\n y: 87.1569,\n width: 7.89771,\n height: 1.88041,\n rx: 0.940203,\n fill: \"#E6E6E6\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 12.0352,\n y: 84.2422,\n width: 7.89771,\n height: 1.88041,\n rx: 0.940203,\n transform: \"rotate(90 12.0352 84.2422)\",\n fill: \"#E6E6E6\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.391 40.7799C102.289 37.1265 97.0303 37.1265 94.9284 40.7799L52.0651 115.286C49.9686 118.93 52.5846 123.499 56.7962 123.499H142.523C146.735 123.499 149.351 118.93 147.254 115.286L104.391 40.7799Z\",\n fill: \"white\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2.60547\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M99.5293 122.196H142.523C145.725 122.196 147.726 118.718 146.125 115.935L103.262 41.4296C102.436 39.9951 100.973 39.3001 99.5293 39.3446V122.196Z\",\n fill: \"#ECECEC\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M102.579 94.5758L96.2692 94.5758L96.2692 68.2633L102.579 68.2633L102.579 94.5758ZM99.399 98.9119C100.543 98.9119 101.502 99.2569 102.276 99.9467C103.05 100.669 103.438 101.556 103.438 102.608C103.438 103.659 103.05 104.529 102.276 105.219C101.502 105.942 100.543 106.303 99.399 106.303C98.2548 106.303 97.2957 105.958 96.5216 105.268C95.7476 104.611 95.3605 103.774 95.3605 102.755C95.3605 101.671 95.7476 100.752 96.5216 99.996C97.262 99.2733 98.2211 98.9119 99.399 98.9119Z\",\n fill: \"#AFAFAF\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgWarningIcon);\nexport default __webpack_public_path__ + \"static/media/warning-icon.4de95583.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/popup_placeholder/warning-icon.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _path3, _path4, _path5;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgAttachMoney(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 10 23\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 7a4 4 0 10-8 0\",\n stroke: \"#32A3F5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 7a4 4 0 004 4\",\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 15a4 4 0 108 0\",\n stroke: \"#32A3F5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 15a4 4 0 00-4-4\",\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 1v21\",\n stroke: \"#32A3F5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgAttachMoney);\nexport default __webpack_public_path__ + \"static/media/attach-money.3b291f7a.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/buttons/attach-money.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _circle2, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGpsFixed(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 8,\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 3,\n fill: \"#32A3F5\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3.5V1M12 23v-2.5M20.5 12H23M1 12h2.5\",\n stroke: \"#32A3F5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGpsFixed);\nexport default __webpack_public_path__ + \"static/media/gps-fixed.90c4100d.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/buttons/gps-fixed.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPinDrop(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 23,\n height: 23,\n viewBox: \"0 0 23 23\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 18.5c0 .25-.125.594-.583 1.018-.459.424-1.177.852-2.15 1.233C17.33 21.509 14.583 22 11.5 22s-5.83-.49-7.767-1.25c-.973-.38-1.691-.808-2.15-1.232C1.125 19.094 1 18.749 1 18.5c0-.25.125-.594.583-1.018.459-.424 1.177-.852 2.15-1.233C5.67 15.491 8.417 15 11.5 15s5.83.49 7.767 1.25c.973.38 1.691.808 2.15 1.232.458.424.583.769.583 1.018z\",\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.026 6.585c0 1.557-.78 3.725-2.013 5.933-1.031 1.847-2.315 3.61-3.536 4.913-1.32-1.289-2.6-3.046-3.596-4.899C6.705 10.344 6 8.164 6 6.585 6 3.49 8.479 1 11.513 1s5.513 2.49 5.513 5.585z\",\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 11.532,\n cy: 6.495,\n r: 2.483,\n fill: \"#32A3F5\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPinDrop);\nexport default __webpack_public_path__ + \"static/media/pin-drop.adc2c17c.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/buttons/pin-drop.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMoneyOff(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 25,\n height: 25,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.996 9a4 4 0 00-8 0\",\n stroke: \"#32A3F5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.996 9a4 4 0 004 4\",\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.996 17a4 4 0 008 0\",\n stroke: \"#32A3F5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.996 17a4 4 0 00-4-4\",\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.996 3v21\",\n stroke: \"#32A3F5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M21.121.854l4.025 4.025L4.875 25.15.85 21.125z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.996 4l-18 18\",\n stroke: \"#32A3F5\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMoneyOff);\nexport default __webpack_public_path__ + \"static/media/money-off.1dd28f6e.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/buttons/money-off.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPricePin(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 54,\n height: 63,\n viewBox: \"0 0 54 63\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.908 46.35c-10.544-10.603-10.544-27.794 0-38.398 10.544-10.603 27.64-10.603 38.184 0 10.544 10.604 10.544 27.795 0 38.398L31.328 61.197a6.096 6.096 0 01-8.655 0L7.907 46.35z\",\n fill: \"#1411A1\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 27,\n cy: 27,\n r: 25,\n fill: \"#fff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPricePin);\nexport default __webpack_public_path__ + \"static/media/price-pin.d5787326.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/map_pins/price-pin.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgClusterPin(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38,\n height: 44,\n viewBox: \"0 0 38 44\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.545 32.318c-7.393-7.394-7.393-19.38 0-26.773 7.393-7.393 19.38-7.393 26.773 0 7.393 7.393 7.393 19.38 0 26.773L21.965 42.67a4.291 4.291 0 01-6.068 0L5.545 32.318z\",\n fill: \"#3366EC\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 19,\n cy: 19,\n transform: \"rotate(-90 19 19)\",\n fill: \"#fff\",\n r: 13\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgClusterPin);\nexport default __webpack_public_path__ + \"static/media/cluster-pin.d3ab2922.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/map_pins/cluster-pin.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgStandardPin(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38,\n height: 44,\n viewBox: \"0 0 38 44\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.545 32.318c-7.393-7.394-7.393-19.38 0-26.773 7.393-7.393 19.38-7.393 26.773 0 7.393 7.393 7.393 19.38 0 26.773L21.965 42.67a4.291 4.291 0 01-6.068 0L5.545 32.318z\",\n fill: \"#3366EC\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 18.905,\n cy: 18.929,\n r: 8.204,\n transform: \"rotate(-90 18.905 18.93)\",\n fill: \"#fff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgStandardPin);\nexport default __webpack_public_path__ + \"static/media/standard-pin.e6ccca75.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/map_pins/standard-pin.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSelectedPin(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 55,\n height: 65,\n viewBox: \"0 0 55 65\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.211 47.452C-2.422 36.82-2.422 19.58 8.211 8.947c10.633-10.633 27.872-10.633 38.505 0 10.633 10.633 10.633 27.872 0 38.505L31.827 62.341a6.172 6.172 0 01-8.727 0L8.21 47.452z\",\n fill: \"#32A3F5\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 27.425,\n cy: 28.202,\n r: 11.798,\n transform: \"rotate(-90 27.425 28.202)\",\n fill: \"#fff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSelectedPin);\nexport default __webpack_public_path__ + \"static/media/selected-pin.2983a89c.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../../assets/images/svg_icons/map_pins/selected-pin.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMessage(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 27,\n height: 27,\n fill: \"none\",\n viewBox: \"0 0 27 27\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 17.646,\n height: 11.014,\n x: 4.204,\n y: 7.52,\n stroke: \"#000\",\n strokeWidth: 1.303,\n rx: 1.172\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000\",\n strokeWidth: 1.303,\n d: \"M4.264 8.053l8.763 4.974 8.764-4.974\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMessage);\nexport default __webpack_public_path__ + \"static/media/message.498f88d6.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/message.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _circle3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _rect10, _path2, _path3, _path4, _path5, _path6;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgReceipt(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 183,\n height: 155,\n fill: \"none\",\n viewBox: \"0 0 183 155\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 50.782,\n height: 15.309,\n x: 55.754,\n y: 126.959,\n fill: \"#E6E6E6\",\n rx: 7.654,\n transform: \"rotate(-30 55.754 126.959)\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 19.873,\n height: 15.292,\n x: 7.646,\n y: 101.684,\n fill: \"#E6E6E6\",\n rx: 7.646,\n transform: \"rotate(-30 7.646 101.684)\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 15.309,\n height: 15.309,\n x: 131.16,\n y: 12.717,\n fill: \"#E6E6E6\",\n rx: 7.654,\n transform: \"rotate(-30 131.16 12.717)\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E6E6\",\n fillRule: \"evenodd\",\n d: \"M34.93 68.275a7.654 7.654 0 107.655 13.257l4.323-2.496.114-.067 26.164-15.105A7.654 7.654 0 1180.84 77.12L61.74 88.15l.048-.028 61.81-35.686.086-.05-1.226.708a7.654 7.654 0 01-10.456-2.802 7.654 7.654 0 012.801-10.456l5.754-3.322a7.654 7.654 0 00-7.789-13.178L34.93 68.275zm63.122 34.264a7.654 7.654 0 107.654 13.257l45.333-26.173a7.654 7.654 0 002.801-10.456 7.654 7.654 0 00-10.456-2.801l-45.332 26.173zm19.331-28.838l-.442.255c.075-.042.149-.082.225-.12a7.653 7.653 0 00-2.498 10.27 7.654 7.654 0 0010.143 2.973 7.52 7.52 0 01-.303.184l-47.411 27.373-.071.041 10.344-5.972a7.655 7.655 0 00-7.655-13.258L55.721 109.3a7.654 7.654 0 01-7.542-13.321l94.296-54.442a7.654 7.654 0 017.654 13.258l-6.409 3.7a9.606 9.606 0 00-.087.05L117.469 73.65a3.896 3.896 0 00-.086.051z\",\n clipRule: \"evenodd\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 165.39,\n cy: 108.685,\n r: 3.971,\n stroke: \"#E6E6E6\",\n strokeWidth: 1.912\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32.287,\n cy: 44.48,\n r: 2.952,\n stroke: \"#E6E6E6\",\n strokeWidth: 1.912\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 41.444,\n cy: 134.548,\n r: 4.527,\n stroke: \"#E6E6E6\",\n strokeWidth: 1.912\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 9.515,\n height: 1.699,\n x: 108.508,\n y: 3.908,\n fill: \"#E6E6E6\",\n rx: 0.85\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 9.515,\n height: 1.699,\n x: 114.115,\n fill: \"#E6E6E6\",\n rx: 0.85,\n transform: \"rotate(90 114.115 0)\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.136,\n height: 1.699,\n x: 139.719,\n y: 133.291,\n fill: \"#E6E6E6\",\n rx: 0.85\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.136,\n height: 1.699,\n x: 144.137,\n y: 130.658,\n fill: \"#E6E6E6\",\n rx: 0.85,\n transform: \"rotate(90 144.137 130.658)\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.136,\n height: 1.699,\n x: 9.52,\n y: 83.813,\n fill: \"#E6E6E6\",\n rx: 0.85\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7.136,\n height: 1.699,\n x: 13.938,\n y: 81.18,\n fill: \"#E6E6E6\",\n rx: 0.85,\n transform: \"rotate(90 13.938 81.18)\"\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 95.792,\n height: 61.465,\n x: 44.696,\n y: 57.178,\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2.286,\n rx: 6.857\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M66.846 27.837v45.361L92.591 87.91l31.876-18.39V46.228h-12.06v-18.39l-5.695 5.216-5.695-5.215-5.695 5.215-5.696-5.215-5.695 5.215-5.695-5.215-5.695 5.215-5.695-5.215z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#ECECEC\",\n d: \"M91.5 29l4.5 4 5.5-5 6 5 5-4v17h11v12.317h10.228a5.6 5.6 0 015.6 5.6V111.9a5.6 5.6 0 01-5.6 5.6H91.5V29z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#AFAFAF\",\n strokeWidth: 2.286,\n d: \"M46.082 61.58L92.9 87.73l46.817-26.15\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#AFAFAF\",\n strokeLinecap: \"round\",\n strokeWidth: 2.286,\n d: \"M103.625 46.227H86.461M80.332 46.227h-3.678M103.625 56.035H86.461M80.332 56.035h-3.678M103.625 65.844H86.461M80.332 65.844h-3.678\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#AFAFAF\",\n strokeWidth: 2.286,\n d: \"M66.847 73.198v-45.36l5.823 5.215 5.823-5.216 5.824 5.216 5.823-5.216 5.823 5.216 5.824-5.216 5.823 5.216 5.824-5.216V75.65M124.467 69.52V46.227h-11.033V69.52\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgReceipt);\nexport default __webpack_public_path__ + \"static/media/receipt.452855ed.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/receipt.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _circle, _circle2, _circle3, _rect7, _rect8, _rect9, _rect10, _rect11, _rect12, _rect13, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgNoCreditCard(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 508,\n height: 429,\n viewBox: \"0 0 508 429\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 146.426,\n y: 387.587,\n width: 159.83,\n height: 48.182,\n rx: 24.091,\n transform: \"rotate(-30 146.426 387.587)\",\n fill: \"#E6E6E6\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: -4.992,\n y: 308.036,\n width: 62.547,\n height: 48.128,\n rx: 24.064,\n transform: \"rotate(-30 -4.992 308.036)\",\n fill: \"#E6E6E6\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 383.754,\n y: 28.025,\n width: 48.182,\n height: 48.182,\n rx: 24.091,\n transform: \"rotate(-30 383.754 28.025)\",\n fill: \"#E6E6E6\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 60.027,\n y: 214.93,\n width: 331.065,\n height: 48.182,\n rx: 24.091,\n transform: \"rotate(-30 60.027 214.93)\",\n fill: \"#D0D0D0\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 258.691,\n y: 322.77,\n width: 212.933,\n height: 48.182,\n rx: 24.091,\n transform: \"rotate(-30 258.691 322.77)\",\n fill: \"#D0D0D0\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 101.73,\n y: 302.128,\n width: 390.877,\n height: 48.182,\n rx: 24.091,\n transform: \"rotate(-30 101.73 302.128)\",\n fill: \"#D0D0D0\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 491.496,\n cy: 330.072,\n r: 12.5,\n stroke: \"#E6E6E6\",\n strokeWidth: 6.017\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 72.565,\n cy: 127.995,\n r: 9.291,\n stroke: \"#E6E6E6\",\n strokeWidth: 6.017\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 101.386,\n cy: 411.47,\n r: 14.249,\n stroke: \"#E6E6E6\",\n strokeWidth: 6.017\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 312.461,\n y: 0.301,\n width: 29.946,\n height: 5.348,\n rx: 2.674,\n fill: \"#E6E6E6\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 410.695,\n y: 407.515,\n width: 22.46,\n height: 5.348,\n rx: 2.674,\n fill: \"#E6E6E6\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 424.602,\n y: 399.228,\n width: 22.46,\n height: 5.348,\n rx: 2.674,\n transform: \"rotate(90 424.602 399.228)\",\n fill: \"#E6E6E6\"\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.91,\n y: 251.789,\n width: 22.46,\n height: 5.348,\n rx: 2.674,\n fill: \"#E6E6E6\"\n })), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 14.816,\n y: 243.501,\n width: 22.46,\n height: 5.348,\n rx: 2.674,\n transform: \"rotate(90 14.816 243.501)\",\n fill: \"#E6E6E6\"\n })), _rect12 || (_rect12 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 190.839,\n y: 83.903,\n width: 273.394,\n height: 164.589,\n rx: 24.723,\n transform: \"rotate(20.324 190.839 83.903)\",\n fill: \"#ECECEC\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.207\n })), _rect13 || (_rect13 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 103.596,\n y: 180.446,\n width: 301.235,\n height: 181.635,\n rx: 24.723,\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.207\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M254.211 184.04h125.9c11.646 0 21.087 9.441 21.087 21.087v132.276c0 11.647-9.441 21.088-21.087 21.088h-125.9V184.04z\",\n fill: \"#ECECEC\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#AFAFAF\",\n d: \"M99.992 288.744h308.442v37.768H99.992z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNoCreditCard);\nexport default __webpack_public_path__ + \"static/media/no-credit-card.668a344f.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/no-credit-card.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgDelete(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.443 9.261h10.114v11.08c0 .345-.28.625-.625.625H8.068a.625.625 0 01-.625-.625V9.26zM6.08 9.148h12.841V6.534H6.081zM10.172 6.42h4.659V5.284c0-.69-.56-1.25-1.25-1.25h-2.16c-.69 0-1.25.56-1.25 1.25V6.42z\",\n stroke: \"#000\",\n strokeWidth: 1\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000\",\n d: \"M10 11.818h1.136v5.909H10zM13.863 11.818h1.136v5.909h-1.136z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDelete);\nexport default __webpack_public_path__ + \"static/media/delete.4ebdd8a6.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/delete.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 172,\n height: 61,\n fill: \"none\",\n viewBox: \"0 0 172 61\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeMiterlimit: 22.93,\n strokeWidth: 1.371,\n d: \"M156.114 44.295H20.846L1.956 59.246 12.558 8.342c.847-4.05 4.857-7.342 9-7.342h143.599c4.188 0 6.862 3.337 5.971 7.475l-5.926 28.345c-.847 4.138-4.901 7.475-9.089 7.475z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M28.509 13.193l-4.723 22.426h-3.92l4.678-22.426h-4.679l.758-3.515h13.321l-.757 3.515h-4.678zM36.084 9.633h11.183l-.757 3.515h-7.262l-1.56 7.387h6.861l-.757 3.56h-6.817l-1.648 7.964h7.44l-.757 3.515H30.648l5.436-25.941zM47.044 35.62h-3.476l.535-2.626 6.728-10.59-2.183-10.101.534-2.625h3.43l1.471 9.967h.312l5.658-9.967h3.431l-.534 2.625-6.416 10.1 2.317 10.59-.535 2.626H54.84l-1.515-10.59h-.312l-5.97 10.59zM72.708 13.193L68.03 35.619h-3.92l4.678-22.426h-4.679l.713-3.515h13.322l-.713 3.515h-4.723zM76.629 39.4l2.138-10.1c.669-3.16 2.184-4.806 4.5-5.83L92.447 20l1.871-9.033-.846-1.024h-4.723L87.5 10.967l-1.203 5.695h-4.99l1.07-5.206c.757-3.56 2.628-4.85 4.856-5.606h9.4c1.917.756 3.253 2.046 2.496 5.606l-1.47 7.075c-.669 3.115-2.005 4.85-4.456 5.785l-9.223 3.426-1.47 7.12h11.584l-.89 4.538H76.628zM104.387 24.94l-2.228 10.679h-3.92l5.435-25.986h10.114c1.47.578 2.495 1.602 1.916 4.316l-1.426 6.808c-.579 2.759-1.96 3.56-3.698 4.138l-6.193.045zm2.539-12.059l-1.826 8.855h4.277l.936-.757 1.514-7.297-.623-.8h-4.278zM122.296 29.612h-5.347l-2.406 6.007h-3.52l.535-2.625 10.159-23.316h4.099l.445 23.316-.535 2.625h-3.519l.089-6.007zm-3.877-3.515h4.01l.179-9.7h-.312l-3.877 9.7zM127.777 35.619l5.436-25.986h10.114c1.47.578 2.495 1.602 1.96 4.316l-1.203 5.651c-.579 2.759-1.96 3.515-3.698 4.094l-.623.133 2.673 9.256-.49 2.447h-3.476l-2.584-11.124h-1.871l-2.317 11.124-3.921.089zm8.644-22.738l-1.738 8.41h4.278l.98-.801 1.425-6.808-.623-.8h-4.322zM149.831 24.272L147.47 35.62h-3.921l5.435-25.986h3.921l-2.361 11.08h.579l8.555-11.08h3.163l-.446 2.18-8.287 10.546 3.876 10.59-.579 2.67h-2.985l-4.054-11.347h-.535zM167.653 43.228c0 .934-.713 1.735-1.693 1.735-.935 0-1.737-.712-1.737-1.69 0-.935.713-1.736 1.693-1.736h.044c.891 0 1.693.757 1.693 1.691zm-3.029 0c0 .712.534 1.29 1.247 1.335h.045c.757 0 1.336-.579 1.336-1.335 0-.757-.579-1.335-1.336-1.335-.669 0-1.248.578-1.292 1.335zm1.069.89h-.401v-1.691c.223-.044.446-.044.624-.044.223 0 .401.044.579.133.089.089.178.223.178.356 0 .178-.178.356-.356.4a.568.568 0 01.312.4c0 .134.044.268.133.401h-.401l-.133-.4c-.045-.178-.134-.267-.357-.267h-.178v.712zm0-.934h.178c.223 0 .401-.09.401-.267 0-.178-.133-.267-.356-.267h-.223v.534z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.2193f6b4.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/logo.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgTerms(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 84,\n height: 85,\n fill: \"none\",\n viewBox: \"0 0 84 85\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 41.999,\n cy: 42.75,\n r: 40.75,\n stroke: \"#fff\",\n strokeWidth: 2.5\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 34,\n height: 44.5,\n x: 25,\n y: 20.5,\n stroke: \"#fff\",\n strokeWidth: 2.5,\n rx: 1.25\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeLinecap: \"round\",\n strokeWidth: 2.5,\n d: \"M32 31.625h20.124M32 40.5h20.124M32 49.5h20.124\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTerms);\nexport default __webpack_public_path__ + \"static/media/terms.bfdb8a46.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/terms.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgOk(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 336,\n height: 336,\n fill: \"none\",\n viewBox: \"0 0 336 336\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 168,\n cy: 168,\n r: 163,\n stroke: \"#fff\",\n strokeWidth: 10\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 10,\n d: \"M78.443 177.805l57.199 57.199L258.21 112.436\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgOk);\nexport default __webpack_public_path__ + \"static/media/ok.cee29a8a.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/ok.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _path3, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgQuestion(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 13a9 9 0 01-13.744 7.65L4.003 22l1.201-4.5A9 9 0 1122 13z\",\n stroke: \"#000\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.002 10a3 3 0 00-6 0\",\n stroke: \"#000\",\n strokeLinecap: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.002 10c0 1.795-1.343 3-3 3v2\",\n stroke: \"#000\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 13.002,\n cy: 18,\n r: 1,\n fill: \"#000\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgQuestion);\nexport default __webpack_public_path__ + \"static/media/question.5cc2f1d6.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/question.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgHamburger(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 62 58\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 62,\n height: 6,\n rx: 3,\n fill: \"#fff\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n y: 26,\n width: 62,\n height: 6,\n rx: 3,\n fill: \"#fff\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n y: 52,\n width: 62,\n height: 6,\n rx: 3,\n fill: \"#fff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHamburger);\nexport default __webpack_public_path__ + \"static/media/hamburger.53014b2e.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/hamburger.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _path, _circle, _circle2, _circle3, _rect3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _path2, _circle4, _path3, _path4, _path5, _path6, _circle5, _path7;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCars(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 183,\n height: 155,\n viewBox: \"0 0 183 155\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 7.646,\n y: 101.684,\n width: 19.873,\n height: 15.292,\n rx: 7.646,\n transform: \"rotate(-30 7.646 101.684)\",\n fill: \"#E6E6E6\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 131.16,\n y: 12.715,\n width: 15.309,\n height: 15.309,\n rx: 7.654,\n transform: \"rotate(-30 131.16 12.715)\",\n fill: \"#E6E6E6\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M34.93 68.277a7.654 7.654 0 107.655 13.257l4.323-2.496a8.48 8.48 0 01.114-.067l26.164-15.106a7.654 7.654 0 017.654 13.258L61.74 88.15l.048-.027 61.81-35.686.086-.05-1.226.708a7.654 7.654 0 01-10.456-2.802 7.654 7.654 0 012.801-10.456l5.754-3.322a7.654 7.654 0 00-7.789-13.178L34.93 68.277zm52.652 40.308a7.654 7.654 0 007.654 13.258l55.803-32.218a7.654 7.654 0 002.801-10.456 7.653 7.653 0 00-10.455-2.801l-55.803 32.217zm29.801-34.882l-.442.255c.075-.042.149-.082.225-.12a7.653 7.653 0 00-2.498 10.27 7.654 7.654 0 0010.143 2.973c-.099.063-.2.125-.303.184l-47.411 27.373-.071.041 10.344-5.972a7.655 7.655 0 00-7.655-13.258l-23.994 13.853a7.654 7.654 0 01-7.542-13.321l94.296-54.442a7.654 7.654 0 117.654 13.258l-6.409 3.7a9.606 9.606 0 00-.087.05l-26.164 15.105a4.334 4.334 0 00-.086.051z\",\n fill: \"#E6E6E6\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 165.39,\n cy: 108.685,\n r: 3.971,\n stroke: \"#E6E6E6\",\n strokeWidth: 1.912\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32.287,\n cy: 44.482,\n r: 2.952,\n stroke: \"#E6E6E6\",\n strokeWidth: 1.912\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 41.444,\n cy: 134.55,\n r: 4.527,\n stroke: \"#E6E6E6\",\n strokeWidth: 1.912\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 108.508,\n y: 3.906,\n width: 9.515,\n height: 1.699,\n rx: 0.85,\n fill: \"#E6E6E6\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 114.115,\n width: 9.515,\n height: 1.699,\n rx: 0.85,\n transform: \"rotate(90 114.115 0)\",\n fill: \"#E6E6E6\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 139.719,\n y: 133.289,\n width: 7.136,\n height: 1.699,\n rx: 0.85,\n fill: \"#E6E6E6\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 144.137,\n y: 130.656,\n width: 7.136,\n height: 1.699,\n rx: 0.85,\n transform: \"rotate(90 144.137 130.656)\",\n fill: \"#E6E6E6\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9.52,\n y: 83.813,\n width: 7.136,\n height: 1.699,\n rx: 0.85,\n fill: \"#E6E6E6\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 13.938,\n y: 81.18,\n width: 7.136,\n height: 1.699,\n rx: 0.85,\n transform: \"rotate(90 13.938 81.18)\",\n fill: \"#E6E6E6\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 36,\n y: 74,\n width: 110,\n height: 33,\n rx: 12.185,\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.656 45.168A12.185 12.185 0 0165.462 36h51.076a12.185 12.185 0 0111.806 9.168L135.712 74H46.288l7.368-28.832z\",\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 57,\n cy: 91,\n r: 7,\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91 75h43c6.075 0 11 4.925 11 11v9c0 6.075-4.925 11-11 11H91V75z\",\n fill: \"#ECECEC\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48 107h18v12.407A5.593 5.593 0 0160.407 125h-6.814A5.593 5.593 0 0148 119.407V107z\",\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116 107h18v12.407a5.593 5.593 0 01-5.593 5.593h-6.814a5.593 5.593 0 01-5.593-5.593V107z\",\n fill: \"#ECECEC\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54 45h74\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2\n })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 125,\n cy: 91,\n r: 7,\n fill: \"#ECECEC\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91 46h36.5l7 27H91V46zM91 37h26.067c4.457 0 8.434 2.802 9.933 7H91v-7z\",\n fill: \"#ECECEC\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCars);\nexport default __webpack_public_path__ + \"static/media/cars.ee1c2a0c.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/cars.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _path, _circle, _circle2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPlate(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 34,\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 1.625,\n y: 6.125,\n width: 21.75,\n height: 12.75,\n rx: 1.125,\n stroke: \"#909090\",\n strokeWidth: 1.25\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.92 15.031h.024l.007-.022.338-1.062h1.707l.344 1.063.007.021H10.094l-.014-.041-1.582-4.683-.008-.021h-.685l-.007.02L6.22 14.99l-.013.041H6.92zm6.361-.336h0c.242-.23.36-.554.36-.966 0-.298-.057-.55-.174-.752a1.01 1.01 0 00-.427-.418c.125-.1.225-.232.298-.396.083-.183.123-.393.123-.629 0-.385-.114-.69-.345-.912-.23-.226-.559-.336-.978-.336H10.465v4.745h1.773c.452 0 .802-.11 1.043-.336zm-.713-3.505h0c.115.1.175.25.175.458 0 .203-.06.354-.175.459-.112.1-.277.152-.5.152h-.89V11.03h.89c.222 0 .387.055.5.16zm2.73-.873v-.031h-1.454v.791h.74v3.954H15.297V10.317zm3.233 3.947v-.031h-1.619l.896-1.14c.229-.287.384-.544.466-.772.081-.226.122-.469.122-.726 0-.42-.115-.757-.349-1.005-.234-.248-.546-.371-.934-.371-.292 0-.558.07-.797.211-.235.137-.423.33-.562.58l-.011.021.016.017.456.468.028.03.02-.036c.186-.316.45-.473.795-.473.208 0 .36.057.463.164.103.109.157.267.157.48 0 .144-.028.29-.084.438h0a1.987 1.987 0 01-.31.514l-1.392 1.766-.007.008v.624H18.531v-.767zM7.53 13.203l.613-1.914.618 1.914H7.53zm5.393.439c0 .22-.061.379-.178.483-.118.106-.299.161-.547.161h-1.02v-1.289h1.02c.248 0 .428.056.546.161.118.105.18.264.18.484z\",\n fill: \"#919191\",\n stroke: \"#909090\",\n strokeWidth: 0.063\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 4.5,\n cy: 12.25,\n r: 1,\n fill: \"#919191\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 20.5,\n cy: 12.25,\n r: 1,\n fill: \"#919191\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlate);\nexport default __webpack_public_path__ + \"static/media/plate.c662d295.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/plate.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _path, _circle, _circle2, _circle3, _rect3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _rect10, _path2, _circle4, _path3, _path4, _path5, _path6, _path7, _path8, _circle5;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParkedCars(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 682,\n height: 578,\n viewBox: \"0 0 682 578\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 28.512,\n y: 379.213,\n width: 74.112,\n height: 57.028,\n rx: 28.514,\n transform: \"rotate(-30 28.512 379.213)\",\n fill: \"#E6E6E6\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 489.144,\n y: 47.425,\n width: 57.091,\n height: 57.091,\n rx: 28.545,\n transform: \"rotate(-30 489.144 47.425)\",\n fill: \"#E6E6E6\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M130.268 254.619c-13.654 7.882-18.331 25.341-10.449 38.994 7.883 13.653 25.341 18.331 38.994 10.448l43.033-24.845-.28.164 74.186-42.831c13.653-7.883 31.111-3.205 38.994 10.448 7.821 13.547 3.277 30.84-10.132 38.808l185.249-106.953a29.221 29.221 0 001.709-1.067c-13.357 6.52-29.674 1.675-37.219-11.393-7.544-13.067-3.583-29.619 8.74-37.927-.598.292-1.191.607-1.776.945l-1.691.977c13.625-7.893 18.287-25.332 10.412-38.973-7.883-13.653-25.341-18.331-38.994-10.448L130.268 254.619zm433.014 79.617c13.653-7.883 18.331-25.341 10.449-38.994-7.883-13.653-25.341-18.331-38.994-10.448l-168.618 97.351c-13.653 7.883-18.331 25.341-10.448 38.994 7.883 13.653 25.341 18.331 38.994 10.448l168.617-97.351zM437.71 274.891l-1.281.739c.192-.105.385-.207.579-.307-12.818 8.161-17.044 25.054-9.372 38.342 7.649 13.249 24.316 18.046 37.772 11.115-.352.224-.711.442-1.076.652l-138.095 79.73c13.34-7.992 17.847-25.239 10.043-38.756-7.882-13.653-25.34-18.331-38.993-10.448l-89.555 51.704c-13.577 7.489-30.711 2.761-38.499-10.728-7.883-13.653-3.205-31.111 10.448-38.993l351.661-203.032c13.653-7.883 31.112-3.205 38.994 10.448 7.883 13.653 3.205 31.112-10.448 38.994l-23.852 13.771c-.126.07-.252.142-.377.214l-97.575 56.335c-.125.072-.25.146-.374.22z\",\n fill: \"#E6E6E6\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 616.804,\n cy: 405.324,\n r: 14.811,\n stroke: \"#E6E6E6\",\n strokeWidth: 7.129\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 96.62,\n cy: 126.454,\n r: 11.009,\n stroke: \"#E6E6E6\",\n strokeWidth: 7.129\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 154.559,\n cy: 501.775,\n r: 16.884,\n stroke: \"#E6E6E6\",\n strokeWidth: 7.129\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 404.664,\n y: 14.575,\n width: 35.484,\n height: 6.336,\n rx: 3.168,\n fill: \"#E6E6E6\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 425.568,\n width: 35.484,\n height: 6.336,\n rx: 3.168,\n transform: \"rotate(90 425.568 0)\",\n fill: \"#E6E6E6\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 521.059,\n y: 497.087,\n width: 26.613,\n height: 6.336,\n rx: 3.168,\n fill: \"#E6E6E6\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 537.535,\n y: 487.269,\n width: 26.613,\n height: 6.336,\n rx: 3.168,\n transform: \"rotate(90 537.535 487.269)\",\n fill: \"#E6E6E6\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 35.502,\n y: 312.565,\n width: 26.613,\n height: 6.336,\n rx: 3.168,\n fill: \"#E6E6E6\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 51.978,\n y: 302.747,\n width: 26.613,\n height: 6.336,\n rx: 3.168,\n transform: \"rotate(90 51.978 302.747)\",\n fill: \"#E6E6E6\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 111.88,\n y: 156.633,\n width: 104.422,\n height: 123.068,\n rx: 22.376,\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 223.76,\n y: 305.806,\n width: 309.536,\n height: 96.963,\n rx: 33.875,\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.61 230.097c4.012-14.748 17.403-24.983 32.687-24.983h148.461c15.284 0 28.675 10.235 32.687 24.983l20.595 75.709H251.015l20.595-75.709z\",\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 279.699,\n cy: 354.288,\n r: 18.647,\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249.865 402.769h48.482v33.409c0 8.325-6.749 15.073-15.073 15.073h-18.336c-8.325 0-15.073-6.748-15.073-15.073v-33.409z\",\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M458.708 402.769h48.481v33.409c0 8.325-6.748 15.073-15.072 15.073h-18.336c-8.325 0-15.073-6.748-15.073-15.073v-33.409z\",\n fill: \"#ECECEC\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M272.241 227.49h212.573M96.962 451.251h451.25M164.09 283.431v167.82\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.09 160.362h29.835c10.298 0 18.646 8.349 18.646 18.647v78.316c0 10.299-8.348 18.647-18.646 18.647H164.09v-115.61z\",\n fill: \"#ECECEC\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M156.502 226.135h6.267c10.384 0 18.802-7.975 18.802-17.813 0-9.837-8.418-17.812-18.802-17.812h-9.401v56.406\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M376.663 309.536h123.068c16.478 0 29.835 13.358 29.835 29.835v29.835c0 16.477-13.357 29.834-29.835 29.834H376.663v-89.504zM376.663 231.22h105.195l19.314 70.857H376.663V231.22zM376.663 208.844h76.351a30.477 30.477 0 0126.206 14.917H376.663v-14.917z\",\n fill: \"#ECECEC\"\n })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 477.355,\n cy: 354.288,\n r: 18.647,\n stroke: \"#AFAFAF\",\n strokeWidth: 7.459\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParkedCars);\nexport default __webpack_public_path__ + \"static/media/parked-cars.5f46c6a7.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/parked-cars.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPin(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 28,\n viewBox: \"0 0 34 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.923 22.463c0 .285-.182.734-.93 1.296-.732.55-1.854 1.089-3.33 1.558-2.94.936-7.063 1.53-11.663 1.53-4.6 0-8.723-.594-11.663-1.53-1.476-.47-2.597-1.007-3.329-1.558-.748-.562-.93-1.011-.93-1.296 0-.286.182-.734.93-1.297.732-.55 1.853-1.088 3.329-1.558 2.94-.935 7.064-1.53 11.663-1.53 4.6 0 8.723.595 11.663 1.53 1.476.47 2.598 1.008 3.33 1.558.748.563.93 1.011.93 1.297z\",\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.846 8.11c0 1.935-.965 4.592-2.458 7.268-1.293 2.316-2.915 4.526-4.446 6.13-1.668-1.588-3.286-3.793-4.534-6.116-1.428-2.656-2.298-5.325-2.298-7.282 0-3.852 3.086-6.956 6.868-6.956 3.783 0 6.868 3.104 6.868 6.956z\",\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 17,\n cy: 8,\n r: 2,\n stroke: \"#32A3F5\",\n strokeWidth: 2\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPin);\nexport default __webpack_public_path__ + \"static/media/pin.20345779.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/pin.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCar(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 18.747a2.25 2.25 0 104.501.005A2.25 2.25 0 0021 18.747v0zM4.5 18.747a2.25 2.25 0 104.5.006 2.25 2.25 0 00-4.5-.006v0zM9 19.5h12\",\n stroke: \"#000\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.125 19.5h.366c.4 0 .784-.154 1.067-.428.283-.274.442-.645.442-1.032v-2.337a1.429 1.429 0 00-.323-.924 1.516 1.516 0 00-.852-.521l-3.521-.745a1.512 1.512 0 01-.695-.346l-3.481-3.037a1.556 1.556 0 00-1.006-.38H8.569a1.548 1.548 0 00-.771.202 1.483 1.483 0 00-.557.555L5.822 12.98a1.51 1.51 0 01-.754.645l-1.127.443a1.5 1.5 0 00-.685.54 1.427 1.427 0 00-.256.818v2.604c0 .387.159.759.442 1.032.283.274.667.428 1.067.428h.366\",\n stroke: \"#000\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCar);\nexport default __webpack_public_path__ + \"static/media/car.086a90ab.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/car.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _rect;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParking(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.125 16.382H14.5c1.933 0 3.5-1.485 3.5-3.316 0-1.832-1.567-3.316-3.5-3.316h-1.75v10.5\",\n stroke: \"#000\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.75,\n y: 5,\n width: 18.5,\n height: 20,\n rx: 3.5,\n stroke: \"#000\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParking);\nexport default __webpack_public_path__ + \"static/media/parking.f1b01b7b.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/parking.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _mask, _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMail(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 84,\n height: 84,\n viewBox: \"0 0 84 84\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 42,\n cy: 42,\n r: 40.75,\n stroke: \"#fff\",\n strokeWidth: 2.5\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"prefix__a\",\n fill: \"#fff\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 16,\n y: 25,\n width: 52.077,\n height: 33.85,\n rx: 1.75\n }))), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 16,\n y: 25,\n width: 52.077,\n height: 33.85,\n rx: 1.75,\n stroke: \"#fff\",\n strokeWidth: 5,\n mask: \"url(#prefix__a)\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.395 26.395l24.643 15.53 24.644-15.53\",\n stroke: \"#fff\",\n strokeWidth: 2.5\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMail);\nexport default __webpack_public_path__ + \"static/media/mail.a889bb1d.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/mail.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _circle, _rect, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgResetPassword(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 336,\n height: 336,\n viewBox: \"0 0 336 336\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127 195.4l26.091 26.6L209 165\",\n stroke: \"#fff\",\n strokeWidth: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 168,\n cy: 168,\n r: 163,\n stroke: \"#fff\",\n strokeWidth: 10\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 89.478,\n y: 137.098,\n width: 157.041,\n height: 113.904,\n rx: 5,\n stroke: \"#fff\",\n strokeWidth: 10\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.014 110.986C117.014 82.827 139.841 60 168 60c28.159 0 50.986 22.827 50.986 50.986v25.288H117.014v-25.288z\",\n stroke: \"#fff\",\n strokeWidth: 10\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgResetPassword);\nexport default __webpack_public_path__ + \"static/media/reset-password.eae56022.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/reset-password.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuMap(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 27,\n viewBox: \"0 0 24 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.98 12.488v13.8l6.68-1.34V11.15L.98 12.49zm7.68-1.337V24.95l6.574 1.336V12.487L8.66 11.151zm7.574 1.305v13.779l6.626-1.894V10.56l-6.626 1.895z\",\n stroke: \"#000\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.385 7.756c0 1.769-.872 4.133-2.172 6.462-1.2 2.15-2.727 4.2-4.149 5.63-1.57-1.42-3.095-3.47-4.253-5.623-1.247-2.32-2.03-4.69-2.03-6.469 0-3.527 2.827-6.377 6.302-6.377 3.475 0 6.302 2.85 6.302 6.377z\",\n fill: \"#fff\",\n stroke: \"#000\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12.083,\n cy: 7.679,\n r: 2.015,\n fill: \"#000\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuMap);\nexport default __webpack_public_path__ + \"static/media/menu-map.d04c0912.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/menu-map.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgUser(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 5.529,\n r: 5.029,\n stroke: \"#000\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.474 16.367c1.854 1.777 2.943 4.144 3.072 6.633H1.454c.13-2.49 1.218-4.856 3.072-6.633 1.98-1.896 4.667-2.965 7.474-2.965 2.807 0 5.495 1.07 7.474 2.965z\",\n stroke: \"#000\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUser);\nexport default __webpack_public_path__ + \"static/media/user.de64feb3.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/user.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _circle3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _path2, _rect10, _path3, _path4, _path5, _rect11;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgUnlock(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 213,\n height: 176,\n viewBox: \"0 0 213 176\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 36.295,\n y: 159.609,\n width: 48.554,\n height: 18.148,\n rx: 9.074,\n transform: \"rotate(-30 36.295 159.609)\",\n fill: \"#E7E7E7\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 11.855,\n y: 110.832,\n width: 24.17,\n height: 18.127,\n rx: 9.064,\n transform: \"rotate(-30 11.855 110.832)\",\n fill: \"#E7E7E7\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 151.854,\n y: 9.074,\n width: 18.148,\n height: 18.148,\n rx: 9.074,\n transform: \"rotate(-30 151.854 9.074)\",\n fill: \"#E7E7E7\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M46.162 70.096a9.074 9.074 0 008.948 15.787l28.018-16.176a9.074 9.074 0 019.133 15.682l50.628-29.23.07-.041-1.422.82a9.074 9.074 0 11-9.073-15.715l6.815-3.935a9.074 9.074 0 00-9.228-15.625l-83.89 48.433zm52.843 53.31a9.074 9.074 0 009.074 15.717l67.34-38.879a9.074 9.074 0 003.321-12.395 9.074 9.074 0 00-12.395-3.322l-67.34 38.879zm36.517-42.038l-.522.302c.088-.05.176-.097.264-.143a9.074 9.074 0 009.063 15.7 8.789 8.789 0 01-.359.22l-56.204 32.448a2.36 2.36 0 01-.07.04l12.248-7.071a9.073 9.073 0 003.321-12.395 9.073 9.073 0 00-12.395-3.321L62.43 123.566a9.074 9.074 0 01-8.946-15.788L165.267 43.24a9.074 9.074 0 019.074 15.716l-7.599 4.388-.102.058-31.017 17.907-.101.06z\",\n fill: \"#E7E7E7\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 203.433,\n cy: 106.954,\n r: 4.708,\n stroke: \"#D0D0D0\",\n strokeWidth: 2.266\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 34.644,\n cy: 46.73,\n r: 3.499,\n stroke: \"#D0D0D0\",\n strokeWidth: 2.266\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 100.105,\n cy: 161.535,\n r: 3.499,\n stroke: \"#D0D0D0\",\n strokeWidth: 2.266\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 129.109,\n y: 4.633,\n width: 11.279,\n height: 2.014,\n rx: 1.007,\n fill: \"#C4C4C4\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 135.756,\n width: 11.279,\n height: 2.014,\n rx: 1.007,\n transform: \"rotate(90 135.756 0)\",\n fill: \"#C4C4C4\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 168.184,\n y: 134.242,\n width: 8.459,\n height: 2.014,\n rx: 1.007,\n fill: \"#C4C4C4\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 173.422,\n y: 131.121,\n width: 8.459,\n height: 2.014,\n rx: 1.007,\n transform: \"rotate(90 173.422 131.121)\",\n fill: \"#C4C4C4\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 7.656,\n y: 93.356,\n width: 8.459,\n height: 2.014,\n rx: 1.007,\n fill: \"#C4C4C4\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 12.895,\n y: 90.234,\n width: 8.459,\n height: 2.014,\n rx: 1.007,\n transform: \"rotate(90 12.895 90.234)\",\n fill: \"#C4C4C4\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.541 46.675v19.35l7.21.19V56.35c-.38-11.066 4.059-32.972 24.851-32.061 25.991 1.138 25.422 23.714 25.612 26.56.189 2.845 7.019 5.122 7.588-1.708s-6.071-31.302-33.2-32.061c-21.703-.607-30.417 19.477-32.061 29.595z\",\n fill: \"#fff\"\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 54.391,\n y: 66.986,\n width: 99.708,\n height: 66.103,\n rx: 9.475,\n fill: \"#fff\",\n stroke: \"#BEBEBE\",\n strokeWidth: 2.707\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.391 49.631c0-13.888-11.259-25.147-25.147-25.147-13.888 0-25.146 11.259-25.146 25.147v16.371\",\n stroke: \"#BEBEBE\",\n strokeWidth: 2.707\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.705 49.626c0-17.928-14.533-32.462-32.462-32.462-17.928 0-32.462 14.534-32.462 32.462V66M129.392 49.631a3.657 3.657 0 107.315 0\",\n stroke: \"#BEBEBE\",\n strokeWidth: 2.707\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.793 68.34h39.865a8.1 8.1 0 018.1 8.1v47.183a8.1 8.1 0 01-8.1 8.1h-39.865V68.34z\",\n fill: \"#ECECEC\"\n })), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 99.672,\n y: 88.262,\n width: 9.144,\n height: 23.775,\n rx: 4.572,\n fill: \"#BEBEBE\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUnlock);\nexport default __webpack_public_path__ + \"static/media/unlock.bd7d67a4.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/unlock.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _circle, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLabel(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 100 100\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.08 19.992a2.496 2.496 0 011.766-.732h26.4a2.5 2.5 0 012.498 2.502v26.44c0 .663-.263 1.299-.732 1.768l-40.11 40.17a2.495 2.495 0 01-3.532 0L9.97 63.7a2.505 2.505 0 010-3.538l40.11-40.17z\",\n stroke: \"#000\",\n strokeWidth: 5\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n r: 6.767,\n transform: \"rotate(45 -19.602 91.885)\",\n stroke: \"#000\",\n strokeWidth: 5\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.87 52.844l32.824 32.824\",\n stroke: \"#000\",\n strokeWidth: 5\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLabel);\nexport default __webpack_public_path__ + \"static/media/label.b06ebf70.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/label.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\nimport styled from 'styled-components'\r\nimport { Typography } from '@mui/material'\r\n\r\nconst StyledSpotNumberIcon = styled(Typography)`\r\n position: absolute;\r\n width: 100%;\r\n height: auto;\r\n top: 50%;\r\n left: 0;\r\n font-size: 48px;\r\n transform: translateY(-45%);\r\n`\r\ninterface SpotNumberIconProps {\r\n spotNumber: string\r\n}\r\nexport const SpotNumberIcon: React.FC = props => {\r\n return (\r\n
\r\n \r\n \r\n {props.spotNumber}\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SpotNumberIcon\r\n","var _circle, _path, _circle2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgInfo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 110 110\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 55,\n cy: 55,\n r: 37.5,\n stroke: \"#fff\",\n strokeWidth: 5\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 33v29\",\n stroke: \"#fff\",\n strokeWidth: 5,\n strokeLinecap: \"round\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 55,\n cy: 73,\n r: 4,\n fill: \"#fff\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfo);\nexport default __webpack_public_path__ + \"static/media/info.5d835666.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/info.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _path, _circle, _path2, _circle2, _rect3, _rect4, _rect5, _rect6, _rect7, _rect8, _path3, _path4, _path5, _path6;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgValidator(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 671,\n height: 568,\n viewBox: \"0 0 671 568\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 28.706,\n y: 372.843,\n width: 72.867,\n height: 56.069,\n rx: 28.035,\n transform: \"rotate(-30 28.706 372.843)\",\n fill: \"#E6E6E6\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 481.589,\n y: 46.625,\n width: 56.131,\n height: 56.131,\n rx: 28.066,\n transform: \"rotate(-30 481.589 46.625)\",\n fill: \"#E6E6E6\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M203.695 207.074c-13.424 7.75-18.023 24.915-10.273 38.338 7.636 13.226 24.411 17.886 37.743 10.607l40.611-23.446c13.423-7.75 30.588-3.151 38.338 10.272 7.75 13.424 3.151 30.589-10.273 38.339l-73.088 42.198c.158-.088.316-.177.474-.268l255.075-147.268c.161-.093.321-.187.48-.283l-13.468 7.776c-13.424 7.75-30.589 3.151-38.339-10.273s-3.151-30.588 10.273-38.338l11.88-6.86c12.963-7.908 17.311-24.761 9.677-37.984-7.75-13.424-24.915-18.023-38.338-10.273L203.695 207.074zm137.134 180.085c-13.423 7.751-18.023 24.915-10.272 38.339 7.75 13.423 24.914 18.023 38.338 10.273l156.48-90.344c13.424-7.751 18.023-24.915 10.273-38.339-7.75-13.423-24.915-18.023-38.338-10.273l-156.481 90.344zm-57.825 33.376l.347-.197L493.07 299.256c.129-.074.257-.149.384-.225l-5.206 3.005c-13.423 7.75-30.588 3.151-38.338-10.272-7.75-13.424-3.151-30.589 10.273-38.339l67.134-38.76c.175-.101.351-.2.528-.297l23.298-13.451c13.423-7.75 18.022-24.915 10.272-38.339-7.75-13.423-24.914-18.022-38.338-10.272L177.326 351.925c-13.424 7.75-18.023 24.915-10.273 38.338 7.655 13.258 24.492 17.908 37.839 10.555l88.063-50.843c13.424-7.75 30.589-3.151 38.339 10.272 7.75 13.424 3.151 30.589-10.273 38.339l-38.017 21.949z\",\n fill: \"#E6E6E6\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 607.099,\n cy: 398.512,\n r: 14.562,\n stroke: \"#E6E6E6\",\n strokeWidth: 7.009\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.488 124.329c0 5.978-4.846 10.824-10.824 10.824s-10.824-4.846-10.824-10.824 4.846-10.824 10.824-10.824 10.824 4.846 10.824 10.824z\",\n stroke: \"#E6E6E6\",\n strokeWidth: 7.009\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 152.63,\n cy: 493.341,\n r: 16.6,\n stroke: \"#E6E6E6\",\n strokeWidth: 7.009\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 398.53,\n y: 14.33,\n width: 34.887,\n height: 6.23,\n rx: 3.115,\n fill: \"#E6E6E6\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 419.091,\n width: 34.887,\n height: 6.23,\n rx: 3.115,\n transform: \"rotate(90 419.091 0)\",\n fill: \"#E6E6E6\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 512.97,\n y: 488.73,\n width: 26.166,\n height: 6.23,\n rx: 3.115,\n fill: \"#E6E6E6\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 529.169,\n y: 479.077,\n width: 26.166,\n height: 6.23,\n rx: 3.115,\n transform: \"rotate(90 529.169 479.077)\",\n fill: \"#E6E6E6\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 121.668,\n y: 262.654,\n width: 26.166,\n height: 6.23,\n rx: 3.115,\n fill: \"#E6E6E6\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 137.867,\n y: 253,\n width: 26.166,\n height: 6.23,\n rx: 3.115,\n transform: \"rotate(90 137.867 253)\",\n fill: \"#E6E6E6\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M461.095 201.676c-12.957 10.376-31.922 9.559-43.933-2.451-12.01-12.011-12.827-30.976-2.451-43.933l-41.625-41.625-207.418 207.418 41.625 41.625c12.957-10.38 31.925-9.564 43.937 2.447 12.012 12.012 12.828 30.98 2.448 43.937l41.626 41.627 207.418-207.418-41.627-41.627z\",\n fill: \"#fff\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M461.095 201.677c-12.957 10.377-31.923 9.561-43.934-2.45s-12.828-30.977-2.45-43.934l-41.626-41.626-38.957 38.519.001 172.333v64.167l-.002 23.833 168.594-169.216-41.626-41.626z\",\n fill: \"#ECECEC\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M253.635 409.052l41.669 41.669 207.418-207.418-41.669-41.669M207.337 362.753l-41.669-41.668 207.418-207.418 41.669 41.668\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.333\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M463.834 199.226c-12.888 12.887-33.782 12.887-46.669 0-12.888-12.887-12.888-33.782 0-46.669M204.558 365.161c12.887-12.887 33.781-12.887 46.669 0 12.887 12.888 12.887 33.782 0 46.669M308.268 178.485l23.334 23.335M347.162 217.375l18.921 18.922M383.456 253.673l18.921 18.922M438.219 308.44l-23.652-23.651\",\n stroke: \"#AFAFAF\",\n strokeWidth: 7.333\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgValidator);\nexport default __webpack_public_path__ + \"static/media/validator.71ac74da.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/validator.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _circle3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _path2, _path3, _rect10, _circle4, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgNoFound(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 151,\n height: 124,\n viewBox: \"0 0 151 124\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 25.605,\n y: 112.598,\n width: 34.252,\n height: 12.802,\n rx: 6.401,\n transform: \"rotate(-30 25.605 112.598)\",\n fill: \"#E6E6E6\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 8.363,\n y: 78.188,\n width: 17.051,\n height: 12.788,\n rx: 6.394,\n transform: \"rotate(-30 8.363 78.188)\",\n fill: \"#E6E6E6\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 107.126,\n y: 6.402,\n width: 12.802,\n height: 12.802,\n rx: 6.401,\n transform: \"rotate(-30 107.126 6.402)\",\n fill: \"#E6E6E6\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.564 49.45a6.401 6.401 0 106.401 11.086l3.72-2.147-.027.016 3.904-2.254a6.401 6.401 0 016.453 11.056l47.787-27.59c.502-.29.95-.637 1.341-1.03a6.404 6.404 0 01-6.179-10.703 6.407 6.407 0 00-1.538.632l2.861-1.652.018-.01.858-.496a6.401 6.401 0 00-6.419-11.076l-59.18 34.167zm10.562 23.467l.038-.022 9.799-5.657.038-.022 63.587-36.712a6.401 6.401 0 016.401 11.087L95.195 57.638c.076-.043.152-.085.23-.125a6.401 6.401 0 006.388 11.078 6.703 6.703 0 01-.251.153L70.563 86.642a6.401 6.401 0 00-6.46-11.053l-8.649 4.993.025-.014-11.347 6.551a6.401 6.401 0 01-6.401-11.087l5.395-3.115zm26.666 14.17a6.401 6.401 0 006.452 11.057l47.506-27.427a6.402 6.402 0 00-6.357-11.112l-15.316 8.842-.045.026-31.477 18.173-.05.03-.713.411z\",\n fill: \"#E6E6E6\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 143.509,\n cy: 75.449,\n r: 2.818,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.605\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 24.439,\n cy: 32.963,\n r: 1.965,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.605\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 70.619,\n cy: 113.956,\n r: 1.965,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.605\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 91.079,\n y: 3.27,\n width: 7.957,\n height: 1.421,\n rx: 0.71,\n fill: \"#E6E6E6\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 95.768,\n width: 7.957,\n height: 1.421,\n rx: 0.71,\n transform: \"rotate(90 95.768 0)\",\n fill: \"#E6E6E6\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 118.646,\n y: 94.703,\n width: 5.968,\n height: 1.421,\n rx: 0.71,\n fill: \"#E6E6E6\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.34,\n y: 92.5,\n width: 5.968,\n height: 1.421,\n rx: 0.71,\n transform: \"rotate(90 122.34 92.5)\",\n fill: \"#E6E6E6\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.399,\n y: 65.859,\n width: 5.968,\n height: 1.421,\n rx: 0.71,\n fill: \"#E6E6E6\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9.094,\n y: 63.656,\n width: 5.968,\n height: 1.421,\n rx: 0.71,\n transform: \"rotate(90 9.094 63.656)\",\n fill: \"#E6E6E6\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.252 37.273c-10.076 10.103-10.076 26.482 0 36.584l13.397 13.434a6.848 6.848 0 009.702 0l13.397-13.433c10.076-10.103 10.076-26.482 0-36.585-10.078-10.104-26.418-10.104-36.496 0zm18.214 8.952c5.14 0 9.311 4.179 9.311 9.34 0 5.162-4.172 9.34-9.311 9.34-5.14 0-9.312-4.178-9.312-9.34 0-5.161 4.172-9.34 9.312-9.34z\",\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2.61\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72 87.978a5.533 5.533 0 004.427-1.609l13.397-13.433c9.568-9.594 9.568-25.148 0-34.74A24.394 24.394 0 0072 31.005V44.93c.154-.007.31-.01.466-.01 5.863 0 10.616 4.765 10.616 10.645 0 5.879-4.753 10.645-10.616 10.645-.156 0-.312-.004-.466-.01v21.777z\",\n fill: \"#ECECEC\"\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 93.92,\n y: 76.662,\n width: 28.61,\n height: 4.61,\n rx: 2.305,\n transform: \"rotate(45 93.92 76.662)\",\n fill: \"#ECECEC\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2.61\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 93.213,\n cy: 79.215,\n r: 13.695,\n transform: \"rotate(-45 93.213 79.215)\",\n fill: \"#fff\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2.61\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101 79a8 8 0 00-8-8\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2.61,\n strokeLinecap: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNoFound);\nexport default __webpack_public_path__ + \"static/media/no-found.1bb29ace.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/no-found.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _ellipse, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgHeadingGpsIndicator(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 53,\n height: 52,\n viewBox: \"0 0 53 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.754 0L10.822 19.63a11.313 11.313 0 006.893 20.661l34.922-1.673L39.754 0z\",\n fill: \"url(#prefix__paint0_linear)\"\n })), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 16.665,\n cy: 29.16,\n rx: 7.942,\n ry: 7.802,\n transform: \"rotate(71.55 16.665 29.16)\",\n fill: \"#fff\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"prefix__paint0_linear\",\n x1: 46.196,\n y1: 19.309,\n x2: 6.442,\n y2: 32.571,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#32A3F5\",\n stopOpacity: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#32A3F5\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHeadingGpsIndicator);\nexport default __webpack_public_path__ + \"static/media/heading-gps-indicator.831eeea4.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/heading-gps-indicator.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPinCar(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 55,\n height: 65,\n viewBox: \"0 0 55 65\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.975 47.553c-10.633-10.656-10.633-27.932 0-38.588 10.633-10.656 27.872-10.656 38.505 0 10.633 10.655 10.633 27.932 0 38.588L31.59 62.474a6.162 6.162 0 01-8.728 0L7.975 47.554z\",\n fill: \"#ED1C24\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.114 32.544a2.938 2.938 0 11-5.876.008 2.938 2.938 0 015.876-.008v0zM41.182 32.544a2.938 2.938 0 11-5.877.008 2.938 2.938 0 015.877-.008v0z\",\n stroke: \"#fff\",\n strokeWidth: 2\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.322 32.547H19.114\",\n stroke: \"#fff\",\n strokeWidth: 2.605\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.146 32.545h-.61a2.114 2.114 0 01-2.114-2.114v-3.383a2.114 2.114 0 011.646-2.093L17 23.877c.363-.078.699-.25.973-.5l4.876-4.398a2.139 2.139 0 011.41-.55h11.98a2.114 2.114 0 011.86 1.097l1.987 3.58c.237.421.61.75 1.057.933l1.579.641a2.114 2.114 0 011.317 1.966v3.77a2.114 2.114 0 01-2.114 2.115h-.775\",\n stroke: \"#fff\",\n strokeWidth: 2\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPinCar);\nexport default __webpack_public_path__ + \"static/media/pin-car.0ba990af.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/pin-car.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _circle3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgWarning(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 199,\n height: 164,\n viewBox: \"0 0 199 164\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 33.8848,\n y: 149.013,\n width: 45.3294,\n height: 16.9424,\n rx: 8.47122,\n transform: \"rotate(-30 33.8848 149.013)\",\n fill: \"#E6E6E6\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 11.0684,\n y: 103.474,\n width: 22.5649,\n height: 16.9237,\n rx: 8.46183,\n transform: \"rotate(-30 11.0684 103.474)\",\n fill: \"#E6E6E6\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 141.77,\n y: 8.47125,\n width: 16.9424,\n height: 16.9424,\n rx: 8.47122,\n transform: \"rotate(-30 141.77 8.47125)\",\n fill: \"#E6E6E6\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.0943 65.4416C39.0425 67.7809 37.6543 72.9618 39.9936 77.0135C42.328 81.0568 47.4921 82.4476 51.5401 80.1288L77.6068 65.0792C81.6585 62.7399 86.8394 64.1281 89.1787 68.1799C91.5179 72.2316 90.1297 77.4125 86.078 79.7518L64.975 91.9355C64.9808 91.9322 64.9865 91.9289 64.9923 91.9256L133.4 52.4307C133.408 52.4256 133.417 52.4205 133.426 52.4154L132.136 53.16C128.084 55.4993 122.904 54.111 120.564 50.0593C118.225 46.0076 119.613 40.8267 123.665 38.4874L129.917 34.878C133.943 32.5299 135.318 27.3659 132.985 23.325C130.645 19.2733 125.465 17.8851 121.413 20.2244L43.0943 65.4416ZM92.412 115.222C88.3736 117.566 86.9926 122.738 89.3285 126.784C91.6678 130.836 96.8487 132.224 100.9 129.884L163.769 93.5873C167.821 91.248 169.209 86.0671 166.87 82.0154C164.53 77.9636 159.35 76.5754 155.298 78.9147L134.424 90.9664C134.532 90.9033 134.639 90.8383 134.744 90.7712C130.747 92.8432 125.788 91.4214 123.514 87.483C121.241 83.5459 122.488 78.5425 126.278 76.1163C126.163 76.1759 126.049 76.2384 125.935 76.3038L84.8751 100.01C88.9204 97.705 94.0731 99.0977 96.4041 103.135C98.7434 107.187 97.3552 112.368 93.3034 114.707L81.8927 121.295C81.9068 121.287 81.9209 121.279 81.935 121.271L92.412 115.222ZM84.8545 100.022C84.8471 100.026 84.8396 100.03 84.8322 100.034L58.38 115.307C54.3316 117.628 49.1654 116.237 46.8304 112.193C44.4911 108.141 45.8794 102.961 49.9311 100.621L154.291 40.369C158.343 38.0297 163.524 39.418 165.863 43.4697C168.202 47.5214 166.814 52.7023 162.762 55.0416L155.607 59.1724C155.595 59.1793 155.583 59.1861 155.571 59.1931L126.615 75.9111C126.603 75.918 126.591 75.9249 126.579 75.9319L84.8545 100.022Z\",\n fill: \"#E6E6E6\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 189.922,\n cy: 99.8496,\n r: 4.15044,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.60547\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32.3425,\n cy: 43.6254,\n r: 3.0222,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.60547\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 93.4558,\n cy: 150.809,\n r: 3.0222,\n stroke: \"#E6E6E6\",\n strokeWidth: 2.60547\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 120.533,\n y: 4.32495,\n width: 10.5303,\n height: 1.88041,\n rx: 0.940203,\n fill: \"#E6E6E6\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 126.738,\n width: 10.5303,\n height: 1.88041,\n rx: 0.940203,\n transform: \"rotate(90 126.738 0)\",\n fill: \"#E6E6E6\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 157.014,\n y: 125.329,\n width: 7.89771,\n height: 1.88041,\n rx: 0.940203,\n fill: \"#E6E6E6\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 161.902,\n y: 122.414,\n width: 7.89771,\n height: 1.88041,\n rx: 0.940203,\n transform: \"rotate(90 161.902 122.414)\",\n fill: \"#E6E6E6\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 7.14648,\n y: 87.1569,\n width: 7.89771,\n height: 1.88041,\n rx: 0.940203,\n fill: \"#E6E6E6\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 12.0352,\n y: 84.2422,\n width: 7.89771,\n height: 1.88041,\n rx: 0.940203,\n transform: \"rotate(90 12.0352 84.2422)\",\n fill: \"#E6E6E6\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.391 40.7799C102.289 37.1265 97.0303 37.1265 94.9284 40.7799L52.0651 115.286C49.9686 118.93 52.5846 123.499 56.7962 123.499H142.523C146.735 123.499 149.351 118.93 147.254 115.286L104.391 40.7799Z\",\n fill: \"white\",\n stroke: \"#AFAFAF\",\n strokeWidth: 2.60547\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M99.5293 122.196H142.523C145.725 122.196 147.726 118.718 146.125 115.935L103.262 41.4296C102.436 39.9951 100.973 39.3001 99.5293 39.3446V122.196Z\",\n fill: \"#ECECEC\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M102.579 94.5758L96.2692 94.5758L96.2692 68.2633L102.579 68.2633L102.579 94.5758ZM99.399 98.9119C100.543 98.9119 101.502 99.2569 102.276 99.9467C103.05 100.669 103.438 101.556 103.438 102.608C103.438 103.659 103.05 104.529 102.276 105.219C101.502 105.942 100.543 106.303 99.399 106.303C98.2548 106.303 97.2957 105.958 96.5216 105.268C95.7476 104.611 95.3605 103.774 95.3605 102.755C95.3605 101.671 95.7476 100.752 96.5216 99.996C97.262 99.2733 98.2211 98.9119 99.399 98.9119Z\",\n fill: \"#AFAFAF\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgWarning);\nexport default __webpack_public_path__ + \"static/media/warning.4de95583.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/warning.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgClock(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 15,\n cy: 15,\n r: 10.5,\n stroke: \"#000\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 9v6.429L19 19\",\n stroke: \"#000\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgClock);\nexport default __webpack_public_path__ + \"static/media/clock.9deb39a0.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/clock.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _rect2, _rect3, _path, _circle, _circle2, _rect4, _rect5, _rect6, _rect7, _circle3, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSuccessTick(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 159,\n height: 61,\n viewBox: \"0 0 159 61\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 8.854,\n y: 48.273,\n width: 32.172,\n height: 12.025,\n rx: 6.012,\n fill: \"#E4F4FF\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 10.99,\n y: 12.188,\n width: 16.015,\n height: 12.011,\n rx: 6.006,\n fill: \"#E4F4FF\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 125.039,\n y: 0.176,\n width: 12.025,\n height: 12.025,\n rx: 6.012,\n fill: \"#E4F4FF\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.171.176a6.012 6.012 0 00-.126 12.023h21.47a6.012 6.012 0 010 12.025H48.216 103.202a6.013 6.013 0 01.06-12.024h5.204a6.012 6.012 0 005.902-6.012 6.012 6.012 0 00-6.012-6.012H44.171zm12.537 48.099a6.012 6.012 0 00.125 12.023h51.523a6.012 6.012 0 00.125-12.023H91.794c-.042 0-.084 0-.125-.002h-.318c.054 0 .108-.002.161-.005a6.013 6.013 0 01.004-12.012 6.438 6.438 0 00-.146-.005h.296l.128-.001h23.731l.127.001h5.764a6.013 6.013 0 100-12.024H35.889a6.012 6.012 0 00-.127 12.023h21.79a6.012 6.012 0 010 12.025h-.844z\",\n fill: \"#E4F4FF\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 155.083,\n cy: 18.101,\n r: 1.767,\n stroke: \"#E4F4FF\",\n strokeWidth: 2.605\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 3.07,\n cy: 37.597,\n r: 1.767,\n stroke: \"#E4F4FF\",\n strokeWidth: 2.605\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 137.105,\n y: 47.57,\n width: 7.474,\n height: 1.335,\n rx: 0.667,\n fill: \"#E4F4FF\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 141.51,\n y: 44.5,\n width: 7.474,\n height: 1.335,\n rx: 0.667,\n transform: \"rotate(90 141.51 44.5)\",\n fill: \"#E4F4FF\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 13.627,\n y: 2.07,\n width: 5.605,\n height: 1.335,\n rx: 0.667,\n fill: \"#E4F4FF\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 17.098,\n width: 5.605,\n height: 1.335,\n rx: 0.667,\n transform: \"rotate(90 17.098 0)\",\n fill: \"#E4F4FF\"\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 72.974,\n cy: 27.337,\n r: 24.351,\n fill: \"#fff\",\n stroke: \"#32A3F5\",\n strokeWidth: 2.605\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.299 28.833l8.734 8.734 18.716-18.715\",\n stroke: \"#32A3F5\",\n strokeWidth: 2.605,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSuccessTick);\nexport default __webpack_public_path__ + \"static/media/success-tick.682b29a6.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/success-tick.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgT2PLogoColor(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 314,\n height: 113,\n viewBox: \"0 0 314 113\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M284.368 80.2964H38.3623L3.99994 107.325L23.3323 15.3589C24.8799 7.99264 32.1963 2.02563 39.6749 2.02563H300.824C308.408 2.02563 313.277 8.0811 311.705 15.5439L300.937 66.7701C299.373 74.2409 291.968 80.2964 284.368 80.2964Z\",\n fill: \"white\",\n stroke: \"#231F20\",\n strokeWidth: 3.94872,\n strokeMiterlimit: 22.93\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.299 26.7103L43.7672 67.257H36.6209L45.1446 26.7103H36.6127L37.9496 20.3252H62.1759L60.8309 26.7103H52.299Z\",\n fill: \"#231F20\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.0926 20.3252H86.4054L85.0685 26.7103H71.894L69.0824 40.0758H81.5926L80.2476 46.5092H67.7455L64.7152 60.8718H78.2139L76.8688 67.257H56.1915L66.0926 20.3252Z\",\n fill: \"#231F20\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86.0763 67.257H79.7889L80.7854 62.5043L93.0201 43.3327L89.0499 25.0859L90.0546 20.3252H96.2691L98.9105 38.3146H99.502L109.776 20.3252H115.99L114.994 25.0859L103.351 43.3327L107.523 62.5043L106.527 67.257H100.239L97.444 48.0934H96.8525L86.0763 67.257Z\",\n fill: \"#231F20\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.708 26.7103L124.184 67.257H117.038L125.561 26.7103H117.03L118.366 20.3252H142.593L141.264 26.7103H132.708Z\",\n fill: \"#231F20\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M139.825 74.1305L143.698 55.8435C144.905 50.1097 147.66 47.1584 151.897 45.3088L168.621 39.0683L172.056 22.7194L170.533 20.8939H161.977L159.708 22.7516L157.545 33.029H148.47L150.455 23.596C151.808 17.1625 155.211 14.8304 159.262 13.4794H176.375C179.859 14.8304 182.273 17.1867 180.92 23.596L178.23 36.4065C177.047 42.0358 174.592 45.1721 170.128 46.8608L153.323 53.0611L150.617 65.9279H171.683L169.949 74.1305H139.825Z\",\n fill: \"#ED1C24\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M190.34 47.9648L186.289 67.2651H179.143L189.012 20.3332H207.404C210.102 21.3786 211.966 23.2041 210.929 28.1578L208.336 40.4779C207.291 45.4316 204.73 46.9113 201.595 47.9728L190.34 47.9648ZM194.926 26.1233L191.572 42.0943H199.383L201.125 40.7272L203.896 27.5627L202.737 26.1233H194.926Z\",\n fill: \"#231F20\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M222.91 56.3765H213.187L208.845 67.257H202.427L203.424 62.5043L221.889 20.3252H229.368L230.178 62.5043L229.182 67.257H222.764L222.91 56.3765ZM215.796 50.0476H223.089L223.396 32.5165H222.805L215.796 50.0476Z\",\n fill: \"#231F20\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M232.818 67.257L242.687 20.3252H261.079C263.778 21.3706 265.641 23.1961 264.604 28.1498L262.449 38.379C261.404 43.3327 258.859 44.7722 255.724 45.8096L254.614 46.075L259.475 62.826L258.543 67.257H252.191L247.492 47.1526H244.162L239.924 67.257H232.818ZM248.594 26.1233L245.401 41.3142H253.212L254.97 39.8828L257.563 27.5628L256.404 26.1233H248.594Z\",\n fill: \"#231F20\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M272.926 46.7263L268.607 67.257H261.461L271.321 20.3252H278.476L274.262 40.3412H275.324L290.913 20.3252H296.674L295.863 24.2335L280.785 43.3327L287.818 62.44L286.805 67.2651H281.376L273.914 46.7344L272.926 46.7263Z\",\n fill: \"#231F20\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M305.381 81.0232C305.395 81.6404 305.224 82.2478 304.889 82.7679C304.554 83.288 304.07 83.6971 303.5 83.943C302.929 84.1888 302.298 84.2602 301.686 84.1481C301.075 84.036 300.51 83.7454 300.066 83.3135C299.622 82.8816 299.317 82.328 299.191 81.7234C299.066 81.1188 299.124 80.4907 299.36 79.9194C299.596 79.3481 299.997 78.8596 300.514 78.5161C301.031 78.1727 301.639 77.99 302.261 77.9915C302.668 77.984 303.071 78.0569 303.449 78.2058C303.827 78.3547 304.171 78.5767 304.461 78.8588C304.751 79.141 304.982 79.4777 305.14 79.8493C305.298 80.2209 305.38 80.6199 305.381 81.0232ZM299.904 81.0232C299.894 81.3379 299.948 81.6514 300.063 81.9448C300.178 82.2382 300.352 82.5055 300.574 82.7308C300.795 82.956 301.06 83.1346 301.353 83.2557C301.646 83.3768 301.96 83.4381 302.278 83.4358C302.922 83.4358 303.541 83.1816 303.996 82.7292C304.452 82.2767 304.708 81.6631 304.708 81.0232C304.708 80.3834 304.452 79.7698 303.996 79.3173C303.541 78.8649 302.922 78.6107 302.278 78.6107C301.961 78.6095 301.647 78.6715 301.355 78.793C301.062 78.9146 300.798 79.0931 300.576 79.3182C300.355 79.5432 300.181 79.8101 300.066 80.103C299.95 80.3959 299.895 80.7088 299.904 81.0232ZM301.775 82.6316H301.07V79.5998C301.456 79.5339 301.846 79.5042 302.237 79.5114C302.605 79.4806 302.973 79.5561 303.299 79.7285C303.397 79.8075 303.475 79.9084 303.527 80.0229C303.579 80.1374 303.604 80.2624 303.598 80.3879C303.58 80.5556 303.509 80.7133 303.396 80.8389C303.283 80.9644 303.132 81.0514 302.966 81.0876C303.117 81.1496 303.248 81.2513 303.345 81.3816C303.442 81.512 303.502 81.6661 303.517 81.8274C303.552 82.0898 303.628 82.345 303.744 82.5833H302.983C302.869 82.3483 302.788 82.0996 302.74 81.8435C302.683 81.5138 302.505 81.361 302.108 81.361H301.775V82.6316ZM301.775 80.9187H302.108C302.496 80.9187 302.812 80.79 302.812 80.4764C302.812 80.1628 302.61 80.01 302.164 80.01C302.035 79.9956 301.905 79.9956 301.775 80.01V80.9187Z\",\n fill: \"#231F20\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgT2PLogoColor);\nexport default __webpack_public_path__ + \"static/media/t2p-logo-color.6386255d.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/t2p-logo-color.svg'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgValidationTicketPlaceholder(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 48,\n height: 48,\n rx: 2.084,\n fill: \"#fff\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.097 36.11l3.89 3.89L40 20.985l-3.89-3.889M12.777 31.789L8.887 27.9 27.9 8.887l3.89 3.889M36.543 17.528a3.667 3.667 0 11-5.186-5.185M17.53 36.543a3.667 3.667 0 10-5.186-5.186M21.85 14.937l2.16 2.16M25.308 18.394l1.728 1.728M28.765 21.85l1.728 1.728M33.95 27.036l-2.16-2.16\",\n stroke: \"#AFAFAF\",\n strokeWidth: 1.157\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgValidationTicketPlaceholder);\nexport default __webpack_public_path__ + \"static/media/validation-ticket-placeholder.5680ab26.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/validation-ticket-placeholder.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","var _path, _circle, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgUserTick(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 22.5l2.553 2.5L25 20\",\n stroke: \"#000\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 15,\n cy: 9,\n r: 4.5,\n stroke: \"#000\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.071 18.929A10 10 0 005 26h12\",\n stroke: \"#000\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUserTick);\nexport default __webpack_public_path__ + \"static/media/user-tick.ed57f9b8.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/user-tick.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _path, _circle2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgInformation(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 9.99992,\n cy: 10,\n r: 7.19231,\n stroke: \"#9D9D9D\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 8.46155V13.8462\",\n stroke: \"#9D9D9D\",\n strokeLinecap: \"round\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 9.9997,\n cy: 6.15387,\n r: 0.769231,\n fill: \"#9D9D9D\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInformation);\nexport default __webpack_public_path__ + \"static/media/information.b226728d.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/information.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _circle, _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLanguageIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 22,\n viewBox: \"0 0 22 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 11,\n cy: 11,\n r: 10,\n stroke: \"white\",\n strokeWidth: 1.5\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 1C8.52248 2.3354 6 6.30754 6 11C6 15.6925 8.52248 19.6646 12 21\",\n stroke: \"white\",\n strokeWidth: 1.5\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 21C13.4775 19.6646 16 15.6925 16 11C16 6.30754 13.4775 2.3354 10 0.999998\",\n stroke: \"white\",\n strokeWidth: 1.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 7H20\",\n stroke: \"white\",\n strokeWidth: 1.5\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 15H20\",\n stroke: \"white\",\n strokeWidth: 1.5\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLanguageIcon);\nexport default __webpack_public_path__ + \"static/media/language-icon.c4601581.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/language-icon.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgArrowDown(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 4,\n viewBox: \"0 0 8 4\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 4L0 0H8L4 4Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDown);\nexport default __webpack_public_path__ + \"static/media/arrow-down.54362677.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/arrow-down.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgFlagUsa(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 16,\n viewBox: \"0 0 22 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2963_320)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip1_2963_320)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n rx: 2,\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 0H9.42857V7.46667H0V0Z\",\n fill: \"#1A47B8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.42857 0V1.06667H22V0H9.42857ZM9.42857 2.13333V3.2H22V2.13333H9.42857ZM9.42857 4.26667V5.33333H22V4.26667H9.42857ZM9.42857 6.4V7.46667H22V6.4H9.42857ZM0 8.53333V9.6H22V8.53333H0ZM0 10.6667V11.7333H22V10.6667H0ZM0 12.8V13.8667H22V12.8H0ZM0 14.9333V16H22V14.9333H0Z\",\n fill: \"#F93939\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.04785 1.06665V2.13332H2.09547V1.06665H1.04785ZM3.14309 1.06665V2.13332H4.19071V1.06665H3.14309ZM5.23833 1.06665V2.13332H6.28595V1.06665H5.23833ZM7.33357 1.06665V2.13332H8.38119V1.06665H7.33357ZM6.28595 2.13332V3.19998H7.33357V2.13332H6.28595ZM4.19071 2.13332V3.19998H5.23833V2.13332H4.19071ZM2.09547 2.13332V3.19998H3.14309V2.13332H2.09547ZM1.04785 3.19998V4.26665H2.09547V3.19998H1.04785ZM3.14309 3.19998V4.26665H4.19071V3.19998H3.14309ZM5.23833 3.19998V4.26665H6.28595V3.19998H5.23833ZM7.33357 3.19998V4.26665H8.38119V3.19998H7.33357ZM1.04785 5.33332V6.39998H2.09547V5.33332H1.04785ZM3.14309 5.33332V6.39998H4.19071V5.33332H3.14309ZM5.23833 5.33332V6.39998H6.28595V5.33332H5.23833ZM7.33357 5.33332V6.39998H8.38119V5.33332H7.33357ZM6.28595 4.26665V5.33332H7.33357V4.26665H6.28595ZM4.19071 4.26665V5.33332H5.23833V4.26665H4.19071ZM2.09547 4.26665V5.33332H3.14309V4.26665H2.09547Z\",\n fill: \"white\"\n })), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.25,\n y: 0.25,\n width: 21.5,\n height: 15.5,\n rx: 1.75,\n stroke: \"#CECECE\",\n strokeWidth: 0.5\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2963_320\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n fill: \"white\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip1_2963_320\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n rx: 2,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFlagUsa);\nexport default __webpack_public_path__ + \"static/media/flag-usa.0699d829.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/flag-usa.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgFlagUk(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 16,\n viewBox: \"0 0 22 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2963_327)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip1_2963_327)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n rx: 2,\n fill: \"#1A47B8\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.34035 0H0V2.66667L19.6469 16L22 16V13.3333L2.34035 0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.780579 0L22 14.4378V16H21.2377L0 1.54726V0H0.780579Z\",\n fill: \"#F93939\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.9048 0H22V2.66667C22 2.66667 8.39122 11.5499 2.09524 16H0V13.3333L19.9048 0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 0H21.2895L0 14.4502V16H0.780579L22 1.55895V0Z\",\n fill: \"#F93939\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.00075 0H14.0176V4.93527H22V11.0615H14.0176V16H8.00075V11.0615H0V4.93527H8.00075V0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.26316 0H12.7368V6.15385H22V9.84615H12.7368V16H9.26316V9.84615H0V6.15385H9.26316V0Z\",\n fill: \"#F93939\"\n })), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.25,\n y: 0.25,\n width: 21.5,\n height: 15.5,\n rx: 1.75,\n stroke: \"#CECECE\",\n strokeWidth: 0.5\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2963_327\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n fill: \"white\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip1_2963_327\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n rx: 2,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFlagUk);\nexport default __webpack_public_path__ + \"static/media/flag-uk.c472ee46.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/flag-uk.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgFlagGermany(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 16,\n viewBox: \"0 0 22 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2963_339)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip1_2963_339)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n rx: 2,\n fill: \"#F93939\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 11H23V16H0V11Z\",\n fill: \"#FFDA2C\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 0H23V5H0V0Z\",\n fill: \"#151515\"\n })), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.25,\n y: 0.25,\n width: 21.5,\n height: 15.5,\n rx: 1.75,\n stroke: \"#CECECE\",\n strokeWidth: 0.5\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2963_339\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n fill: \"white\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip1_2963_339\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n rx: 2,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFlagGermany);\nexport default __webpack_public_path__ + \"static/media/flag-germany.f21934ec.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/flag-germany.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgFlagItaly(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 16,\n viewBox: \"0 0 22 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2963_343)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip1_2963_343)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n rx: 2,\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 0H7V16H0V0Z\",\n fill: \"#249F58\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15 0H22V16H15V0Z\",\n fill: \"#F93939\"\n })), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.25,\n y: 0.25,\n width: 21.5,\n height: 15.5,\n rx: 1.75,\n stroke: \"#CECECE\",\n strokeWidth: 0.5\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2963_343\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n fill: \"white\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip1_2963_343\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 16,\n rx: 2,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFlagItaly);\nexport default __webpack_public_path__ + \"static/media/flag-italy.08abb108.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react'\r\nimport { ReactComponent as DefaultLogo } from '../../assets/images/svg_icons/flag-italy.svg'\r\n\r\nfunction SvgComponent() {\r\n return \r\n}\r\n\r\nexport default SvgComponent\r\n","import { Typography, TypographyProps } from '@mui/material'\r\nimport React from 'react'\r\nimport styled, { css } from 'styled-components'\r\n\r\nexport interface AppTypographyProps extends TypographyProps {\r\n weight?: string | number\r\n paddingLeft?: number\r\n /** in rems */\r\n size?: number\r\n line?: number\r\n disabled?: boolean\r\n textCase?: 'uppercase' | 'lowercase' | 'inherit'\r\n component?: any //can't get proper type for Typography\r\n customColor?: string\r\n}\r\n\r\nexport const StyledTypographyWrapper = styled.div`\r\n > * {\r\n font-weight: ${_ => _.weight};\r\n text-transform: ${_ => _.textCase};\r\n padding-left: ${_ => _.theme.spacing(_.paddingLeft)};\r\n ${_ =>\r\n _.customColor &&\r\n css`\r\n color: ${_.customColor};\r\n `}\r\n ${_ =>\r\n _.disabled &&\r\n css`\r\n color: ${_.theme.palette.text.disabled};\r\n `}\r\n ${_ =>\r\n _.size &&\r\n css`\r\n font-size: ${_.size}rem;\r\n `}\r\n ${_ =>\r\n _.line &&\r\n css`\r\n line-height: ${_.line};\r\n `}\r\n }\r\n`\r\nexport const AppTypography: React.FC = ({\r\n weight,\r\n paddingLeft,\r\n textCase,\r\n size,\r\n line,\r\n disabled,\r\n customColor,\r\n ...props\r\n}) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\nAppTypography.defaultProps = {\r\n weight: 'normal',\r\n paddingLeft: 0,\r\n textCase: 'inherit',\r\n}\r\nexport default AppTypography\r\n","import { Typography } from '@mui/material'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport styled, { css } from 'styled-components'\r\nimport { formatCurrency, Translations } from 'utils'\r\nimport AppTypography from './AppTypography'\r\nimport { Divider as MUIDivider } from '@mui/material'\r\nimport { Currency } from 'typedef'\r\nimport { SharedIcon } from 'shared'\r\n\r\nexport const Divider = styled(MUIDivider)<{\r\n topGap?: boolean\r\n bottomGap?: boolean\r\n width?: string\r\n}>`\r\n width: ${_ => _.width};\r\n`\r\nDivider.defaultProps = {\r\n width: 'auto',\r\n}\r\nexport const Wrapper = styled.div<{ invalid?: boolean; minHeight?: number }>`\r\n background: ${_ =>\r\n !_.invalid ? _.theme.palette.grey[100] : _.theme.palette.secondary.light};\r\n padding: ${_ => _.theme.spacing(1)};\r\n min-height: ${_ => _.minHeight}px;\r\n border-radius: 8px;\r\n width: 100%;\r\n box-sizing: border-box;\r\n position: relative;\r\n`\r\nWrapper.defaultProps = {\r\n minHeight: 0,\r\n}\r\nexport const InnerRow = styled.div<{\r\n noBottomPadding?: boolean\r\n noTopPadding?: boolean\r\n}>`\r\n padding: ${_ => _.theme.spacing(1)} 0;\r\n ${_ =>\r\n _.noBottomPadding &&\r\n css`\r\n padding-bottom: 0;\r\n `}\r\n ${_ =>\r\n _.noTopPadding &&\r\n css`\r\n padding-top: 0;\r\n `}\r\n`\r\n\r\nconst StyledTimeRow = styled.div<{ invalid?: boolean }>`\r\n padding: ${_ => _.theme.spacing(1)} 0;\r\n border-width: 1px 0 0 0;\r\n text-align: left;\r\n color: ${_ => (!_.invalid ? 'inherit' : _.theme.palette.secondary.main)};\r\n`\r\n\r\nconst TimeCell = styled.div`\r\n p {\r\n display: inline-block;\r\n font-weight: bold;\r\n }\r\n p:first-of-type {\r\n font-size: 1.5rem;\r\n margin-right: ${_ => _.theme.spacing(1)};\r\n }\r\n`\r\n\r\nexport const TimeRow: React.FC<{ time?: string | Date; invalid?: boolean }> = ({\r\n time,\r\n invalid,\r\n}) => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n {invalid\r\n ? t(Translations.PARKING_EXPIRED_AT)\r\n : t(Translations.PARKING_EXPIRES_AT)}\r\n \r\n \r\n \r\n {time ? moment(time).startOf('minute').format('LT') : '-'}\r\n \r\n \r\n {time ? moment(time).startOf('minute').format('MMM DD') : ''}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const TotalParkingTimeRow: React.FC<{\r\n durationText: string\r\n}> = props => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n {t(Translations.TOTAL_PARKING_TIME)}:\r\n \r\n \r\n {props.durationText}\r\n \r\n \r\n )\r\n}\r\n\r\nconst StyledTextRow = styled.div`\r\n display: flex;\r\n\r\n > *:nth-of-type(2) {\r\n margin-left: auto;\r\n }\r\n`\r\nexport const TextRow: React.FC<{\r\n leftText?: string\r\n rightText?: string\r\n}> = props => {\r\n return (\r\n <>\r\n \r\n {props.leftText && (\r\n \r\n {props.leftText}\r\n \r\n )}\r\n {props.rightText && (\r\n {props.rightText}\r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport const PriceRow: React.FC<{\r\n label?: string\r\n translation?: keyof typeof Translations\r\n amount?: number\r\n currency?: Currency\r\n negativeAmount?: boolean\r\n}> = ({ amount, currency, label, translation, negativeAmount }) => {\r\n const { t } = useTranslation()\r\n const [text, setText] = React.useState('')\r\n React.useEffect(() => {\r\n if (typeof translation === 'string') {\r\n setText(t(Translations[translation]))\r\n }\r\n if (typeof label === 'string') {\r\n setText(label)\r\n }\r\n if (typeof translation !== 'string' && typeof label !== 'string') {\r\n setText('-')\r\n }\r\n }, [label, translation, t])\r\n\r\n if (!amount) return null\r\n return (\r\n \r\n )\r\n}\r\nPriceRow.defaultProps = {\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n amount: 0,\r\n}\r\n\r\nconst StyledIconsRow = styled.div`\r\n padding: ${_ => _.theme.spacing(1)} 0;\r\n display: flex;\r\n div:first-of-type {\r\n margin-right: ${_ => _.theme.spacing(1)};\r\n }\r\n`\r\nconst IconText = styled.div`\r\n display: flex;\r\n align-items: center;\r\n`\r\nexport const IconsRow: React.FC<{\r\n plate?: string\r\n spot?: string\r\n}> = props => {\r\n return (\r\n \r\n {props.plate && (\r\n \r\n \r\n \r\n {props.plate.toUpperCase()}\r\n \r\n \r\n )}\r\n {props.spot && (\r\n \r\n \r\n {props.spot}\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import { Popup } from '../../typedef/popup'\r\nimport { CLOSE_POPUP, SHOW_POPUP, SHOW_TERMS, CLOSE_TERMS } from './constants'\r\n\r\nexport const showPopup = (popup: Popup) => ({\r\n type: SHOW_POPUP as typeof SHOW_POPUP,\r\n popup,\r\n})\r\nexport const closePopup = () => ({\r\n type: CLOSE_POPUP as typeof CLOSE_POPUP,\r\n})\r\nexport const showTerms = () => ({\r\n type: SHOW_TERMS as typeof SHOW_TERMS,\r\n})\r\nexport const closeTerms = () => ({\r\n type: CLOSE_TERMS as typeof CLOSE_TERMS,\r\n})\r\n\r\nexport type Actions =\r\n | ReturnType\r\n | ReturnType\r\n | ReturnType\r\n | ReturnType\r\n","import React from 'react'\r\nimport styled, { css } from 'styled-components'\r\n\r\ninterface FlexBoxProps {\r\n hasBottomMargin?: boolean\r\n hasTopMargin?: boolean\r\n horizontal?: boolean\r\n horizontalGap?: number\r\n horizontalFullWith?: boolean\r\n marginSpacing?: number\r\n style?: any\r\n maxWidth?: number\r\n maxChildWidth?: number\r\n}\r\nconst StyledFlexBox = styled.div`\r\n text-align: center;\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n margin: ${_ => _.theme.spacing(_.marginSpacing)} auto;\r\n > * {\r\n margin-bottom: ${_ => _.theme.spacing(2)};\r\n }\r\n ${_ => _.maxWidth && `max-width: ${_.maxWidth}px;`}\r\n ${_ => !_.hasBottomMargin && 'margin-bottom: 0;'}\r\n ${_ => !_.hasTopMargin && 'margin-top: 0;'}\r\n ${({ horizontalGap, ..._ }) =>\r\n _.horizontal &&\r\n css`\r\n flex-direction: row;\r\n justify-content: center;\r\n > * {\r\n margin-bottom: 0;\r\n width: ${_.horizontalFullWith ? '100%' : 'auto'};\r\n &:not(:first-child) {\r\n padding-left: ${_ => _.theme.spacing(horizontalGap)};\r\n }\r\n &:not(:last-child) {\r\n padding-right: ${_ => _.theme.spacing(horizontalGap)};\r\n }\r\n ${_ => _.maxChildWidth && `max-width: ${_.maxChildWidth}px;`}\r\n }\r\n `}\r\n`\r\nStyledFlexBox.defaultProps = {\r\n horizontalGap: 1,\r\n}\r\nconst FlexBox: React.FC = props => {\r\n const renderChildren = () =>\r\n React.Children.map(props.children, child =>\r\n React.isValidElement(child) ?
{child}
: null\r\n )\r\n if (!renderChildren().length) return null\r\n return {renderChildren()}\r\n}\r\nFlexBox.defaultProps = {\r\n marginSpacing: 4,\r\n}\r\n\r\nexport default FlexBox\r\n","import { ButtonProps } from '@mui/material'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton } from 'shared'\r\nimport FlexBox from 'shared/FlexBox'\r\nimport Translations from '../../utils/translations'\r\n\r\nexport interface PopupButtonsProps {\r\n variant?: 'info' | 'success' | 'warning' | 'error' | 'delete'\r\n handleAdditionalButtonClick: () => void\r\n handleCloseClick: () => void\r\n}\r\n\r\nconst PopupButtons: React.FC = ({\r\n variant = 'info',\r\n handleCloseClick,\r\n handleAdditionalButtonClick,\r\n}) => {\r\n const { t } = useTranslation()\r\n\r\n const buttonColor: {\r\n info: ButtonProps['color']\r\n error: ButtonProps['color']\r\n success: ButtonProps['color']\r\n warning: ButtonProps['color']\r\n delete: ButtonProps['color']\r\n } = {\r\n info: 'primary',\r\n error: 'secondary',\r\n success: 'primary',\r\n warning: 'primary',\r\n delete: 'secondary',\r\n }\r\n\r\n const buttonText = {\r\n info: t(Translations.OK),\r\n error: t(Translations.OK),\r\n success: t(Translations.OK),\r\n warning: t(Translations.CLOSE),\r\n delete: t(Translations.CANCEL),\r\n }\r\n const buttonAdditionalText = {\r\n info: t(Translations.TRY_AGAIN),\r\n error: t(Translations.TRY_AGAIN),\r\n success: t(Translations.TRY_AGAIN),\r\n warning: t(Translations.TRY_AGAIN),\r\n delete: t(Translations.DELETE),\r\n }\r\n\r\n const hasAdditionalButton = variant === 'warning' || variant === 'delete'\r\n\r\n return (\r\n \r\n {hasAdditionalButton && (\r\n \r\n {buttonAdditionalText[variant]}\r\n \r\n )}\r\n \r\n {buttonText[variant]}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default PopupButtons\r\n","import { DialogTitle } from '@mui/material'\r\nimport { DialogProps } from '@mui/material'\r\nimport React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport { closePopup } from '../../store/globalPopup/actions'\r\nimport { AppDialog, SharedIcon } from 'shared'\r\nimport PopupButtons from './PopupButtons'\r\nimport { Typography } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst Text = styled(Typography)`\r\n padding-bottom: ${_ => _.theme.spacing(3)};\r\n`\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n title: {\r\n paddingBottom: theme.spacing(1.5),\r\n fontWeight: 'bold',\r\n },\r\n}))\r\n/**\r\n * @deprecated\r\n */\r\nexport interface IPopup {\r\n variant?: 'info' | 'success' | 'warning' | 'error' | 'delete'\r\n title?: string\r\n description?: string\r\n okButtonClick?: () => void\r\n handleAdditionalButtonClick?: () => any\r\n}\r\nexport type PopupProps = IPopup & DialogProps\r\n\r\nconst PopupIcon: React.FC<{ variant: PopupProps['variant'] }> = props => {\r\n const icon = {\r\n info: ,\r\n success: ,\r\n warning: ,\r\n error: ,\r\n delete: ,\r\n }\r\n\r\n return
{icon[props.variant]}
\r\n}\r\n\r\nexport const Popup: React.FC = props => {\r\n const {\r\n variant,\r\n title,\r\n description,\r\n handleAdditionalButtonClick,\r\n okButtonClick,\r\n ...dialogProps\r\n } = props\r\n const dispatch = useDispatch()\r\n const classes = useStyles()\r\n\r\n const handleCloseClick = () => {\r\n dispatch(closePopup())\r\n if (okButtonClick) {\r\n okButtonClick()\r\n }\r\n }\r\n\r\n const handleAdditionalClick = () => {\r\n dispatch(closePopup())\r\n if (handleAdditionalButtonClick) {\r\n handleAdditionalButtonClick()\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {title}\r\n \r\n {description}\r\n \r\n \r\n )\r\n}\r\nPopup.defaultProps = {\r\n fullWidth: false,\r\n variant: 'warning',\r\n}\r\n","import { DialogTitle, Typography } from '@mui/material'\r\nimport { DialogProps } from '@mui/material'\r\nimport React from 'react'\r\nimport { AppDialog, SharedIcon } from 'shared'\r\nimport styled from 'styled-components'\r\nimport { makeStyles } from '@mui/styles'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\n\r\n/**\r\n * NOTE: Popup with better customization for use inside components\r\n */\r\nconst Text = styled(Typography)`\r\n padding-bottom: ${_ => _.theme.spacing(3)};\r\n`\r\nconst CloseIconBox = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n`\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n title: {\r\n paddingBottom: theme.spacing(1.5),\r\n fontWeight: 'bold',\r\n },\r\n}))\r\n\r\ntype PopupProps = {\r\n variant: 'info' | 'success' | 'warning' | 'error' | 'delete'\r\n title?: string\r\n description?: string\r\n closePopup: () => void\r\n customIcon?: JSX.Element\r\n addCloseButton?: boolean\r\n darkBackground?: boolean\r\n} & DialogProps\r\n\r\nconst PopupIcon: React.FC<{ variant: PopupProps['variant'] }> = props => {\r\n const icon = {\r\n info: ,\r\n success: ,\r\n warning: ,\r\n error: ,\r\n delete: ,\r\n }\r\n\r\n return
{icon[props.variant]}
\r\n}\r\n\r\nexport const AppPopup: React.FC = props => {\r\n const {\r\n variant,\r\n title,\r\n description,\r\n customIcon,\r\n addCloseButton,\r\n closePopup,\r\n darkBackground,\r\n ...dialogProps\r\n } = props\r\n\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n {addCloseButton && (\r\n \r\n closePopup()} />\r\n \r\n )}\r\n {customIcon ?
{customIcon}
: }\r\n {title && (\r\n \r\n {title}\r\n \r\n )}\r\n {description && {description}}\r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default AppPopup\r\n","import { Typography } from '@mui/material'\r\nimport * as React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nconst PlaceholderWrapper = styled.div<{ minHeight?: number }>`\r\n display: flex;\r\n flex-flow: column;\r\n align-items: center;\r\n min-height: ${_ => _.minHeight}px;\r\n position: relative;\r\n max-width: 350px;\r\n margin: auto;\r\n text-align: center;\r\n`\r\n\r\nconst PlaceholderTitle = styled(Typography)`\r\n color: ${_ => _.theme.palette.grey['500']};\r\n line-height: 1.5;\r\n text-transform: uppercase;\r\n padding: ${_ => _.theme.spacing(1.5)} ${_ => _.theme.spacing(2)};\r\n text-align: center;\r\n`\r\nconst PlaceholderDescription = styled(Typography)`\r\n color: ${_ => _.theme.palette.grey['500']};\r\n padding: ${_ => _.theme.spacing(1.5)} ${_ => _.theme.spacing(2)};\r\n text-align: center;\r\n`\r\nconst PlaceholderIcon = styled.div`\r\n max-width: 180px;\r\n svg {\r\n max-width: 100%;\r\n height: auto;\r\n text-align: center;\r\n }\r\n`\r\n\r\nexport interface PlaceholderProps {\r\n title?: string\r\n description?: string\r\n icon?: JSX.Element\r\n minHeight?: number\r\n colorBlack?: boolean\r\n}\r\nexport const Placeholder: React.FC = ({\r\n icon: Icon,\r\n title,\r\n minHeight,\r\n description,\r\n ...props\r\n}) => {\r\n return (\r\n \r\n {!!Icon && {Icon}}\r\n {title && {title}}\r\n {description && (\r\n \r\n {description}\r\n \r\n )}\r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nPlaceholder.defaultProps = {\r\n minHeight: 40,\r\n}\r\n\r\nexport default Placeholder\r\n","import * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n AppTypography,\r\n FlexBox,\r\n SharedIcon,\r\n} from 'shared'\r\nimport Translations from 'utils/translations'\r\n\r\ninterface ErrorPlaceholderProps {\r\n onClick?: () => void\r\n showSpinner?: boolean\r\n title?: string\r\n description?: string\r\n buttonTitle?: string\r\n}\r\nexport const ErrorPlaceholder: React.FC = ({\r\n onClick = () => undefined,\r\n showSpinner,\r\n title,\r\n description,\r\n buttonTitle,\r\n}) => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n
\r\n \r\n {showSpinner && }\r\n
\r\n \r\n {title ? title : t(Translations.OOPS)}\r\n \r\n \r\n {description ? description : t(Translations.FAILED_PROPERLY_RETRIEVE)}\r\n \r\n \r\n {buttonTitle ? buttonTitle : t(Translations.REFRESH)}\r\n \r\n
\r\n )\r\n}\r\n\r\nErrorPlaceholder.defaultProps = {\r\n onClick: () => undefined,\r\n}\r\n\r\nexport default ErrorPlaceholder\r\n","import { Button, ButtonProps as MUIButtonProps } from '@mui/material'\r\nimport styled, { css } from 'styled-components'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Translations } from 'utils'\r\n\r\nexport interface AppButtonProps extends MUIButtonProps {\r\n letterCase?: 'lowercase' | 'uppercase' | 'none'\r\n hasHoverBg?: boolean\r\n fontWeight?: number | string\r\n minWidth?: string\r\n topGutter?: number\r\n textAlign?: 'left' | 'center' | 'right' | 'inherit'\r\n /** text is to auto translate */\r\n translation?: keyof typeof Translations\r\n}\r\n\r\nconst ButtonWrapper = styled.div`\r\n padding-top: ${_ => _.topGutter}px;\r\n text-align: ${_ => _.textAlign};\r\n button {\r\n border-radius: 28px;\r\n font-weight: ${_ => _.fontWeight};\r\n min-width: ${_ => _.minWidth};\r\n text-transform: ${_ => _.letterCase};\r\n :hover {\r\n ${_ =>\r\n !_.hasHoverBg\r\n ? css`\r\n background-color: inherit;\r\n `\r\n : {}}\r\n }\r\n }\r\n`\r\n\r\nexport const AppButton: React.FC = ({\r\n letterCase,\r\n hasHoverBg,\r\n fontWeight,\r\n minWidth,\r\n topGutter,\r\n textAlign,\r\n ...props\r\n}) => {\r\n const { t } = useTranslation()\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\nAppButton.defaultProps = {\r\n letterCase: 'uppercase',\r\n hasHoverBg: true,\r\n fontWeight: 'bold',\r\n minWidth: '180px',\r\n topGutter: 0,\r\n textAlign: 'inherit',\r\n type: 'button',\r\n}\r\nexport default AppButton\r\n","import { styled, Typography } from '@mui/material'\r\nimport styledC, { css } from 'styled-components'\r\nimport * as React from 'react'\r\nimport { SharedIcon } from 'shared'\r\n\r\nconst SubTitle = styled(Typography)(_ => ({\r\n marginBottom: _.theme.spacing(3),\r\n}))\r\nconst Title = styled(Typography)(_ => ({\r\n textTransform: 'uppercase',\r\n marginBottom: _.theme.spacing(2),\r\n}))\r\nconst Logo = styled('div')(_ => ({\r\n marginBottom: _.theme.spacing(4),\r\n textAlign: 'center',\r\n}))\r\n\r\nconst StyledPageHeading = styledC.div<{\r\n normalizeIcon?: boolean\r\n}>`text-align: center;`\r\nconst IconWrapper = styledC.div<{ normalizeIcon?: boolean }>`\r\n margin-bottom: ${_ => _.theme.spacing(3)};\r\n ${_ =>\r\n _.normalizeIcon &&\r\n css`\r\n svg {\r\n max-width: 80px;\r\n height: auto;\r\n }\r\n `}\r\n`\r\n\r\ninterface PageHeadingProps {\r\n title?: string\r\n subtitle?: string\r\n color?: 'textPrimary' | 'textSecondary'\r\n hasLogo?: boolean\r\n normalizeIcon?: boolean\r\n externalLogoUrl?: string\r\n}\r\n\r\nconst PageHeading: React.FC = ({\r\n subtitle,\r\n title,\r\n hasLogo,\r\n color,\r\n normalizeIcon,\r\n children,\r\n externalLogoUrl,\r\n}) => {\r\n return (\r\n \r\n {hasLogo && (\r\n \r\n \r\n \r\n )}\r\n {!!externalLogoUrl && (\r\n \r\n \r\n \r\n )}\r\n {children && (\r\n {children}\r\n )}\r\n {title && (\r\n \r\n {title}\r\n \r\n )}\r\n {subtitle && {subtitle}}\r\n \r\n )\r\n}\r\nPageHeading.defaultProps = {\r\n hasLogo: true,\r\n color: 'textPrimary',\r\n normalizeIcon: true,\r\n}\r\nexport default PageHeading\r\n","var _circle, _path, _circle2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgInputErrorIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 110,\n height: 110,\n viewBox: \"0 0 110 110\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 55,\n cy: 55,\n r: 37.5,\n stroke: \"#FF3333\",\n strokeWidth: 5\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 33V62\",\n stroke: \"#FF3333\",\n strokeWidth: 5,\n strokeLinecap: \"round\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 55,\n cy: 73,\n r: 4,\n fill: \"#FF3333\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInputErrorIcon);\nexport default __webpack_public_path__ + \"static/media/input_error_icon.5b01af9d.svg\";\nexport { ForwardRef as ReactComponent };","import { IconButton } from '@mui/material'\r\nimport { createTheme, ThemeProvider } from '@mui/material/styles'\r\nimport React, { HTMLProps } from 'react'\r\nimport styled, { css } from 'styled-components'\r\nimport { ReactComponent as ErrorIconSvg } from '../assets/icons/input_error_icon.svg'\r\n\r\nconst InputContainer = styled.div`\r\n border: 1.25px solid;\r\n border-radius: 32.25px;\r\n display: flex;\r\n width: 100%;\r\n flex-direction: row;\r\n box-sizing: border-box;\r\n background: ${props => (props.disabled ? '#F5F5F5' : '#FFFFFF')};\r\n border-color: ${_ => (_.error ? '#FF3333' : 'rgba(0, 0, 0, 0.23)')};\r\n overflow: hidden;\r\n height: 36px;\r\n &:hover,\r\n &:focus-within {\r\n border-color: ${props => props.theme.palette.primary.main};\r\n }\r\n ${_ =>\r\n !_.noMargin &&\r\n css`\r\n margin-bottom: 15px;\r\n `}\r\n`\r\n\r\nconst BaseInput = styled.input`\r\n flex: 1;\r\n border: none;\r\n padding: ${props => (props.LeftIcon ? '5px 0px' : '10px 10px')};\r\n\r\n font-size: 16px;\r\n line-height: 20px;\r\n\r\n min-width: 0px;\r\n padding-right: 0px;\r\n\r\n &::placeholder {\r\n color: rgba(0, 0, 0, 0.23);\r\n }\r\n\r\n &:disabled {\r\n background: #f5f5f5;\r\n color: ${_ => _.theme.palette.grey['500']};\r\n }\r\n`\r\n\r\nconst ErrorIconStyled = styled(ErrorIconSvg)`\r\n align-self: center;\r\n margin-right: 10px;\r\n`\r\n\r\nexport interface InputProps extends HTMLProps {\r\n error?: boolean\r\n fullWidth?: boolean\r\n LeftIcon?: React.FunctionComponent>\r\n leftIconClick?: () => void\r\n RightIcon?: React.FunctionComponent>\r\n rightIconClick?: () => void\r\n noMargin?: boolean\r\n}\r\n\r\nconst theme = createTheme({\r\n components: {\r\n MuiIconButton: {\r\n styleOverrides: {\r\n root: {\r\n padding: '0px 18.75px',\r\n },\r\n },\r\n },\r\n },\r\n})\r\n\r\nexport const Input: React.FC = props => {\r\n const {\r\n as: _as,\r\n refProp,\r\n LeftIcon,\r\n RightIcon,\r\n leftIconClick,\r\n rightIconClick,\r\n style,\r\n noMargin,\r\n className,\r\n ...other\r\n } = props\r\n return (\r\n \r\n \r\n {LeftIcon && (\r\n \r\n \r\n \r\n )}\r\n \r\n {RightIcon && (\r\n \r\n \r\n \r\n )}\r\n {props.error && }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default Input\r\n","import { Step, StepLabel, Stepper, StepperProps } from '@mui/material'\r\nimport * as React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nexport interface AppStepperProps {\r\n steps: (string | number)[]\r\n hasLabel?: boolean\r\n maxWidth?: string\r\n}\r\n\r\nconst S = {\r\n Stepper: styled(Stepper)``,\r\n StepLabel: styled(StepLabel)`\r\n font-weight: bold;\r\n [class*='Mui-completed'] {\r\n fill: #fff;\r\n }\r\n [class*='Mui-active'] {\r\n circle {\r\n fill: #fff;\r\n }\r\n [class*='MuiStepIcon-text'] {\r\n fill: ${_ => _.theme.palette.secondary.main};\r\n }\r\n }\r\n `,\r\n}\r\n\r\nconst AppStepperWrapper = styled.span<{ maxWidth?: string }>`\r\n ${S.Stepper} {\r\n padding: 0;\r\n max-width: ${_ => _.maxWidth};\r\n margin: auto;\r\n }\r\n`\r\n\r\nconst AppStepper: React.SFC> = ({\r\n maxWidth,\r\n hasLabel,\r\n steps,\r\n ...props\r\n}) => {\r\n return (\r\n \r\n \r\n {steps.map(label => (\r\n \r\n {hasLabel ? label : ''}\r\n \r\n ))}\r\n \r\n \r\n )\r\n}\r\n\r\nAppStepper.defaultProps = {\r\n hasLabel: false,\r\n alternativeLabel: true,\r\n maxWidth: '300px',\r\n}\r\n\r\nexport default AppStepper\r\n","import { makeStyles } from '@mui/styles'\r\nimport { Dialog, DialogProps } from '@mui/material'\r\nimport React from 'react'\r\n\r\nexport interface AppDialogProps extends DialogProps {\r\n darkBackground?: boolean\r\n}\r\nconst useStyles = makeStyles(theme => ({\r\n paper: (props: AppDialogProps) => ({\r\n padding: theme.spacing(3),\r\n borderRadius: '10px',\r\n textAlign: 'center',\r\n boxSizing: 'border-box',\r\n minWidth: 300,\r\n scrollbarWidth: 'thin',\r\n scrollbarColor: '#b3b3b3 white',\r\n '@media only screen and (max-device-width: 767px) and (prefers-color-scheme: dark) and (-webkit-min-device-pixel-ratio:0)':\r\n {\r\n backgroundColor: props.darkBackground ? '#585858' : 'white',\r\n color: props.darkBackground ? 'white' : 'black',\r\n },\r\n }),\r\n}))\r\n\r\nexport const AppDialog: React.FC = props => {\r\n const classes = useStyles(props)\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default AppDialog\r\n","import React from 'react'\r\nimport Slider, { Settings } from 'react-slick'\r\nimport 'slick-carousel/slick/slick-theme.css'\r\nimport 'slick-carousel/slick/slick.css'\r\n\r\nconst responsive: Settings['responsive'] = [\r\n {\r\n breakpoint: 600,\r\n settings: { centerMode: false },\r\n },\r\n]\r\n\r\nconst AppCarousel: React.FC = props => {\r\n return {props.children}\r\n}\r\nAppCarousel.defaultProps = {\r\n adaptiveHeight: true,\r\n slidesToScroll: 1,\r\n infinite: false,\r\n centerMode: true,\r\n draggable: true,\r\n swipeToSlide: true,\r\n responsive,\r\n variableWidth: true,\r\n arrows: false,\r\n touchMove: true,\r\n}\r\n\r\nexport default AppCarousel\r\n","export const TOP_BAR_HEIGHT = 50\r\nexport const BOTTOM_BAR_HEIGHT = 50\r\nexport const AD_HEIGHT = 250\r\nexport const SNACKBAR_HEIGHT = 60\r\nexport const OUTER_WIDTH = 1024\r\nexport const NARROW_INNER_WIDTH = 460\r\nexport const INNER_WIDTH = 768\r\nexport const TRANSITION_TIME = 250\r\n","import { IconButton, Typography, Toolbar } from '@mui/material'\r\nimport { Close, Add, ArrowBack } from '@mui/icons-material'\r\nimport bg from 'assets/images/bg.png'\r\nimport * as React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { INNER_WIDTH } from 'shared/layout/constants'\r\nimport { layoutSlice } from 'store/slices'\r\nimport styled, { css } from 'styled-components'\r\n\r\nexport interface TopbarProps {\r\n title?: string\r\n hasGoBack?: boolean\r\n onClickBack?: () => void\r\n onClickRight?: () => void\r\n rightIcon?: 'close' | 'add' | (() => JSX.Element)\r\n transparent?: boolean\r\n}\r\n\r\nconst StyledTopbar = styled.div<{\r\n transparent?: boolean\r\n backgroundImage?: string\r\n}>`\r\n position: fixed;\r\n box-shadow: 4px 8px 4px rgba(0, 0, 0, 0.1);\r\n ${_ =>\r\n _.transparent\r\n ? css`\r\n background: transparent;\r\n box-shadow: none;\r\n `\r\n : css`\r\n background-image: url(${_.backgroundImage});\r\n background-repeat: no-repeat;\r\n background-size: cover;\r\n `}\r\n\r\n top: 0;\r\n padding: 0 ${_ => _.theme.spacing(1)};\r\n width: 100%;\r\n box-sizing: border-box;\r\n z-index: 5;\r\n left: 0;\r\n`\r\nStyledTopbar.defaultProps = {\r\n backgroundImage: bg,\r\n}\r\nconst Wrapper = styled.div<{ transparent?: boolean }>`\r\n width: 100%;\r\n max-width: ${_ => INNER_WIDTH}px;\r\n margin: auto;\r\n`\r\nconst Title = styled(Typography)`\r\n color: white;\r\n display: block;\r\n margin: 0 auto;\r\n`\r\nconst RightContainer = styled.div`\r\n position: absolute;\r\n left: 100%;\r\n transform: translateX(-100%);\r\n`\r\nconst LeftButtonContainer = styled.div`\r\n position: absolute;\r\n left: auto;\r\n`\r\n\r\nexport const Topbar: React.FC = props => {\r\n const history = useHistory()\r\n const { headerBgUrl } = useSelector(layoutSlice.stateSelectors).customStyles\r\n const onClickBack = () => {\r\n if (props.onClickBack) {\r\n props.onClickBack()\r\n } else {\r\n history.goBack()\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n {props.hasGoBack && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {props.title}\r\n \r\n {props.rightIcon && (\r\n \r\n {props.rightIcon === 'close' && }\r\n {props.rightIcon === 'add' && }\r\n {props.rightIcon &&\r\n typeof props.rightIcon !== 'string' &&\r\n props.rightIcon()}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\nTopbar.defaultProps = {\r\n title: '',\r\n hasGoBack: true,\r\n onClickRight: () => undefined,\r\n}\r\n\r\nexport default Topbar\r\n","import { BottomNavigation, BottomNavigationAction } from '@mui/material'\r\nimport React from 'react'\r\nimport { NavLink, useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { SharedIcon } from 'shared'\r\nimport { BOTTOM_BAR_HEIGHT } from 'shared/layout/constants'\r\nimport styled from 'styled-components'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst StyledNavLink = styled(NavLink)`\r\n &.selected {\r\n path,\r\n rect,\r\n circle {\r\n stroke: ${_ => _.theme.palette.primary.main};\r\n }\r\n circle {\r\n fill: #fff;\r\n }\r\n }\r\n`\r\nconst MenuIcon = styled.div`\r\n display: flex;\r\n align-items: center;\r\n svg {\r\n height: 30px;\r\n }\r\n`\r\nconst StyledBottomNavigation = styled(BottomNavigation)`\r\n button {\r\n padding: 6px !important;\r\n }\r\n button:first-of-type {\r\n /* for vertical align */\r\n padding-bottom: 9px !important;\r\n }\r\n`\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n position: 'fixed',\r\n bottom: 0,\r\n padding: 0,\r\n width: '100%',\r\n height: BOTTOM_BAR_HEIGHT,\r\n boxSizing: 'border-box',\r\n boxShadow: '0px -4px 4px rgba(0, 0, 0, 0.1)',\r\n zIndex: 3,\r\n left: '50%',\r\n transform: 'translateX(-50%)',\r\n },\r\n}))\r\n\r\nexport default function AppBottomNavigation() {\r\n const classes = useStyles()\r\n const history = useHistory()\r\n\r\n return (\r\n \r\n {\r\n e.preventDefault()\r\n history.push(paths.home.map)\r\n }}\r\n icon={\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n {\r\n e.preventDefault()\r\n history.push(paths.parking.tickets)\r\n }}\r\n icon={\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n {\r\n e.preventDefault()\r\n history.push(paths.parker.myProfile)\r\n }}\r\n icon={\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n )\r\n}\r\n","import { Dialog, DialogProps } from '@mui/material'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nconst StyledDialog = styled(Dialog)`\r\n .MuiDialog-paper {\r\n overflow: hidden;\r\n }\r\n`\r\ninterface PageDialogProps {\r\n layout?: 'full'\r\n paddingBottom?: string\r\n center?: boolean\r\n overflowScroll?: boolean\r\n}\r\n// const Transition = React.forwardRef(function Transition(props, ref) {\r\n// return \r\n// })\r\nexport const PageDialog: React.FC = ({\r\n paddingBottom,\r\n layout,\r\n center,\r\n overflowScroll,\r\n ...props\r\n}) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\nPageDialog.defaultProps = {}\r\nexport default PageDialog\r\n","import tokensStorageService from 'utils/tokenStorageService'\r\n\r\nconst useTokenValidation = () => {\r\n const token = tokensStorageService.get()\r\n if (!token) {\r\n return false\r\n }\r\n if (token.expires < Date.now()) {\r\n return false\r\n }\r\n if (token.expires > Date.now()) {\r\n return token\r\n }\r\n return false\r\n}\r\n\r\nexport default useTokenValidation\r\n","import React from 'react'\r\nimport * as layoutSlice from 'store/slices/layoutSlice'\r\nimport { useAppDispatch } from 'store/store'\r\n\r\nexport const useChangeLayout = (\r\n layoutProps: layoutSlice.LayoutStateWithoutCustomStyles = { layout: {} },\r\n type: 'auth' | 'app' = 'auth',\r\n deps: React.DependencyList = []\r\n) => {\r\n const dispatch = useAppDispatch()\r\n const layouts = {\r\n auth: layoutSlice.authLayoutProps,\r\n app: layoutSlice.appLayoutProps,\r\n }\r\n const combinedLayout: layoutSlice.LayoutStateWithoutCustomStyles = {\r\n ...layouts[type],\r\n ...layoutProps,\r\n layout: {\r\n ...layouts[type].layout,\r\n ...layoutProps?.layout,\r\n },\r\n topbar:\r\n 'topbar' in layoutProps ? layoutProps?.topbar : layouts[type].topbar,\r\n }\r\n\r\n React.useEffect(() => {\r\n window.scrollTo(0, 0)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n React.useLayoutEffect(() => {\r\n dispatch(layoutSlice.actions.setFullLayout(combinedLayout))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps)\r\n\r\n return combinedLayout\r\n}\r\n\r\nexport default useChangeLayout\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport * as layoutSlice from 'store/slices/layoutSlice'\r\nimport { useAppDispatch } from 'store/store'\r\n\r\nexport const useUpdateLayout = (\r\n props: layoutSlice.LayoutStateWithoutCustomStyles = {},\r\n deps: React.DependencyList = [],\r\n stopEffect?: boolean\r\n) => {\r\n const layout = useSelector(layoutSlice.stateSelectors)\r\n const dispatch = useAppDispatch()\r\n\r\n const combineLayout = React.useCallback(\r\n (args: layoutSlice.LayoutStateWithoutCustomStyles) => ({\r\n ...layout,\r\n ...args,\r\n layout: {\r\n ...layout.layout,\r\n ...args?.layout,\r\n },\r\n topbar: {\r\n ...layout.topbar,\r\n ...args?.topbar,\r\n },\r\n }),\r\n [layout]\r\n )\r\n\r\n const updateLayout = React.useCallback(\r\n (args: layoutSlice.LayoutStateWithoutCustomStyles) => {\r\n const combinedLayout = combineLayout(args)\r\n dispatch(layoutSlice.actions.setFullLayout(combinedLayout))\r\n },\r\n [combineLayout, dispatch]\r\n )\r\n\r\n React.useLayoutEffect(() => {\r\n if (!stopEffect) {\r\n updateLayout(props)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps)\r\n\r\n return updateLayout\r\n}\r\n\r\nexport default useUpdateLayout\r\n","import { useState, useEffect, useRef } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport { mapSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\n\r\nexport enum GeolocationPositionErrorValues {\r\n PERMISSION_DENIED = 1,\r\n POSITION_UNAVAILABLE = 2,\r\n TIMEOUT = 3,\r\n}\r\n\r\nexport const useGeolocation = () => {\r\n const { isGeoOn, selectedLot } = useSelector(mapSlice.stateSelectors)\r\n const [isOn, setIsOn] = useState(false)\r\n const dispatch = useAppDispatch()\r\n const [state, setState] = useState({\r\n accuracy: null,\r\n altitude: null,\r\n altitudeAccuracy: null,\r\n heading: null,\r\n latitude: null,\r\n longitude: null,\r\n speed: null,\r\n timestamp: Date.now(),\r\n error: '',\r\n })\r\n const { t } = useTranslation()\r\n let mounted = true\r\n const watchId = useRef(null)\r\n\r\n const turnOffGeo = () => {\r\n batch(() => {\r\n setIsOn(false)\r\n dispatch(mapSlice.actions.setGeo(false))\r\n dispatch(mapSlice.actions.setMyPosition(null))\r\n dispatch(mapSlice.actions.setGeoState('denined'))\r\n mounted = false\r\n navigator.geolocation.clearWatch(watchId.current)\r\n watchId.current = null\r\n })\r\n }\r\n\r\n const geoErrorMessageHandler = (errCode: number): string => {\r\n switch (errCode) {\r\n case GeolocationPositionErrorValues.PERMISSION_DENIED:\r\n return t(Translations.USER_DENIED_GEOLOCALIZATION)\r\n case GeolocationPositionErrorValues.POSITION_UNAVAILABLE:\r\n return t(Translations.POSITION_UNAVAILABLE)\r\n case GeolocationPositionErrorValues.TIMEOUT:\r\n return t(Translations.POSITION_GEOLOCALIZATION_TIMEOUT)\r\n default:\r\n return t(Translations.ERROR)\r\n }\r\n }\r\n\r\n const onError = (err: any) => {\r\n setState({\r\n accuracy: null,\r\n altitude: null,\r\n altitudeAccuracy: null,\r\n heading: null,\r\n latitude: null,\r\n longitude: null,\r\n speed: null,\r\n timestamp: Date.now(),\r\n error: geoErrorMessageHandler(err.code),\r\n })\r\n turnOffGeo()\r\n dispatch(mapSlice.actions.setGeoError(geoErrorMessageHandler(err.code)))\r\n }\r\n\r\n const onGetCurrentPositionError = (err: any) => {\r\n if (mounted) {\r\n onError(err)\r\n }\r\n }\r\n\r\n const handleEvent = (event: any) => {\r\n setState({\r\n accuracy: event.coords.accuracy,\r\n altitude: event.coords.altitude,\r\n altitudeAccuracy: event.coords.altitudeAccuracy,\r\n heading: event.coords.heading,\r\n latitude: event.coords.latitude,\r\n speed: event.coords.speed,\r\n timestamp: event.timestamp,\r\n longitude: event.coords.longitude,\r\n error: '',\r\n })\r\n if (!selectedLot)\r\n dispatch(\r\n mapSlice.actions.setMyPosition({\r\n heading: event.coords.heading,\r\n lat: event.coords.latitude,\r\n lng: event.coords.longitude,\r\n })\r\n )\r\n }\r\n\r\n const onGetCurrentPosition = (event: any) => {\r\n if (mounted) {\r\n setIsOn(true)\r\n dispatch(mapSlice.actions.setGeoState('granted'))\r\n dispatch(\r\n mapSlice.actions.setPosition({\r\n lat: event.coords.latitude,\r\n lng: event.coords.longitude,\r\n })\r\n )\r\n handleEvent(event)\r\n }\r\n }\r\n\r\n const onWatchPosition = (event: any) => {\r\n if (mounted) {\r\n handleEvent(event)\r\n }\r\n }\r\n\r\n const turnOnGeo = () => {\r\n setState({ ...state, error: '' })\r\n navigator.geolocation.getCurrentPosition(\r\n onGetCurrentPosition,\r\n onGetCurrentPositionError,\r\n { enableHighAccuracy: true }\r\n )\r\n watchId.current = navigator.geolocation.watchPosition(\r\n onWatchPosition,\r\n onError\r\n )\r\n }\r\n\r\n useEffect(() => {\r\n if (isGeoOn && !isOn) {\r\n turnOnGeo()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isGeoOn, isOn])\r\n\r\n return { state, turnOnGeo, turnOffGeo }\r\n}\r\n\r\nexport default useGeolocation\r\n","/**navigator in second and last if has has type 'never'\r\n * code is from official docs\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent\r\n */\r\nconst constNavigator = navigator as any\r\nexport const useTouchScreen = () => {\r\n let hasTouchScreen = false\r\n\r\n if ('maxTouchPoints' in constNavigator) {\r\n hasTouchScreen = constNavigator.maxTouchPoints > 0\r\n } else if ('msMaxTouchPoints' in constNavigator) {\r\n hasTouchScreen = constNavigator.msMaxTouchPoints > 0\r\n } else {\r\n const mQ = window.matchMedia && matchMedia('(pointer:coarse)')\r\n if (mQ && mQ.media === '(pointer:coarse)') {\r\n hasTouchScreen = !!mQ.matches\r\n } else if ('orientation' in window) {\r\n hasTouchScreen = true // deprecated, but good fallback\r\n } else {\r\n // Only as a last resort, fall back to user agent sniffing\r\n const UA = constNavigator.userAgent\r\n hasTouchScreen =\r\n /\\b(BlackBerry|webOS|iPhone|IEMobile)\\b/i.test(UA) ||\r\n /\\b(Android|Windows Phone|iPad|iPod)\\b/i.test(UA)\r\n }\r\n }\r\n return hasTouchScreen\r\n}\r\n\r\nexport default useTouchScreen\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { parkCarSlice, creditCardsSlice } from 'store/slices'\r\n\r\nexport const useSelectedCardIndex = () => {\r\n const [initSlide, setInitSlide] = React.useState(0)\r\n const selectedCard = useSelector(parkCarSlice.selectCardId)\r\n const cards = useSelector(creditCardsSlice.selectAll)\r\n\r\n React.useLayoutEffect(() => {\r\n if (selectedCard && cards.length) {\r\n const selectedCardIndex = cards.findIndex(\r\n el => el.creditCardId === selectedCard?.creditCardId\r\n )\r\n if (selectedCardIndex !== -1) {\r\n setInitSlide(selectedCardIndex)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n return initSlide\r\n}\r\n\r\nexport default useSelectedCardIndex\r\n","import { useTokenValidation } from 'hooks'\r\nimport React from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { customerSlice, layoutSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\n\r\nexport const useRefreshSession = (initLocation: string) => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const validToken = useTokenValidation()\r\n\r\n const validateUser = React.useCallback(async () => {\r\n const homeRegex = new RegExp(`/home/`)\r\n const authRegex = new RegExp(`/auth/`)\r\n const parkerRegex = new RegExp(`/parker/`)\r\n const parkingRegex = new RegExp(`/parking/`)\r\n if (\r\n initLocation === '/' ||\r\n initLocation.match(homeRegex) ||\r\n initLocation.match(authRegex) ||\r\n initLocation.match(parkerRegex) ||\r\n initLocation.match(parkingRegex)\r\n ) {\r\n if (!validToken) return\r\n if (validToken) {\r\n dispatch(layoutSlice.actions.setLoader())\r\n push(initLocation)\r\n\r\n const actionResult = await dispatch(\r\n customerSlice.refreshToken({ token: validToken.refresh })\r\n )\r\n dispatch(layoutSlice.actions.setLoader())\r\n\r\n if (customerSlice.refreshToken.fulfilled.match(actionResult)) {\r\n push(initLocation)\r\n } else {\r\n push(paths.root.root)\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n React.useEffect(() => {\r\n validateUser()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n}\r\n\r\nexport default useRefreshSession\r\n","import React from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\n\r\nexport const useDebugRouter = () => {\r\n const { location } = useHistory()\r\n React.useEffect(() => {\r\n if (process.env.NODE_ENV === 'development') {\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n `Route: ${location.pathname}${location.search}, State: ${JSON.stringify(\r\n location.state\r\n )}`\r\n )\r\n }\r\n }, [location.pathname, location.search, location.state])\r\n}\r\n\r\nexport default useDebugRouter\r\n","import moment from 'moment'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\n\r\nexport const useUpdateTicket = () => {\r\n const dispatch = useAppDispatch()\r\n const ticketsRef = React.useRef([])\r\n const tickets = useSelector(ticketsSlice.selectSortedParkedTickets)\r\n\r\n React.useEffect(() => {\r\n ticketsRef.current = tickets\r\n }, [tickets])\r\n React.useEffect(() => {\r\n const timer = setInterval(() => {\r\n ticketsRef.current.forEach(el => {\r\n const isExpired =\r\n Date.now() - el.refCurrentTime >\r\n +moment(el.parkingExpireDateTime) - +moment(el.currentDateTime)\r\n if (isExpired) {\r\n dispatch(\r\n ticketsSlice.getTicket({\r\n carId: el.carId,\r\n })\r\n )\r\n }\r\n })\r\n }, 10000)\r\n\r\n return () => {\r\n clearInterval(timer)\r\n }\r\n }, [dispatch])\r\n}\r\n\r\nexport default useUpdateTicket\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useLocation, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { layoutSlice, mapSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { parseCustomStyles } from 'utils'\r\n\r\nexport interface useCustomColorsProps {}\r\n\r\nexport const useCustomLotColors = () => {\r\n const dispatch = useAppDispatch()\r\n const { customStyles } = useSelector(layoutSlice.stateSelectors)\r\n const { lotId, carId, ticketId } = useParams<{\r\n lotId?: string\r\n carId?: string\r\n ticketId?: string\r\n }>()\r\n const lotByLotId = useSelector((state: AppState) =>\r\n mapSlice.selectById(state, lotId)\r\n )\r\n\r\n const lotByCarId = useSelector((state: AppState) =>\r\n mapSlice.selectLotByTicketId(state, carId || ticketId)\r\n )\r\n\r\n const tickets = useSelector(ticketsSlice.selectSortedParkedTickets)\r\n\r\n const { pathname } = useLocation()\r\n\r\n React.useEffect(() => {\r\n if (lotByLotId) {\r\n dispatch(\r\n layoutSlice.actions.setCustomStyles(\r\n parseCustomStyles(lotByLotId.customStyles)\r\n )\r\n )\r\n return\r\n }\r\n if (lotByCarId) {\r\n dispatch(\r\n layoutSlice.actions.setCustomStyles(\r\n parseCustomStyles(lotByCarId.customStyles)\r\n )\r\n )\r\n return\r\n }\r\n if (tickets[0]?.customStyles.length && pathname === paths.parking.tickets) {\r\n dispatch(\r\n layoutSlice.actions.setCustomStyles(\r\n parseCustomStyles(tickets[0].customStyles)\r\n )\r\n )\r\n return\r\n }\r\n dispatch(layoutSlice.actions.setCustomStyles({}))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lotId, carId, ticketId, tickets[0]])\r\n\r\n return customStyles\r\n}\r\n\r\nexport default useCustomLotColors\r\n","import { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { UserRole } from 'typedef'\r\n\r\nexport const usePushToApp = () => {\r\n const { push } = useHistory()\r\n\r\n const pushToApp = (role = UserRole.User) => {\r\n push(paths.home.map)\r\n return\r\n }\r\n\r\n return pushToApp\r\n}\r\n\r\nexport default usePushToApp\r\n","import bg from 'assets/images/bg.png'\r\nimport { useCustomLotColors } from 'hooks'\r\nimport styled, { css } from 'styled-components'\r\nimport {\r\n BOTTOM_BAR_HEIGHT,\r\n INNER_WIDTH,\r\n NARROW_INNER_WIDTH,\r\n SNACKBAR_HEIGHT,\r\n TOP_BAR_HEIGHT,\r\n} from './constants'\r\nimport React, { ComponentProps } from 'react'\r\nexport const OuterContainer = styled.div<{\r\n hasTopBar?: boolean\r\n hasBottomBar?: boolean\r\n hasFlatBackground?: boolean\r\n whiteBackground?: boolean\r\n imageBackground?: boolean\r\n hasAd?: boolean\r\n height: number\r\n}>`\r\n min-height: ${_ => _.height}px;\r\n width: 100%;\r\n box-sizing: border-box;\r\n background-repeat: no-repeat;\r\n background-size: cover;\r\n display: flex;\r\n flex-direction: column;\r\n transition: background-color 0.2s;\r\n ${_ =>\r\n _.imageBackground &&\r\n css`\r\n background-image: url(${bg});\r\n `}\r\n ${_ =>\r\n _.hasFlatBackground &&\r\n css`\r\n background-color: #e5e5e5;\r\n `}\r\n`\r\n\r\nexport const InnerContainer = styled.div<{\r\n center?: boolean\r\n narrow?: boolean\r\n hasFlatBackground?: boolean\r\n innerScroll?: boolean\r\n}>`\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n width: 100%;\r\n height: 100%;\r\n max-width: ${_ => (_.narrow ? NARROW_INNER_WIDTH : INNER_WIDTH)}px;\r\n margin: 0 auto;\r\n z-index: 1;\r\n box-sizing: border-box;\r\n position: relative;\r\n overflow: ${_ => (_.innerScroll ? 'scroll' : 'visible')};\r\n scrollbar-width: none;\r\n ${_ =>\r\n _.center &&\r\n css`\r\n margin: auto;\r\n `}\r\n`\r\n\r\ninterface PaddingContainerProps {\r\n /**\r\n * theme.spacing(number)\r\n */\r\n paddingTop?: number\r\n padding?: number\r\n hasTopBar?: boolean\r\n}\r\nexport const PaddingContainer = styled.div`\r\n padding: ${_ =>\r\n _.padding ? _.theme.spacing(_.padding) : _.theme.spacing(1)};\r\n ${_ =>\r\n _.paddingTop &&\r\n css`\r\n padding-top: ${_.theme.spacing(_.paddingTop)};\r\n `}\r\n ${_ =>\r\n _.hasTopBar &&\r\n css`\r\n /* padding-top: ${TOP_BAR_HEIGHT}px; */\r\n `}\r\n`\r\nexport const TopBarSpace = styled.div`\r\n width: 100%;\r\n height: ${TOP_BAR_HEIGHT}px;\r\n`\r\nexport const BottomBarSpace = styled.div<{\r\n hasBottomBar?: boolean\r\n hasAd?: boolean\r\n hasSnackbar?: boolean\r\n}>`\r\n width: 100%;\r\n ${_ => {\r\n const bar = _.hasBottomBar ? BOTTOM_BAR_HEIGHT : 0\r\n const snack = _.hasSnackbar ? SNACKBAR_HEIGHT : 0\r\n return css`\r\n height: ${bar + snack}px;\r\n `\r\n }}\r\n`\r\n\r\nexport const AppPaper = styled.div<{\r\n minHeight?: number\r\n minWidth?: number\r\n maxWidth?: number\r\n noShadow?: boolean\r\n gridPaddingDiff?: number\r\n backgroundUrl?: string\r\n}>`\r\n overflow: hidden;\r\n background-color: #fff;\r\n ${_ =>\r\n _.backgroundUrl &&\r\n css`\r\n background-image: url(${_.backgroundUrl});\r\n background-repeat: repeat;\r\n `};\r\n box-sizing: border-box;\r\n border-radius: 8px;\r\n box-shadow: ${_ => (_.noShadow ? 'none' : '0px 0px 5px rgba(0, 0, 0, 0.15)')};\r\n position: relative;\r\n margin-top: 0;\r\n padding: ${_ => _.theme.spacing(2.5 - _.gridPaddingDiff)};\r\n margin: ${_ => _.theme.spacing(1)};\r\n min-height: ${_ => _.minHeight}px;\r\n ${_ =>\r\n _.minWidth &&\r\n css`\r\n min-width: ${_.minWidth}px;\r\n `}\r\n ${_ =>\r\n _.maxWidth &&\r\n css`\r\n max-width: ${_.maxWidth}px;\r\n `}\r\n`\r\nAppPaper.defaultProps = {\r\n gridPaddingDiff: 0,\r\n minHeight: 150,\r\n}\r\n\r\nexport const WhiteBoxContainer = React.forwardRef(function BoxContainer(\r\n props: { backgroundUrl?: string } & ComponentProps,\r\n ref\r\n) {\r\n const { cardBgUrl } = useCustomLotColors()\r\n return (\r\n \r\n )\r\n})\r\n","import React from 'react'\r\nimport { layoutSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport * as S from './Layout.styles'\r\n\r\nexport interface FullLayoutProps {\r\n center?: boolean\r\n hasTopBar?: boolean\r\n hasBottomBar?: boolean\r\n hasFlatBackground?: boolean\r\n whiteBackground?: boolean\r\n imageBackground?: boolean\r\n hasSnackbar?: boolean\r\n narrow?: boolean\r\n innerScroll?: boolean\r\n ad?: boolean\r\n}\r\nexport const FullLayout: React.FC = ({\r\n center,\r\n hasTopBar,\r\n hasBottomBar,\r\n hasFlatBackground,\r\n whiteBackground,\r\n imageBackground,\r\n ad,\r\n narrow,\r\n hasSnackbar,\r\n innerScroll,\r\n children,\r\n ...props\r\n}) => {\r\n const [dimensions, setDimensions] = React.useState({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n })\r\n const height = React.useRef(window.innerHeight)\r\n const width = React.useRef(window.innerWidth)\r\n const innerRef = React.useRef(null)\r\n const dispatch = useAppDispatch()\r\n\r\n const handleResize = React.useCallback(() => {\r\n if (window.innerHeight !== height.current) {\r\n height.current = window.innerHeight\r\n dispatch(layoutSlice.actions.setHeight(window.innerHeight))\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n })\r\n }\r\n if (window.innerWidth !== width.current) {\r\n width.current = window.innerWidth\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n })\r\n dispatch(layoutSlice.actions.setInnerWidth(innerRef.current.clientWidth))\r\n }\r\n }, [dispatch])\r\n\r\n React.useLayoutEffect(() => {\r\n window.addEventListener('resize', handleResize, {})\r\n return () => {\r\n window.removeEventListener('resize', handleResize)\r\n }\r\n }, [handleResize])\r\n\r\n React.useEffect(() => {\r\n dispatch(layoutSlice.actions.setInnerWidth(innerRef.current.clientWidth))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [narrow])\r\n\r\n return (\r\n \r\n \r\n {hasTopBar && }\r\n {children}\r\n \r\n \r\n \r\n )\r\n}\r\nFullLayout.defaultProps = {}\r\nexport default FullLayout\r\n","import { Fade } from '@mui/material'\r\nimport { CircularProgress, CircularProgressProps } from '@mui/material'\r\nimport React from 'react'\r\nimport styled, { css } from 'styled-components'\r\n\r\nconst Container = styled.div<{\r\n relative?: boolean\r\n height?: number | string\r\n transparent?: boolean\r\n darkBackground?: boolean\r\n fixed?: boolean\r\n}>`\r\n position: absolute;\r\n height: 100%;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n z-index: 4;\r\n background: ${_ =>\r\n _.transparent\r\n ? 'transparent'\r\n : _.darkBackground\r\n ? 'rgba(0, 0, 0, 0.5)'\r\n : 'rgba(255, 255, 255, 0.5)'};\r\n ${_ =>\r\n _.relative &&\r\n css`\r\n position: relative;\r\n margin: ${_.theme.spacing(1.5)} 0;\r\n height: ${_.height || '100%'};\r\n background: transparent;\r\n `}\r\n ${_ =>\r\n _.fixed &&\r\n css`\r\n height: 100%;\r\n position: fixed;\r\n touch-action: none;\r\n `}\r\n`\r\nconst PositionContainer = styled.div`\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-17px, -17px);\r\n`\r\n\r\nexport interface AppSpinnerProps {\r\n show?: boolean\r\n relative?: boolean\r\n height?: string\r\n transparent?: boolean\r\n darkBackground?: boolean\r\n positionContainerStyles?: React.CSSProperties\r\n fixed?: boolean\r\n}\r\n\r\nconst AppSpinner: React.FC = ({\r\n show,\r\n relative,\r\n fixed,\r\n height,\r\n positionContainerStyles,\r\n transparent,\r\n darkBackground,\r\n ...props\r\n}) => {\r\n const [showSpinner, setShowSpinner] = React.useState(false)\r\n const mountedRef = React.useRef(null)\r\n React.useEffect(() => {\r\n if (show) {\r\n mountedRef.current = true\r\n setShowSpinner(true)\r\n }\r\n if (!show) {\r\n mountedRef.current = false\r\n }\r\n if (!show && !mountedRef.current) {\r\n setShowSpinner(false)\r\n }\r\n }, [show])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default AppSpinner\r\n","import { InputAdornment } from '@mui/material'\r\nimport { TextField, StandardTextFieldProps } from '@mui/material'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport { ReactComponent as ErrorIconSvg } from '../assets/icons/input_error_icon.svg'\r\n\r\nexport interface TextAreaProps extends StandardTextFieldProps {}\r\n\r\nconst ErrorIconStyled = styled(ErrorIconSvg)`\r\n align-self: center;\r\n margin-right: 10px;\r\n`\r\n\r\nexport const TextArea: React.FC = props => {\r\n const { ...other } = props\r\n return (\r\n \r\n \r\n \r\n ),\r\n disableUnderline: true,\r\n }}\r\n {...other}\r\n >\r\n )\r\n}\r\n\r\nexport default TextArea\r\n","import { TextField, TextFieldProps } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nconst StyledTextField = styled(TextField)`\r\n .MuiAutocomplete-inputRoot .MuiAutocomplete-input {\r\n padding-top: 2px !important;\r\n padding-bottom: 2px !important;\r\n }\r\n .MuiSelect-select {\r\n padding-top: 8px;\r\n padding-bottom: 8px;\r\n }\r\n .MuiOutlinedInput-inputMarginDense {\r\n padding-bottom: 8px;\r\n padding-top: 8px;\r\n }\r\n .MuiInputBase-root.Mui-error {\r\n border: none;\r\n }\r\n`\r\nexport interface AppTextFieldProps {}\r\n\r\nconst useStyles = makeStyles(_ => ({\r\n outlinedRoot: {\r\n borderRadius: 18,\r\n border: 0,\r\n // height: 34,\r\n '&:hover $notchedOutline': {\r\n borderColor: _.palette.primary.main,\r\n },\r\n '&$focused $notchedOutline': {\r\n borderColor: _.palette.primary.main,\r\n borderWidth: 1,\r\n },\r\n '&$disabled': {\r\n background: '#f5F5F5',\r\n },\r\n '&$disabled $notchedOutline': {\r\n borderColor: _.palette.divider,\r\n },\r\n },\r\n notchedOutline: {},\r\n focused: {},\r\n disabled: {},\r\n input: {},\r\n}))\r\n\r\nexport const AppTextField: React.FC = ({\r\n InputProps,\r\n ...props\r\n}) => {\r\n const classes = useStyles(props)\r\n const CustomInputProps = {\r\n classes: {\r\n root: classes.outlinedRoot,\r\n notchedOutline: classes.notchedOutline,\r\n focused: classes.focused,\r\n input: classes.input,\r\n disabled: classes.disabled,\r\n },\r\n }\r\n return (\r\n \r\n )\r\n}\r\nAppTextField.defaultProps = {\r\n variant: 'outlined',\r\n size: 'small',\r\n}\r\nexport default AppTextField\r\n","import React from 'react'\r\nimport clsx from 'clsx'\r\nimport { Checkbox, CheckboxProps } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst useStyles = makeStyles(_ => ({\r\n root: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n icon: {\r\n borderRadius: '50%',\r\n width: 16,\r\n height: 16,\r\n boxShadow:\r\n 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',\r\n backgroundColor: '#f5f8fa',\r\n backgroundImage:\r\n 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\r\n '$root.Mui-focusVisible &': {\r\n outline: '2px auto rgba(19,124,189,.6)',\r\n outlineOffset: 2,\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#ebf1f5',\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'none',\r\n background: 'rgba(206,217,224,.5)',\r\n },\r\n },\r\n checkedIcon: {\r\n backgroundColor: _.palette.primary.main,\r\n backgroundImage:\r\n 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&:before': {\r\n display: 'block',\r\n width: 16,\r\n height: 16,\r\n backgroundImage:\r\n \"url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath\" +\r\n \" fill-rule='evenodd' clip-rule='evenodd' d='M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 \" +\r\n \"1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z' fill='%23fff'/%3E%3C/svg%3E\\\")\",\r\n content: '\"\"',\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#106ba3',\r\n },\r\n },\r\n}))\r\n\r\n// Inspired by blueprintjs\r\nexport function AppCheckbox(props: CheckboxProps) {\r\n const classes = useStyles()\r\n\r\n return (\r\n }\r\n icon={}\r\n inputProps={{ 'aria-label': 'decorative checkbox' }}\r\n {...props}\r\n />\r\n )\r\n}\r\n","import {\r\n Avatar,\r\n List,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemText,\r\n} from '@mui/material'\r\nimport React from 'react'\r\nimport { AppTypography, SharedIcon } from 'shared'\r\nimport styled from 'styled-components'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nexport interface AppHeaderProps {\r\n topText: string\r\n bottomText: string\r\n iconSrc: string\r\n hasRightElement?: boolean\r\n}\r\n\r\nconst StyledList = styled(List)`\r\n padding: 0;\r\n li {\r\n padding: 0;\r\n }\r\n`\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n width: 60,\r\n overflow: 'initial',\r\n backgroundColor: 'inherit',\r\n marginRight: 16,\r\n },\r\n}))\r\nexport const AppHeader: React.FC = ({\r\n bottomText,\r\n iconSrc,\r\n topText,\r\n}) => {\r\n const classes = useStyles()\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {topText}}\r\n secondary={\r\n \r\n {bottomText}\r\n \r\n }\r\n />\r\n \r\n \r\n )\r\n}\r\nAppHeader.defaultProps = {}\r\nexport default AppHeader\r\n","import { SnackbarProvider, SnackbarProviderProps } from 'notistack'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { SharedIcon } from 'shared'\r\nimport { layoutSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled, { css } from 'styled-components'\r\nimport { BOTTOM_BAR_HEIGHT } from './layout/constants'\r\n\r\nconst StyledSnackbarProvider = styled(SnackbarProvider)<{\r\n $hasBottomGutter?: boolean\r\n $gutterSize?: number\r\n}>`\r\n svg {\r\n min-width: 1em;\r\n min-height: 1em;\r\n font-size: 2em;\r\n padding-right: 5px;\r\n }\r\n ${_ =>\r\n _.$hasBottomGutter &&\r\n css`\r\n margin-bottom: ${_.$gutterSize}px;\r\n `}\r\n`\r\nStyledSnackbarProvider.defaultProps = {\r\n $gutterSize: BOTTOM_BAR_HEIGHT,\r\n}\r\nexport interface AppSnackBarProviderProps extends SnackbarProviderProps {\r\n hasBottomGutter?: boolean\r\n gutterSize?: number\r\n}\r\n\r\nexport const AppSnackBarProvider: React.FC = ({\r\n hasBottomGutter,\r\n gutterSize,\r\n ...props\r\n}) => {\r\n const notistackRef = React.createRef()\r\n const dispatch = useAppDispatch()\r\n const { autoToogleSnackGap, bottomMenu } = useSelector(\r\n layoutSlice.stateSelectors\r\n )\r\n return (\r\n ,\r\n }}\r\n maxSnack={4}\r\n dense\r\n preventDuplicate\r\n ref={notistackRef}\r\n autoHideDuration={2500}\r\n TransitionProps={{\r\n onEntered: () => {\r\n autoToogleSnackGap &&\r\n dispatch(layoutSlice.actions.setSnackbarGutter(true))\r\n },\r\n onExiting: () => {\r\n autoToogleSnackGap &&\r\n dispatch(layoutSlice.actions.setSnackbarGutter(false))\r\n },\r\n }}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center',\r\n }}\r\n {...props}\r\n >\r\n {props.children}\r\n \r\n )\r\n}\r\nAppSnackBarProvider.defaultProps = {\r\n hasBottomGutter: false,\r\n}\r\nexport default AppSnackBarProvider\r\n","import { ButtonProps, DialogTitle, Typography } from '@mui/material'\r\nimport { DialogProps } from '@mui/material'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppDialog } from 'shared'\r\nimport AppButton, { AppButtonProps } from 'shared/AppButton'\r\nimport FlexBox from 'shared/FlexBox'\r\nimport styled from 'styled-components'\r\nimport { Translations } from 'utils'\r\nimport { SharedIcon } from 'shared'\r\nimport { NARROW_INNER_WIDTH } from 'shared/layout/constants'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\n/**\r\n * NOTE: Popup with better customization for use inside components\r\n */\r\nconst Space = styled.div<{ gap?: number }>`\r\n width: 100%;\r\n padding-bottom: ${_ => _.theme.spacing(_.gap)};\r\n`\r\nSpace.defaultProps = {\r\n gap: 1,\r\n}\r\nconst Text = styled(Typography)`\r\n max-width: ${NARROW_INNER_WIDTH}px;\r\n`\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n title: {\r\n fontWeight: 'bold',\r\n maxWidth: NARROW_INNER_WIDTH,\r\n margin: 'auto',\r\n },\r\n}))\r\n\r\nexport type PopupButton = {\r\n text?: string\r\n preventClose?: boolean\r\n} & AppButtonProps\r\nexport type PopupProps = {\r\n variant?: 'info' | 'success' | 'warning' | 'error' | 'delete'\r\n title?: string\r\n description?: string\r\n closePopup?: () => void\r\n customIcon?: JSX.Element\r\n buttons?: PopupButton[]\r\n noButtons?: boolean\r\n noIcon?: boolean\r\n children?: React.ReactNode\r\n disableBackdropClick?: boolean\r\n} & DialogProps\r\n\r\nconst PopupIcon: React.FC<{ variant: PopupProps['variant'] }> = props => {\r\n const icon = {\r\n info: ,\r\n success: ,\r\n warning: ,\r\n error: ,\r\n delete: ,\r\n }\r\n\r\n return
{icon[props.variant]}
\r\n}\r\n\r\nexport const AppPopup: React.FC = props => {\r\n const {\r\n variant,\r\n title,\r\n description,\r\n customIcon,\r\n closePopup,\r\n buttons,\r\n noButtons,\r\n noIcon,\r\n disableBackdropClick,\r\n ...dialogProps\r\n } = props\r\n\r\n const classes = useStyles()\r\n const { t } = useTranslation()\r\n const buttonColor: {\r\n info: ButtonProps['color']\r\n error: ButtonProps['color']\r\n success: ButtonProps['color']\r\n warning: ButtonProps['color']\r\n delete: ButtonProps['color']\r\n } = {\r\n info: 'primary',\r\n error: 'secondary',\r\n success: 'primary',\r\n warning: 'primary',\r\n delete: 'secondary',\r\n }\r\n const buttonText = {\r\n info: t(Translations.OK),\r\n error: t(Translations.OK),\r\n success: t(Translations.OK),\r\n warning: t(Translations.CLOSE),\r\n delete: t(Translations.CANCEL),\r\n }\r\n const buttonSecondText = {\r\n info: t(Translations.TRY_AGAIN),\r\n error: t(Translations.TRY_AGAIN),\r\n success: t(Translations.TRY_AGAIN),\r\n warning: t(Translations.TRY_AGAIN),\r\n delete: t(Translations.DELETE),\r\n }\r\n\r\n const renderButtons = () => {\r\n if (!buttons) return null\r\n\r\n const validButtons = buttons.filter(el => el)\r\n\r\n // empty array, defult button (OK)\r\n if (!validButtons.length) {\r\n return (\r\n \r\n {buttonText[variant]}\r\n \r\n )\r\n }\r\n\r\n // custom button\r\n if (validButtons.length === 1) {\r\n return validButtons.map(({ preventClose, ...prop }, i) => (\r\n {\r\n !preventClose && closePopup()\r\n prop.onClick && prop.onClick(e)\r\n }}\r\n >\r\n {prop.text || buttonText[variant]}\r\n \r\n ))\r\n }\r\n\r\n // up to 2 default buttons\r\n if (validButtons.length > 1) {\r\n return validButtons.map(({ preventClose, ...prop }, i) => (\r\n {\r\n !preventClose && closePopup()\r\n prop.onClick && prop.onClick(e)\r\n }}\r\n >\r\n {prop.text || (!i ? buttonSecondText[variant] : buttonText[variant])}\r\n \r\n ))\r\n }\r\n }\r\n\r\n return (\r\n {\r\n if (\r\n (disableBackdropClick && reason !== 'backdropClick') ||\r\n !disableBackdropClick\r\n ) {\r\n closePopup()\r\n }\r\n }}\r\n fullWidth={false}\r\n {...dialogProps}\r\n >\r\n {!noIcon &&\r\n (customIcon ? (\r\n
{customIcon}
\r\n ) : (\r\n \r\n ))}\r\n {title && (\r\n \r\n {title}\r\n \r\n )}\r\n {description && (\r\n <>\r\n {description}\r\n \r\n \r\n )}\r\n {props.children}\r\n {!noButtons && {renderButtons()}}\r\n \r\n )\r\n}\r\nAppPopup.defaultProps = {\r\n buttons: [],\r\n variant: 'info',\r\n // onClick: () => undefined,\r\n disableBackdropClick: false,\r\n}\r\n\r\nexport default AppPopup\r\n","import React from 'react'\r\nimport { AppPopup, PopupProps } from './AppPopup'\r\n\r\nexport type SetPopupProps = Omit\r\n\r\nconst initial = {\r\n showPopup(arg: boolean) {\r\n undefined\r\n },\r\n setPopup(args: SetPopupProps) {\r\n undefined\r\n },\r\n mounted: false,\r\n}\r\nexport const PopupContext = React.createContext(initial)\r\n\r\nexport const usePopup = () => {\r\n return React.useContext(PopupContext)\r\n}\r\n\r\nexport const PopupProvider: React.FC = ({ children }) => {\r\n const [show, setShow] = React.useState(false)\r\n const [popupProps, setPopupProps] = React.useState({})\r\n const mountedRef = React.useRef(false)\r\n const showPopup = (arg: boolean) => {\r\n if (mountedRef.current) {\r\n setShow(arg)\r\n }\r\n }\r\n const setPopup = (args: SetPopupProps) => {\r\n if (mountedRef.current) {\r\n setPopupProps(args)\r\n }\r\n }\r\n\r\n mountedRef.current = true\r\n React.useEffect(\r\n () => () => {\r\n mountedRef.current = false\r\n },\r\n []\r\n )\r\n\r\n return (\r\n \r\n {children}\r\n setShow(false)}\r\n // TransitionProps={{\r\n // onExited: () => setPopupProps({}),\r\n // }}\r\n {...popupProps}\r\n open={show}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default PopupProvider\r\n","import moment from 'moment'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { DetailsBox } from 'shared'\r\nimport styled, { css, keyframes } from 'styled-components'\r\nimport Translations from 'utils/translations'\r\nimport AppTypography from './AppTypography'\r\n\r\nconst rotate = keyframes`\r\n\tfrom { transform: rotate(0deg); }\r\n\tto { transform: rotate(360deg); }\r\n`\r\nconst SpinnerWrapper = styled.div`\r\n width: 170px;\r\n height: 170px;\r\n position: relative;\r\n margin: auto;\r\n`\r\n\r\nconst Spinner = styled.div<{ isRunning?: boolean }>`\r\n ${_ =>\r\n _.isRunning &&\r\n css`\r\n animation: ${rotate} 1s linear infinite;\r\n `}\r\n background: ${_ =>\r\n _.isRunning ? _.theme.palette.primary.main : _.theme.palette.divider};\r\n border-radius: 50%;\r\n height: 170px;\r\n width: 170px;\r\n position: relative;\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n border-radius: 50%;\r\n ${_ =>\r\n _.isRunning &&\r\n css`\r\n background: linear-gradient(0deg, #dbdbdb 50%, #dbdbdbe6 100%) 0% 0%,\r\n linear-gradient(90deg, #dbdbdbe6 0%, hsla(0, 0%, 100%, 0.6) 100%) 100%\r\n 0%,\r\n linear-gradient(\r\n 180deg,\r\n hsla(0, 0%, 100%, 0.6) 0%,\r\n hsla(0, 0%, 100%, 0.3) 100%\r\n )\r\n 100% 100%,\r\n linear-gradient(\r\n 360deg,\r\n hsla(0, 0%, 100%, 0.3) 0%,\r\n hsla(0, 0%, 100%, 0) 100%\r\n )\r\n 0% 100%;\r\n `}\r\n background-repeat: no-repeat;\r\n background-size: 50% 50%;\r\n top: -1px;\r\n bottom: -1px;\r\n left: -1px;\r\n right: -1px;\r\n }\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n background: #f5f5f5;\r\n border-radius: 50%;\r\n top: 3%;\r\n bottom: 3%;\r\n left: 3%;\r\n right: 3%;\r\n }\r\n`\r\nconst SpinnerContent = styled.div`\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n text-align: center;\r\n`\r\n\r\nexport interface TimeSpinnerProps {\r\n isRunning?: boolean\r\n parkingBeginDateTime?: string\r\n parkingExpireDateTime?: string\r\n /**in minutes;\r\n * additional times for payment and leave lot;\r\n * will be substracted from expireDateTime*/\r\n graceMinutes?: number\r\n currentDateTime?: string\r\n refCurrentTime?: number\r\n carId: string\r\n}\r\n\r\nexport const TimeSpinner: React.FC = ({\r\n isRunning,\r\n currentDateTime,\r\n parkingBeginDateTime,\r\n refCurrentTime,\r\n graceMinutes,\r\n parkingExpireDateTime,\r\n ...props\r\n}) => {\r\n const { t } = useTranslation()\r\n const [elapsedTime, setElapsedTime] = React.useState('')\r\n\r\n const getElapsedTimeString = () => {\r\n const runningDuration = moment.duration(\r\n moment(currentDateTime).diff(parkingBeginDateTime) +\r\n Date.now() -\r\n refCurrentTime,\r\n 'milliseconds'\r\n )\r\n const pausedDuration = moment.duration(\r\n moment(parkingExpireDateTime).diff(parkingBeginDateTime) -\r\n graceMinutes * 60000,\r\n 'milliseconds'\r\n )\r\n\r\n return (isRunning ? runningDuration : pausedDuration).format('HH:mm:ss', {\r\n trim: false,\r\n })\r\n }\r\n\r\n React.useEffect(() => {\r\n setElapsedTime(getElapsedTimeString())\r\n let timer: any\r\n if (isRunning) {\r\n timer = setInterval(() => {\r\n setElapsedTime(getElapsedTimeString())\r\n }, 1000)\r\n }\r\n return () => clearInterval(timer)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isRunning])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t(Translations.PARKING_TIMER)}:\r\n \r\n \r\n {elapsedTime}\r\n \r\n \r\n \r\n {moment(parkingBeginDateTime).format('MMM DD')}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default TimeSpinner\r\n","import { Alert, AlertProps } from '@mui/material'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport AppTypography, { AppTypographyProps } from './AppTypography'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\ninterface AlertWrapperProps {\r\n /** MUI spacing */\r\n gutterTop?: number\r\n}\r\nconst AlertWrapper = styled.div`\r\n padding-top: ${_ => _.theme.spacing(_.gutterTop)};\r\n`\r\nAlertWrapper.defaultProps = {\r\n gutterTop: 2,\r\n}\r\nexport interface AppAlertProps extends AlertProps, AlertWrapperProps {\r\n typographyProps?: AppTypographyProps\r\n}\r\n\r\nconst useStyles = makeStyles(_ => ({\r\n message: { width: '100%' },\r\n}))\r\n\r\nexport const AppAlert: React.FC = ({\r\n typographyProps,\r\n gutterTop,\r\n ...props\r\n}) => {\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n )\r\n}\r\nAppAlert.defaultProps = {\r\n severity: 'info',\r\n icon: false,\r\n typographyProps: {\r\n color: 'primary',\r\n weight: 'bold',\r\n align: 'center',\r\n },\r\n}\r\nexport default AppAlert\r\n","import { InputBase, InputBaseProps } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nconst StyledAppInput = styled(InputBase)`\r\n /* .MuiAutocomplete-inputRoot .MuiAutocomplete-input {\r\n padding-top: 2px !important;\r\n padding-bottom: 2px !important;\r\n } */\r\n /* .MuiSelect-root {\r\n background: #f5f5f5;\r\n border-color: #d2d2d2;\r\n } */\r\n /* .MuiSelect-root {\r\n padding-top: 8px;\r\n padding-bottom: 8px;\r\n }\r\n .MuiOutlinedInput-inputMarginDense {\r\n padding-bottom: 8px; \r\n padding-top: 8px; */\r\n /* } */\r\n`\r\nexport interface AppInputProps {}\r\n\r\nconst useStyles = makeStyles(_ => ({\r\n outlinedRoot: {\r\n borderRadius: 18,\r\n // border: 0,\r\n // height: 34,\r\n '&:hover $notchedOutline': {\r\n borderColor: _.palette.primary.main,\r\n },\r\n '&$focused $notchedOutline': {\r\n borderColor: _.palette.primary.main,\r\n borderWidth: 1,\r\n },\r\n // '&$disabled': {\r\n // background: '#f5F5F5',\r\n // },\r\n // '&$disabled $notchedOutline': {\r\n // borderColor: _.palette.divider,\r\n // },\r\n },\r\n notchedOutline: {},\r\n focused: {},\r\n disabled: {},\r\n input: {},\r\n}))\r\n\r\nexport const AppInput: React.FC = ({ ...props }) => {\r\n const classes = useStyles(props)\r\n const CustomInputProps = {\r\n classes: {\r\n root: classes.outlinedRoot,\r\n notchedOutline: classes.notchedOutline,\r\n focused: classes.focused,\r\n input: classes.input,\r\n disabled: classes.disabled,\r\n },\r\n }\r\n return \r\n}\r\n// AppInput.defaultProps = {\r\n// variant: 'outlined',\r\n// size: 'small',\r\n// }\r\nexport default AppInput\r\n","import { Fade } from '@mui/material'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { adsSlice, layoutSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport { BOTTOM_BAR_HEIGHT, INNER_WIDTH } from './layout/constants'\r\n\r\nconst AdSpace = styled.div<{ height: string }>`\r\n height: ${_ => _.height};\r\n`\r\nconst AdWrapper = styled.div<{ height: string }>`\r\n position: fixed;\r\n bottom: ${BOTTOM_BAR_HEIGHT}px;\r\n height: ${_ => _.height};\r\n left: 50%;\r\n width: 100%;\r\n max-width: ${INNER_WIDTH}px;\r\n z-index: 1;\r\n transform: translateX(-50%);\r\n img {\r\n height: ${_ => _.height};\r\n }\r\n`\r\n\r\nexport interface AdProps {}\r\n\r\nexport const Ad: React.FC = props => {\r\n const adsToAppend = useSelector(adsSlice.selectAdsToAppend)\r\n const [initAd, setInitAd] = React.useState('')\r\n const { scriptString } = useSelector(adsSlice.stateSelectors)\r\n const { innerWidth, height } = useSelector(layoutSlice.stateSelectors)\r\n const [adHeight, setAdHeight] = React.useState('0')\r\n const [runScript, setRunScript] = React.useState(false)\r\n const dispatch = useAppDispatch()\r\n\r\n React.useEffect(() => {\r\n if (typeof innerWidth === 'number' && typeof height === 'number') {\r\n const adHeight = Math.round((innerWidth * 6) / 14)\r\n const maxHeight = Math.round(Math.min(height / 3, 200))\r\n if (adHeight > maxHeight) {\r\n setAdHeight(`${maxHeight}px`)\r\n } else {\r\n setAdHeight(`${adHeight}px`)\r\n }\r\n }\r\n }, [height, innerWidth])\r\n\r\n React.useEffect(() => {\r\n if (initAd && scriptString && !runScript) {\r\n try {\r\n Function(scriptString)()\r\n setRunScript(true)\r\n } catch (err) {\r\n console.warn('Ads script load failed', err)\r\n dispatch(adsSlice.actions.removeScriptString())\r\n }\r\n }\r\n }, [scriptString, runScript, initAd, dispatch])\r\n\r\n React.useEffect(() => {\r\n if (!initAd && adsToAppend.length) {\r\n setInitAd(adsToAppend[0].fullHtmlString)\r\n dispatch(\r\n adsSlice.actions.removeAdsToAppend([adsToAppend[0].advertisementUrl])\r\n )\r\n }\r\n }, [adsToAppend, dispatch, initAd])\r\n\r\n React.useEffect(() => {\r\n if (initAd && adsToAppend.length && runScript) {\r\n adsToAppend.forEach(el => {\r\n const fragment = document\r\n .createRange()\r\n .createContextualFragment(el.fullHtmlString)\r\n fragment\r\n .querySelectorAll('.slide')\r\n ?.forEach(node =>\r\n document\r\n .getElementById('tez-slideshow-container')\r\n ?.appendChild(node)\r\n )\r\n })\r\n dispatch(\r\n adsSlice.actions.removeAdsToAppend(\r\n adsToAppend.map(({ advertisementUrl }) => advertisementUrl)\r\n )\r\n )\r\n }\r\n }, [adsToAppend, dispatch, initAd, runScript])\r\n\r\n React.useEffect(\r\n () => () => {\r\n dispatch(adsSlice.actions.addAllAdsToAppend())\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n )\r\n\r\n return (\r\n \r\n
\r\n {initAd && }\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Ad\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport AppButton, { AppButtonProps } from './AppButton'\r\nimport FlexBox from './FlexBox'\r\n\r\nexport const ButtonsWrapper = styled(FlexBox)`\r\n border-radius: 28px;\r\n background: rgba(50, 163, 245, 0.2);\r\n .MuiButton-outlined {\r\n background: white;\r\n border-color: #32a3f5;\r\n }\r\n`\r\nexport type AppTabButtonsOptions = Partial &\r\n Required>\r\n\r\nexport interface AppTabButtonsProps {\r\n selected: string\r\n onClick: (value: string) => void\r\n options: AppTabButtonsOptions[]\r\n}\r\n\r\nexport const AppTabButtons: React.FC = ({\r\n selected,\r\n onClick,\r\n options,\r\n}) => {\r\n if (!options || !options.length) return null\r\n return (\r\n \r\n {options.map(el => (\r\n setTimeout(() => onClick(el.name), 200)}\r\n minWidth=\"100%\"\r\n translation={el.translation}\r\n {...el}\r\n />\r\n ))}\r\n \r\n )\r\n}\r\n\r\nexport default AppTabButtons\r\n","import { Divider } from '@mui/material'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport styled from 'styled-components'\r\nimport { Translations } from 'utils'\r\nimport AppTypography from './AppTypography'\r\n\r\nconst Wrapper = styled.div`\r\n position: relative;\r\n margin: 6px;\r\n p {\r\n position: absolute;\r\n background: white;\r\n top: -12px;\r\n left: 50%;\r\n z-index: 1;\r\n transform: translate(-50%, -50%);\r\n padding: 0 10px;\r\n top: 0;\r\n color: ${_ => _.theme.palette.divider};\r\n text-transform: uppercase;\r\n }\r\n`\r\n\r\nexport interface TextDividerProps {\r\n translation?: keyof typeof Translations\r\n}\r\n\r\nexport const TextDivider: React.FC = props => {\r\n const { t } = useTranslation()\r\n return (\r\n \r\n \r\n {props.translation && (\r\n \r\n {t(Translations[props.translation])}\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default TextDivider\r\n","import { useTranslation } from 'react-i18next'\r\nimport styled from 'styled-components'\r\nimport { Translations } from 'utils'\r\nimport { Input } from './Input'\r\nimport React from 'react'\r\n\r\nexport const PhoneNumberContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n margin-bottom: 15px;\r\n`\r\n\r\nexport const PhoneNumberInput: typeof Input = props => {\r\n const { t } = useTranslation()\r\n return (\r\n \r\n )\r\n}\r\nexport { default as CountryCodeInput } from './CountryCodeInput'\r\nexport default PhoneNumberInput\r\n","import { MenuItem, TextFieldProps } from '@mui/material'\r\nimport { SelectListOptionsProps } from 'shared/AppSelectListField/SelectListOptions'\r\nimport React from 'react'\r\nimport { AppTextField, AppTypography } from 'shared'\r\n\r\nexport interface AppSelectListFieldProps extends SelectListOptionsProps {\r\n value: number\r\n onChange: (\r\n e: React.ChangeEvent\r\n ) => void\r\n disabled?: boolean\r\n sufix: string\r\n name?: string\r\n $innerSufix?: boolean\r\n}\r\n\r\nexport const AppSelectListField: React.FC<\r\n AppSelectListFieldProps & TextFieldProps\r\n> = props => {\r\n const SelectListOptions = React.useMemo(() => {\r\n const arr = []\r\n for (let i = 0; i <= props.max; i = i + props.interval) {\r\n arr.push(i)\r\n }\r\n\r\n return arr.map(el => (\r\n \r\n {`${el}${props.$innerSufix ? ` ${props.sufix}` : ''}`}\r\n \r\n ))\r\n }, [props.$innerSufix, props.interval, props.max, props.sufix])\r\n\r\n return (\r\n <>\r\n \r\n {SelectListOptions}\r\n \r\n {props.sufix && !props.$innerSufix && (\r\n {props.sufix}\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default AppSelectListField\r\n","import moment from 'moment'\r\nimport React from 'react'\r\n\r\nexport const useCounter = (endDate: string, onEnd?: () => void) => {\r\n const [isRunning, setIsRunning] = React.useState(true)\r\n const getElapsedSeconds = React.useCallback(() => {\r\n let seconds = moment\r\n .duration(moment(endDate).diff(moment(), 'millisecond'))\r\n .asSeconds()\r\n if (seconds < 0) {\r\n seconds = 0\r\n }\r\n return seconds\r\n }, [endDate])\r\n\r\n const [seconds, setSeconds] = React.useState(getElapsedSeconds())\r\n const getElapsedTimeString = React.useCallback(\r\n (seconds: number) =>\r\n moment.duration(seconds, 'seconds').format('mm:ss', {\r\n trim: false,\r\n }),\r\n []\r\n )\r\n const [timeString, setTimeString] = React.useState(\r\n getElapsedTimeString(getElapsedSeconds())\r\n )\r\n\r\n React.useEffect(() => {\r\n if (isRunning) {\r\n const timer = setInterval(() => {\r\n setSeconds(getElapsedSeconds())\r\n }, 1000)\r\n return () => {\r\n clearInterval(timer)\r\n }\r\n }\r\n }, [getElapsedSeconds, isRunning])\r\n\r\n React.useEffect(() => {\r\n setTimeString(getElapsedTimeString(seconds))\r\n }, [getElapsedTimeString, seconds])\r\n\r\n React.useEffect(() => {\r\n if (seconds > 0) {\r\n setIsRunning(true)\r\n } else {\r\n setIsRunning(false)\r\n }\r\n }, [getElapsedSeconds, getElapsedTimeString, seconds])\r\n\r\n React.useEffect(() => {\r\n if (!isRunning) {\r\n onEnd()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isRunning])\r\n\r\n return timeString\r\n}\r\n\r\nexport default useCounter\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport Translations from 'utils/translations'\r\nimport AppAlert from '../AppAlert'\r\nimport { useCounter } from './useCounter'\r\n\r\nexport interface CounterProps {\r\n title: keyof typeof Translations\r\n onEnd?: () => void\r\n endTime: string\r\n}\r\n\r\nexport const Counter: React.FC = props => {\r\n const { t } = useTranslation()\r\n const timeString = useCounter(props.endTime, props.onEnd)\r\n\r\n return (\r\n \r\n {`${t(Translations[props.title])}: ${timeString}`}\r\n \r\n )\r\n}\r\nCounter.defaultProps = {\r\n onEnd: () => undefined,\r\n}\r\nexport default Counter\r\n","import { Grid, GridProps } from '@mui/material'\r\nimport React from 'react'\r\n\r\nexport interface GridWrapperProps extends GridProps {\r\n itemProps?: GridProps\r\n}\r\n\r\nexport const GridWrapper: React.FC = ({\r\n itemProps,\r\n ...props\r\n}) => {\r\n const renderChildren = () =>\r\n React.Children.map(props.children, child =>\r\n React.isValidElement(child) ? (\r\n \r\n {child}\r\n \r\n ) : null\r\n )\r\n if (!renderChildren().length) return null\r\n return {renderChildren()}\r\n}\r\nGridWrapper.defaultProps = {\r\n spacing: 2,\r\n container: true,\r\n}\r\nexport default GridWrapper\r\n","import {\r\n SHOW_LOADER,\r\n HIDE_LOADER,\r\n SHOW_LOADING_PAGE,\r\n HIDE_LOADING_PAGE,\r\n} from './constants'\r\n\r\nexport const showLoader = (spinnerNames?: string[]) => ({\r\n type: SHOW_LOADER as typeof SHOW_LOADER,\r\n spinnerNames: spinnerNames || [],\r\n})\r\n\r\nexport const hideLoader = (spinnerNames?: string[]) => ({\r\n type: HIDE_LOADER as typeof HIDE_LOADER,\r\n spinnerNames: spinnerNames || [],\r\n})\r\n\r\nexport const showLoadingPage = () => ({\r\n type: SHOW_LOADING_PAGE as typeof SHOW_LOADING_PAGE,\r\n})\r\n\r\nexport const hideLoadingPage = () => ({\r\n type: HIDE_LOADING_PAGE as typeof HIDE_LOADING_PAGE,\r\n})\r\n\r\nexport type Actions =\r\n | ReturnType\r\n | ReturnType\r\n | ReturnType\r\n | ReturnType\r\n","import * as Yup from 'yup'\r\nimport Translations from 'utils/translations'\r\nimport { TFunction } from 'i18next'\r\n\r\nexport const passwordValidationShape = (t: TFunction) =>\r\n Yup.object().shape({\r\n password: Yup.string()\r\n .required(t(Translations.PASSWORD_CANNOT_BE_EMPTY))\r\n .matches(\r\n /(?=.*[A-Z]{1,})(?=.*[0-9]{1,})(?=.*[^A-Za-z0-9])(?=.*.{8,})/,\r\n t(Translations.MINIMUM_8_CHARACTERS_AT_LEAST_ONE_CAPITAL)\r\n ),\r\n confirmPassword: Yup.string()\r\n .required(t(Translations.CONFIRM_PASSWORD_CANNOT_BE_EMPTY))\r\n .oneOf([Yup.ref('password'), null], t(Translations.PASSWORD_NOT_MATCH)),\r\n })\r\n","import { Form, Formik } from 'formik'\r\nimport { useChangeLayout } from 'hooks'\r\nimport { useSnackbar } from 'notistack'\r\nimport { passwordValidationShape } from 'pages/auth/validations'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n AppButton,\r\n FlexBox,\r\n Input,\r\n PaddingContainer,\r\n PageHeading,\r\n} from 'shared'\r\nimport { Translations, blurLastInput } from 'utils'\r\n\r\ninterface SetNewPasswordProps {\r\n handleSubmit(data: string): void\r\n}\r\n\r\nconst SetNewPassword: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n useChangeLayout()\r\n const { enqueueSnackbar } = useSnackbar()\r\n\r\n return (\r\n \r\n \r\n {\r\n props.handleSubmit(data.password)\r\n }}\r\n >\r\n {({\r\n values,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n validateForm,\r\n handleSubmit,\r\n }) => (\r\n
\r\n \r\n {\r\n blurLastInput(e)\r\n }}\r\n />\r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n handleSubmit()\r\n } else {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.SUBMIT)}\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default SetNewPassword\r\n","import * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router'\r\nimport paths from 'routing/paths'\r\nimport {\r\n AppButton,\r\n FlexBox,\r\n FullLayout,\r\n PaddingContainer,\r\n PageHeading,\r\n SharedIcon,\r\n} from 'shared'\r\nimport { customerSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { UserRole } from 'typedef/customer'\r\nimport Translations from 'utils/translations'\r\n\r\ninterface SetNewPasswordCompleteProps {}\r\n\r\nconst SetNewPasswordComplete: React.FunctionComponent<\r\n SetNewPasswordCompleteProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n const { push } = useHistory()\r\n const dispatch = useAppDispatch()\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n dispatch(customerSlice.actions.setRole(UserRole.User))\r\n push(paths.home.map)\r\n }}\r\n >\r\n {t(Translations.OK)}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SetNewPasswordComplete\r\n","import { createTheme } from '@mui/material/styles'\r\nimport { Theme } from '@mui/material'\r\ndeclare module '@mui/material/styles' {\r\n interface Palette {\r\n pin: Palette['primary']\r\n }\r\n interface PaletteOptions {\r\n pin: PaletteOptions['primary']\r\n }\r\n}\r\n\r\nexport const theme = createTheme({\r\n palette: {\r\n primary: {\r\n light: '#DCF3FF',\r\n main: '#32a3f5',\r\n dark: '#0485E3',\r\n contrastText: '#fff',\r\n },\r\n secondary: {\r\n light: '#FFEBEB',\r\n main: '#FF3333',\r\n },\r\n text: {\r\n primary: '#123123',\r\n secondary: '#646464',\r\n },\r\n divider: '#DBDBDB',\r\n pin: {\r\n main: '#3366EC',\r\n dark: '#1411A1',\r\n light: '#32A3F5',\r\n },\r\n },\r\n typography: {\r\n fontFamily: '\"SF Pro Display\", \"Helvetica\", \"Arial\", sans-serif',\r\n h1: {\r\n fontSize: '1.15rem',\r\n fontWeight: 700,\r\n },\r\n h2: {\r\n fontSize: '1.25rem',\r\n fontWeight: 700,\r\n },\r\n h3: {\r\n fontSize: '1.15rem',\r\n fontWeight: 700,\r\n },\r\n h6: {\r\n fontWeight: 700,\r\n fontSize: '1.15rem',\r\n },\r\n subtitle1: {\r\n fontSize: '1.5rem',\r\n },\r\n subtitle2: {\r\n fontWeight: 700,\r\n fontSize: '2rem',\r\n },\r\n body2: {\r\n fontSize: '0.9rem',\r\n },\r\n },\r\n components: {\r\n MuiModal: {\r\n styleOverrides: {\r\n root: {\r\n '.MuiPickersYear-yearButton': {\r\n fontSize: '1.1rem',\r\n },\r\n },\r\n },\r\n },\r\n MuiFormControl: {\r\n styleOverrides: {\r\n root: {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n MuiDialogTitle: {\r\n styleOverrides: {\r\n root: {\r\n padding: '16px 8px',\r\n },\r\n },\r\n },\r\n MuiSelect: {\r\n styleOverrides: {\r\n select: {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n MuiInputBase: {\r\n styleOverrides: {\r\n root: {\r\n background: '#FFFFFF',\r\n border: '1.25px #D2D2D2 solid',\r\n borderRadius: '17px',\r\n '&.Mui-error': {\r\n border: '1.25px #FF3333 solid',\r\n },\r\n },\r\n inputMultiline: {\r\n padding: '10px 20px',\r\n color: '#222',\r\n\r\n '&::placeholder': {\r\n color: '#DBDBDB',\r\n opacity: '1',\r\n },\r\n },\r\n },\r\n },\r\n MuiTextField: {\r\n styleOverrides: {\r\n root: {\r\n borderRadius: '17px',\r\n background: '#FFFFFF',\r\n '&.Mui-error': {\r\n border: '1.25px #FF3333 solid',\r\n },\r\n '.MuiOutlinedInput-notchedOutline': {\r\n border: '1.25px #D2D2D2 solid!important',\r\n borderRadius: '17px',\r\n },\r\n '.Mui-focused': {\r\n '.MuiOutlinedInput-notchedOutline': {\r\n borderColor: '#32a3f5!important',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n})\r\n\r\ndeclare module '@mui/styles' {\r\n interface DefaultTheme extends Theme {}\r\n}\r\n\r\nexport type CustomTheme = Theme\r\n","import { createTheme } from '@mui/material/styles'\r\nimport { CustomTheme } from './theme'\r\n\r\nexport const whiteTheme = (theme: CustomTheme) =>\r\n createTheme({\r\n ...theme,\r\n palette: {\r\n ...theme.palette,\r\n primary: {\r\n main: '#fff',\r\n },\r\n text: {\r\n primary: '#fff',\r\n },\r\n },\r\n components: {\r\n ...theme.components,\r\n MuiTypography: {\r\n styleOverrides: {\r\n paragraph: {\r\n color: '#fff',\r\n },\r\n },\r\n },\r\n MuiButton: {\r\n styleOverrides: {\r\n text: {\r\n color: '#fff',\r\n '&:hover': { backgroundColor: 'rgba(255, 255, 255, 0.3)' },\r\n },\r\n containedPrimary: {\r\n color: '#FF3333',\r\n backgroundColor: '#fff',\r\n '&:hover': {\r\n backgroundColor: '#f5f5f5',\r\n },\r\n '&:disabled': {\r\n color: '#fff',\r\n backgroundColor: '#D2D2D2',\r\n },\r\n },\r\n outlinedPrimary: {\r\n color: '#fff',\r\n borderColor: '#fff',\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\r\n },\r\n },\r\n },\r\n },\r\n MuiStepper: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n MuiStepConnector: {\r\n styleOverrides: {\r\n line: {\r\n color: '#fff',\r\n },\r\n },\r\n },\r\n MuiStepIcon: {\r\n styleOverrides: {\r\n text: {\r\n fill: '#fff',\r\n },\r\n root: {\r\n fill: 'rgba(255,255,255,.2)',\r\n },\r\n },\r\n },\r\n MuiCircularProgress: {\r\n styleOverrides: {\r\n colorPrimary: {\r\n color: '#fff',\r\n },\r\n },\r\n },\r\n },\r\n })\r\n","import { createGlobalStyle } from 'styled-components'\r\nimport bg from 'assets/images/bg.png'\r\n\r\nexport const GlobalStyle = createGlobalStyle`\r\nbody, html { \r\nheight: 100%;\r\nmargin: 0;\r\noverscroll-behavior-y: contain;\r\nscrollbar-width: none;\r\n}\r\nhtml::-webkit-scrollbar,\r\nbody::-webkit-scrollbar,\r\n#root::-webkit-scrollbar {\r\n display: none;\r\n}\r\n#root {\r\nbackground-image: url(${bg});\r\nscrollbar-width: none;\r\nbackground-size: cover;\r\ntop: 0;\r\nwidth: 100%;\r\nmin-height: 100%;\r\nmargin: 0 auto;\r\n.snackbarProvider-anchorOriginBottomCenter {\r\n z-index:2;\r\n}\r\n/* for lists */\r\n.item-enter {\r\nopacity: 0;\r\n}\r\n.item-enter-active {\r\nopacity: 1;\r\n\r\ntransition: all 250ms ease-in;\r\n}\r\n.item-exit {\r\nopacity: 1;\r\n}\r\n.item-exit-active {\r\nopacity: 0;\r\ntransition: all 250ms ease-in;\r\n}\r\n}\r\n`\r\n","import { useChangeLayout } from 'hooks'\r\nimport * as React from 'react'\r\nimport { Redirect, RouteComponentProps, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { PageDialog } from 'shared'\r\nimport { showPopup } from 'store/globalPopup/actions'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\nimport { customerSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport SetNewPassword from './SetNewPassword'\r\nimport SetNewPasswordComplete from './SetNewPasswordComplete'\r\nimport { ThemeProvider } from '@mui/material/styles'\r\nimport { whiteTheme } from 'themes'\r\n\r\ninterface ResetPasswordProps extends RouteComponentProps {}\r\n\r\nconst ResetPassword = (props: ResetPasswordProps) => {\r\n const [success, setSuccess] = React.useState(false)\r\n const { token } = useParams<{ token: string }>()\r\n\r\n const dispatch = useAppDispatch()\r\n useChangeLayout()\r\n\r\n const onSubmit = async (password: string) => {\r\n dispatch(showLoader())\r\n const promise = await dispatch(\r\n customerSlice.resetPassword({ password, confirmToken: token })\r\n )\r\n dispatch(hideLoader())\r\n if (customerSlice.resetPassword.fulfilled.match(promise)) {\r\n setSuccess(true)\r\n } else {\r\n // FIXME: update to new popup system\r\n dispatch(\r\n showPopup({\r\n ...promise.payload,\r\n handleAdditionalButtonClick: () => onSubmit(password),\r\n })\r\n )\r\n }\r\n }\r\n\r\n if (!token) return \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ResetPassword\r\n","import * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n AppButton,\r\n FlexBox,\r\n FullLayout,\r\n PaddingContainer,\r\n PageHeading,\r\n SharedIcon,\r\n} from 'shared'\r\nimport Translations from '../../../../utils/translations'\r\n\r\ninterface SendMailCompleteProps {\r\n goBack: () => void\r\n}\r\n\r\nconst SendMailComplete: React.FunctionComponent<\r\n SendMailCompleteProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(Translations.OK)}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SendMailComplete\r\n","export const countryList: string[] = [\r\n 'af',\r\n 'eg',\r\n 'ax',\r\n 'al',\r\n 'dz',\r\n 'as',\r\n 'vi',\r\n 'um',\r\n 'ad',\r\n 'ao',\r\n 'ai',\r\n 'aq',\r\n 'ag',\r\n 'gq',\r\n 'ar',\r\n 'am',\r\n 'aw',\r\n 'ac',\r\n 'az',\r\n 'et',\r\n 'au',\r\n 'bs',\r\n 'bh',\r\n 'bd',\r\n 'bb',\r\n 'by',\r\n 'be',\r\n 'bz',\r\n 'bj',\r\n 'bm',\r\n 'bt',\r\n 'bo',\r\n 'bq',\r\n 'ba',\r\n 'bw',\r\n 'br',\r\n 'vg',\r\n 'io',\r\n 'bn',\r\n 'bg',\r\n 'bf',\r\n 'bi',\r\n 'cv',\r\n 'ea',\r\n 'cl',\r\n 'cn',\r\n 'ck',\r\n 'cr',\r\n 'ci',\r\n 'cw',\r\n 'dk',\r\n 'de',\r\n 'dg',\r\n 'dm',\r\n 'do',\r\n 'dj',\r\n 'ec',\r\n 'sv',\r\n 'er',\r\n 'ee',\r\n 'fk',\r\n 'fo',\r\n 'fj',\r\n 'fi',\r\n 'fr',\r\n 'gf',\r\n 'pf',\r\n 'tf',\r\n 'ga',\r\n 'gm',\r\n 'ge',\r\n 'gh',\r\n 'gi',\r\n 'gd',\r\n 'gr',\r\n 'gl',\r\n 'gp',\r\n 'gu',\r\n 'gt',\r\n 'gg',\r\n 'gn',\r\n 'gw',\r\n 'gy',\r\n 'ht',\r\n 'hn',\r\n 'in',\r\n 'id',\r\n 'iq',\r\n 'ir',\r\n 'ie',\r\n 'is',\r\n 'im',\r\n 'il',\r\n 'it',\r\n 'jm',\r\n 'jp',\r\n 'ye',\r\n 'je',\r\n 'jo',\r\n 'ky',\r\n 'kh',\r\n 'cm',\r\n 'ca',\r\n 'ic',\r\n 'kz',\r\n 'qa',\r\n 'ke',\r\n 'kg',\r\n 'ki',\r\n 'cc',\r\n 'co',\r\n 'km',\r\n 'cg',\r\n 'cd',\r\n 'xk',\r\n 'hr',\r\n 'cu',\r\n 'kw',\r\n 'la',\r\n 'ls',\r\n 'lv',\r\n 'lb',\r\n 'lr',\r\n 'ly',\r\n 'li',\r\n 'lt',\r\n 'lu',\r\n 'mg',\r\n 'mw',\r\n 'my',\r\n 'mv',\r\n 'ml',\r\n 'mt',\r\n 'ma',\r\n 'mh',\r\n 'mq',\r\n 'mr',\r\n 'mu',\r\n 'yt',\r\n 'mx',\r\n 'fm',\r\n 'mc',\r\n 'mn',\r\n 'me',\r\n 'ms',\r\n 'mz',\r\n 'mm',\r\n 'na',\r\n 'nr',\r\n 'np',\r\n 'nc',\r\n 'nz',\r\n 'ni',\r\n 'nl',\r\n 'ne',\r\n 'ng',\r\n 'nu',\r\n 'kp',\r\n 'mp',\r\n 'mk',\r\n 'nf',\r\n 'no',\r\n 'om',\r\n 'at',\r\n 'pk',\r\n 'ps',\r\n 'pw',\r\n 'pa',\r\n 'pg',\r\n 'py',\r\n 'pe',\r\n 'ph',\r\n 'pn',\r\n 'pl',\r\n 'pt',\r\n 'pr',\r\n 'md',\r\n 're',\r\n 'rw',\r\n 'ro',\r\n 'ru',\r\n 'sb',\r\n 'zm',\r\n 'ws',\r\n 'sm',\r\n 'st',\r\n 'sa',\r\n 'se',\r\n 'ch',\r\n 'sn',\r\n 'rs',\r\n 'sc',\r\n 'sl',\r\n 'zw',\r\n 'sg',\r\n 'sx',\r\n 'sk',\r\n 'si',\r\n 'so',\r\n 'hk',\r\n 'mo',\r\n 'es',\r\n 'sj',\r\n 'lk',\r\n 'bl',\r\n 'sh',\r\n 'kn',\r\n 'lc',\r\n 'mf',\r\n 'pm',\r\n 'vc',\r\n 'za',\r\n 'sd',\r\n 'gs',\r\n 'kr',\r\n 'ss',\r\n 'sr',\r\n 'sz',\r\n 'sy',\r\n 'tj',\r\n 'tw',\r\n 'tz',\r\n 'th',\r\n 'tl',\r\n 'tg',\r\n 'tk',\r\n 'to',\r\n 'tt',\r\n 'ta',\r\n 'td',\r\n 'cz',\r\n 'tn',\r\n 'tr',\r\n 'tm',\r\n 'tc',\r\n 'tv',\r\n 'ug',\r\n 'ua',\r\n 'hu',\r\n 'uy',\r\n 'uz',\r\n 'vu',\r\n 'va',\r\n 've',\r\n 'ae',\r\n 'us',\r\n 'gb',\r\n 'vn',\r\n 'wf',\r\n 'cx',\r\n 'eh',\r\n 'cf',\r\n 'cy',\r\n]\r\n","import { useTranslation } from 'react-i18next'\r\nimport styled from 'styled-components'\r\nimport { Translations } from 'utils'\r\nimport React, { useEffect, useState } from 'react'\r\nimport PhoneInput, { CountryData, PhoneInputProps } from 'react-phone-input-2'\r\nimport 'react-phone-input-2/lib/style.css'\r\nimport { FormikHandlers, useFormikContext } from 'formik'\r\nimport { countryList } from 'utils/phoneNumberInput'\r\nimport i from './NumberError.png'\r\nimport { PersonalData } from 'pages/auth/signup/SignUp'\r\n\r\nexport const PhoneNumberContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n`\r\n\r\nexport const StyledPhoneInput = styled(PhoneInput)`\r\n width: 100%;\r\n &.react-tel-input .form-control {\r\n border-radius: 32.5px;\r\n width: 100%;\r\n }\r\n &.react-tel-input .flag-dropdown {\r\n border-radius: 32.5px 0px 0px 32.5px;\r\n }\r\n\r\n &.react-tel-input .flag-dropdown .open {\r\n border-radius: 32.5px 0px 0px 32.5px;\r\n }\r\n &.react-tel-input .selected-flag {\r\n border-radius: 32.5px 0px 0px 32.5px;\r\n }\r\n &.react-tel-input :disabled {\r\n background-color: #dbdbdb !important;\r\n color: #646464;\r\n }\r\n &.react-tel-input input[disabled] + .flag-dropdown {\r\n cursor: not-allowed;\r\n background-color: #dbdbdb !important;\r\n opacity: 0.7;\r\n }\r\n &.react-tel-input .selected-flag {\r\n &:focus {\r\n background-color: #dbdbdb !important;\r\n }\r\n }\r\n &.react-tel-input .form-control.invalid-number {\r\n background-image: url(${i});\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n background-color: white;\r\n background-position-x: 97%;\r\n }\r\n`\r\n\r\nexport interface IPhoneInputProps extends PhoneInputProps {\r\n countryCodeFieldName: string\r\n phoneNumberFieldName: string\r\n disabled?: boolean\r\n errors?: string\r\n customHandleBlur?: (\r\n e: React.FocusEvent,\r\n handleBlur: FormikHandlers['handleBlur'],\r\n values: PersonalData\r\n ) => void\r\n}\r\n\r\nconst NewPhoneNumberInput = (props: IPhoneInputProps) => {\r\n const { t } = useTranslation()\r\n const [number, setNumber] = useState('')\r\n const { setFieldValue, handleBlur, values } = useFormikContext()\r\n const language = window.navigator.language\r\n\r\n const findMatchingCountry = (lang: string, countriesArray: string[]) => {\r\n const matchingCountry = countriesArray.find(country =>\r\n lang.includes(country.toLowerCase())\r\n )\r\n return matchingCountry || 'us'\r\n }\r\n\r\n const selectedCountry = findMatchingCountry(\r\n language.toLowerCase(),\r\n countryList\r\n )\r\n\r\n useEffect(() => {\r\n if (props.value) {\r\n setNumber(props.value)\r\n }\r\n }, [props.value])\r\n\r\n return (\r\n {\r\n setFieldValue(props.countryCodeFieldName, country.dialCode)\r\n setFieldValue(\r\n props.phoneNumberFieldName,\r\n number.slice(country.dialCode.length)\r\n )\r\n if (props.customHandleBlur) {\r\n props.customHandleBlur(e, handleBlur, {\r\n ...(values as PersonalData),\r\n phoneNumber: number.slice(country.dialCode.length),\r\n })\r\n }\r\n }}\r\n isValid={!props.errors}\r\n placeholder={t(Translations.COUNTRY_CODE_AND_PHONE_NUMBER)}\r\n value={props.value}\r\n onChange={value => {\r\n setNumber(value)\r\n }}\r\n />\r\n )\r\n}\r\nexport default NewPhoneNumberInput\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIFSURBVHgB3VbLUcNADJUCudMBLsH8ZrhhKgAqCFQAHTh0ABVgOiAVQG7MMIA7iOmASW5JbPFWdoLz2XUCPuXN7Pizu3rWSnoy0aaBqxZIEOxQv98i5oBEfFy9fEIS3Ce4i6jZ7PLra+Ky03ARyOFhGySfePQoTSMYD/j9nc2gLLvAuzvzjkajnq5d1yM5Pvaw+RnGYhi64jj+dhkR3/eo0QjV62bztMq7KYkcHPRkf/+a1gT2hLrXfGjl4pwktM4fHflmOMhu1Ibv75Tfz8RIz1nkhT8+bm2GEJczHRZg7x0uMY7yeimRuisSIi52klWRpleI12XZq1+PhkOTvhECn9A/ockj8gSvWotEzC1MPFFdYO5qFi4QiXg0Hn9RXUjTWAt8gQgVD5djqgkagomKkEMZ6kb56BLZ29ulmqC1ZvSwwPZ0htnkvjlTd5y2tjqQJ6pElnmF6M4RoVBVIIk6rv389rZqHE1RR5OHRukLHvEF5/PS8RcUWneJzOsuEBVFFuFoHpxGjI5huNbgaEPYapeLfzbrsuze5L4RRjuT5MM2netl4NRLXYjeAqLKRmYhudG9pj/NgW1kyMBnxOwFjey2qpFpux8MHlQJsux0mV46/xm0LzG3Kc+eDsiTSdYVXdj8Q5zA+LmuwdHbunH1z0nuXaCia/Rw9uck1rJAxla1+83DD0lLDZTTNG6tAAAAAElFTkSuQmCC\"","import styled from 'styled-components'\r\n\r\nconst PhoneNumberContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n margin-bottom: 15px;\r\n`\r\n\r\nexport default PhoneNumberContainer\r\n","import React, { useState, useEffect, useCallback } from 'react';\r\nimport { useGoogleReCaptcha } from 'react-google-recaptcha-v3';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\nimport axios from '../../../src/api';\r\nimport { VERIFY_HUMAN } from '../../../src/api/constants';\r\nimport { Response } from '../../typedef/api';\r\nimport { CAPTCHA_V2_ENABLE, CAPTCHA_V3_ENABLE, CAPTCHA_V2_KEY, CAPTCHA_V3_KEY\r\n , CAPTCHA_VALIDATE_REGISTRATION, CAPTCHA_VALIDATE_RESEND_PIN\r\n , CAPTCHA_VALIDATE_FORGOT_PASSWORD, CAPTCHA_VALIDATE_ADD_NUMBER_FOR_NOTIFICATION\r\n , CAPTCHA_VALIDATE_PAYMENT } from 'api/config'\r\n\r\nenum reCapthaVersion{\r\n v2 = 2, \r\n v3 = 3\r\n}\r\n\r\nexport enum validateFeature{\r\n Registration = 1,\r\n ResendPin = 2,\r\n ForgotPassword = 3,\r\n AddNumberForNotification = 4,\r\n Payment = 5\r\n}\r\n\r\ninterface HybridRecaptchaProps {\r\n onValidationSuccess: () => void;\r\n onValidationFailure?: () => void;\r\n onTokenReceived: (token: string) => void;\r\n feature: validateFeature;\r\n}\r\n\r\nconst HybridRecaptchaContent: React.FC = ({\r\n onValidationSuccess,\r\n onValidationFailure,\r\n onTokenReceived, \r\n feature,\r\n}): React.ReactElement => {\r\n const [showRecaptchaV2, setShowRecaptchaV2] = useState(false); \r\n const [isRecaptchaValid, setIsRecaptchaValid] = useState(false); \r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const handleRecaptchaV3 = useCallback(async (): Promise => {\r\n if(!CAPTCHA_V3_ENABLE && CAPTCHA_V2_ENABLE){\r\n setShowRecaptchaV2(true);\r\n return;\r\n }\r\n\r\n if (!CAPTCHA_V3_ENABLE || !featureIsOn(feature)) {\r\n onValidationSuccess();\r\n return;\r\n }\r\n\r\n if (isRecaptchaValid || showRecaptchaV2) { \r\n return;\r\n }\r\n\r\n if (!CAPTCHA_V3_KEY || !executeRecaptcha) {\r\n console.warn('reCAPTCHA v3 is not ready.');\r\n setTimeout(handleRecaptchaV3, 1000);\r\n return;\r\n }\r\n\r\n try {\r\n const token = await executeRecaptcha('verify_user');\r\n const isValid = await validateRecaptcha(token, reCapthaVersion.v3);\r\n\r\n if (isValid) {\r\n setIsRecaptchaValid(true);\r\n onTokenReceived(token); \r\n onValidationSuccess();\r\n sessionStorage.setItem('recaptchaToken',token);\r\n } else if (CAPTCHA_V2_ENABLE) {\r\n setShowRecaptchaV2(true);\r\n } else {\r\n onValidationFailure?.();\r\n }\r\n } catch (error) {\r\n console.error('Error during reCAPTCHA v3 validation:', error);\r\n }\r\n }, [executeRecaptcha, onValidationSuccess, onValidationFailure, onTokenReceived, showRecaptchaV2, feature, isRecaptchaValid]);\r\n \r\nconst handleRecaptchaV2 = useCallback(async (token: string | null): Promise => { \r\n if (!featureIsOn(feature)) {\r\n onValidationSuccess();\r\n return;\r\n }\r\n if (!token) {\r\n onValidationFailure?.();\r\n return;\r\n }\r\n\r\n try {\r\n const isValid = await validateRecaptcha(token, reCapthaVersion.v2);\r\n\r\n if (isValid) { \r\n setIsRecaptchaValid(true);\r\n onTokenReceived(token); \r\n onValidationSuccess();\r\n sessionStorage.setItem('recaptchaToken',token);\r\n } else {\r\n onValidationFailure?.();\r\n }\r\n } catch (error) {\r\n console.error('Error during reCAPTCHA v2 validation:', error); \r\n } \r\n }, [onValidationSuccess, onValidationFailure, onTokenReceived, feature]);\r\n\r\n const validateRecaptcha = async (token: string, version: reCapthaVersion): Promise => {\r\n try {\r\n const response = await axios.post>(`${VERIFY_HUMAN}`,\r\n {token: token, version: version}\r\n );\r\n return response.data?.data ?? false;\r\n } catch (error) {\r\n console.error(`reCAPTCHA ${version} validation error:`, error);\r\n return false;\r\n }\r\n };\r\n\r\n useEffect(() => { \r\n if (isRecaptchaValid) { \r\n return;\r\n } \r\n if (executeRecaptcha) {\r\n handleRecaptchaV3(); \r\n } \r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [executeRecaptcha]); \r\n\r\n const featureIsOn = (feature: validateFeature) => {\r\n switch (feature) {\r\n case validateFeature.Registration:\r\n return CAPTCHA_VALIDATE_REGISTRATION;\r\n case validateFeature.ResendPin:\r\n return CAPTCHA_VALIDATE_RESEND_PIN;\r\n case validateFeature.ForgotPassword:\r\n return CAPTCHA_VALIDATE_FORGOT_PASSWORD;\r\n case validateFeature.AddNumberForNotification:\r\n return CAPTCHA_VALIDATE_ADD_NUMBER_FOR_NOTIFICATION;\r\n case validateFeature.Payment:\r\n return CAPTCHA_VALIDATE_PAYMENT;\r\n default:\r\n return true;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {showRecaptchaV2 && CAPTCHA_V2_KEY && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\ninterface AppProps {\r\n onValidationSuccess: () => void;\r\n onValidationFailure?: () => void;\r\n onTokenReceived: (token: string) => void; \r\n feature: validateFeature;\r\n}\r\n\r\nconst HybridRecaptcha: React.FC = ({ onValidationSuccess, onValidationFailure, onTokenReceived, feature }) => ( \r\n \r\n);\r\n\r\nexport default HybridRecaptcha;","import { Form, Formik } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, FlexBox, PageHeading } from 'shared'\r\nimport NewPhoneNumberInput from 'shared/PhoneNumberAndCountryCodeInput'\r\nimport PhoneNumberContainer from 'shared/sidebar/SignUpContainer'\r\nimport {\r\n countryCodeRegex,\r\n phoneNumberRegex,\r\n Translations,\r\n blurLastInput,\r\n} from 'utils'\r\nimport * as Yup from 'yup'\r\nimport HybridRecaptcha from 'shared/ReCaptcha/HybridRecaptcha';\r\nimport { validateFeature } from 'shared/ReCaptcha/HybridRecaptcha';\r\n\r\n\r\ninterface SendMeMailProps {\r\n handleSubmit(phoneCountryCode: number, phoneNumber: string, recaptchaToken: string): void\r\n goBack: () => void\r\n}\r\n\r\nconst SendMeMail: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const [recaptchaVerified, setRecaptchaVerified] = React.useState(false);\r\n const [recaptchaToken, setRecaptchaToken] = React.useState(null);\r\n\r\n const handleTokenReceived = (token: string) => {\r\n setRecaptchaToken(token);\r\n };\r\n\r\n const handleRecaptchaSuccess = () => {\r\n setRecaptchaVerified(true);\r\n };\r\n\r\n const handleRecaptchaFailure = () => {\r\n enqueueSnackbar(t(Translations.RECAPTCHA_VERIFICATION_FAILED), { variant: 'error' });\r\n setRecaptchaVerified(false);\r\n };\r\n\r\n\r\n const SignupSchema = Yup.object().shape({\r\n countryCode: Yup.string().matches(\r\n countryCodeRegex,\r\n t(Translations.INVALID_COUNTRY_CODE)\r\n ),\r\n phoneNumber: Yup.string()\r\n .matches(phoneNumberRegex, t(Translations.INVALID_PHONE_NUMBER))\r\n .required(t(Translations.FIELD_REQUIRED)),\r\n })\r\n\r\n return (\r\n <>\r\n {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), { variant: 'warning' });\r\n return;\r\n }\r\n props.handleSubmit(parseInt(data.countryCode), data.phoneNumber, recaptchaToken)\r\n }}\r\n validationSchema={SignupSchema}\r\n validateOnChange={true}\r\n validateOnBlur={false}\r\n >\r\n {({\r\n values,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n validateForm,\r\n handleSubmit,\r\n }) => (\r\n
\r\n \r\n \r\n {\r\n blurLastInput(e)\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n handleSubmit()\r\n } else {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.SUBMIT)}\r\n \r\n \r\n {t(Translations.BACK_TO_LOGIN)}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SendMeMail\r\n","import { showPopup } from 'store/globalPopup/actions'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\nimport { customerSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { ErrorCode } from 'typedef'\r\n\r\nexport const useSendEmail = (\r\n setSuccess: React.Dispatch>\r\n) => {\r\n const dispatch = useAppDispatch()\r\n\r\n const sendEmail = async (phoneCountryCode: number, phoneNumber: string, recaptchaToken: string) => {\r\n dispatch(showLoader())\r\n const promise = await dispatch(\r\n customerSlice.remindPassword({ phoneCountryCode, phoneNumber, recaptchaToken})\r\n )\r\n dispatch(hideLoader())\r\n if (customerSlice.remindPassword.fulfilled.match(promise)) {\r\n setSuccess(true)\r\n } else {\r\n if (promise.payload.code === ErrorCode.NoUserAssignedToGivenEMail) {\r\n setSuccess(true)\r\n return\r\n }\r\n dispatch(\r\n showPopup({\r\n ...promise.payload,\r\n handleAdditionalButtonClick: () =>\r\n sendEmail(phoneCountryCode, phoneNumber, recaptchaToken),\r\n })\r\n )\r\n }\r\n }\r\n\r\n return sendEmail\r\n}\r\n","import { useChangeLayout } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { PaddingContainer, PageDialog } from 'shared'\r\nimport SendMailComplete from './SendMailComplete'\r\nimport SendMeMail from './SendMeMail'\r\nimport { useSendEmail } from './useSendEmail'\r\n\r\ninterface ForgotPasswordProps {}\r\n\r\nexport interface PersonalData {\r\n email: string\r\n}\r\n\r\nconst ForgotPassword = (props: ForgotPasswordProps) => {\r\n const [success, setSuccess] = React.useState(false)\r\n const history = useHistory()\r\n const sendEmail = useSendEmail(setSuccess)\r\n useChangeLayout()\r\n const goBack = () => {\r\n history.push(paths.auth.login)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ForgotPassword\r\n","import { useChangeLayout } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { PaddingContainer, PageDialog } from 'shared'\r\nimport SendMailComplete from './SendMailComplete'\r\nimport SendMeMail from './SendMeMail'\r\nimport { ThemeProvider } from '@mui/material/styles'\r\nimport { whiteTheme } from 'themes'\r\nimport { useSendEmail } from './useSendEmail'\r\n\r\nexport interface PersonalData {\r\n email: string\r\n}\r\n\r\nexport const ForgotPasswordRedirect = () => {\r\n const [success, setSuccess] = React.useState(false)\r\n const history = useHistory()\r\n const { carId } = useParams<{ carId: string }>()\r\n const sendEmail = useSendEmail(setSuccess)\r\n useChangeLayout()\r\n const goBack = () => {\r\n history.push(`${paths.parking.login}/${carId}`)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import { SharedIcon } from 'shared'\r\nimport * as React from 'react'\r\n\r\nexport interface LanguageData {\r\n name: string\r\n abbreviation: string\r\n flag: JSX.Element\r\n}\r\n\r\nexport const languageList: LanguageData[] = [\r\n {\r\n name: 'AMERICAN_ENGLISH',\r\n abbreviation: 'en-US',\r\n flag: ,\r\n },\r\n {\r\n name: 'BRITISH_ENGLISH',\r\n abbreviation: 'en-GB',\r\n flag: ,\r\n },\r\n {\r\n name: 'GERMAN',\r\n abbreviation: 'de-DE',\r\n flag: ,\r\n },\r\n {\r\n name: 'ITALIAN',\r\n abbreviation: 'it-IT',\r\n flag: ,\r\n },\r\n]\r\n","import {\r\n DialogTitle,\r\n Divider,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n} from '@mui/material'\r\nimport { DialogProps } from '@mui/material'\r\nimport React from 'react'\r\nimport { AppDialog, AppTypography } from 'shared'\r\nimport styled from 'styled-components'\r\nimport { makeStyles } from '@mui/styles'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport { languageList } from './language'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Translations } from 'utils'\r\n\r\nconst CloseIconBox = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n`\r\n\r\nconst StyledListItem = styled(ListItem)`\r\n padding-left: 0px;\r\n`\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n title: {\r\n paddingBottom: theme.spacing(1.5),\r\n paddingTop: theme.spacing(0),\r\n fontWeight: 'bold',\r\n color: 'black',\r\n },\r\n}))\r\n\r\ntype PopupProps = {\r\n closePopup: () => void\r\n addCloseButton?: boolean\r\n darkBackground?: boolean\r\n} & DialogProps\r\n\r\nexport const SelectLanguageDialog: React.FC = props => {\r\n const { addCloseButton, closePopup, darkBackground, ...dialogProps } = props\r\n const { i18n } = useTranslation()\r\n const classes = useStyles()\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n {addCloseButton && (\r\n \r\n closePopup()} />\r\n \r\n )}\r\n \r\n {t(Translations.SELECT_LANGUAGE)}\r\n \r\n \r\n {languageList.map(lang => {\r\n return (\r\n <>\r\n {\r\n i18n.changeLanguage(lang.abbreviation)\r\n closePopup()\r\n }}\r\n >\r\n {lang.flag}\r\n \r\n {t(lang.name)}\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SelectLanguageDialog\r\n","import { Form, Formik } from 'formik'\r\nimport { useChangeLayout, usePushToApp } from 'hooks'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router'\r\nimport paths from 'routing/paths'\r\nimport {\r\n AppButton,\r\n FlexBox,\r\n Input,\r\n PaddingContainer,\r\n PageHeading,\r\n SharedIcon,\r\n} from 'shared'\r\nimport PhoneNumberContainer from 'shared/sidebar/SignUpContainer'\r\nimport { showTerms } from 'store/globalPopup/actions'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\nimport { termsSlice } from 'store/slices'\r\nimport { login } from 'store/slices/customerSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport { LoginRequest, UserRole } from 'typedef/customer'\r\nimport { TermsType } from 'typedef/terms'\r\nimport { countryCodeRegex, phoneNumberRegex } from 'utils/regex'\r\nimport { Translations, blurLastInput } from 'utils'\r\nimport * as Yup from 'yup'\r\nimport NewPhoneNumberInput from 'shared/PhoneNumberAndCountryCodeInput'\r\nimport { Typography } from '@mui/material'\r\nimport SelectLanguageDialog from 'pages/select_language_dialog/SelectLanguageDialog'\r\nimport { languageList } from 'pages/select_language_dialog/language'\r\n\r\nconst ForgotButtonWrapper = styled.div`\r\n text-align: right;\r\n`\r\n\r\nconst Login: React.FC = props => {\r\n const { t, i18n } = useTranslation()\r\n const history = useHistory()\r\n const dispatch = useAppDispatch()\r\n const pushToApp = usePushToApp()\r\n useChangeLayout()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const [isLanguageDialogOpen, setIsLanguageDialogOpen] =\r\n React.useState(false)\r\n\r\n const LoginSchema = Yup.object().shape({\r\n password: Yup.string().required(t(Translations.PASSWORD_CANNOT_BE_EMPTY)),\r\n countryCode: Yup.string().matches(\r\n countryCodeRegex,\r\n t(Translations.INVALID_COUNTRY_CODE)\r\n ),\r\n phoneNumber: Yup.string()\r\n .matches(phoneNumberRegex, t(Translations.PHONE_CANNOT_BE_EMPTY))\r\n .required(t(Translations.FIELD_REQUIRED)),\r\n })\r\n\r\n const loginUser = async (args: LoginRequest) => {\r\n dispatch(showLoader())\r\n const actionResult = await dispatch(login(args))\r\n dispatch(hideLoader())\r\n if (login.rejected.match(actionResult)) {\r\n enqueueSnackbar(t(Translations.WRONG_LOGIN_OR_PASSWORD))\r\n return\r\n }\r\n pushToApp()\r\n }\r\n\r\n const loginGuest = async () => {\r\n dispatch(showLoader())\r\n const actionResult = await dispatch(login({ mode: UserRole.Guest }))\r\n dispatch(hideLoader())\r\n if (login.rejected.match(actionResult)) {\r\n enqueueSnackbar(t(Translations.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN))\r\n } else {\r\n pushToApp(UserRole.Guest)\r\n }\r\n }\r\n\r\n const onTermsClick = () => {\r\n dispatch(\r\n termsSlice.getTerms({\r\n type: TermsType.Login,\r\n })\r\n )\r\n dispatch(showTerms())\r\n }\r\n React.useEffect(() => {\r\n dispatch(termsSlice.actions.setLang({ lang: i18n.language }))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const getLanguageName = () => {\r\n const language = languageList.find(l =>\r\n l.abbreviation.includes(i18n.resolvedLanguage)\r\n )\r\n if (language) {\r\n return t(language.name)\r\n }\r\n return ''\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n loginUser({\r\n phoneNumber: parseInt(phoneNumber),\r\n password,\r\n countryCode: parseInt(countryCode),\r\n mode: UserRole.User,\r\n })\r\n }}\r\n validationSchema={LoginSchema}\r\n validateOnBlur\r\n >\r\n {({ values, errors, handleChange, handleBlur, validateForm }) => (\r\n
\r\n \r\n \r\n \r\n {\r\n blurLastInput(e)\r\n }}\r\n />\r\n \r\n {\r\n history.push(paths.auth.forgotPassword)\r\n }}\r\n >\r\n {t(Translations.FORGOT_PASSWORD)}?\r\n \r\n \r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length !== 0) {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.LOG_IN)}\r\n \r\n \r\n {t(Translations.LOG_IN_AS_GUEST)}\r\n \r\n {\r\n history.push(paths.auth.signUp)\r\n }}\r\n >\r\n {t(Translations.SIGN_UP)}\r\n \r\n setIsLanguageDialogOpen(true)}\r\n >\r\n \r\n \r\n {getLanguageName()}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {t(Translations.TERMS_AND_CONDITIONS)}\r\n \r\n \r\n setIsLanguageDialogOpen(false)}\r\n open={isLanguageDialogOpen}\r\n />\r\n
\r\n )\r\n}\r\n\r\nexport default Login\r\n","import { Form, Formik } from 'formik'\r\nimport { useChangeLayout, usePushToApp } from 'hooks'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n AppButton,\r\n FlexBox,\r\n Input,\r\n PaddingContainer,\r\n PageHeading,\r\n} from 'shared'\r\nimport PhoneNumberContainer from 'shared/sidebar/SignUpContainer'\r\nimport { showTerms } from 'store/globalPopup/actions'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\nimport { termsSlice } from 'store/slices'\r\nimport { login } from 'store/slices/customerSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { LoginRequest, UserRole } from 'typedef/customer'\r\nimport { TermsType } from 'typedef/terms'\r\nimport { countryCodeRegex, phoneNumberRegex } from 'utils/regex'\r\nimport { Translations, blurLastInput } from 'utils'\r\nimport * as Yup from 'yup'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { useSelector } from 'react-redux'\r\nimport { contactInformationsSlice, parkCarSlice } from 'store/slices'\r\nimport { ThemeProvider } from '@mui/material/styles'\r\nimport { whiteTheme } from 'themes'\r\nimport styled from 'styled-components'\r\nimport { paths } from 'routing'\r\nimport NewPhoneNumberInput from 'shared/PhoneNumberAndCountryCodeInput'\r\n\r\nconst ForgotButtonWrapper = styled.div`\r\n text-align: right;\r\n`\r\n\r\nexport const LoginRedirect = () => {\r\n const { t, i18n } = useTranslation()\r\n const history = useHistory()\r\n const dispatch = useAppDispatch()\r\n const pushToApp = usePushToApp()\r\n useChangeLayout()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const { paymentRedirectionAvailable } = useSelector(\r\n contactInformationsSlice.stateSelectors\r\n )\r\n const { lot } = useSelector(parkCarSlice.stateSelectors)\r\n const { carId } = useParams<{ carId: string }>()\r\n\r\n const externalLogoUrl = lot ? lot.logoLink : undefined\r\n const title = lot ? lot.lotName : t(Translations.PARKING_MADE_EASY)\r\n\r\n const LoginSchema = Yup.object().shape({\r\n password: Yup.string().required(t(Translations.PASSWORD_CANNOT_BE_EMPTY)),\r\n countryCode: Yup.string().matches(\r\n countryCodeRegex,\r\n t(Translations.INVALID_COUNTRY_CODE)\r\n ),\r\n phoneNumber: Yup.string()\r\n .matches(phoneNumberRegex, t(Translations.PHONE_CANNOT_BE_EMPTY))\r\n .required(t(Translations.FIELD_REQUIRED)),\r\n })\r\n\r\n const loginUser = async (args: LoginRequest) => {\r\n dispatch(showLoader())\r\n const actionResult = await dispatch(login(args))\r\n dispatch(hideLoader())\r\n if (login.rejected.match(actionResult)) {\r\n enqueueSnackbar(t(Translations.WRONG_LOGIN_OR_PASSWORD))\r\n return\r\n }\r\n if (carId && paymentRedirectionAvailable !== null) {\r\n return\r\n } else {\r\n pushToApp()\r\n }\r\n }\r\n\r\n const onTermsClick = () => {\r\n dispatch(\r\n termsSlice.getTerms({\r\n type: TermsType.Login,\r\n })\r\n )\r\n dispatch(showTerms())\r\n }\r\n React.useEffect(() => {\r\n dispatch(termsSlice.actions.setLang({ lang: i18n.language }))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n loginUser({\r\n phoneNumber: parseInt(phoneNumber),\r\n password,\r\n countryCode: parseInt(countryCode),\r\n mode: UserRole.User,\r\n })\r\n }}\r\n validationSchema={LoginSchema}\r\n validateOnBlur\r\n >\r\n {({ values, errors, handleChange, handleBlur, validateForm }) => (\r\n
\r\n \r\n \r\n \r\n {\r\n blurLastInput(e)\r\n }}\r\n />\r\n \r\n {\r\n history.push(`${paths.parking.forgotPassword}/${carId}`)\r\n }}\r\n >\r\n {t(Translations.FORGOT_PASSWORD)}?\r\n \r\n \r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length !== 0) {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.LOG_IN)}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {t(Translations.TERMS_AND_CONDITIONS)}\r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport styled from 'styled-components'\r\nimport { useEffect } from 'react'\r\nimport { allowedCodeCharactersRegex } from '../utils/regex'\r\n\r\ninterface CodeInputProps {\r\n codeLength: number\r\n handleValidation: (codeValid: boolean) => void\r\n setPin: (pin: string) => void\r\n}\r\n\r\nconst Codecontainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n width: 100%;\r\n max-width: 200px;\r\n margin: auto;\r\n`\r\n\r\nconst Input = styled.input`\r\n width: 30px;\r\n height: 40px;\r\n text-align: center;\r\n border-radius: 5px;\r\n border: none;\r\n margin: 5px;\r\n\r\n &::-webkit-inner-spin-button {\r\n -webkit-appearance: none;\r\n margin: 0;\r\n }\r\n`\r\n\r\nconst CodeInput: React.FunctionComponent = ({\r\n codeLength,\r\n handleValidation,\r\n setPin,\r\n ...props\r\n}) => {\r\n const [code, setCode] = React.useState(\r\n new Array(codeLength).fill('')\r\n )\r\n const [activeInput, setActiveInput] = React.useState(0)\r\n\r\n const inputs = React.useRef[]>(\r\n [...Array(codeLength)].map(() => React.createRef())\r\n )\r\n\r\n useEffect(() => {\r\n const input = inputs.current[0].current as HTMLInputElement\r\n input.focus()\r\n }, [])\r\n\r\n const handleChange = (value: any) => {\r\n if (!allowedCodeCharactersRegex.test(value)) {\r\n const input = inputs.current[activeInput].current as HTMLInputElement\r\n input.value = ''\r\n return\r\n }\r\n\r\n const newCode = [...code]\r\n newCode[activeInput] = value\r\n\r\n setCode(newCode)\r\n\r\n if (activeInput !== codeLength - 1) {\r\n setActiveInput(activeInput + 1)\r\n\r\n const nextInput = inputs.current[activeInput + 1]\r\n .current as HTMLInputElement\r\n nextInput.focus()\r\n } else {\r\n const currentInput = inputs.current[activeInput]\r\n .current as HTMLInputElement\r\n\r\n currentInput.blur()\r\n }\r\n }\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.key !== 'Backspace' || activeInput === 0) return\r\n\r\n event.preventDefault()\r\n\r\n const nextIndex =\r\n activeInput === codeLength - 1 && code[activeInput] !== ''\r\n ? activeInput\r\n : activeInput - 1\r\n const nextInput = inputs.current[nextIndex].current as HTMLInputElement\r\n\r\n nextInput.value = ''\r\n\r\n const newCode = [...code]\r\n newCode[nextIndex] = ''\r\n\r\n setCode(newCode)\r\n\r\n setActiveInput(nextIndex)\r\n\r\n nextInput.focus()\r\n }\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n event.preventDefault()\r\n\r\n setActiveInput(0)\r\n\r\n inputs.current.forEach(v => {\r\n const input = v.current as HTMLInputElement\r\n input.value = ''\r\n })\r\n\r\n setCode(new Array(codeLength).fill(''))\r\n\r\n const currentInput = inputs.current[0].current as HTMLInputElement\r\n\r\n currentInput.focus()\r\n }\r\n\r\n const handleOnInput = (event: React.FormEvent) => {\r\n const inputValue = event.currentTarget.value\r\n if (inputValue.length > 1) {\r\n handlePaste(inputValue)\r\n } else {\r\n handleChange(inputValue)\r\n }\r\n }\r\n\r\n const handlePaste = (pasteData: string) => {\r\n const newCode = pasteData\r\n .slice(0, codeLength)\r\n .split('')\r\n .map((char, index) =>\r\n allowedCodeCharactersRegex.test(char) ? char : code[index]\r\n )\r\n\r\n while (newCode.length < codeLength) {\r\n newCode.push('')\r\n }\r\n setCode(newCode)\r\n\r\n inputs.current.forEach((inputRef, index) => {\r\n if (inputRef.current) {\r\n inputRef.current.value = newCode[index] || ''\r\n }\r\n })\r\n\r\n const pin = newCode.join('')\r\n setPin(pin)\r\n\r\n if (pin.length < codeLength) {\r\n handleValidation(false)\r\n const nextInput = inputs.current[pin.length].current as HTMLInputElement\r\n nextInput.focus()\r\n setActiveInput(pin.length)\r\n } else {\r\n handleValidation(true)\r\n const currentInput = inputs.current[activeInput]\r\n .current as HTMLInputElement\r\n currentInput.blur()\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n setPin(code.join(''))\r\n if (code.join('').length < codeLength) {\r\n handleValidation(false)\r\n } else {\r\n handleValidation(true)\r\n }\r\n }, [setPin, code, codeLength, handleValidation])\r\n\r\n React.useEffect(() => {\r\n inputs.current[0].current?.focus()\r\n }, [])\r\n\r\n return (\r\n <>\r\n \r\n {code.map((v, i) => (\r\n handleKeyDown(e)}\r\n onClick={handleClick}\r\n ref={inputs.current[i]}\r\n inputMode=\"numeric\"\r\n data-testid={`pinInput${i}`}\r\n autoComplete=\"one-time-code\"\r\n onInput={e => handleOnInput(e)}\r\n />\r\n ))}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default CodeInput\r\n","import * as customerApi from 'api/CustomerApi'\r\nimport { hasErrorCode } from 'api/utils'\r\nimport i18n from 'i18next'\r\nimport { Action } from 'redux'\r\nimport { ThunkDispatch } from 'redux-thunk'\r\nimport { getErrorPopupProps } from 'utils'\r\nimport { PhoneNumberAvailableParams } from '../../typedef/customer'\r\nimport Translations from '../../utils/translations'\r\nimport { showPopup } from '../globalPopup/actions'\r\nimport { hideLoader, showLoader } from '../loader/actions'\r\nimport { AppState } from '../store'\r\n\r\n//TODO: move to slice\r\nexport const resendRegistrationPin = (confirmToken: string, recaptchaToken: string) => {\r\n return async (\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n dispatch: ThunkDispatch,\r\n getState: () => AppState\r\n ) => {\r\n dispatch(showLoader())\r\n\r\n const isPinSent = await customerApi.resendRegistrationPin({ confirmToken, recaptchaToken })\r\n if (isPinSent) {\r\n dispatch(\r\n showPopup({\r\n variant: 'info',\r\n title: i18n.t(Translations.RESEND_CODE),\r\n description: i18n.t(Translations.ACTIVATION_CODE_HAS_BEEN_SENT),\r\n handleAdditionalButtonClick: () => undefined,\r\n })\r\n )\r\n } else {\r\n dispatch(\r\n showPopup({\r\n variant: 'warning',\r\n title: `${i18n.t(Translations.OOPS)}`,\r\n description: i18n.t(Translations.ACTIVATION_CODE_SEND_FAIL),\r\n handleAdditionalButtonClick: () => {\r\n dispatch(resendRegistrationPin(confirmToken, recaptchaToken))\r\n },\r\n })\r\n )\r\n }\r\n\r\n dispatch(hideLoader())\r\n }\r\n}\r\n\r\ninterface PhoneNumberAvailableArgs extends PhoneNumberAvailableParams {\r\n callback: () => void\r\n}\r\nexport const phoneNumberAvailable = ({\r\n callback,\r\n ...args\r\n}: PhoneNumberAvailableArgs) => {\r\n return async (\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n dispatch: ThunkDispatch,\r\n getState: () => AppState\r\n ) => {\r\n dispatch(showLoader())\r\n const result = await customerApi.phoneNumberAvailable(args)\r\n dispatch(hideLoader())\r\n\r\n if (hasErrorCode(result)) {\r\n dispatch(\r\n showPopup({\r\n ...getErrorPopupProps(result),\r\n handleAdditionalButtonClick: () =>\r\n dispatch(phoneNumberAvailable({ callback, ...args })),\r\n })\r\n )\r\n return false\r\n }\r\n if (!result.is) {\r\n dispatch(\r\n showPopup({\r\n title: i18n.t(Translations.ACCOUNT_ALREADY_EXISTS),\r\n description: i18n.t(Translations.PHONE_NUMBER_ALREADY_EXISTS),\r\n variant: 'error',\r\n })\r\n )\r\n return false\r\n }\r\n callback()\r\n }\r\n}\r\n","import { useSnackbar } from 'notistack'\r\nimport React, { useState } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, AppStepper, FlexBox, PageHeading } from 'shared'\r\nimport CodeInput from 'shared/CodeInput'\r\nimport { resendRegistrationPin } from 'store/customer/thunks'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\nimport { customerSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport HybridRecaptcha from '../../../shared/ReCaptcha/HybridRecaptcha';\r\nimport {validateFeature } from '../../../shared/ReCaptcha/HybridRecaptcha';\r\n\r\ninterface CodeStepProps {\r\n onSubmit: () => void\r\n confirmToken: string\r\n}\r\n\r\nconst CodeStep: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n const [codeValid, setCodeValid] = React.useState(false)\r\n const [pin, setPin] = React.useState('')\r\n const dispatch = useAppDispatch()\r\n const { enqueueSnackbar } = useSnackbar()\r\n\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n const [recaptchaToken, setRecaptchaToken] = useState(null);\r\n const handleTokenReceived = (token: string) => {\r\n setRecaptchaToken(token);\r\n };\r\n\r\n const handleRecaptchaSuccess = () => {\r\n setRecaptchaVerified(true);\r\n };\r\n\r\n const handleRecaptchaFailure = () => {\r\n enqueueSnackbar(t(Translations.RECAPTCHA_VERIFICATION_FAILED), { variant: 'error' });\r\n setRecaptchaVerified(false);\r\n };\r\n\r\n const create = async () => {\r\n dispatch(showLoader())\r\n const promise = await dispatch(\r\n customerSlice.confirmRegister({\r\n confirmToken: props.confirmToken,\r\n pin,\r\n })\r\n )\r\n dispatch(hideLoader())\r\n if (customerSlice.confirmRegister.fulfilled.match(promise)) {\r\n props.onSubmit()\r\n } else {\r\n enqueueSnackbar(promise.payload.description)\r\n }\r\n }\r\n\r\n const resendCode = async () => {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), { variant: 'warning' });\r\n return;\r\n }\r\n\r\n dispatch(showLoader())\r\n await dispatch(resendRegistrationPin(props.confirmToken, recaptchaToken))\r\n dispatch(hideLoader())\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(Translations.CREATE)}\r\n \r\n \r\n {t(Translations.RESEND_CODE)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CodeStep\r\n","import { Form, Formik, FormikHandlers } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { AppButton, AppStepper, FlexBox, Input, PageHeading } from 'shared'\r\nimport PhoneNumberContainer from 'shared/sidebar/SignUpContainer'\r\nimport { phoneNumberAvailable } from 'store/customer/thunks'\r\nimport {\r\n countryCodeRegex,\r\n phoneNumberRegex,\r\n Translations,\r\n blurLastInput,\r\n} from 'utils'\r\nimport * as Yup from 'yup'\r\nimport { PersonalData } from './SignUp'\r\nimport NewPhoneNumberInput from 'shared/PhoneNumberAndCountryCodeInput'\r\n\r\ninterface PersonalDataStepProps {\r\n handleSubmit(): void\r\n personalData: PersonalData\r\n resetStep: () => void\r\n setPersonalData(data: PersonalData): void\r\n backToLogin: boolean\r\n}\r\n\r\nconst PersonalDataStep: React.FunctionComponent<\r\n PersonalDataStepProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n const dispatch = useDispatch()\r\n const history = useHistory()\r\n const { enqueueSnackbar } = useSnackbar()\r\n React.useEffect(() => {\r\n props.resetStep()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const SignupSchema = Yup.object().shape({\r\n firstName: Yup.string().required(t(Translations.FIRSTNAME_CANNOT_BE_EMPTY)),\r\n lastName: Yup.string().required(t(Translations.LASTNAME_CANNOT_BE_EMPTY)),\r\n email: Yup.string()\r\n .email(t(Translations.INVALID_EMAIL))\r\n .required(t(Translations.EMAIL_CANNOT_BE_EMPTY)),\r\n code: Yup.string().matches(\r\n countryCodeRegex,\r\n t(Translations.INVALID_COUNTRY_CODE)\r\n ),\r\n phoneNumber: Yup.string()\r\n .matches(phoneNumberRegex, t(Translations.INVALID_PHONE_NUMBER))\r\n .required(t(Translations.PHONE_CANNOT_BE_EMPTY)),\r\n })\r\n\r\n const customHandleBlur = (\r\n e: React.FocusEvent,\r\n handleBlur: FormikHandlers['handleBlur'],\r\n values: PersonalData\r\n ) => {\r\n handleBlur(e)\r\n props.setPersonalData(values)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {\r\n props.handleSubmit()\r\n }}\r\n validationSchema={SignupSchema}\r\n validateOnChange={false}\r\n validateOnBlur={false}\r\n >\r\n {({\r\n values,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n validateForm,\r\n submitForm,\r\n }) => {\r\n return (\r\n
\r\n customHandleBlur(e, handleBlur, values)}\r\n error={!!errors.firstName}\r\n maxLength={50}\r\n autoFocus\r\n />\r\n customHandleBlur(e, handleBlur, values)}\r\n error={!!errors.lastName}\r\n maxLength={50}\r\n />\r\n \r\n \r\n \r\n customHandleBlur(e, handleBlur, values)}\r\n error={!!errors.email}\r\n onKeyDown={e => {\r\n blurLastInput(e)\r\n }}\r\n />\r\n \r\n \r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length !== 0) {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n } else {\r\n dispatch(\r\n phoneNumberAvailable({\r\n phoneNumber: values.phoneNumber,\r\n phoneCountryCode: parseInt(values.code),\r\n callback: submitForm,\r\n })\r\n )\r\n }\r\n })\r\n }\r\n >\r\n {t(Translations.NEXT)}\r\n \r\n {props.backToLogin && (\r\n history.push(paths.auth.login)}\r\n >\r\n {t(Translations.BACK_TO_LOGIN)}\r\n \r\n )}\r\n \r\n \r\n )\r\n }}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default PersonalDataStep\r\n","import * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n AppButton,\r\n FlexBox,\r\n FullLayout,\r\n PaddingContainer,\r\n PageHeading,\r\n SharedIcon,\r\n} from 'shared'\r\nimport { CustomerTokens } from '../../../typedef/customer'\r\nimport Translations from '../../../utils/translations'\r\n\r\ninterface RegistrationCompleteProps {\r\n customer?: CustomerTokens\r\n onClick: () => void\r\n}\r\n\r\nconst RegistrationComplete: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(Translations.OK)}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default RegistrationComplete\r\n","import React, { useState } from 'react';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport { Form, Formik } from 'formik';\r\nimport { useSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { AppButton, AppStepper, FlexBox, Input, PageHeading } from 'shared';\r\nimport { hideLoader, showLoader } from 'store/loader';\r\nimport { customerSlice } from 'store/slices';\r\nimport { useAppDispatch } from 'store/store';\r\nimport { Translations, blurLastInput } from 'utils';\r\nimport { passwordValidationShape } from '../validations';\r\nimport { PersonalData } from './SignUp';\r\nimport HybridRecaptcha from '../../../shared/ReCaptcha/HybridRecaptcha';\r\nimport {validateFeature } from '../../../shared/ReCaptcha/HybridRecaptcha';\r\n\r\n\r\ninterface SetPasswordStepProps {\r\n handleSubmit: (token: string, password: string) => void;\r\n personalData: PersonalData;\r\n goBack: () => void;\r\n}\r\n\r\nconst SetPasswordStep: React.FunctionComponent = props => {\r\n const { t } = useTranslation();\r\n const dispatch = useAppDispatch();\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n const [recaptchaToken, setRecaptchaToken] = useState(null);\r\n const handleTokenReceived = (token: string) => {\r\n setRecaptchaToken(token);\r\n };\r\n\r\n const handleRecaptchaSuccess = () => {\r\n setRecaptchaVerified(true);\r\n };\r\n\r\n const handleRecaptchaFailure = () => {\r\n enqueueSnackbar(t(Translations.RECAPTCHA_VERIFICATION_FAILED), { variant: 'error' });\r\n setRecaptchaVerified(false);\r\n };\r\n\r\n const handleSubmit = async ({ password }: { password: string }) => {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), { variant: 'warning' });\r\n return;\r\n }\r\n\r\n const { firstName, lastName, phoneNumber, code, email } = props.personalData;\r\n dispatch(showLoader());\r\n const promise = await dispatch(\r\n customerSlice.register({\r\n firstName,\r\n lastName,\r\n phoneCountryCode: parseInt(code),\r\n phoneNumber,\r\n email,\r\n password,\r\n recaptchaToken\r\n })\r\n );\r\n dispatch(hideLoader());\r\n if (customerSlice.register.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise);\r\n props.handleSubmit(res.confirmToken, password);\r\n } else {\r\n enqueueSnackbar(promise.payload.description, { variant: 'error' });\r\n }\r\n };\r\n\r\n return (\r\n <> \r\n \r\n \r\n \r\n\r\n \r\n {({ values, errors, handleChange, handleBlur, validateForm, submitForm, isSubmitting }) => (\r\n
\r\n \r\n {\r\n blurLastInput(e);\r\n }}\r\n />\r\n \r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors);\r\n if (entries.length === 0) {\r\n submitForm();\r\n } else {\r\n enqueueSnackbar(entries[0][1]);\r\n }\r\n });\r\n }}\r\n disabled={isSubmitting}\r\n >\r\n {t(Translations.SUBMIT)}\r\n \r\n \r\n {t(Translations.BACK)}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SetPasswordStep;","import { useChangeLayout, usePushToApp } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Route, Switch, useHistory } from 'react-router'\r\nimport { ConditionalRoute } from 'routing'\r\nimport paths from 'routing/paths'\r\nimport { AppButton, FlexBox, PaddingContainer } from 'shared'\r\nimport PageDialog from 'shared/PageDialog'\r\nimport { showTerms } from 'store/globalPopup/actions'\r\nimport { termsSlice } from 'store/slices'\r\nimport { actions } from 'store/slices/customerSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { UserRole } from 'typedef'\r\nimport { TermsType } from 'typedef/terms'\r\nimport Translations from '../../../utils/translations'\r\nimport CodeStep from './CodeStep'\r\nimport PersonalDataStep from './PersonalDataStep'\r\nimport RegistrationComplete from './RegistrationComplete'\r\nimport SetPasswordStep from './SetPasswordStep'\r\n\r\nexport interface PersonalData {\r\n firstName: string\r\n lastName: string\r\n code: string\r\n phoneNumber: string\r\n email: string\r\n}\r\nconst SignUp = () => {\r\n const { t } = useTranslation()\r\n const [showSuccess, setShowSuccess] = React.useState(false)\r\n const [completeStep, setCompleteStep] = React.useState(0)\r\n const [personalData, setPersonalData] = React.useState({\r\n firstName: '',\r\n lastName: '',\r\n code: '',\r\n phoneNumber: '',\r\n email: '',\r\n })\r\n const [confirmToken, setConfirmToken] = React.useState('')\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const pushToApp = usePushToApp()\r\n useChangeLayout()\r\n\r\n React.useEffect(() => {\r\n if (completeStep === 1) {\r\n push(paths.auth.setPassword)\r\n }\r\n if (completeStep === 2) {\r\n push(paths.auth.code)\r\n }\r\n }, [completeStep, push])\r\n\r\n const submitPassword = (token: string) => {\r\n setConfirmToken(token)\r\n setCompleteStep(2)\r\n }\r\n const submitCode = () => {\r\n setShowSuccess(true)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n <>\r\n setCompleteStep(0)}\r\n handleSubmit={() => setCompleteStep(1)}\r\n backToLogin={true}\r\n />\r\n \r\n {\r\n dispatch(\r\n termsSlice.getTerms({\r\n type: TermsType.Login,\r\n })\r\n )\r\n dispatch(showTerms())\r\n }}\r\n >\r\n {t(Translations.TERMS_AND_CONDITIONS)}\r\n \r\n \r\n \r\n \r\n \r\n push(paths.auth.signUp)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n pushToApp()\r\n dispatch(actions.setRole(UserRole.User))\r\n }}\r\n />\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SignUp\r\n","import { useChangeLayout } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Route, Switch, useHistory } from 'react-router'\r\nimport { useParams } from 'react-router-dom'\r\nimport { ConditionalRoute } from 'routing'\r\nimport paths from 'routing/paths'\r\nimport { AppButton, FlexBox, PaddingContainer } from 'shared'\r\nimport PageDialog from 'shared/PageDialog'\r\nimport { showTerms } from 'store/globalPopup/actions'\r\nimport { termsSlice } from 'store/slices'\r\nimport { actions } from 'store/slices/customerSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { UserRole } from 'typedef'\r\nimport { TermsType } from 'typedef/terms'\r\nimport Translations from '../../../utils/translations'\r\nimport CodeStep from './CodeStep'\r\nimport PersonalDataStep from './PersonalDataStep'\r\nimport RegistrationComplete from './RegistrationComplete'\r\nimport SetPasswordStep from './SetPasswordStep'\r\nimport { ThemeProvider } from '@mui/material/styles'\r\nimport { whiteTheme } from 'themes'\r\nimport { PersonalData } from './SignUp'\r\n\r\nexport const SignUpRedirect = () => {\r\n const { t } = useTranslation()\r\n const [showSuccess, setShowSuccess] = React.useState(false)\r\n const [completeStep, setCompleteStep] = React.useState(0)\r\n const [personalData, setPersonalData] = React.useState({\r\n firstName: '',\r\n lastName: '',\r\n code: '',\r\n phoneNumber: '',\r\n email: '',\r\n })\r\n const [confirmToken, setConfirmToken] = React.useState('')\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { carId } = useParams<{ carId: string }>()\r\n useChangeLayout()\r\n\r\n React.useEffect(() => {\r\n if (completeStep === 1) {\r\n push(`${paths.parking.signUp}/${carId}/set-password`)\r\n }\r\n if (completeStep === 2) {\r\n push(`${paths.parking.signUp}/${carId}/code`)\r\n }\r\n }, [completeStep, push, carId])\r\n\r\n const submitPassword = (token: string) => {\r\n setConfirmToken(token)\r\n setCompleteStep(2)\r\n }\r\n const submitCode = () => {\r\n setShowSuccess(true)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n <>\r\n setCompleteStep(0)}\r\n handleSubmit={() => setCompleteStep(1)}\r\n backToLogin={false}\r\n />\r\n \r\n {\r\n dispatch(\r\n termsSlice.getTerms({\r\n type: TermsType.Login,\r\n })\r\n )\r\n dispatch(showTerms())\r\n }}\r\n >\r\n {t(Translations.TERMS_AND_CONDITIONS)}\r\n \r\n \r\n \r\n \r\n \r\n push(`${paths.parking.signUp}/${carId}`)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n dispatch(actions.setRole(UserRole.User))\r\n push(`${paths.parking.login}/${carId}`)\r\n }}\r\n />\r\n \r\n \r\n \r\n )\r\n}\r\n","import { Form, Formik } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, FlexBox } from 'shared'\r\nimport { FindCarPayload } from 'typedef/customer'\r\nimport * as Yup from 'yup'\r\nimport { Input } from '../../shared/Input'\r\nimport { licencePlateRegex } from '../../utils/regex'\r\nimport Translations from '../../utils/translations'\r\n\r\ninterface FindCarsProps {\r\n findCar: (args: FindCarPayload) => void\r\n disabled?: boolean\r\n}\r\n\r\nexport const FindCarsForm: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const FindCarSchema = Yup.object().shape({\r\n plate: Yup.string()\r\n .required(t(Translations.INVALID_LICENCE_PLATE))\r\n .matches(licencePlateRegex, t(Translations.INVALID_LICENCE_PLATE)),\r\n ccLast4Digits: Yup.number()\r\n .typeError(t(Translations.INVALID_CARD_NUMBER))\r\n .required(t(Translations.INVALID_CARD_NUMBER))\r\n .test('len', t(Translations.INVALID_CARD_NUMBER), val => {\r\n return val?.toString().length === 4\r\n }),\r\n })\r\n\r\n return (\r\n {\r\n props.findCar({\r\n plate: values.plate.replace(/\\s/g, ''),\r\n ccLast4Digits: values.ccLast4Digits,\r\n })\r\n }}\r\n validationSchema={FindCarSchema}\r\n validateOnMount={false}\r\n validateOnChange={false}\r\n >\r\n {({\r\n values,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n validateForm,\r\n submitForm,\r\n }) => (\r\n
\r\n {/* */}\r\n \r\n \r\n \r\n \r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n submitForm()\r\n } else {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }\r\n disabled={props.disabled}\r\n >\r\n {t(Translations.FIND_CAR)}\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default FindCarsForm\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { customerSlice, mapSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { UserRole } from 'typedef/customer'\r\nimport { FindCarPayload } from 'typedef/customer'\r\nimport Translations from '../../utils/translations'\r\nimport { FindCarsForm } from './FindCarsForm'\r\ninterface FindCarsContainerProps {}\r\n\r\nexport const FindCarsContainer: React.FunctionComponent<\r\n FindCarsContainerProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n const { push } = useHistory()\r\n const { auth } = useSelector(customerSlice.stateSelectors).tokens\r\n const { enqueueSnackbar } = useSnackbar()\r\n const dispatch = useAppDispatch()\r\n const { pending } = useSelector(\r\n customerSlice.promiseStatusSelectors\r\n ).findCarStatus\r\n\r\n const findCar = React.useCallback(\r\n async (arg: FindCarPayload) => {\r\n const promise = await dispatch(customerSlice.findCar(arg))\r\n if (customerSlice.findCar.fulfilled.match(promise)) {\r\n const { ticket, tokens } = unwrapResult(promise)\r\n batch(async () => {\r\n if (tokens.auth !== auth) {\r\n dispatch(\r\n customerSlice.actions.setLogin({\r\n role: UserRole.Guest,\r\n tokens,\r\n })\r\n )\r\n dispatch(ticketsSlice.getTickets())\r\n }\r\n dispatch(\r\n mapSlice.actions.selectLot({\r\n lotId: ticket.lot.lotId,\r\n position: true,\r\n })\r\n )\r\n dispatch(mapSlice.getLotDetailsMap({ lotId: ticket.lot.lotId }))\r\n dispatch(mapSlice.actions.foundParkedCar({ lotId: ticket.lot.lotId }))\r\n push(paths.home.map)\r\n })\r\n } else {\r\n enqueueSnackbar(t(Translations.NO_PARKED_CARS))\r\n }\r\n },\r\n [auth, dispatch, enqueueSnackbar, push, t]\r\n )\r\n\r\n return \r\n}\r\n\r\nexport default FindCarsContainer\r\n","import { useChangeLayout } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppSnackBarProvider,\r\n AppSpinner,\r\n Placeholder,\r\n SharedIcon,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { customerSlice } from 'store/slices'\r\nimport Translations from '../../utils/translations'\r\nimport { FindCarsContainer } from './FindCarsContainer'\r\ninterface FindCarViewProps {}\r\n\r\nexport const FindCarView: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n const title = t(Translations.FIND_CAR)\r\n const { push } = useHistory()\r\n const { pending } = useSelector(\r\n customerSlice.promiseStatusSelectors\r\n ).findCarStatus\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack: () => push(paths.home.map),\r\n },\r\n },\r\n 'app'\r\n )\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default FindCarView\r\n","import { Fade, Grid, Modal } from '@mui/material'\r\nimport { MobileDatePicker, MobileTimePicker } from '@mui/lab'\r\nimport { makeStyles } from '@mui/styles'\r\nimport moment, { Moment } from 'moment'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n AppTextField,\r\n FlexBox,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport AppTypography from 'shared/AppTypography'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface ParkingRatesModalProps {\r\n open: boolean\r\n loader?: boolean\r\n handleCalculate?: (entryDate?: string, exitDate?: string) => void\r\n handleClose?: () => void\r\n cleanup?: () => void\r\n title?: string\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n modal: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n})\r\n\r\nexport const ParkingRatesModal: React.FC = props => {\r\n const { t } = useTranslation()\r\n const classes = useStyles()\r\n const [initDate, setInitDate] = React.useState(moment())\r\n const [entryDate, setEntryDate] = React.useState(moment())\r\n const [exitDate, setExitDate] = React.useState(moment())\r\n const onChangeEntryDate = (date: Moment | null) => {\r\n const entry = date.second(0)\r\n const exit = moment(exitDate)\r\n if (entry >= exit) {\r\n setEntryDate(exit.subtract(10, 'minutes'))\r\n } else {\r\n setEntryDate(entry)\r\n }\r\n }\r\n const onChangeExitDate = (date: Moment | null) => {\r\n const exit = date.second(0)\r\n const entry = moment(entryDate)\r\n if (exit <= entry) {\r\n setExitDate(entry.add(10, 'minutes'))\r\n } else {\r\n setExitDate(exit)\r\n }\r\n }\r\n\r\n const setInitDates = () => {\r\n const startDate = moment().second(0)\r\n const roundToFive = 5 - (startDate.minute() % 5)\r\n startDate.add(roundToFive, 'minute')\r\n setInitDate(startDate)\r\n setEntryDate(startDate)\r\n setExitDate(startDate.add(30, 'minute'))\r\n }\r\n\r\n const maxEntryTime = () => {\r\n if (moment(entryDate, true).isSame(exitDate, 'day')) {\r\n return moment(exitDate).subtract(10, 'minutes')\r\n } else {\r\n return moment(entryDate).endOf('day')\r\n }\r\n }\r\n const minExitTime = () => {\r\n if (moment(entryDate).isSame(exitDate, 'day')) {\r\n return moment(entryDate).add(10, 'minutes')\r\n } else {\r\n return moment(exitDate).startOf('day')\r\n }\r\n }\r\n const setDefaultDuration = (hours: number) => {\r\n const exit = moment(initDate).add(hours, 'hours')\r\n setEntryDate(initDate)\r\n setExitDate(exit)\r\n props.handleCalculate(initDate.toString(), exit.toString())\r\n }\r\n const cleanup = () => {\r\n setInitDates()\r\n props.cleanup()\r\n }\r\n React.useEffect(() => {\r\n cleanup()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {props.title && (\r\n \r\n {props.title}\r\n \r\n )}\r\n \r\n setDefaultDuration(1)}\r\n >\r\n 1 {t(Translations.HOUR)}\r\n \r\n setDefaultDuration(4)}\r\n >\r\n 4 {t(Translations.HOURS)}\r\n \r\n setDefaultDuration(8)}\r\n >\r\n 8 {t(Translations.HOURS)}\r\n \r\n \r\n \r\n \r\n }\r\n okText={t(Translations.OK)}\r\n cancelText={t(Translations.CANCEL)}\r\n />\r\n \r\n \r\n }\r\n okText={t(Translations.OK)}\r\n cancelText={t(Translations.CANCEL)}\r\n toolbarTitle={t(Translations.SELECT_TIME)}\r\n />\r\n \r\n \r\n \r\n }\r\n okText={t(Translations.OK)}\r\n cancelText={t(Translations.CANCEL)}\r\n />\r\n \r\n \r\n }\r\n okText={t(Translations.OK)}\r\n cancelText={t(Translations.CANCEL)}\r\n toolbarTitle={t(Translations.SELECT_TIME)}\r\n />\r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n \r\n props.handleCalculate(\r\n entryDate.toString(),\r\n exitDate.toString()\r\n )\r\n }\r\n >\r\n {t(Translations.CALCULATE)}\r\n \r\n \r\n \r\n \r\n
{' '}\r\n \r\n \r\n {t(Translations.CANCEL)}\r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\nParkingRatesModal.defaultProps = {\r\n handleClose: () => undefined,\r\n handleCalculate: () => undefined,\r\n cleanup: () => undefined,\r\n}\r\nexport default ParkingRatesModal\r\n","import * as React from 'react'\r\nimport { SharedIcon } from 'shared'\r\nimport styled, { css } from 'styled-components'\r\nimport { mapSlice } from 'store/slices'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from 'store/rootReducer'\r\n\r\ninterface CarMarkerProps {\r\n lat: number\r\n lng: number\r\n $hover?: boolean\r\n lotId: string\r\n}\r\n\r\nconst PinContainer = styled.div<{\r\n hovered: boolean\r\n isSelected: boolean\r\n}>`\r\n position: absolute;\r\n transform-origin: center bottom;\r\n transform: translate(-50%, -61%) scale(0.75);\r\n z-index: 2;\r\n transition: all 0.2s;\r\n ${_ =>\r\n _.isSelected &&\r\n css`\r\n transform: translate(-50%, -68%);\r\n `}\r\n ${_ =>\r\n _.hovered &&\r\n !_.isSelected &&\r\n css`\r\n transform:translate(-50%, -100%); scale(0.85);\r\n `}\r\n`\r\n\r\nconst CarMarker: React.FC = props => {\r\n const selectedLot = useSelector((state: RootState) =>\r\n mapSlice.selectById(state, state.map.selectedLot)\r\n )\r\n const { findCarMode } = useSelector(mapSlice.stateSelectors)\r\n if (!findCarMode) return null\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CarMarker\r\n","import { useTheme } from '@mui/material/styles'\r\nimport * as React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { SharedIcon } from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { mapSlice, simulatePriceSlice } from 'store/slices'\r\nimport styled, { css } from 'styled-components'\r\ninterface LotMarkerProps {\r\n lotId?: string\r\n lat: number\r\n lng: number\r\n $hover?: boolean\r\n // findCarMode: boolean\r\n isSelected: boolean\r\n isCluster: boolean\r\n pointCount: number\r\n manyLots?: boolean\r\n lotsIds?: string[]\r\n pricingMode?: boolean\r\n // onChildClick: () => void\r\n}\r\n\r\nconst PinContainer = styled.div<{\r\n hovered: boolean\r\n isSelected: boolean\r\n isCluster: boolean\r\n pointCount: number\r\n hoverColor?: string\r\n manyLots: boolean\r\n lotsCount: number\r\n color: string\r\n pricingMode: boolean\r\n simulatedPrice?: string\r\n mounted?: boolean\r\n}>`\r\n position: absolute;\r\n transform-origin: left center;\r\n transform: translate(-50%, -50%);\r\n transition: all 0.2s;\r\n opacity: ${_ => (_.mounted ? 1 : 0)};\r\n path {\r\n fill: ${_ => _.color};\r\n }\r\n &:after {\r\n border-radius: 100%;\r\n position: absolute;\r\n top: 45%;\r\n left: 50%;\r\n font-weight: bold;\r\n transform: translate(-50%, -60%);\r\n }\r\n ${_ => {\r\n let content\r\n if (_.manyLots) {\r\n content = _.lotsCount\r\n }\r\n if (_.isCluster) {\r\n content = _.pointCount\r\n }\r\n if (_.manyLots || _.isCluster) {\r\n return css`\r\n &:after {\r\n color: ${_.color};\r\n content: '${content}';\r\n font-size: 1.6em;\r\n }\r\n `\r\n }\r\n\r\n return null\r\n }}\r\n ${_ => {\r\n if (_.pricingMode && !(_.manyLots || _.isCluster)) {\r\n return css`\r\n &:after {\r\n color: ${_.color};\r\n content: '${_.simulatedPrice || '?'}';\r\n font-size: 1.4em;\r\n background: white;\r\n border: 2px solid white;\r\n }\r\n `\r\n }\r\n\r\n return null\r\n }}\r\n\r\n ${_ =>\r\n _.isSelected &&\r\n css`\r\n z-index: 2;\r\n transform: scale(${_.pricingMode ? 1.2 : 1.5}) translate(-50%, -50%);\r\n path {\r\n fill: ${_.hoverColor};\r\n }\r\n &:after {\r\n color:${_.hoverColor};\r\n `}\r\n\r\n ${_ =>\r\n _.hovered &&\r\n _.hoverColor &&\r\n css`\r\n path {\r\n fill: ${_.hoverColor};\r\n }\r\n &:after {\r\n color:${_.hoverColor};\r\n `}\r\n`\r\n\r\nconst LotMarker: React.FC = props => {\r\n const mountedRef = React.useRef(false)\r\n const [mounted, setMounted] = React.useState(false)\r\n const { hasParkedCar } = useSelector((state: RootState) =>\r\n mapSlice.selectHasParkedCar(state, props.lotId)\r\n )\r\n const { findCarMode } = useSelector(mapSlice.stateSelectors)\r\n\r\n const simulatedPrice = useSelector((state: RootState) =>\r\n simulatePriceSlice.selectPriceString(state, props.lotId)\r\n )\r\n const { pin } = useTheme().palette\r\n React.useEffect(() => {\r\n setTimeout(() => mountedRef.current && setMounted(true), 50)\r\n return () => {\r\n mountedRef.current = false\r\n }\r\n }, [])\r\n mountedRef.current = true\r\n\r\n if (findCarMode && !props.isCluster && hasParkedCar) return null\r\n\r\n return (\r\n \r\n {props.manyLots || props.isCluster ? (\r\n \r\n ) : props.pricingMode ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default LotMarker\r\n","import React from 'react'\r\nimport { SharedIcon } from 'shared'\r\nimport styled from 'styled-components'\r\n\r\nconst GpsIndicator = styled.div`\r\n width: 16px;\r\n height: 16px;\r\n background: #fff;\r\n border-radius: 50%;\r\n border: 3px solid ${_ => _.theme.palette.primary.main};\r\n`\r\nconst GpsMarkerHeading = styled(SharedIcon.HeadingGpsIndicator)<{\r\n heading: number\r\n}>`\r\n transition: all 0.5s;\r\n // svg icon is rotated\r\n transform: rotate(calc(-71.45deg + ${_ => _.heading}deg));\r\n transform-origin: 16.6px 29.16px;\r\n`\r\nexport interface GpsMarkerProps {\r\n lat: number\r\n lng: number\r\n heading: number | null\r\n}\r\n\r\nexport const GpsMarker: React.FC = props => {\r\n return (\r\n <>\r\n {props.heading ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default GpsMarker\r\n","import {\r\n Divider,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n SvgIcon,\r\n} from '@mui/material'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppDialog, AppTypography, SharedIcon } from 'shared'\r\nimport { SelectParkedCar } from 'store/slices/ticketsSlice.types'\r\nimport { Translations } from 'utils'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nexport interface SelectCarDialogProps {\r\n cars: SelectParkedCar[]\r\n open: boolean\r\n onClick: (arg: SelectParkedCar) => void\r\n closeDialog: () => void\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n minWidth: 36,\r\n },\r\n rootDialog: {\r\n minWidth: 280,\r\n },\r\n}))\r\n\r\nexport const SelectCarDialog: React.FC = props => {\r\n const { t } = useTranslation()\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n \r\n {t(Translations.FIND_CAR)}\r\n \r\n \r\n {props.cars.map(el => (\r\n \r\n props.onClick(el)}>\r\n \r\n \r\n \r\n \r\n {el.plate || el.lot.lotName}\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SelectCarDialog\r\n","import { IconButton } from '@mui/material'\r\nimport React from 'react'\r\nimport { FlexBox, SharedIcon } from 'shared'\r\nimport styled from 'styled-components'\r\n\r\nexport interface NavButtonsProps {\r\n onClickGps: () => void\r\n onClickFindCar: () => void\r\n onClickPricing: () => void\r\n disabledFindCar: boolean\r\n findCarMode: boolean\r\n pricingMode: boolean\r\n}\r\nconst Wrapper = styled.div`\r\n position: absolute;\r\n top: 80px;\r\n right: 0;\r\n height: auto;\r\n z-index: 1;\r\n padding-right: ${_ => _.theme.spacing(2)};\r\n`\r\nconst StyledFlexBox = styled(FlexBox)`\r\n > div {\r\n background: white;\r\n border-radius: 50%;\r\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.25);\r\n }\r\n`\r\nexport const NavButtons: React.FC = props => {\r\n return (\r\n \r\n \r\n \r\n {props.findCarMode ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {props.pricingMode ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default NavButtons\r\n","import {\r\n CircularProgress,\r\n FormControl,\r\n Icon,\r\n IconButton,\r\n InputAdornment,\r\n} from '@mui/material'\r\nimport { Close, Search } from '@mui/icons-material'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppTextField } from 'shared'\r\nimport styled from 'styled-components'\r\nimport Translations from '../../../utils/translations'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { customerSlice, mapSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\n\r\ninterface SearchBoxProps {\r\n onSearchClick: () => void\r\n showSearchView: (arg: boolean) => void\r\n setSearchValue: (arg: string) => void\r\n searchValue: string\r\n pending: boolean\r\n isSearchView: boolean\r\n}\r\n\r\ntype BlurHandle = {\r\n blur: () => void\r\n}\r\n\r\nconst SearchBoxContainer = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: auto;\r\n padding: ${_ => _.theme.spacing(2)};\r\n z-index: 4;\r\n display: flex;\r\n align-items: center;\r\n box-sizing: border-box;\r\n .MuiInputBase-root {\r\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.25);\r\n }\r\n`\r\nconst useStyles = makeStyles(_ => ({\r\n iconRoot: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n}))\r\n\r\nconst SearchBox: React.ForwardRefRenderFunction = (\r\n props,\r\n ref\r\n) => {\r\n const { t } = useTranslation()\r\n const classes = useStyles(props)\r\n const dispatch = useAppDispatch()\r\n const inputEl = React.useRef(null)\r\n React.useImperativeHandle(ref, () => ({\r\n blur: () => {\r\n inputEl.current.blur()\r\n },\r\n }))\r\n const onChange = (e: any) => {\r\n props.setSearchValue(e.target.value?.toUpperCase())\r\n if (e.target.value) {\r\n props.showSearchView(true)\r\n } else {\r\n dispatch(customerSlice.actions.setCorporationGlobalPcode(''))\r\n dispatch(customerSlice.actions.setCorporationToken(''))\r\n dispatch(mapSlice.actions.resetBoundsToOmit())\r\n }\r\n }\r\n const onSubmit = (e: any) => {\r\n if (e.key === 'Enter' && e.target.value.trim()) {\r\n props.onSearchClick()\r\n }\r\n if (!e.target.value && (e.key === 'Escape' || e.key === 'Backspace')) {\r\n props.showSearchView(false)\r\n }\r\n }\r\n\r\n const onClickClear = () => {\r\n props.setSearchValue('')\r\n dispatch(customerSlice.actions.setCorporationGlobalPcode(''))\r\n dispatch(customerSlice.actions.setCorporationToken(''))\r\n dispatch(mapSlice.actions.resetBoundsToOmit())\r\n inputEl.current.focus()\r\n }\r\n\r\n const onSearchClick = () => {\r\n if (props.searchValue) {\r\n props.onSearchClick()\r\n props.showSearchView(false)\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n props.showSearchView(true)}\r\n onClick={() => props.showSearchView(true)}\r\n fullWidth\r\n placeholder={t(Translations.PCODE_PARKING_NAME)}\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n endAdornment: (\r\n \r\n {props.pending && props.isSearchView && (\r\n \r\n \r\n \r\n )}\r\n {props.searchValue && (\r\n \r\n \r\n \r\n )}\r\n \r\n ),\r\n }}\r\n inputProps={{ \r\n maxLength: 10, \r\n type: 'search', \r\n enterKeyHint: 'go',\r\n inputMode: 'search' \r\n }}\r\n />\r\n \r\n \r\n )\r\n}\r\n\r\nexport default React.forwardRef(SearchBox)\r\n","import { Avatar, Divider, Grid, ListItemText, Paper } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n AppTypography,\r\n FlexBox,\r\n SharedIcon,\r\n} from 'shared'\r\nimport { BOTTOM_BAR_HEIGHT } from 'shared/layout/constants'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { customerSlice, mapSlice, ticketsSlice } from 'store/slices'\r\nimport { LotState } from 'store/slices/mapSlice.types'\r\nimport styled from 'styled-components'\r\nimport { getDateWithCustomTime } from 'utils'\r\nimport Translations from 'utils/translations'\r\nconst SelectedAreaContainer = styled.div`\r\n max-width: 370px;\r\n margin: 0 auto;\r\n position: fixed;\r\n bottom: calc(${BOTTOM_BAR_HEIGHT}px + 16px);\r\n left: 0;\r\n right: 0;\r\n z-index: 3;\r\n`\r\n\r\nconst ClosedInfo = styled.span`\r\n color: ${props => props.theme.palette.error.main};\r\n`\r\n\r\nconst useStyles = makeStyles(_ => ({\r\n root: {\r\n width: 80,\r\n overflow: 'initial',\r\n backgroundColor: 'inherit',\r\n },\r\n gridRoot: {\r\n padding: 0,\r\n },\r\n gridAvatarRoot: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n paperRoot: {\r\n borderRadius: 8,\r\n },\r\n capacityMessage: {\r\n display: '-webkit-box',\r\n '-webkit-line-clamp': '2',\r\n '-webkit-box-orient': 'vertical',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n background: '-webkit-linear-gradient(#000000,#eee)',\r\n '-webkit-background-clip': 'text',\r\n '-webkit-text-fill-color': 'transparent',\r\n },\r\n}))\r\nexport interface SelectedLotInfoProps {\r\n lot: LotState\r\n loading: boolean\r\n onParkCarClick: () => void\r\n onTicketClick: (ticketId: string) => void\r\n}\r\n\r\nexport const SelectedLotInfo: React.FC = ({\r\n lot,\r\n ...props\r\n}) => {\r\n const { t } = useTranslation()\r\n const classes = useStyles()\r\n const { hasParkedCar, parkedCar } = useSelector((state: RootState) =>\r\n mapSlice.selectHasParkedCar(state, lot.lotId)\r\n )\r\n const [canParkCar, setCanParkCar] = React.useState(true)\r\n const [capacityFullMessageTrim, setCapacityFullMessageTrim] =\r\n React.useState(true)\r\n const { customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const tickets = useSelector(ticketsSlice.selectSortedParkedTickets)\r\n\r\n const isClosedForWholeDay = () => {\r\n if (!lot?.currentDateTimeLocal) {\r\n return true\r\n } else if (lot?.openingHours) {\r\n return (\r\n lot?.openingHours[moment(lot?.currentDateTimeLocal).day()]\r\n ?.openingHoursInDay.length === 0\r\n )\r\n }\r\n return false\r\n }\r\n\r\n const isLocationStopped = () => {\r\n return lot?.isLocationStopped\r\n }\r\n\r\n const isCapacityFull = () => {\r\n return lot?.lotCapacity?.lotIsFull\r\n }\r\n\r\n const isParkingClosed = () => {\r\n if (!lot?.currentDateTimeLocal) return true\r\n let isClosed = true\r\n lot?.openingHours[\r\n moment(lot?.currentDateTimeLocal).day()\r\n ].openingHoursInDay.forEach(el => {\r\n if (\r\n moment(lot?.currentDateTimeLocal).isBetween(\r\n getDateWithCustomTime(lot?.currentDateTimeLocal, el.startTime)\r\n ?.fullMomentDate,\r\n getDateWithCustomTime(lot?.currentDateTimeLocal, el.endTime)\r\n ?.fullMomentDate\r\n )\r\n ) {\r\n isClosed = false\r\n }\r\n })\r\n return isClosed\r\n }\r\n const navigate = React.useCallback(() => {\r\n window.open(\r\n `https://www.google.com/maps/dir/?api=1&destination=${lot.geolocation.latitude},${lot.geolocation.longitude}&travelmode=driving&dir_action=navigate`,\r\n '_blank'\r\n )\r\n }, [lot])\r\n\r\n const lotAddress = lot.hasDetails\r\n ? `${lot.address?.street}${\r\n lot.address?.city ? `, `.concat(lot.address?.city) : ''\r\n }`\r\n : null\r\n\r\n const openingHours = () => {\r\n if (!lot?.openingHours) return '-'\r\n let hoursString = ''\r\n lot?.openingHours[\r\n moment(lot?.currentDateTimeLocal).day()\r\n ].openingHoursInDay.forEach(({ endTime, startTime }, i, arr) => {\r\n const start =\r\n getDateWithCustomTime(\r\n lot?.currentDateTimeLocal,\r\n startTime\r\n )?.fullMomentDate.format('LT') || ''\r\n const end =\r\n getDateWithCustomTime(\r\n lot?.currentDateTimeLocal,\r\n endTime\r\n )?.fullMomentDate.format('LT') || ''\r\n const newString = `${start} - \r\n ${end}${i + 1 < arr.length ? ', ' : ''}`\r\n hoursString = hoursString + newString\r\n })\r\n\r\n return hoursString\r\n }\r\n\r\n const lotOpenOrClosedInfo = () => {\r\n if (isLocationStopped()) {\r\n return (\r\n \r\n {lot.locationStoppedMessage ??\r\n t(Translations.TEXT2PARK_IS_CURRENTLY_NOT_AVAILABLE)}\r\n \r\n )\r\n } else if (isCapacityFull()) {\r\n return (\r\n setCapacityFullMessageTrim(prevState => !prevState)}\r\n >\r\n {lot.lotCapacity.capacityFullWEBMessage}\r\n \r\n )\r\n } else if (isClosedForWholeDay()) {\r\n return (\r\n \r\n {t(Translations.TODAY_OPEN)}:{' '}\r\n {t(Translations.TODAY_CLOSED)}\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n {t(Translations.TODAY_OPEN)}: {openingHours()}\r\n \r\n )\r\n }\r\n }\r\n\r\n const NoCarsParkingBtns = () => (\r\n \r\n \r\n {t(Translations.NAVIGATE)}\r\n \r\n {canParkCar && lot?.hasDetails && (\r\n \r\n {isParkingClosed()\r\n ? t(Translations.CLOSED)\r\n : t(Translations.PARK_CAR)}\r\n \r\n )}\r\n \r\n )\r\n\r\n const WithCarsParkingBtns = () => (\r\n \r\n \r\n {t(Translations.NAVIGATE)}\r\n \r\n props.onTicketClick(parkedCar?.carId)}\r\n minWidth={canParkCar ? 'auto' : '120px'}\r\n >\r\n {t(Translations.TICKET)}\r\n \r\n {canParkCar && lot?.hasDetails && (\r\n \r\n {isParkingClosed()\r\n ? t(Translations.CLOSED)\r\n : t(Translations.PARK_ANOTHER_CAR)}\r\n \r\n )}\r\n \r\n )\r\n\r\n React.useEffect(() => {\r\n if (customerSignedInAsGuest && tickets.length) {\r\n setCanParkCar(false)\r\n } else {\r\n setCanParkCar(true)\r\n }\r\n }, [customerSignedInAsGuest, tickets.length])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.loading && !lot?.hasDetails ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {lot.lotName}\r\n \r\n }\r\n secondary={\r\n \r\n {lotAddress ? lotAddress : '-'}\r\n \r\n }\r\n />\r\n \r\n {lotOpenOrClosedInfo()}\r\n \r\n \r\n \r\n \r\n {hasParkedCar ? : }\r\n \r\n \r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default SelectedLotInfo\r\n","import GoogleMapReact, { ChangeEventValue, MapOptions } from 'google-map-react'\r\nimport * as React from 'react'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { BOTTOM_BAR_HEIGHT } from 'shared/layout/constants'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { layoutSlice, simulatePriceSlice, sliceUtil } from 'store/slices'\r\nimport * as mapSlice from 'store/slices/mapSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport useSupercluster from 'use-supercluster'\r\nimport CarMarker from './CarMarker'\r\nimport GpsMarker from './GpsMarker'\r\nimport LotMarker from './LotMarker'\r\nimport { GOOGLE_KEY } from 'api/config'\r\n\r\ntype MapProps = {\r\n showSelectLotDialog: () => void\r\n}\r\nconst MapWrapper = styled.div<{ hasBottomBar?: boolean; height?: number }>`\r\n width: 100%;\r\n position: relative;\r\n height: ${_ => _.height - (_.hasBottomBar ? BOTTOM_BAR_HEIGHT : 0)}px;\r\n @media only screen and (orientation: landscape) {\r\n height: ${_ => _.height}px;\r\n }\r\n`\r\n\r\nconst mapOptions: MapOptions = {\r\n disableDefaultUI: true,\r\n gestureHandling: 'greedy',\r\n}\r\n\r\nconst key = GOOGLE_KEY\r\n\r\nexport const Map: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { token } = useParams<{ token: string }>()\r\n const { pricingMode } = useSelector(simulatePriceSlice.stateSelectors)\r\n const { bottomMenu, height } = useSelector(layoutSlice.stateSelectors)\r\n const selectedLot = useSelector((state: RootState) =>\r\n mapSlice.selectById(state, state.map.selectedLot)\r\n )\r\n const parkedLots = useSelector(mapSlice.selectParkedLots)\r\n const { position, zoom, myPosition, findCarMode, bounds } = useSelector(\r\n mapSlice.stateSelectors\r\n )\r\n const lots = useSelector(mapSlice.selectMapLots)\r\n const boundsToFetch = useSelector(mapSlice.selectUnfetchedBounds)\r\n\r\n const points = lots.map(lot => ({\r\n type: 'Feature',\r\n properties: {\r\n lotId: lot.lotId,\r\n lotsIds: lot.lotsIds,\r\n manyLots: lot.manyLots,\r\n },\r\n geometry: {\r\n type: 'Point',\r\n coordinates: [lot.geolocation.longitude, lot.geolocation.latitude],\r\n },\r\n }))\r\n\r\n const { clusters, supercluster } = useSupercluster({\r\n points,\r\n bounds,\r\n zoom,\r\n options: { radius: 100 },\r\n })\r\n\r\n React.useEffect(() => {\r\n if (boundsToFetch.length) {\r\n dispatch(\r\n mapSlice.getLots({\r\n ...sliceUtil.mapClusterBoundsToApi(boundsToFetch),\r\n token,\r\n })\r\n )\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [boundsToFetch, dispatch, token])\r\n\r\n React.useEffect(\r\n () => () => {\r\n dispatch(mapSlice.actions.unselectLot())\r\n },\r\n [dispatch]\r\n )\r\n\r\n const onChildClick = (pointId: string, childProps: any) => {\r\n const { lat, lng, isCluster, lotId, lotsIds, manyLots } = childProps\r\n if (isCluster) {\r\n const dashIdx = pointId.indexOf('-')\r\n const clusterLng = pointId.slice(dashIdx + 1)\r\n const clusterLat = pointId.slice(0, dashIdx)\r\n const clusterId = clusters.find(el => {\r\n const [longitude, latitude] = el.geometry.coordinates\r\n return (\r\n longitude.toString() === clusterLng &&\r\n latitude.toString() === clusterLat\r\n )\r\n })?.id\r\n if (!clusterId) {\r\n console.warn('cluster id error')\r\n return\r\n }\r\n const expansionZoom = Math.min(\r\n supercluster.getClusterExpansionZoom(parseInt(clusterId)),\r\n 20\r\n )\r\n batch(() => {\r\n dispatch(mapSlice.actions.setZoom(expansionZoom))\r\n dispatch(mapSlice.actions.setPosition({ lat, lng }))\r\n })\r\n return\r\n }\r\n if (manyLots) {\r\n dispatch(mapSlice.actions.setLotsToSelect({ ids: lotsIds }))\r\n props.showSelectLotDialog()\r\n return\r\n }\r\n batch(() => {\r\n dispatch(mapSlice.actions.selectLot({ lotId }))\r\n dispatch(mapSlice.getLotDetailsMap({ lotId }))\r\n })\r\n }\r\n const onClick = React.useCallback(\r\n () => dispatch(mapSlice.actions.unselectLot()),\r\n [dispatch]\r\n )\r\n const onChange: (value: ChangeEventValue) => any = ({ center, bounds }) => {\r\n dispatch(mapSlice.actions.setBounds(bounds))\r\n dispatch(mapSlice.actions.setPosition(center))\r\n }\r\n React.useEffect(() => {\r\n const noClusteredLots = clusters\r\n .filter(el => el.properties.lotId)\r\n .map(el => el.properties.lotId)\r\n dispatch(mapSlice.actions.setNoClusteredLots(noClusteredLots))\r\n }, [clusters, dispatch])\r\n\r\n return (\r\n <>\r\n \r\n dispatch(mapSlice.actions.setZoom(zoom))}\r\n >\r\n {clusters.map(cluster => {\r\n const [longitude, latitude] = cluster.geometry.coordinates\r\n const {\r\n cluster: isCluster,\r\n point_count: pointCount,\r\n lotId,\r\n lotsIds,\r\n manyLots,\r\n } = cluster.properties\r\n return (\r\n \r\n )\r\n })}\r\n {myPosition?.lat && myPosition?.lng && (\r\n \r\n )}\r\n {findCarMode &&\r\n !!parkedLots.length &&\r\n parkedLots.map((el, i) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Map\r\n","import {\r\n Divider,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n} from '@mui/material'\r\nimport { makeStyles, useTheme } from '@mui/styles'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport { AppDialog, AppTypography, SharedIcon } from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { mapSlice, simulatePriceSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { Translations } from 'utils'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n rootPrimaryText: {\r\n paddingRight: 12,\r\n },\r\n rootItem: {\r\n paddingTop: 4,\r\n paddingBottom: 4,\r\n },\r\n rootIcon: {\r\n minWidth: 36,\r\n },\r\n}))\r\n\r\nexport interface ListElementProps {\r\n divider: boolean\r\n id: string\r\n onLotClick: (id: string) => void\r\n hasPrice?: boolean\r\n}\r\nexport const ListElement: React.FC = props => {\r\n const classes = useStyles()\r\n const { palette } = useTheme()\r\n const lot = useSelector((state: RootState) =>\r\n mapSlice.selectById(state, props.id)\r\n )\r\n const simulatedPrice = useSelector((state: RootState) =>\r\n simulatePriceSlice.selectPriceString(state, props.id)\r\n )\r\n return (\r\n <>\r\n props.onLotClick(props.id)}\r\n classes={{ root: classes.rootItem }}\r\n >\r\n \r\n \r\n \r\n \r\n {lot.lotName}\r\n \r\n }\r\n secondary={`(${lot.pCode})`}\r\n classes={{ primary: classes.rootPrimaryText }}\r\n >\r\n {props.hasPrice && (\r\n props.onLotClick(props.id)}\r\n >\r\n {simulatedPrice || '-'}\r\n \r\n )}\r\n \r\n {props.divider && }{' '}\r\n \r\n )\r\n}\r\n\r\nexport interface MapSelectLotDialogProps {\r\n open: boolean\r\n closeDialog: () => void\r\n}\r\n\r\nexport const MapSelectLotDialog: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const { lotsToSelect } = useSelector(mapSlice.stateSelectors)\r\n const { pricingMode } = useSelector(simulatePriceSlice.stateSelectors)\r\n\r\n const onLotClick = (id: string) => {\r\n batch(() => {\r\n dispatch(mapSlice.actions.selectLot({ lotId: id }))\r\n dispatch(mapSlice.getLotDetailsMap({ lotId: id }))\r\n })\r\n props.closeDialog()\r\n }\r\n\r\n return (\r\n {\r\n props.closeDialog()\r\n dispatch(mapSlice.actions.unsetLotsToSelect())\r\n }}\r\n >\r\n \r\n {t(Translations.SELECT_LOT)}\r\n \r\n \r\n {lotsToSelect.map((el, i, arr) => (\r\n \r\n i}\r\n />\r\n \r\n ))}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default MapSelectLotDialog\r\n","import {\r\n Divider,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n} from '@mui/material'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport {\r\n AppTypography,\r\n Placeholder,\r\n SharedIcon,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { mapSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport { Lot } from 'typedef/lot'\r\nimport { CarStatus } from 'typedef/ticket'\r\nimport Translations from 'utils/translations'\r\n\r\nconst MapSearchViewContainer = styled.div`\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n top: 0;\r\n left: 0;\r\n z-index: 3;\r\n background: #fff;\r\n padding-top: 60px;\r\n box-sizing: border-box;\r\n`\r\nexport interface MapSearchViewProps {\r\n hideSearchView: () => void\r\n}\r\nconst StyledList = styled(List)`\r\n padding: 0;\r\n li {\r\n padding: 0;\r\n }\r\n`\r\n\r\nexport const MapSearchView: React.FC = props => {\r\n const { t } = useTranslation()\r\n const history = useSelector(ticketsSlice.selectParkingHistory)\r\n const dispatch = useAppDispatch()\r\n\r\n const onClick = (\r\n e: React.MouseEvent,\r\n lot: Lot\r\n ) => {\r\n e.stopPropagation()\r\n\r\n batch(() => {\r\n dispatch(mapSlice.actions.selectLot({ lotId: lot.lotId }))\r\n dispatch(mapSlice.getLotDetailsMap({ lotId: lot.lotId }))\r\n dispatch(\r\n mapSlice.actions.setPosition({\r\n lat: lot.geolocation.latitude,\r\n lng: lot.geolocation.longitude,\r\n })\r\n )\r\n dispatch(mapSlice.actions.setZoom(17))\r\n props.hideSearchView()\r\n })\r\n }\r\n\r\n const renderHistory = () => (\r\n \r\n {history.map((el, i, arr) => (\r\n \r\n onClick(e, el)}>\r\n \r\n {el.carStatus === CarStatus.Parked ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {el.lotName}\r\n }\r\n secondary={\r\n \r\n {el.locationName}\r\n \r\n }\r\n />\r\n \r\n {i < arr.length - 1 && }\r\n \r\n ))}\r\n \r\n )\r\n\r\n const onContainerClick = () => props.hideSearchView()\r\n\r\n return (\r\n \r\n \r\n {!!history.length ? (\r\n renderHistory()\r\n ) : (\r\n }\r\n title={t(Translations.NO_SEARCH_HISTORY)}\r\n />\r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default MapSearchView\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { CSSTransition } from 'react-transition-group'\r\nimport { paths } from 'routing'\r\nimport { TRANSITION_TIME } from 'shared/layout/constants'\r\nimport ParkingRatesModal from 'shared/ParkingRates/ParkingRatesModal'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n customerSlice,\r\n mapSlice,\r\n parkCarSlice,\r\n sliceUtil,\r\n ticketsSlice,\r\n simulatePriceSlice,\r\n} from 'store/slices'\r\nimport { SelectParkedCar } from 'store/slices/ticketsSlice.types'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { chunk, Translations } from 'utils'\r\nimport * as MapComponent from './MapComponents'\r\nimport MapSelectCarDialog from './MapComponents/SelectCarDialog'\r\nimport MapSearchView from './MapSearchView'\r\nimport { apiDateFormat } from 'utils'\r\n\r\nexport interface MapContainerProps {}\r\n\r\nexport const MapContainer: React.FC = props => {\r\n const [searchValue, setSearchValue] = React.useState('')\r\n const searchBoxRef = React.useRef(null)\r\n const [showSearchView, setShowSearchView] = React.useState(false)\r\n const [showSelectCar, setShowSelectCar] = React.useState(false)\r\n const [disabledFindCar, setDisabledFindCar] = React.useState(true)\r\n const [showPricingModal, setShowPricingModal] = React.useState(false)\r\n const [showSelectLotDialog, setShowSelectLotDialog] = React.useState(false)\r\n const availableCalls = useSelector(\r\n simulatePriceSlice.selectAvailableCallsNumber\r\n )\r\n\r\n const { pricingMode, simulateEndTime, simulateStartTime } = useSelector(\r\n simulatePriceSlice.stateSelectors\r\n )\r\n const selectMissingPricesLots = useSelector(\r\n simulatePriceSlice.selectMissingPricesLots\r\n )\r\n const dispatch = useAppDispatch()\r\n const selectedLot = useSelector((state: RootState) =>\r\n mapSlice.selectById(state, state.map.selectedLot)\r\n )\r\n const { enqueueSnackbar } = useSnackbar()\r\n\r\n const { t } = useTranslation()\r\n const { promisesStatus, findCarMode, myPosition, geoError } = useSelector(\r\n mapSlice.stateSelectors\r\n )\r\n const { customerSignedIn, customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const getLotDetailsMapStatus = sliceUtil.fetchStatus(\r\n promisesStatus.getLotDetailsMap\r\n )\r\n const parkedCars = useSelector(ticketsSlice.selectParkedCars)\r\n const { push } = useHistory()\r\n\r\n const search = React.useCallback(async () => {\r\n dispatch(mapSlice.actions.unselectLot())\r\n const promise = await dispatch(\r\n mapSlice.getLotsByPcode({\r\n pcode: searchValue.trim(),\r\n })\r\n )\r\n if (mapSlice.getLotsByPcode.fulfilled.match(promise)) {\r\n const { lots } = unwrapResult(promise)\r\n searchBoxRef.current.blur()\r\n if (lots.length === 1) {\r\n batch(() => {\r\n dispatch(customerSlice.actions.setCorporationGlobalPcode(''))\r\n dispatch(customerSlice.actions.setCorporationToken(''))\r\n dispatch(\r\n mapSlice.actions.selectLot({ lotId: lots[0].lotId, position: true })\r\n )\r\n dispatch(mapSlice.actions.setZoom(17))\r\n dispatch(mapSlice.getLotDetailsMap({ lotId: lots[0].lotId }))\r\n setShowSearchView(false)\r\n })\r\n } else if (lots.length > 1) {\r\n if (myPosition) {\r\n batch(() => {\r\n dispatch(mapSlice.actions.focusMapOnMyLocation())\r\n dispatch(mapSlice.actions.setZoom(12))\r\n setShowSearchView(false)\r\n dispatch(\r\n customerSlice.actions.setCorporationGlobalPcode(\r\n searchValue.trim()\r\n )\r\n )\r\n })\r\n } else {\r\n batch(() => {\r\n dispatch(mapSlice.getLotDetailsMap({ lotId: lots[0].lotId }))\r\n dispatch(\r\n mapSlice.actions.selectLot({\r\n lotId: lots[0].lotId,\r\n position: true,\r\n })\r\n )\r\n dispatch(mapSlice.actions.setZoom(1))\r\n setShowSearchView(false)\r\n dispatch(\r\n customerSlice.actions.setCorporationGlobalPcode(\r\n searchValue.trim()\r\n )\r\n )\r\n })\r\n }\r\n } else {\r\n enqueueSnackbar(t(Translations.NO_PARKING_FOUND))\r\n }\r\n } else {\r\n enqueueSnackbar(t(Translations.NO_PARKING_FOUND))\r\n }\r\n }, [dispatch, enqueueSnackbar, searchValue, t, myPosition])\r\n\r\n const onClickGps = () => {\r\n if (myPosition) {\r\n dispatch(mapSlice.actions.focusMapOnMyLocation())\r\n } else {\r\n dispatch(mapSlice.actions.setGeo(true))\r\n }\r\n }\r\n\r\n const onClickFindCar = React.useCallback(() => {\r\n if (customerSignedInAsGuest && !parkedCars.length && !findCarMode) {\r\n return push(paths.parking.findCar)\r\n }\r\n if (customerSignedIn && !parkedCars.length && !findCarMode) {\r\n return enqueueSnackbar(t(Translations.NO_PARKED_CARS))\r\n }\r\n if (!findCarMode) {\r\n setShowSelectCar(true)\r\n } else {\r\n dispatch(mapSlice.actions.exitParkedCarMode())\r\n }\r\n }, [\r\n customerSignedIn,\r\n customerSignedInAsGuest,\r\n dispatch,\r\n enqueueSnackbar,\r\n findCarMode,\r\n parkedCars.length,\r\n push,\r\n t,\r\n ])\r\n\r\n const onClickSelectCar = React.useCallback(\r\n (arg: SelectParkedCar) => {\r\n batch(() => {\r\n dispatch(mapSlice.getLotDetailsMap({ lotId: arg.lot.lotId }))\r\n dispatch(mapSlice.actions.foundParkedCar({ lotId: arg.lot.lotId }))\r\n setShowSelectCar(false)\r\n })\r\n },\r\n\r\n [dispatch]\r\n )\r\n\r\n const onParkCarClick = React.useCallback(async () => {\r\n if (!selectedLot?.lotId) return\r\n dispatch(parkCarSlice.actions.resetPromiseStatus('getLotDetailsPark'))\r\n if (selectedLot.redirectUrl) {\r\n window.location.href = selectedLot.redirectUrl\r\n } else push(`${paths.parking.parkCar}/${selectedLot.lotId}`)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [push, selectedLot])\r\n\r\n const onTicketClick = (ticketId: string) => {\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({\r\n ticketId,\r\n })\r\n )\r\n push(paths.parking.tickets)\r\n }\r\n const onClickPricing = React.useCallback(async () => {\r\n if (!pricingMode) {\r\n setShowPricingModal(true)\r\n } else {\r\n dispatch(simulatePriceSlice.actions.resetState())\r\n }\r\n }, [dispatch, pricingMode])\r\n\r\n const handleCalculate = React.useCallback(\r\n async (entryDate: string, exitDate: string) => {\r\n const simulateStartTime = apiDateFormat(entryDate)\r\n const simulateEndTime = apiDateFormat(exitDate)\r\n dispatch(simulatePriceSlice.actions.setPricingMode(true))\r\n dispatch(\r\n simulatePriceSlice.actions.setDates({\r\n simulateEndTime,\r\n simulateStartTime,\r\n })\r\n )\r\n setShowPricingModal(false)\r\n },\r\n [dispatch]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (customerSignedIn) {\r\n parkedCars.length ? setDisabledFindCar(false) : setDisabledFindCar(true)\r\n }\r\n if (customerSignedInAsGuest) {\r\n setDisabledFindCar(false)\r\n }\r\n }, [customerSignedIn, customerSignedInAsGuest, parkedCars.length])\r\n\r\n React.useEffect(() => {\r\n if (geoError) {\r\n enqueueSnackbar(geoError, {\r\n key: 'geoError',\r\n onExited: () => dispatch(mapSlice.actions.setGeoError(null)),\r\n })\r\n }\r\n }, [dispatch, enqueueSnackbar, geoError])\r\n\r\n React.useEffect(() => {\r\n if (selectMissingPricesLots.length && pricingMode && availableCalls) {\r\n const parkings = chunk(selectMissingPricesLots, 4)[0]\r\n dispatch(\r\n simulatePriceSlice.getSimulatedPrices({\r\n simulateEndTime,\r\n simulateStartTime,\r\n parkings,\r\n })\r\n )\r\n }\r\n }, [\r\n selectMissingPricesLots,\r\n pricingMode,\r\n dispatch,\r\n simulateEndTime,\r\n simulateStartTime,\r\n availableCalls,\r\n ])\r\n return (\r\n <>\r\n \r\n \r\n \r\n setShowSearchView(false)} />\r\n \r\n setShowSelectLotDialog(true)}\r\n />\r\n\r\n setShowSelectLotDialog(false)}\r\n />\r\n setShowPricingModal(false)}\r\n data-testid=\"parkingRatesModal\"\r\n title={t(Translations.SEARCH_BEST_PARKING_PRICING)}\r\n />\r\n {selectedLot && (\r\n \r\n )}\r\n {showSelectCar && (\r\n setShowSelectCar(false)}\r\n onClick={onClickSelectCar}\r\n />\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default MapContainer\r\n","import { useChangeLayout, useUpdateTicket } from 'hooks'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider } from 'shared'\r\nimport { BOTTOM_BAR_HEIGHT, TRANSITION_TIME } from 'shared/layout/constants'\r\nimport PopupProvider from 'shared/popup_provider'\r\nimport { customerSlice, mapSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport MapContainer from './MapContainer'\r\n\r\nconst Wrapper = styled.div`\r\n position: relative;\r\n .search-view-enter {\r\n opacity: 0;\r\n }\r\n .search-view-enter-active {\r\n opacity: 1;\r\n transition: opacity ${TRANSITION_TIME}ms;\r\n }\r\n .search-view-exit {\r\n opacity: 1;\r\n }\r\n .search-view-exit-active {\r\n opacity: 0;\r\n transition: opacity ${TRANSITION_TIME}ms;\r\n }\r\n`\r\n\r\nexport interface MapViewProps {}\r\n\r\nexport const MapView: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { selectedLot } = useSelector(mapSlice.stateSelectors)\r\n const { token } = useParams<{ token: string }>()\r\n useUpdateTicket()\r\n const { idle, rejected } = useSelector(\r\n ticketsSlice.promiseStatusSelectors\r\n ).getTicketsStatus\r\n const { customerSignedOut } = useSelector(customerSlice.selectCustomerStatus)\r\n useChangeLayout(\r\n {\r\n layout: {\r\n hasTopBar: customerSignedOut ? true : false,\r\n hasBottomBar: true,\r\n hasFlatBackground: customerSignedOut ? false : true,\r\n },\r\n autoToogleSnackGap: false,\r\n bottomMenu: customerSignedOut ? false : true,\r\n topbar: null,\r\n },\r\n 'app',\r\n [customerSignedOut]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!customerSignedOut && (idle || rejected)) {\r\n dispatch(ticketsSlice.getTickets())\r\n }\r\n return () => {\r\n dispatch(mapSlice.actions.unsetFindCarMode())\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [customerSignedOut, dispatch, idle])\r\n\r\n if (customerSignedOut && !token) {\r\n return \r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default MapView\r\n","import {\r\n CircularProgress,\r\n Icon,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n IconButton,\r\n} from '@mui/material'\r\nimport * as React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { SharedIcon } from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { promiseStatusSelectors } from 'store/slices/receiptsSlice'\r\nimport { Receipt } from 'typedef/receipt'\r\nimport { formatCurrency, getDate } from 'utils'\r\nexport interface ReceiptBarProps {\r\n receipt: Receipt\r\n handleMailIconClick: () => void\r\n handleQuestionIconClick: () => void\r\n}\r\n\r\nconst ReceiptBar: React.FunctionComponent = props => {\r\n const { sendReceiptStatus, sendQuestionStatus } = useSelector(\r\n (state: RootState) => promiseStatusSelectors(state, props.receipt.carId)\r\n )\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {sendReceiptStatus.pending ? (\r\n \r\n \r\n \r\n ) : sendReceiptStatus.fulfilled ? (\r\n \r\n ) : (\r\n \r\n {sendReceiptStatus.rejected && (\r\n \r\n )}\r\n {sendReceiptStatus.idle && }\r\n \r\n )}\r\n \r\n \r\n {sendQuestionStatus.pending ? (\r\n \r\n \r\n \r\n ) : sendQuestionStatus.fulfilled ? (\r\n \r\n ) : (\r\n \r\n {sendQuestionStatus.rejected && (\r\n \r\n )}\r\n {sendQuestionStatus.idle && }\r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default ReceiptBar\r\n","import * as React from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport ReceiptBar from './ReceiptBar'\r\nimport { Divider, List } from '@mui/material'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\nimport { Receipt } from 'typedef/receipt'\r\nexport interface MyReceiptsProps {\r\n receipts?: Receipt[]\r\n}\r\n\r\nconst MyReceipts: React.FunctionComponent = props => {\r\n const history = useHistory()\r\n if (!props.receipts || !props.receipts.length) return null\r\n\r\n return (\r\n \r\n {props.receipts.map((v, i, arr) => (\r\n \r\n \r\n history.push(`${paths.parker.sendReceipt}/${v.carId}`)\r\n }\r\n handleQuestionIconClick={() =>\r\n history.push(`${paths.parker.question}/${v.carId}`)\r\n }\r\n />\r\n {i < arr.length - 1 && }\r\n \r\n ))}\r\n \r\n )\r\n}\r\nexport default MyReceipts\r\n","import * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Placeholder, PlaceholderProps, SharedIcon } from 'shared'\r\nimport Translations from 'utils/translations'\r\nimport { MyReceiptsProps } from './MyReceipts'\r\n\r\nexport const MyReceiptsPlaceholder: React.FunctionComponent<\r\n MyReceiptsProps & PlaceholderProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n }\r\n {...props}\r\n />\r\n )\r\n}\r\nexport default MyReceiptsPlaceholder\r\n","import { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n ErrorPlaceholder,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { receiptsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport MyReceipts from './MyReceipts'\r\nimport MyReceiptsPlaceholder from './MyReceiptsPlaceholder'\r\n\r\nexport interface MyReceiptsContainerProps {}\r\n\r\nexport const MyReceiptsContainer: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar, closeSnackbar } = useSnackbar()\r\n const snackbarKey = React.useRef(null)\r\n const receipts = useSelector(receiptsSlice.selectAllReceipts)\r\n\r\n const { getReceiptsStatus: status } = useSelector(\r\n receiptsSlice.promiseStatusSelectors\r\n )\r\n\r\n const reFetchData = (close?: boolean) => {\r\n if (status.rejected) {\r\n dispatch(receiptsSlice.getReceipts())\r\n }\r\n if (close) {\r\n closeSnackbar(snackbarKey.current)\r\n }\r\n }\r\n const action = (key: any) => (\r\n {\r\n closeSnackbar(key)\r\n reFetchData()\r\n }}\r\n >\r\n {t(Translations.REFRESH)}\r\n \r\n )\r\n React.useEffect(() => {\r\n if (status.idle) {\r\n dispatch(receiptsSlice.getReceipts())\r\n }\r\n }, [dispatch, status.idle])\r\n\r\n React.useEffect(() => {\r\n if (status.rejected) {\r\n snackbarKey.current = enqueueSnackbar(\r\n t(Translations.SOME_DATA_HAS_NOT_BEEN_UPDATED),\r\n {\r\n persist: true,\r\n key: 'fetchError',\r\n action,\r\n }\r\n )\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [action, dispatch, enqueueSnackbar, status.rejected])\r\n\r\n return (\r\n \r\n {status.pendingIdle && }\r\n {!receipts.length && (status.rejected || status.pendingRejected) && (\r\n \r\n )}\r\n {!!receipts.length && }\r\n {!receipts.length && (status.fulfilled || status.pendingFulfilled) && (\r\n \r\n {status.pending && }\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default MyReceiptsContainer\r\n","import { useChangeLayout } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { batch } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider } from 'shared'\r\nimport { receiptsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport MyReceiptsContainer from './MyReceiptsContainer'\r\n\r\nconst MyReceiptsView: React.FC = () => {\r\n const history = useHistory()\r\n const { t } = useTranslation()\r\n const title = t(Translations.MY_RECEIPTS)\r\n const dispatch = useAppDispatch()\r\n\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack: () => history.push(paths.parker.myProfile),\r\n },\r\n },\r\n 'app'\r\n )\r\n React.useEffect(() => {\r\n batch(() => {\r\n dispatch(receiptsSlice.actions.resetFinalSendReceiptStatus())\r\n dispatch(receiptsSlice.actions.resetFinalSendQuestionStatus())\r\n })\r\n return () =>\r\n batch(() => {\r\n dispatch(receiptsSlice.actions.resetFinalSendReceiptStatus())\r\n dispatch(receiptsSlice.actions.resetFinalSendQuestionStatus())\r\n })\r\n }, [dispatch])\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default MyReceiptsView\r\n","import { Typography } from '@mui/material'\r\nimport * as React from 'react'\r\nimport styled from 'styled-components'\r\nimport { Receipt } from 'typedef/receipt'\r\nimport { getDate } from 'utils/moment'\r\nimport { formatCurrency } from 'utils/random'\r\n\r\nconst ReceiptInfoWrapper = styled.div`\r\n display: flex;\r\n align-items: flex-end;\r\n justify-content: space-between;\r\n margin: 10px 0;\r\n`\r\nconst ReceiptInfo: React.FC<\r\n Pick\r\n> = props => (\r\n \r\n
\r\n {getDate(props.dateInUTC)}\r\n {props.locationName}\r\n
\r\n \r\n {formatCurrency(props.amount.currency, props.amount.totalAmount)}\r\n \r\n
\r\n)\r\n\r\nexport default ReceiptInfo\r\n","import { Form, Formik } from 'formik'\r\nimport { useChangeLayout } from 'hooks'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useParams } from 'react-router'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppButton,\r\n AppSnackBarProvider,\r\n AppSpinner,\r\n ErrorPlaceholder,\r\n FlexBox,\r\n Placeholder,\r\n SharedIcon,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { Input } from 'shared/Input'\r\nimport PopupProvider from 'shared/popup_provider'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { customerSlice, receiptsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { Receipt } from 'typedef/receipt'\r\nimport { Translations, blurLastInput } from 'utils'\r\nimport * as Yup from 'yup'\r\nimport ReceiptInfo from './ReceiptInfo'\r\ninterface SendReceiptProps {\r\n receipt?: Receipt\r\n carId: string\r\n}\r\n\r\nconst SendReceipt: React.FunctionComponent = ({\r\n receipt,\r\n carId,\r\n}) => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const history = useHistory()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const { setPopup, showPopup } = usePopup()\r\n\r\n const handleSubmit = async (values: { email: string }) => {\r\n const promise = await dispatch(\r\n receiptsSlice.sendReceipt({\r\n email: values.email,\r\n carId,\r\n })\r\n )\r\n if (receiptsSlice.sendReceipt.rejected.match(promise)) {\r\n setPopup({\r\n ...promise.payload,\r\n buttons: [\r\n {\r\n onClick() {\r\n handleSubmit(values)\r\n showPopup(false)\r\n },\r\n },\r\n {},\r\n ],\r\n })\r\n showPopup(true)\r\n } else {\r\n setPopup({\r\n variant: 'success',\r\n title: t(Translations.SUCCESS),\r\n description: t(Translations.RECEIPT_WILL_BE_SENT_TO_PROVIDED_EMAIL),\r\n buttons: [\r\n {\r\n onClick() {\r\n history.push(paths.parker.myReceipts)\r\n },\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n }\r\n }\r\n const EmailInputSchema = Yup.object().shape({\r\n email: Yup.string()\r\n .email(t(Translations.INVALID_EMAIL))\r\n .required(t(Translations.FIELD_REQUIRED)),\r\n })\r\n\r\n return (\r\n <>\r\n }\r\n >\r\n {receipt && (\r\n \r\n )}\r\n \r\n {({\r\n values,\r\n errors,\r\n handleBlur,\r\n handleChange,\r\n validateForm,\r\n submitForm,\r\n }) => (\r\n
\r\n {\r\n blurLastInput(e)\r\n }}\r\n autoFocus\r\n >\r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n submitForm()\r\n } else {\r\n enqueueSnackbar(entries[0][1])\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.SEND)}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport const SendReceiptPage: React.FC = props => {\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const title = t(Translations.SEND_RECEIPT)\r\n const dispatch = useAppDispatch()\r\n const { customerSignedIn, customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const { carId } = useParams<{ carId: string }>()\r\n const { sendReceiptStatus, getReceiptsStatus } = useSelector(\r\n (state: AppState) => receiptsSlice.promiseStatusSelectors(state, carId)\r\n )\r\n const receipt = useSelector((state: RootState) =>\r\n receiptsSlice.selectReceiptById(state, carId)\r\n )\r\n\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack: () => push(paths.parker.myReceipts),\r\n },\r\n },\r\n 'app'\r\n )\r\n\r\n const fetchData = () => dispatch(receiptsSlice.getReceipts())\r\n React.useEffect(() => {\r\n if (\r\n customerSignedIn &&\r\n !getReceiptsStatus.fulfilled &&\r\n !getReceiptsStatus.pending\r\n ) {\r\n fetchData()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n if (!carId) {\r\n return \r\n }\r\n if (customerSignedIn && getReceiptsStatus.fulfilled && !receipt) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {customerSignedIn && (\r\n <>\r\n {getReceiptsStatus.rejected ||\r\n getReceiptsStatus.pendingRejected ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {customerSignedInAsGuest && }\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SendReceiptPage\r\n","import { Box } from '@mui/material'\r\nimport React, { useState } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, AppPopup, AppTypography, FlexBox } from 'shared'\r\nimport CodeInput from 'shared/CodeInput'\r\nimport styled from 'styled-components'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface CodeStepPopupProps {\r\n showCodeStepPopup: boolean\r\n closePopup: () => void\r\n submitForm: () => void\r\n handleResendCode: () => void\r\n pin: string\r\n setPin: React.Dispatch>\r\n}\r\n\r\nconst StyledCodeInput = styled(CodeInput)`\r\n > input {\r\n border: 1px solid #dbdbdb;\r\n }\r\n`\r\n\r\nexport const CodeStepPopup = ({\r\n closePopup,\r\n showCodeStepPopup,\r\n submitForm,\r\n handleResendCode,\r\n pin,\r\n setPin,\r\n}: CodeStepPopupProps) => {\r\n const { t } = useTranslation()\r\n const [codeValid, setCodeValid] = useState(false)\r\n\r\n //DODAĆ TRANSLACJE\r\n return (\r\n \r\n {t(Translations.TYPE_CONFIRMATION_CODE)}\r\n \r\n }\r\n >\r\n \r\n \r\n {t(Translations.MESSAGE_WITH_CONFIRMATION_CODE_HAS_BEEN_SENT)}\r\n \r\n \r\n \r\n \r\n \r\n {t(Translations.YOU_DIDNT_RECEIVE_THE_CODE)}\r\n \r\n\r\n \r\n {t(Translations.RESEND_CODE)}\r\n \r\n \r\n \r\n \r\n {t(Translations.CONFIRM)}\r\n \r\n \r\n {t(Translations.CANCEL)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CodeStepPopup\r\n","import { TicketState } from 'store/slices/ticketsSlice.types'\r\nimport { GetContactInformationsData } from 'typedef'\r\n\r\nexport interface ReceiptsAndNotificationsProps {\r\n carId: string\r\n ticket?: TicketState\r\n}\r\n\r\nexport interface ContactInformationsProps {\r\n carId: string\r\n}\r\nexport interface ReceiptsAndNotificationsFormValues {\r\n email: string\r\n phoneNumber: string\r\n code: string\r\n}\r\n\r\nexport interface GuestPersonalData extends GetContactInformationsData {}\r\n\r\nexport enum RedirectType {\r\n ContactInformations = 1,\r\n ReceiptsAndNotifications = 2,\r\n}\r\n","import { useTranslation } from 'react-i18next'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { VerificationType } from 'typedef/receipt'\r\nimport { Translations } from 'utils'\r\nimport { contactInformationsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\nimport { unwrapResult } from '@reduxjs/toolkit'\r\n\r\nexport const useResendCode = (\r\n confirmToken: string,\r\n setConfirmToken: React.Dispatch>\r\n) => {\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const { setPopup, showPopup } = usePopup()\r\n\r\n const handleResendCode = async () => {\r\n dispatch(showLoader())\r\n const promise = await dispatch(\r\n contactInformationsSlice.resendVerificationSMS({\r\n confirmToken,\r\n verificationType: VerificationType.SavingGuestsPhoneNumber,\r\n })\r\n )\r\n dispatch(hideLoader())\r\n if (\r\n contactInformationsSlice.resendVerificationSMS.fulfilled.match(promise)\r\n ) {\r\n const res = unwrapResult(promise)\r\n setConfirmToken(res.confirmToken)\r\n setPopup({\r\n variant: 'success',\r\n title: t(Translations.SUCCESS),\r\n description: ' ',\r\n })\r\n showPopup(true)\r\n } else {\r\n setPopup({\r\n ...promise.payload,\r\n })\r\n showPopup(true)\r\n }\r\n }\r\n return handleResendCode\r\n}\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { contactInformationsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { VerificationType } from 'typedef'\r\nimport { ReceiptsAndNotificationsFormValues } from './types'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\n\r\nexport const useSendVerificationSMS = (\r\n setShowCodeStepPopup: React.Dispatch>,\r\n setConfirmToken: React.Dispatch>,\r\n carId: string,\r\n recaptchaToken: string\r\n) => {\r\n const { setPopup, showPopup } = usePopup()\r\n const dispatch = useAppDispatch()\r\n\r\n const handleSubmitWithPhoneNumber = async (\r\n values: ReceiptsAndNotificationsFormValues\r\n ) => {\r\n dispatch(showLoader())\r\n const promise = await dispatch(\r\n contactInformationsSlice.sendVerificationSMS({\r\n phoneNumber: values.phoneNumber,\r\n countryCode: parseInt(values.code),\r\n tokenValuePart: carId,\r\n verificationType: VerificationType.SavingGuestsPhoneNumber,\r\n recaptchaToken: recaptchaToken\r\n })\r\n )\r\n dispatch(hideLoader())\r\n if (contactInformationsSlice.sendVerificationSMS.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise)\r\n setShowCodeStepPopup(true), setConfirmToken(res.confirmToken)\r\n } else {\r\n setPopup({\r\n ...promise.payload,\r\n })\r\n showPopup(true)\r\n }\r\n }\r\n\r\n return handleSubmitWithPhoneNumber\r\n}\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { carsSlice, customerSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\n\r\nexport interface useGetCarsProps {}\r\n\r\nexport const useGetCars = () => {\r\n const dispatch = useAppDispatch()\r\n const { getCarsStatus } = useSelector(carsSlice.promiseStatusSelectors)\r\n const { customerSignedIn } = useSelector(customerSlice.selectCustomerStatus)\r\n\r\n React.useEffect(() => {\r\n if (getCarsStatus.idle && customerSignedIn) {\r\n dispatch(carsSlice.getCars())\r\n }\r\n }, [customerSignedIn, dispatch, getCarsStatus.idle])\r\n}\r\n\r\nexport default useGetCars\r\n","import { useParkMode } from 'pages/park_car/ParkCarHooks'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { CreditCard } from 'typedef'\r\n\r\nexport interface useSelectCardProps {}\r\n\r\nexport const usePaymentCard = () => {\r\n const dispatch = useAppDispatch()\r\n const parkMode = useParkMode()\r\n const [card, setCard] = React.useState(null)\r\n const parkCarCard = useSelector(parkCarSlice.selectCardId)\r\n const { addTimeCard, hasCardBeenUsed, zipCode, recaptchaToken } = useSelector(\r\n parkCarSlice.stateSelectors\r\n )\r\n\r\n const setPaymentCard = React.useCallback(\r\n (card: CreditCard) => {\r\n parkMode === 'parkCar' &&\r\n dispatch(parkCarSlice.actions.setCard({ id: card?.creditCardId }))\r\n parkMode === 'addMoreTime' &&\r\n dispatch(parkCarSlice.actions.setAddTimeCard({ card }))\r\n },\r\n [parkMode, dispatch]\r\n )\r\n\r\n const unsetPaymentCard = React.useCallback(() => {\r\n parkMode === 'parkCar' && dispatch(parkCarSlice.actions.setCard({ id: '' }))\r\n parkMode === 'addMoreTime' &&\r\n dispatch(parkCarSlice.actions.setAddTimeCard({ card: null }))\r\n }, [parkMode, dispatch])\r\n\r\n React.useEffect(() => {\r\n parkMode === 'parkCar' && setCard(parkCarCard)\r\n parkMode === 'addMoreTime' && setCard(addTimeCard)\r\n }, [addTimeCard, parkCarCard, parkMode])\r\n\r\n return {\r\n setPaymentCard,\r\n unsetPaymentCard,\r\n paymentCard: card,\r\n hasCardBeenUsed,\r\n zipCode,\r\n recaptchaToken\r\n }\r\n}\r\n\r\nexport default usePaymentCard\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\n\r\nexport const useGetTicket = () => {\r\n const dispatch = useAppDispatch()\r\n const { carId: carIdParam, ticketId } = useParams<{\r\n carId?: string\r\n ticketId?: string\r\n }>()\r\n const [carId, setCarId] = React.useState('')\r\n const { getTicketStatus } = useSelector((state: AppState) =>\r\n ticketsSlice.promiseStatusSelectors(state, carId || ticketId)\r\n )\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, carId || ticketId)\r\n )\r\n React.useEffect(() => {\r\n if (carIdParam || ticketId) {\r\n setCarId(carIdParam || ticketId)\r\n }\r\n }, [carIdParam, ticketId])\r\n const getTicket = React.useCallback(\r\n (carIdProp?: string) => {\r\n let id = carId\r\n if (carIdProp) {\r\n id = carIdProp\r\n setCarId(id)\r\n }\r\n if (!id) return\r\n return dispatch(ticketsSlice.getTicket({ carId: id }))\r\n },\r\n [carId, dispatch]\r\n )\r\n React.useEffect(() => {\r\n if (!ticket) {\r\n getTicket()\r\n }\r\n }, [getTicket, ticket])\r\n\r\n return [getTicketStatus.pending, getTicket, ticket] as const\r\n}\r\n\r\nexport default useGetTicket\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport usePaymentCard from 'pages/park_car_credit_card/CreditCardComponents/creditCardHooks/usePaymentCard'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n creditCardsSlice,\r\n customerSlice,\r\n parkCarSlice,\r\n ticketsSlice,\r\n} from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { ErrorCode } from 'typedef'\r\nimport useGetTicket from './useGetTicket'\r\n\r\nexport const useInitParkCar = (initLoad = true) => {\r\n const { carId, lotId } = useParams<{ lotId?: string; carId?: string }>()\r\n const [isLoading, setIsLoading] = React.useState(true)\r\n const [isDone, setIsDone] = React.useState(false)\r\n const [isError, setIsError] = React.useState(false)\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const [, getTicket] = useGetTicket()\r\n const { setPaymentCard } = usePaymentCard()\r\n const { getTicketsStatus, getTicketStatus } = useSelector((state: AppState) =>\r\n ticketsSlice.promiseStatusSelectors(state, carId)\r\n )\r\n\r\n const { customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const { getLotDetailsParkStatus } = useSelector(\r\n parkCarSlice.promiseStatusSelectors\r\n )\r\n const fetchData = React.useCallback(async () => {\r\n setIsLoading(true)\r\n dispatch(parkCarSlice.actions.setIsPaymentRequired(false))\r\n dispatch(parkCarSlice.actions.resetPromiseStatus('parkCarRedirect'))\r\n dispatch(creditCardsSlice.actions.resetPromiseStatus('getCreditCards'))\r\n\r\n if (!customerSignedInAsGuest && carId) {\r\n getTicket()\r\n }\r\n if (customerSignedInAsGuest) {\r\n dispatch(ticketsSlice.getTickets())\r\n }\r\n const promise = await dispatch(\r\n parkCarSlice.getLotDetailsPark({ lotId, carId })\r\n )\r\n if (parkCarSlice.getLotDetailsPark.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise)\r\n setPaymentCard(res.creditCardUsed)\r\n dispatch(\r\n parkCarSlice.actions.setHasCardBeenUsed(Boolean(res.creditCardUsed))\r\n )\r\n } else {\r\n if (promise.payload.code === ErrorCode.CarNotFound) {\r\n push(paths.parking.tickets)\r\n }\r\n }\r\n }, [\r\n carId,\r\n customerSignedInAsGuest,\r\n dispatch,\r\n getTicket,\r\n lotId,\r\n push,\r\n setPaymentCard,\r\n ])\r\n\r\n const setStatusParkCar = React.useCallback(() => {\r\n // loading state\r\n if (!customerSignedInAsGuest && !getLotDetailsParkStatus.pending) {\r\n setIsLoading(false)\r\n }\r\n if (\r\n customerSignedInAsGuest &&\r\n !getLotDetailsParkStatus.pending &&\r\n !getTicketsStatus.pending\r\n ) {\r\n setIsLoading(false)\r\n }\r\n\r\n // success state\r\n if (!customerSignedInAsGuest && getLotDetailsParkStatus.fulfilled) {\r\n setIsDone(true)\r\n setIsError(false)\r\n }\r\n if (\r\n customerSignedInAsGuest &&\r\n getLotDetailsParkStatus.fulfilled &&\r\n getTicketsStatus.fulfilled\r\n ) {\r\n setIsDone(true)\r\n setIsError(false)\r\n }\r\n\r\n // fail state\r\n if (!customerSignedInAsGuest && getLotDetailsParkStatus.rejected) {\r\n setIsError(true)\r\n }\r\n if (\r\n customerSignedInAsGuest &&\r\n (getLotDetailsParkStatus.rejected || getTicketsStatus.rejected)\r\n ) {\r\n setIsError(true)\r\n }\r\n }, [\r\n customerSignedInAsGuest,\r\n getLotDetailsParkStatus.fulfilled,\r\n getLotDetailsParkStatus.pending,\r\n getLotDetailsParkStatus.rejected,\r\n getTicketsStatus.fulfilled,\r\n getTicketsStatus.pending,\r\n getTicketsStatus.rejected,\r\n ])\r\n\r\n const setStatusAddTime = React.useCallback(() => {\r\n // loading state\r\n if (\r\n !customerSignedInAsGuest &&\r\n !getLotDetailsParkStatus.pending &&\r\n !getTicketStatus.pending\r\n ) {\r\n setIsLoading(false)\r\n }\r\n if (\r\n customerSignedInAsGuest &&\r\n !getLotDetailsParkStatus.pending &&\r\n !getTicketsStatus.pending\r\n ) {\r\n setIsLoading(false)\r\n }\r\n\r\n // success state\r\n if (\r\n !customerSignedInAsGuest &&\r\n getLotDetailsParkStatus.fulfilled &&\r\n getTicketStatus.fulfilled\r\n ) {\r\n setIsDone(true)\r\n setIsError(false)\r\n }\r\n if (\r\n customerSignedInAsGuest &&\r\n getLotDetailsParkStatus.fulfilled &&\r\n getTicketsStatus.fulfilled\r\n ) {\r\n setIsDone(true)\r\n setIsError(false)\r\n }\r\n\r\n // fail state\r\n if (\r\n !customerSignedInAsGuest &&\r\n (getLotDetailsParkStatus.rejected || getTicketStatus.rejected)\r\n ) {\r\n setIsError(true)\r\n }\r\n if (\r\n customerSignedInAsGuest &&\r\n (getLotDetailsParkStatus.rejected || getTicketsStatus.rejected)\r\n ) {\r\n setIsError(true)\r\n }\r\n }, [\r\n customerSignedInAsGuest,\r\n getLotDetailsParkStatus.fulfilled,\r\n getLotDetailsParkStatus.pending,\r\n getLotDetailsParkStatus.rejected,\r\n getTicketStatus.fulfilled,\r\n getTicketStatus.pending,\r\n getTicketStatus.rejected,\r\n getTicketsStatus.fulfilled,\r\n getTicketsStatus.pending,\r\n getTicketsStatus.rejected,\r\n ])\r\n\r\n React.useEffect(() => {\r\n if (lotId) {\r\n setStatusParkCar()\r\n }\r\n if (carId) {\r\n setStatusAddTime()\r\n }\r\n }, [carId, lotId, setStatusAddTime, setStatusParkCar])\r\n\r\n React.useEffect(() => {\r\n if (initLoad) {\r\n fetchData()\r\n return () => {\r\n dispatch(parkCarSlice.actions.resetPromiseStatus('getLotDetailsPark'))\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch])\r\n\r\n return { isDone, isLoading, isError, fetchData }\r\n}\r\n\r\nexport default useInitParkCar\r\n","import { useParkCarPath } from 'pages/park_car/ParkCarHooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport Translations from 'utils/translations'\r\n\r\nexport const useExpiredPricingPopup = () => {\r\n const { setPopup, showPopup } = usePopup()\r\n const [_, goTo] = useParkCarPath()\r\n const { t } = useTranslation()\r\n\r\n return React.useCallback(() => {\r\n setPopup({\r\n variant: 'error',\r\n description: t(\r\n Translations.RATE_HAS_EXPIRED_PLEASE_SELECT_YOUR_TIME_AGAIN\r\n ),\r\n title: t(Translations.RATE_HAS_EXPIRED),\r\n disableBackdropClick: true,\r\n buttons: [\r\n {\r\n onClick() {\r\n goTo('set', { fullRefresh: true })\r\n },\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n }, [goTo, setPopup, showPopup, t])\r\n}\r\n\r\nexport default useExpiredPricingPopup\r\n","import { FormControlLabel } from '@mui/material'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppCheckbox } from 'shared'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface AllDayTickProps {\r\n endDateTime: string\r\n allDayUntilMessage?: string\r\n disabled?: boolean\r\n isChecked: boolean\r\n setIsChecked: (e: boolean) => void\r\n}\r\n\r\nexport const AllDayTick: React.FC = props => {\r\n const { t } = useTranslation()\r\n const label = props.allDayUntilMessage\r\n ? props.allDayUntilMessage\r\n : `${t(Translations.ALL_DAY_UNTIL)}: ${moment(props.endDateTime).format(\r\n 'LT'\r\n )}`\r\n\r\n return (\r\n {\r\n props.setIsChecked(!props.isChecked)\r\n }}\r\n />\r\n }\r\n label={label}\r\n />\r\n )\r\n}\r\n\r\nexport default AllDayTick\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, DetailsBox } from 'shared'\r\nimport { GetPriceData } from 'typedef/price'\r\nimport { Currency } from 'typedef/ticket'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface ParkingExpiresSectionProps extends GetPriceData {\r\n changePricingBtn?: boolean\r\n changePricingOnClick?: () => void\r\n currency: Currency\r\n}\r\n\r\nexport const ParkingExpiresSection: React.FC<\r\n ParkingExpiresSectionProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n const label = props.convenienceFeeName\r\n ? props.convenienceFeeName\r\n : t(Translations.CONVENIENCE_FEE)\r\n\r\n return (\r\n \r\n \r\n {(Boolean(props.amount) || Boolean(props.convenienceFee)) && (\r\n <>\r\n \r\n \r\n \r\n \r\n {!!props.validations?.length &&\r\n props.validations.map(validator => (\r\n \r\n ))}\r\n \r\n \r\n )}\r\n {props.changePricingBtn && (\r\n <>\r\n \r\n \r\n \r\n {t(Translations.CHANGE_PRICING)}\r\n \r\n \r\n \r\n )}\r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default ParkingExpiresSection\r\n","import { useTerms } from 'pages/park_car/ParkCarHooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton } from 'shared'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface TermsButtonProps {\r\n onClick?: () => void\r\n}\r\n\r\nexport const TermsButton: React.FC = props => {\r\n const { t } = useTranslation()\r\n const onClickTerms = useTerms()\r\n return (\r\n (props.onClick ? props.onClick() : onClickTerms())}\r\n data-testid=\"termsButton\"\r\n >\r\n {t(Translations.TERMS_AND_CONDITIONS)}\r\n \r\n )\r\n}\r\n\r\nexport default TermsButton\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppTypography } from 'shared'\r\nimport { Currency } from 'typedef'\r\nimport { formatCurrency } from 'utils'\r\nimport Translations from 'utils/translations'\r\n\r\nconst defaultCurrency: Currency = {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n}\r\nexport interface TotalTextProps {\r\n currency?: Currency\r\n disabled?: boolean\r\n amount?: number\r\n}\r\n\r\nexport const TotalText: React.FC = props => {\r\n const { t } = useTranslation()\r\n const [currency, setCurrency] = React.useState(defaultCurrency)\r\n\r\n React.useEffect(() => {\r\n if (props.currency) setCurrency(props.currency)\r\n }, [props.currency])\r\n\r\n return (\r\n \r\n {currency && t(Translations.TOTAL)}:{' '}\r\n {formatCurrency(currency, props.amount)}\r\n \r\n )\r\n}\r\nTotalText.defaultProps = {\r\n amount: 0,\r\n currency: defaultCurrency,\r\n}\r\nexport default TotalText\r\n","import { Typography } from '@mui/material'\r\nimport styled from 'styled-components'\r\n\r\nexport const LoginInfo = styled(Typography)`\r\n font-size: 14px;\r\n line-height: 1.2;\r\n`\r\n\r\nexport const LoginInfoSeparator = styled(Typography)`\r\n font-size: 14px;\r\n line-height: 1.8;\r\n`\r\n\r\nexport const LoginInfoContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`\r\n","import React from 'react'\r\nimport clsx from 'clsx'\r\nimport { Checkbox, CheckboxProps } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst useStyles = makeStyles(_ => ({\r\n root: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n icon: {\r\n width: 18,\r\n height: 18,\r\n boxShadow:\r\n 'inset 0 0 0 1px rgba(16,22,26,.5), inset 0 -1px 0 rgba(16,22,26,.1)',\r\n backgroundColor: '#f5f8fa',\r\n backgroundImage:\r\n 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\r\n '$root.Mui-focusVisible &': {\r\n outline: '2px auto rgba(19,124,189,.6)',\r\n outlineOffset: 2,\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#ebf1f5',\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'none',\r\n background: 'rgba(206,217,224,.5)',\r\n },\r\n },\r\n checkedIcon: {\r\n backgroundColor: _.palette.primary.main,\r\n backgroundImage:\r\n 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&:before': {\r\n display: 'block',\r\n width: 18,\r\n height: 18,\r\n backgroundImage:\r\n \"url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath\" +\r\n \" fill-rule='evenodd' clip-rule='evenodd' d='M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 \" +\r\n \"1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z' fill='%23fff'/%3E%3C/svg%3E\\\")\",\r\n content: '\"\"',\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#32a3f5',\r\n },\r\n },\r\n}))\r\n\r\n// Inspired by blueprintjs\r\nexport function TermsOfServiceCheckbox(props: CheckboxProps) {\r\n const classes = useStyles()\r\n\r\n return (\r\n }\r\n icon={}\r\n inputProps={{ 'aria-label': 'decorative checkbox' }}\r\n {...props}\r\n />\r\n )\r\n}\r\n","import { UserLanguage } from 'typedef'\r\n\r\nexport const getLanguageEnum = () => {\r\n const language = navigator.language.toLocaleLowerCase()\r\n switch (true) {\r\n case language.includes('gb'):\r\n return UserLanguage.En_GB\r\n case language.includes('de'):\r\n return UserLanguage.De_de\r\n case language.includes('it'):\r\n return UserLanguage.It_it\r\n default:\r\n return UserLanguage.En_US\r\n }\r\n}\r\n","import { Box, Divider, FormControlLabel, Grid } from '@mui/material'\r\nimport React, { useEffect, useState } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, AppPopup, AppTypography, FlexBox } from 'shared'\r\nimport { Currency } from 'typedef/ticket'\r\nimport { Translations } from 'utils'\r\nimport { TermsButton } from './TermsButton'\r\nimport TotalText from './TotalText'\r\nimport { useSelector } from 'react-redux'\r\nimport { customerSlice } from 'store/slices'\r\nimport { LoginInfoSeparator } from 'pages/my_receipts/receiptsAndNotifications/styles'\r\nimport { TermsOfServiceCheckbox } from 'shared/TermOfServiceCheckbox'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { termsOfServiceSlice } from 'store/slices'\r\nimport { getLanguageEnum } from 'utils/language'\r\nimport { UserLanguage } from 'typedef'\r\nexport interface PaySectionProps {\r\n disabled: boolean\r\n amount?: number\r\n totalAmount?: number\r\n fee?: number\r\n onlyButton?: boolean\r\n onNextClick: () => void\r\n isUpfrontCouponAvailable?: boolean\r\n onValidateClick?: () => void\r\n currency?: Currency\r\n showNeedHelp?: React.Dispatch>\r\n isTosChecked: boolean\r\n setIsTosChecked: React.Dispatch>\r\n}\r\n\r\nexport const PaySection: React.FC = props => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { termsOfService, termsOfServiceContent } = useSelector(\r\n termsOfServiceSlice.stateSelectors\r\n )\r\n const [isOpen, setIsOpen] = useState(false)\r\n const { customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const language: UserLanguage = getLanguageEnum()\r\n\r\n useEffect(() => {\r\n dispatch(\r\n termsOfServiceSlice.showForCustomer({\r\n language: language,\r\n })\r\n )\r\n }, [dispatch, language])\r\n\r\n const nextButtonClick = async () => {\r\n if (!customerSignedInAsGuest && termsOfService.show) {\r\n const promise = await dispatch(\r\n termsOfServiceSlice.accept({\r\n termsAndConditionsId: termsOfService.termsAndConditionsID,\r\n clientDateTime: new Date(),\r\n })\r\n )\r\n if (termsOfServiceSlice.accept.fulfilled.match(promise)) {\r\n props.onNextClick()\r\n }\r\n } else {\r\n props.onNextClick()\r\n }\r\n }\r\n\r\n const openTermsOfServicePopup = async () => {\r\n const promise = await dispatch(\r\n termsOfServiceSlice.getTermsOfServiceContent({\r\n id: termsOfService.termsAndConditionsID,\r\n language: language,\r\n })\r\n )\r\n if (termsOfServiceSlice.getTermsOfServiceContent.fulfilled.match(promise)) {\r\n setIsOpen(true)\r\n }\r\n }\r\n\r\n const label = (\r\n <>\r\n \r\n \r\n {t(Translations.READ_AND_AGREE)}\r\n \r\n openTermsOfServicePopup()}\r\n data-testid=\"tos-button\"\r\n >\r\n {t(Translations.TERMS_OF_SERVICE)}\r\n \r\n \r\n \r\n )\r\n\r\n return (\r\n <>\r\n \r\n {!props.onlyButton && (\r\n \r\n )}\r\n {props.children}\r\n {termsOfService.show && (\r\n \r\n {\r\n props.setIsTosChecked(!props.isTosChecked)\r\n }}\r\n />\r\n }\r\n style={{ marginRight: '0px' }}\r\n label={label}\r\n />\r\n \r\n )}\r\n \r\n {!!props.isUpfrontCouponAvailable && !!props.totalAmount && (\r\n \r\n {t(Translations.VALIDATE)}\r\n \r\n )}\r\n\r\n \r\n {props.totalAmount || customerSignedInAsGuest\r\n ? t(Translations.NEXT)\r\n : t(Translations.PARK)}\r\n \r\n \r\n \r\n \r\n \r\n props.showNeedHelp(true)}\r\n data-testid=\"helpButton\"\r\n >\r\n {t(Translations.NEED_HELP)}\r\n \r\n \r\n \r\n\r\n {\r\n setIsOpen(false)\r\n }}\r\n variant=\"info\"\r\n fullWidth={false}\r\n title={t(Translations.TERMS_OF_SERVICE)}\r\n addCloseButton={true}\r\n darkBackground={true}\r\n >\r\n \r\n \r\n setIsOpen(false)}\r\n >\r\n {t(Translations.OK)}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\nPaySection.defaultProps = {\r\n fee: 0,\r\n amount: 0,\r\n onNextClick: () => undefined,\r\n onValidateClick: () => undefined,\r\n}\r\nexport default PaySection\r\n","import { Grid } from '@mui/material'\r\nimport { t } from 'i18next'\r\nimport React from 'react'\r\nimport { AppSelectListField, AppTypography, FlexBox, SharedIcon } from 'shared'\r\nimport styled from 'styled-components'\r\nimport { IntervalOptions } from 'typedef/lot'\r\nimport { Translations } from 'utils'\r\n\r\nexport const InlineGrid = styled(Grid)`\r\n display: inline-flex;\r\n align-items: center;\r\n`\r\nexport interface SelectTimeSectionProps {\r\n options?: IntervalOptions\r\n disabled?: boolean\r\n hours: number\r\n minutes: number\r\n days: number\r\n isAddTime: boolean\r\n onDaysChange: (arg: number) => void\r\n onHoursChange: (arg: number) => void\r\n onMinutesChange: (arg: number) => void\r\n}\r\n\r\nexport const SelectTimeSection: React.FC = ({\r\n options,\r\n disabled,\r\n days,\r\n hours,\r\n minutes,\r\n isAddTime,\r\n onDaysChange,\r\n onHoursChange,\r\n onMinutesChange,\r\n}) => {\r\n if (!options) {\r\n return null\r\n }\r\n\r\n const areThreeSelectsVisible =\r\n options.showDaySelect && options.showHourSelect && options.showMinuteSelect\r\n\r\n const hoursAndMinuteSelectsVisible =\r\n options.showHourSelect && options.showMinuteSelect && !options.showDaySelect\r\n\r\n const dayAndHourSelectsVisible =\r\n options.showDaySelect && options.showHourSelect && !options.showMinuteSelect\r\n\r\n const onlyHourSelectVisible =\r\n !options.showDaySelect &&\r\n options.showHourSelect &&\r\n !options.showMinuteSelect\r\n\r\n const onlyDaySelectVisible =\r\n options.showDaySelect &&\r\n !options.showHourSelect &&\r\n !options.showMinuteSelect\r\n\r\n const onlyMinuteSelectVisible =\r\n !options.showDaySelect &&\r\n !options.showHourSelect &&\r\n options.showMinuteSelect\r\n\r\n const dayAndMinuteSelectVisible =\r\n options.showDaySelect && !options.showHourSelect && options.showMinuteSelect\r\n\r\n const maxValueLastLimitationD = Math.floor(\r\n options.maxTotalMinutes / (24 * 60)\r\n )\r\n const maxValueLastLimitationH =\r\n Math.floor((options.maxTotalMinutes % (24 * 60)) / 60) +\r\n (options.showDaySelect ? 0 : maxValueLastLimitationD * 24)\r\n\r\n const maxValueLastLimitationM = Math.floor(options.maxTotalMinutes % 60)\r\n\r\n const getTimeString = () => {\r\n if (\r\n hoursAndMinuteSelectsVisible ||\r\n onlyHourSelectVisible ||\r\n onlyMinuteSelectVisible\r\n ) {\r\n if (maxValueLastLimitationM === 0 && maxValueLastLimitationH !== 0) {\r\n return `${maxValueLastLimitationH} ${\r\n maxValueLastLimitationH === 1\r\n ? t(Translations.HOUR).toLocaleLowerCase()\r\n : t(Translations.HOURS).toLocaleLowerCase()\r\n }`\r\n } else if (\r\n maxValueLastLimitationH === 0 &&\r\n maxValueLastLimitationM !== 0\r\n ) {\r\n return `${maxValueLastLimitationM} ${t(Translations.MINUTES_SHORT)}`\r\n } else {\r\n return `${maxValueLastLimitationH}${t(\r\n Translations.HOURS_SHORT\r\n )} ${maxValueLastLimitationM}${t(Translations.MINUTES_SHORT)}`\r\n }\r\n } else if (dayAndHourSelectsVisible || onlyDaySelectVisible) {\r\n if (maxValueLastLimitationH === 0 && maxValueLastLimitationD !== 0) {\r\n return `${maxValueLastLimitationD} ${\r\n maxValueLastLimitationD === 1\r\n ? t(Translations.DAY).toLocaleLowerCase()\r\n : t(Translations.DAYS).toLocaleLowerCase()\r\n }`\r\n } else if (\r\n maxValueLastLimitationD === 0 &&\r\n maxValueLastLimitationH !== 0\r\n ) {\r\n return `${maxValueLastLimitationH} ${\r\n maxValueLastLimitationH === 1\r\n ? t(Translations.HOUR).toLocaleLowerCase()\r\n : t(Translations.HOURS).toLocaleLowerCase()\r\n }`\r\n } else {\r\n return `${maxValueLastLimitationD}${t(\r\n Translations.DAY_SHORT\r\n )} ${maxValueLastLimitationH}${t(Translations.HOURS_SHORT)}`\r\n }\r\n } else if (dayAndMinuteSelectVisible) {\r\n if (maxValueLastLimitationM === 0 && maxValueLastLimitationD !== 0) {\r\n return `${maxValueLastLimitationD} ${\r\n maxValueLastLimitationD === 1\r\n ? t(Translations.DAY).toLocaleLowerCase()\r\n : t(Translations.DAYS).toLocaleLowerCase()\r\n }`\r\n } else if (\r\n maxValueLastLimitationD === 0 &&\r\n maxValueLastLimitationM !== 0\r\n ) {\r\n return `${maxValueLastLimitationM} ${t(\r\n Translations.MINUTES_SHORT\r\n ).toLocaleLowerCase()}`\r\n } else {\r\n return `${maxValueLastLimitationD}${t(\r\n Translations.DAY_SHORT\r\n )} ${maxValueLastLimitationM}${t(Translations.MINUTES_SHORT)}`\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {options.showDaySelect && (\r\n {\r\n const d = e.target.value as unknown as number\r\n onDaysChange(d)\r\n }}\r\n disabled={disabled}\r\n interval={options.dayInterval || 1}\r\n max={options.maxDays || 14}\r\n sufix=\"D\"\r\n $innerSufix\r\n />\r\n )}\r\n {options.showHourSelect && (\r\n {\r\n const h = e.target.value as unknown as number\r\n onHoursChange(h)\r\n if (\r\n Math.floor(options.maxTotalMinutes / 60) === h &&\r\n !areThreeSelectsVisible &&\r\n maxValueLastLimitationM < minutes\r\n ) {\r\n onHoursChange(h)\r\n const maxValueLastLimitationM = Math.floor(\r\n options.maxTotalMinutes % 60\r\n )\r\n onMinutesChange(\r\n Number(maxValueLastLimitationM) -\r\n (Number(maxValueLastLimitationM) % options.minuteInterval)\r\n )\r\n } else if (\r\n maxValueLastLimitationD === days &&\r\n !areThreeSelectsVisible &&\r\n maxValueLastLimitationH < h\r\n ) {\r\n onDaysChange(days - options.dayInterval)\r\n }\r\n }}\r\n disabled={disabled}\r\n interval={options.hourInterval || 1}\r\n max={options.maxHours || 48}\r\n sufix=\"H\"\r\n $innerSufix\r\n />\r\n )}\r\n {options.showMinuteSelect && (\r\n {\r\n const m = e.target.value as unknown as number\r\n onMinutesChange(m)\r\n if (Math.floor((options.maxTotalMinutes - m) / 60) < hours) {\r\n onHoursChange(hours - options.hourInterval)\r\n } else if (\r\n dayAndMinuteSelectVisible &&\r\n days === maxValueLastLimitationD\r\n ) {\r\n onDaysChange(days - options.dayInterval)\r\n }\r\n }}\r\n disabled={disabled}\r\n interval={options.minuteInterval || 1}\r\n max={options.maxMinutes || 48}\r\n sufix=\"M\"\r\n $innerSufix\r\n />\r\n )}\r\n \r\n {!areThreeSelectsVisible && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {isAddTime\r\n ? t(Translations.REMAINING_MAXIMUM_PARKING_TIME)\r\n : t(Translations.MAXIMUM_PARKING_TIME)}\r\n \r\n \r\n \r\n \r\n  \r\n {getTimeString()}\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default SelectTimeSection\r\n","import { Grid } from '@mui/material'\r\nimport React from 'react'\r\nimport { AppHeader } from 'shared'\r\nimport { LotState } from 'store/slices/mapSlice.types'\r\nexport interface LotNameSectionProps {\r\n lot: Pick\r\n}\r\n\r\nexport const LotNameSection: React.FC = ({ lot }) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\nLotNameSection.defaultProps = {}\r\nexport default LotNameSection\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, FlexBox } from 'shared'\r\nimport styled from 'styled-components'\r\nimport Translations from 'utils/translations'\r\n\r\nconst StyledAppButton = styled(AppButton)`\r\n width: 100%;\r\n border-radius: 5px !important;\r\n padding: 20px 30px;\r\n border-color: ${_ => _.theme.palette.divider};\r\n`\r\nexport interface SelectPricingSectionProps {\r\n onClick: () => void\r\n}\r\n\r\nexport const SelectPricingSection: React.FC = props => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n {t(Translations.SELECT_PRICING)}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SelectPricingSection\r\n","import React from 'react'\r\nimport { DetailsBox } from 'shared'\r\n\r\nexport interface MonthlyParkingExpiresSectionProps {\r\n expiresAt: string\r\n}\r\n\r\nexport const MonthlyParkingExpiresSection: React.FC =\r\n props => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\nexport default MonthlyParkingExpiresSection\r\n","import { Autocomplete } from '@mui/material'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { AppTextField } from 'shared'\r\nimport { selectAllCars } from 'store/slices/carsSlice'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface LicenseFieldProps {\r\n disabled?: boolean\r\n onChange?: (arg: any) => void\r\n onBlur: (e: any) => void\r\n error?: boolean\r\n value?: string\r\n maxLength?: number\r\n onKeyDown?: (e: any) => void\r\n}\r\n\r\nexport const LicenseField: React.FC = props => {\r\n const { t } = useTranslation()\r\n const cars = useSelector(selectAllCars)\r\n const options = cars ? cars.map(option => option.plate) : []\r\n\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n )\r\n}\r\nLicenseField.defaultProps = {\r\n onBlur: () => undefined,\r\n onChange: () => undefined,\r\n onKeyDown: () => undefined,\r\n maxLength: 12,\r\n}\r\nexport default LicenseField\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppTextField } from 'shared'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface SpotFieldProps {\r\n disabled?: boolean\r\n value?: string\r\n onChange?: (arg: any) => void\r\n onBlur?: (e: any) => void\r\n error?: boolean\r\n maxSpotNumber?: number\r\n onKeyDown?: (e: any) => void\r\n}\r\n\r\nexport const SpotField: React.FC = props => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n )\r\n}\r\nSpotField.defaultProps = {\r\n onChange: () => undefined,\r\n onBlur: () => undefined,\r\n onKeyDown: () => undefined,\r\n}\r\nexport default SpotField\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { mapSlice, parkCarSlice } from 'store/slices'\r\nimport { AppState } from 'store/store'\r\nimport { LotNameSection } from '.'\r\n\r\nexport interface SelectedTitleProps {}\r\n\r\nexport const SelectedLotTitle = (props: SelectedTitleProps) => {\r\n const { lotId } = useParams<{ lotId: string }>()\r\n const selectedLotOnMap = useSelector((state: AppState) =>\r\n mapSlice.selectById(state, lotId)\r\n )\r\n const { lot: selectedLotOnPark } = useSelector(parkCarSlice.stateSelectors)\r\n\r\n return Boolean(selectedLotOnMap || selectedLotOnPark) ? (\r\n \r\n ) : null\r\n}\r\n\r\nexport default SelectedLotTitle\r\n","import React from 'react'\r\nimport { AppButton } from 'shared'\r\nimport { useWantMonthly } from '../ParkCarHooks'\r\n\r\nexport interface WantMonthlyProps {}\r\n\r\nexport const WantMonthly: React.FC = props => {\r\n const { isWantMonthly, wantMonthlyHandler } = useWantMonthly()\r\n\r\n if (!isWantMonthly) return null\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default WantMonthly\r\n","import { useInitParkCar } from 'pages/park_car/ParkCarHooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport Translations from 'utils/translations'\r\nimport { SelectedLotTitle } from '../ParkCarComponents'\r\nimport { AppSpinner, ErrorPlaceholder, WhiteBoxContainer } from 'shared'\r\n\r\nexport const useAutoClearTimeExceedingPopup = () => {\r\n const { setPopup, showPopup } = usePopup()\r\n const { t } = useTranslation()\r\n const { isError, isLoading, fetchData } = useInitParkCar(false)\r\n\r\n return React.useCallback(() => {\r\n setPopup({\r\n variant: 'error',\r\n description: t(\r\n Translations.RATE_HAS_EXPIRED_PLEASE_SELECT_YOUR_TIME_AGAIN\r\n ),\r\n title: t(Translations.RATE_HAS_EXPIRED),\r\n disableBackdropClick: true,\r\n buttons: [\r\n {\r\n onClick: () => {\r\n fetchData()\r\n if (isLoading || isError)\r\n return (\r\n \r\n \r\n \r\n {isError && }\r\n \r\n )\r\n },\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [setPopup, showPopup])\r\n}\r\n\r\nexport default useAutoClearTimeExceedingPopup\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { TEZ_PAY_API_URL } from 'api/config'\r\nimport { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\n\r\nexport const useParkCarRedirect = () => {\r\n const dispatch = useAppDispatch()\r\n const [isLoading, setisLoading] = React.useState(false)\r\n const { enqueueSnackbar } = useSnackbar()\r\n\r\n const redirect = React.useCallback(\r\n async (carId: string, recaptchaToken: string) => {\r\n setisLoading(true)\r\n const promise = await dispatch(parkCarSlice.parkCarRedirect({ carId, recaptchaToken }))\r\n const redirectRes = unwrapResult(promise)\r\n if (parkCarSlice.parkCarRedirect.fulfilled.match(promise)) {\r\n window.location.href = `${TEZ_PAY_API_URL}${redirectRes.token}`\r\n } else {\r\n setisLoading(false)\r\n enqueueSnackbar(promise.payload.description)\r\n }\r\n },\r\n [dispatch, enqueueSnackbar]\r\n )\r\n return [isLoading, redirect] as const\r\n}\r\n\r\nexport default useParkCarRedirect\r\n","import { useParams, useRouteMatch } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\n\r\nexport const useParkMode = () => {\r\n const { carId, lotId } = useParams<{ carId?: string; lotId?: string }>()\r\n const parkCarPay = useRouteMatch(paths.parking.pay)\r\n const parkCarPaid = useRouteMatch(paths.parking.paid)\r\n const parkCarSelectCard = useRouteMatch(paths.parking.selectCard)\r\n const parkManageCards = useRouteMatch(paths.parking.manageCards)\r\n const parkCarAddCard = useRouteMatch(paths.parking.addCard)\r\n\r\n const addTimePay = useRouteMatch(paths.parking.addTimePay)\r\n const addTimeSelectCard = useRouteMatch(paths.parking.addTimeSelectCard)\r\n const addTimeManageCards = useRouteMatch(paths.parking.addTimeManageCards)\r\n const addTimeAddCard = useRouteMatch(paths.parking.addTimeAddCard)\r\n\r\n if (\r\n parkCarSelectCard ||\r\n parkCarPay ||\r\n parkCarPaid ||\r\n parkManageCards ||\r\n parkCarAddCard\r\n )\r\n return 'parkCar'\r\n if (addTimePay || addTimeSelectCard || addTimeManageCards || addTimeAddCard)\r\n return 'addMoreTime'\r\n if (carId) {\r\n return 'addMoreTime'\r\n }\r\n if (lotId) return 'parkCar'\r\n throw Error('Unhandled park mode')\r\n}\r\n\r\nexport default useParkMode\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { ParkCarState } from 'store/slices/parkCarSlice types'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { PaymentOperationType, Validations } from 'typedef'\r\nimport useParkMode from './useParkMode'\r\n\r\nexport const useParkDetails = () => {\r\n const dispatch = useAppDispatch()\r\n const { parkingDetails } = useSelector(parkCarSlice.stateSelectors)\r\n const { pricingPayload, addTimeCard, isPaymentRequired } = useSelector(\r\n parkCarSlice.stateSelectors\r\n )\r\n\r\n const parkMode = useParkMode()\r\n const {\r\n parkingExpireDateTime,\r\n parkingStartDateTime,\r\n totalAmount,\r\n upfrontCoupons,\r\n fees,\r\n } = parkingDetails\r\n const { ticketId, carId } = useParams<{ ticketId: string; carId: string }>()\r\n const ticket = useSelector((state: AppState) =>\r\n ticketsSlice.selectById(state, ticketId || carId)\r\n )\r\n const setIsPaymentRequired = (arg: boolean) =>\r\n dispatch(parkCarSlice.actions.setIsPaymentRequired(arg))\r\n\r\n React.useEffect(() => {\r\n if (ticket) {\r\n const validations: Validations[] = ticket.settlement.paymentOperationList\r\n .filter(e => e.type === PaymentOperationType.Coupon)\r\n .map(e => ({ name: e.validatorName, amount: e.amount }))\r\n dispatch(\r\n parkCarSlice.actions.updateParkingDetails<\r\n Partial\r\n >({\r\n parkingExpireDateTime:\r\n parkMode === 'parkCar'\r\n ? ticket?.parkingExpireDateTime\r\n : parkingExpireDateTime,\r\n parkingStartDateTime:\r\n parkMode === 'addMoreTime'\r\n ? ticket.parkingExpireDateTime\r\n : ticket.parkingBeginDateTime,\r\n totalAmount:\r\n parkMode === 'parkCar'\r\n ? ticket.settlement.finalAmount\r\n : totalAmount,\r\n fees:\r\n parkMode === 'parkCar'\r\n ? [\r\n {\r\n amount: ticket.settlement.convenienceFee,\r\n label: ticket.settlement.convenienceFeeName,\r\n },\r\n ]\r\n : fees,\r\n currency: ticket.settlement.currency,\r\n upfrontCoupons: parkMode === 'parkCar' ? validations : upfrontCoupons,\r\n })\r\n )\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n dispatch,\r\n parkMode,\r\n parkingExpireDateTime,\r\n parkingStartDateTime,\r\n ticket,\r\n totalAmount,\r\n ])\r\n\r\n return {\r\n ...parkingDetails,\r\n pricingPayload,\r\n addTimeCard,\r\n isPaymentRequired,\r\n setIsPaymentRequired,\r\n }\r\n}\r\n\r\nexport default useParkDetails\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { useSnackbar } from 'notistack'\r\nimport usePaymentCard from 'pages/park_car_credit_card/CreditCardComponents/creditCardHooks/usePaymentCard'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport {\r\n parkCarSlice,\r\n ticketsSlice,\r\n contactInformationsSlice,\r\n} from 'store/slices'\r\nimport { ParkCarState } from 'store/slices/parkCarSlice types'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { CarStatus, ErrorCode, ParkCarData, ParkCarPayload } from 'typedef'\r\nimport useExpiredPricingPopup from '../ParkCarT2/T2Hooks/useExpiredPricingPopup'\r\nimport useAutoClearTimeExceedingPopup from './useAutoClearTimeExceedingPopup'\r\nimport useGetTicket from './useGetTicket'\r\nimport useParkCarRedirect from './useParkCarRedirect'\r\nimport useParkDetails from './useParkDetails'\r\n\r\nexport interface useParkCarProps {}\r\n\r\nexport const useParkCar = () => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const showExpiredPopup = useExpiredPricingPopup()\r\n const showAutoClearTimeExceedingPopup = useAutoClearTimeExceedingPopup()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const { lot, pricing } = useSelector(parkCarSlice.stateSelectors)\r\n const { parkCarStatus } = useSelector(parkCarSlice.promiseStatusSelectors)\r\n const [redirectIsLoading, parkCarRedirect] = useParkCarRedirect()\r\n const [getTicketIsLoading, getTicket] = useGetTicket()\r\n const { externalPricingId } = useParkDetails()\r\n const { unsetPaymentCard } = usePaymentCard()\r\n const paymentRequired = async (\r\n args: Pick , recaptchaToken?: string\r\n ) => {\r\n const ticketPromise = await getTicket(args.carId)\r\n if (ticketsSlice.getTicket.fulfilled.match(ticketPromise)) {\r\n const res = unwrapResult(ticketPromise)\r\n if (res.carStatus === CarStatus.Parked) {\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({ ticketId: res.carId })\r\n )\r\n dispatch(parkCarSlice.actions.resetParkingDetails())\r\n return push(paths.parking.tickets)\r\n }\r\n dispatch(\r\n parkCarSlice.actions.setPricing({\r\n ...pricing,\r\n parkingExpireDateTime: res.parkingExpireDateTime,\r\n })\r\n )\r\n dispatch(\r\n parkCarSlice.actions.updateParkingDetails<\r\n Partial\r\n >({\r\n spot: res.spot,\r\n plate: res.plate,\r\n })\r\n )\r\n }\r\n if (args.paymentRedirectionAvailable) {\r\n parkCarRedirect(args.carId, recaptchaToken)\r\n } else {\r\n push(`${paths.parking.selectCard}/${args.carId}`)\r\n }\r\n }\r\n\r\n const parkCar = async (\r\n args: Omit, recaptchaToken?: string\r\n ) => {\r\n let payload: ParkCarPayload = {\r\n plate: args.plate,\r\n spot: args.spot,\r\n externalPricingId,\r\n parkerId: lot?.parkerId,\r\n parkerMonthlyId: lot.monthlyParkerInfo?.parkerMonthlyId,\r\n }\r\n\r\n if (lot.timeSelectOption) {\r\n payload = { ...payload, parkTime: args.parkTime }\r\n }\r\n const promise = await dispatch(parkCarSlice.parkCar(payload))\r\n if (parkCarSlice.parkCar.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise)\r\n unsetPaymentCard()\r\n\r\n dispatch(\r\n contactInformationsSlice.actions.setRequirements({\r\n contactDataRequired: res.contactDataRequired,\r\n customerHasEmail: res.customerHasEmail,\r\n paymentRedirectionAvailable: res.paymentRedirectionAvailable,\r\n })\r\n )\r\n if (res.carStatus === CarStatus.RequiresPayment) {\r\n if (!res.customerHasEmail) {\r\n push(`${paths.parking.contactInformations}/${res.carId}`)\r\n } else {\r\n paymentRequired(res, recaptchaToken)\r\n }\r\n }\r\n if (res.carStatus === CarStatus.Parked) {\r\n await getTicket(res.carId)\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({ ticketId: res.carId })\r\n )\r\n dispatch(parkCarSlice.actions.resetParkingDetails())\r\n if (!res.customerHasEmail) {\r\n push(`${paths.parking.contactInformations}/${res.carId}`)\r\n } else {\r\n push(paths.parking.tickets)\r\n }\r\n }\r\n } else {\r\n if (promise.payload.code === ErrorCode.CurrentPricingIsExpired) {\r\n return showExpiredPopup()\r\n }\r\n if (promise.payload.code === ErrorCode.AutoClearTimeExeeded) {\r\n return showAutoClearTimeExceedingPopup()\r\n }\r\n enqueueSnackbar(promise.payload.description, {})\r\n }\r\n }\r\n\r\n const isLoading = () =>\r\n redirectIsLoading || getTicketIsLoading || parkCarStatus.pending\r\n\r\n return [isLoading(), parkCar, paymentRequired] as const\r\n}\r\n\r\nexport default useParkCar\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { showTerms } from 'store/globalPopup/actions'\r\nimport { mapSlice, termsSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { TermsType } from 'typedef'\r\n\r\nexport const useTerms = () => {\r\n const dispatch = useAppDispatch()\r\n const { carId, lotId, ticketId } = useParams<{\r\n lotId?: string\r\n carId?: string\r\n ticketId?: string\r\n }>()\r\n const [newLotId, setNewLotId] = React.useState(lotId)\r\n const ticket = useSelector((state: AppState) =>\r\n ticketsSlice.selectById(state, carId || ticketId)\r\n )\r\n\r\n const lot = useSelector((state: AppState) =>\r\n mapSlice.selectById(state, newLotId)\r\n )\r\n\r\n const monthly = useSelector(\r\n (state: AppState) => state.parkCar.lot?.monthlyParkerInfo\r\n )\r\n\r\n React.useEffect(() => {\r\n if (lotId) {\r\n setNewLotId(lotId)\r\n }\r\n if (ticket) {\r\n setNewLotId(ticket.lot.lotId)\r\n }\r\n }, [lotId, ticket])\r\n\r\n const onTermsClick = () => {\r\n if (!lot) return\r\n dispatch(\r\n termsSlice.getTerms({\r\n type: monthly ? TermsType.Monthly : TermsType.Transient,\r\n lotId: newLotId,\r\n })\r\n )\r\n dispatch(termsSlice.actions.setLogoLink(lot.logoLink))\r\n dispatch(showTerms())\r\n }\r\n\r\n return onTermsClick\r\n}\r\n\r\nexport default useTerms\r\n","import { paths } from 'routing/paths'\r\n\r\nexport const SET = 'set'\r\nexport const SELECT = 'select'\r\nexport const SUMMARY = 'summary'\r\n\r\nexport type PathView = typeof SET | typeof SELECT | typeof SUMMARY\r\nexport type ParkMode = 'parkCar' | 'addTime'\r\nexport const externalParkCarPath = (\r\n parkMode: ParkMode,\r\n lotOrCarId?: string,\r\n view?: PathView\r\n) =>\r\n `${\r\n parkMode === 'parkCar'\r\n ? `${paths.parking.parkCar}/${lotOrCarId || ':lotId'}`\r\n : `${paths.parking.addTime}/${lotOrCarId || ':carId'}`\r\n }${view ? `/${view}` : ''}`\r\n","import React from 'react'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { externalParkCarPath, ParkMode, PathView } from '../constants'\r\n\r\nexport const useParkCarPath = () => {\r\n const { lotId, carId } = useParams<{ lotId?: string; carId?: string }>()\r\n const [parkMode, setParkMode] = React.useState(\r\n lotId ? 'parkCar' : 'addTime'\r\n )\r\n const { push } = useHistory()\r\n\r\n React.useEffect(() => {\r\n if (carId) {\r\n setParkMode('addTime')\r\n return\r\n }\r\n if (lotId) {\r\n setParkMode('parkCar')\r\n return\r\n }\r\n }, [carId, lotId])\r\n\r\n const path = React.useCallback(\r\n (view?: PathView, isLink?: boolean) =>\r\n externalParkCarPath(parkMode, isLink && (lotId || carId), view),\r\n [carId, lotId, parkMode]\r\n )\r\n const onClick = React.useCallback(\r\n (view?: PathView, state?: unknown) => push(path(view, true), state),\r\n [path, push]\r\n )\r\n\r\n return [path, onClick] as const\r\n}\r\n\r\nexport default useParkCarPath\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { ParkCarState } from 'store/slices/parkCarSlice types'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { GetPricePayload } from 'typedef'\r\nimport { Translations } from 'utils'\r\nimport useParkMode from './useParkMode'\r\n\r\nexport interface useGetPriceProps {}\r\n\r\nexport const useGetPrice = () => {\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const { getPriceStatus } = useSelector(parkCarSlice.promiseStatusSelectors)\r\n const { carId } = useParams<{ carId?: string }>()\r\n const parkMode = useParkMode()\r\n const { parkingDetails } = useSelector(parkCarSlice.stateSelectors)\r\n const { totalAmount } = parkingDetails\r\n\r\n const fetch = React.useCallback(\r\n async (args: GetPricePayload) => {\r\n const promise = await dispatch(parkCarSlice.getPrice({ carId, ...args }))\r\n if (parkCarSlice.getPrice.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise)\r\n // FIXME: fix typing\r\n dispatch(\r\n parkCarSlice.actions.updateParkingDetails<\r\n Partial\r\n >({\r\n totalAmount:\r\n parkMode === 'addMoreTime'\r\n ? res.amount + res.convenienceFee\r\n : totalAmount,\r\n parkingExpireDateTime: res.parkingExpireDateTime,\r\n fees: [\r\n {\r\n amount: res.convenienceFee,\r\n label: res.convenienceFeeName,\r\n },\r\n ],\r\n parkingFee: {\r\n amount: res.amount,\r\n label: t(Translations.PARKING_FEE),\r\n },\r\n upfrontCoupons: res.validations,\r\n })\r\n )\r\n } else {\r\n enqueueSnackbar(promise.payload.description, {\r\n onClose: () => {\r\n dispatch(parkCarSlice.actions.resetParkingDetails())\r\n dispatch(parkCarSlice.actions.resetPromiseStatus('getPrice'))\r\n },\r\n })\r\n }\r\n },\r\n [carId, dispatch, enqueueSnackbar, parkMode, t, totalAmount]\r\n )\r\n return [getPriceStatus.pending, fetch] as const\r\n}\r\n\r\nexport default useGetPrice\r\n","import { useSelector } from 'react-redux'\r\nimport { parkCarSlice } from 'store/slices'\r\n\r\nexport const useWantMonthly = () => {\r\n const { lot } = useSelector(parkCarSlice.stateSelectors)\r\n\r\n const showWantMonthly = () => {\r\n if (!lot?.monthlyParkerInfo && lot?.selfRegisterUrl) return true\r\n return false\r\n }\r\n const handle = () => {\r\n if (!lot?.selfRegisterUrl)\r\n throw Error('Missing \"I want monthly parking\" url.')\r\n window.open(lot?.selfRegisterUrl, '_blank')\r\n }\r\n return {\r\n isWantMonthly: showWantMonthly(),\r\n wantMonthlyHandler: handle,\r\n }\r\n}\r\n\r\nexport default useWantMonthly\r\n","import { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { AddContactInformationsPayload } from 'typedef'\r\nimport { Translations } from 'utils'\r\nimport { ReceiptsAndNotificationsFormValues, RedirectType } from './types'\r\nimport { contactInformationsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\nimport { useParkCar } from 'pages/park_car/ParkCarHooks'\r\n\r\nexport const useSubmitForm = (\r\n redirectType: RedirectType,\r\n carId: string,\r\n confirmToken: string,\r\n pin: string,\r\n paymentRedirectionAvailable?: boolean,\r\n recaptchaToken?: string\r\n) => {\r\n const { t } = useTranslation()\r\n const { setPopup, showPopup } = usePopup()\r\n const history = useHistory()\r\n const dispatch = useAppDispatch()\r\n const [, , paymentRequired] = useParkCar()\r\n\r\n const handleSubmit = async (values: ReceiptsAndNotificationsFormValues) => {\r\n const params = {\r\n carId,\r\n email: values.email,\r\n countryCode: parseInt(values.code),\r\n phoneNumber: values.phoneNumber,\r\n confirmToken: confirmToken,\r\n pin,\r\n }\r\n const existingParams = Object.fromEntries(\r\n Object.entries(params).filter(([_, value]) => value !== '')\r\n )\r\n\r\n dispatch(showLoader())\r\n const promise = await dispatch(\r\n contactInformationsSlice.addContactInformations(\r\n existingParams as AddContactInformationsPayload\r\n )\r\n )\r\n dispatch(hideLoader())\r\n if (\r\n contactInformationsSlice.addContactInformations.fulfilled.match(promise)\r\n ) {\r\n if (redirectType === RedirectType.ContactInformations) {\r\n paymentRequired({ carId, paymentRedirectionAvailable }, recaptchaToken)\r\n } else {\r\n setPopup({\r\n variant: 'success',\r\n title: t(Translations.SUCCESS),\r\n description: ' ',\r\n buttons: [\r\n {\r\n onClick() {\r\n history.push(paths.parking.tickets)\r\n },\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n }\r\n } else {\r\n setPopup({\r\n ...promise.payload,\r\n })\r\n showPopup(true)\r\n }\r\n }\r\n\r\n return handleSubmit\r\n}\r\n","import { Form, Formik } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n AppTypography,\r\n FlexBox,\r\n PhoneNumberContainer,\r\n Placeholder,\r\n SharedIcon,\r\n} from 'shared'\r\nimport * as Yup from 'yup'\r\nimport { Input } from 'shared/Input'\r\nimport { customerSlice, contactInformationsSlice } from 'store/slices'\r\nimport {\r\n countryCodeRegex,\r\n phoneNumberRegex,\r\n Translations,\r\n blurLastInput,\r\n} from 'utils'\r\nimport CodeStepPopup from '../CodeStepPopup'\r\nimport {\r\n ReceiptsAndNotificationsFormValues,\r\n ContactInformationsProps,\r\n RedirectType,\r\n} from './types'\r\nimport { useResendCode } from './useResendCode'\r\nimport { useSendVerificationSMS } from './useSendVerificationSMS'\r\nimport { useSubmitForm } from './useSubmitForm'\r\nimport { useGetTicket, useParkCar } from 'pages/park_car/ParkCarHooks'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { LoginInfo, LoginInfoSeparator, LoginInfoContainer } from './styles'\r\nimport NewPhoneNumberInput from 'shared/PhoneNumberAndCountryCodeInput'\r\nimport HybridRecaptcha from '../../../shared/ReCaptcha/HybridRecaptcha';\r\nimport {validateFeature } from '../../../shared/ReCaptcha/HybridRecaptcha';\r\n\r\n\r\nexport const ContactInformations = ({ carId }: ContactInformationsProps) => {\r\n const { t } = useTranslation()\r\n const history = useHistory()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const [isLoading, , paymentRequired] = useParkCar()\r\n const [showCodeStepPopup, setShowCodeStepPopup] = useState(false)\r\n const [pin, setPin] = useState('')\r\n const [confirmToken, setConfirmToken] = useState('')\r\n const { customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const { contactDataRequired, paymentRedirectionAvailable } = useSelector(\r\n contactInformationsSlice.stateSelectors\r\n )\r\n const [, , ticket] = useGetTicket()\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n const [recaptchaToken, setRecaptchaToken] = useState(null);\r\n \r\n const handleResendCode = useResendCode(confirmToken, setConfirmToken)\r\n const handleSubmitWithPhoneNumber = useSendVerificationSMS(\r\n setShowCodeStepPopup,\r\n setConfirmToken,\r\n carId, \r\n recaptchaToken\r\n )\r\n\r\n const handleTokenReceived = (token: string) => {\r\n setRecaptchaToken(token);\r\n };\r\n\r\n const handleRecaptchaSuccess = () => {\r\n setRecaptchaVerified(true);\r\n };\r\n\r\n const handleRecaptchaFailure = () => {\r\n enqueueSnackbar(t(Translations.RECAPTCHA_VERIFICATION_FAILED), { variant: 'error' });\r\n setRecaptchaVerified(false);\r\n };\r\n\r\n\r\n const handleSubmit = useSubmitForm(\r\n RedirectType.ContactInformations,\r\n carId,\r\n confirmToken,\r\n pin,\r\n paymentRedirectionAvailable, \r\n recaptchaToken\r\n )\r\n\r\n const handleOnConfirm = (\r\n values: ReceiptsAndNotificationsFormValues,\r\n handleOnSubmit: () => void\r\n ) => {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), { variant: 'warning' });\r\n return;\r\n }\r\n if (values.phoneNumber) {\r\n handleSubmitWithPhoneNumber(values)\r\n } else {\r\n handleOnSubmit()\r\n }\r\n }\r\n\r\n const contactInformationsSchema = Yup.object().shape({\r\n email:\r\n !ticket?.externalServiceDeliversReceipts &&\r\n Yup.string()\r\n .email(t(Translations.INVALID_EMAIL))\r\n .required(t(Translations.EMAIL_CANNOT_BE_EMPTY)),\r\n code:\r\n customerSignedInAsGuest &&\r\n Yup.string().matches(\r\n countryCodeRegex,\r\n t(Translations.INVALID_COUNTRY_CODE)\r\n ),\r\n phoneNumber:\r\n customerSignedInAsGuest &&\r\n Yup.string()\r\n .matches(phoneNumberRegex, t(Translations.INVALID_PHONE_NUMBER))\r\n .required(t(Translations.PHONE_CANNOT_BE_EMPTY)),\r\n })\r\n\r\n const title = ticket?.externalServiceDeliversReceipts\r\n ? t(Translations.NOTIFICATIONS)\r\n : t(Translations.RECEIPTS_AND_NOTIFICATIONS)\r\n const icon = \r\n const initialValues = { email: '', phoneNumber: '', code: '' }\r\n const subtitle = ticket?.externalServiceDeliversReceipts\r\n ? t(Translations.NOTIFICATIONS_SUBTITLE)\r\n : customerSignedInAsGuest\r\n ? t(Translations.PLEASE_ENTER_YOUR_MOBILE_PHONE)\r\n : t(Translations.PLEASE_ENTER_YOUR_EMAIL)\r\n\r\n return (\r\n <>\r\n {isLoading && }\r\n \r\n {ticket ? (\r\n <>\r\n \r\n {subtitle}\r\n \r\n \r\n {({\r\n values,\r\n errors,\r\n handleBlur,\r\n handleChange,\r\n validateForm,\r\n submitForm,\r\n }) => (\r\n
\r\n {customerSignedInAsGuest && (\r\n \r\n \r\n \r\n )}\r\n {!ticket?.externalServiceDeliversReceipts && (\r\n {\r\n blurLastInput(e)\r\n }}\r\n >\r\n )}\r\n \r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n handleOnConfirm(values, submitForm)\r\n } else {\r\n enqueueSnackbar(entries[0][1])\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.NEXT)}\r\n \r\n {!contactDataRequired && (\r\n {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), { variant: 'warning' });\r\n return;\r\n }\r\n paymentRequired({\r\n carId,\r\n paymentRedirectionAvailable,\r\n }, recaptchaToken)\r\n }\r\n }\r\n data-testid=\"skipButton\"\r\n >\r\n {t(Translations.SKIP)}\r\n \r\n )}\r\n {customerSignedInAsGuest && (\r\n <>\r\n \r\n {t(Translations.ALREADY_HAVE_AN_ACCOUNT)}\r\n \r\n \r\n \r\n history.push(`${paths.parking.login}/${carId}`)\r\n }\r\n data-testid=\"loginButton\"\r\n >\r\n {t(Translations.LOGIN)}\r\n \r\n \r\n {t(Translations.OR)}\r\n \r\n \r\n history.push(`${paths.parking.signUp}/${carId}`)\r\n }\r\n data-testid=\"registerButton\"\r\n >\r\n {t(Translations.SIGN_UP)}\r\n \r\n \r\n \r\n )}\r\n \r\n setShowCodeStepPopup(false)}\r\n showCodeStepPopup={showCodeStepPopup}\r\n submitForm={submitForm}\r\n pin={pin}\r\n setPin={setPin}\r\n handleResendCode={handleResendCode}\r\n />\r\n \r\n )}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n )\r\n}\r\n","import { SelectedLotTitle, TotalText } from 'pages/park_car/ParkCarComponents'\r\nimport { useParkDetails } from 'pages/park_car/ParkCarHooks'\r\nimport React from 'react'\r\nimport { DetailsBox, GridWrapper } from 'shared'\r\n\r\nexport interface ParkingDetailsProps {}\r\n\r\nexport const ParkingDetails: React.FC = props => {\r\n const { totalAmount, currency, parkingExpireDateTime } = useParkDetails()\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ParkingDetails\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","import * as React from 'react'\r\n\r\nfunction SvgComponent(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SvgComponent\r\n","import React from 'react'\r\nimport styled, { css } from 'styled-components'\r\nimport { CardType } from 'typedef/creditCards'\r\nimport * as C from './Cards'\r\n\r\nexport interface CardWrapperProps {\r\n last4Digits: string\r\n type: CardType\r\n selected: boolean\r\n touch: boolean\r\n onClick: () => void\r\n}\r\nconst StyledCardWrapper = styled.div<{\r\n last4Digits: string\r\n unknown: boolean\r\n selected: boolean\r\n touch: boolean\r\n}>`\r\n position: relative;\r\n transition: all 0.2s;\r\n padding: 20px 15px;\r\n overflow: hidden;\r\n box-sizing: border-box;\r\n > * {\r\n transition: all 0.2s;\r\n }\r\n ${_ =>\r\n !_.selected &&\r\n !_.touch &&\r\n css`\r\n svg {\r\n opacity: 0.7;\r\n }\r\n `}\r\n ${_ =>\r\n _.selected &&\r\n !_.touch &&\r\n css`\r\n > * {\r\n z-index: 2;\r\n transform: scale(1.15);\r\n }\r\n `}\r\n :hover {\r\n cursor: pointer;\r\n svg {\r\n opacity: 1;\r\n }\r\n }\r\n :after {\r\n content: '**** **** **** ${_ => _.last4Digits}';\r\n position: absolute;\r\n bottom: 30%;\r\n left: 5px;\r\n color: ${_ => (_.unknown ? '#646464' : 'white')};\r\n font-weight: bold;\r\n letter-spacing: 0.38em;\r\n width: 100%;\r\n font-family: 'SF Pro Display', 'Helvetica', 'Arial', sans-serif;\r\n transition: all 0.2s;\r\n text-align: center;\r\n ${_ =>\r\n _.selected &&\r\n !_.touch &&\r\n css`\r\n transform: scale(1.15);\r\n `}\r\n }\r\n`\r\n\r\nexport const CardWrapper: React.FC = ({\r\n type,\r\n last4Digits,\r\n selected,\r\n onClick,\r\n touch,\r\n}) => {\r\n const {\r\n AmericanExpress,\r\n DinersClub,\r\n Discover,\r\n Invalid,\r\n JCB,\r\n MasterCard,\r\n Visa,\r\n } = CardType\r\n return (\r\n \r\n {type === MasterCard && }\r\n {type === DinersClub && }\r\n {type === AmericanExpress && }\r\n {type === Discover && }\r\n {type === JCB && }\r\n {type === Visa && }\r\n {(type === Invalid || !type) && }\r\n \r\n )\r\n}\r\n\r\nexport default CardWrapper\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Placeholder, SharedIcon } from 'shared'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface CreditCardsPlaceholderProps {}\r\n\r\nexport const CreditCardsPlaceholder: React.FC = props => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n }\r\n >\r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default CreditCardsPlaceholder\r\n","import { useTouchScreen } from 'hooks'\r\nimport CardWrapper from 'pages/my_credit_cards/CreditCardsComponents/CardWrapper'\r\nimport CreditCardsPlaceholder from 'pages/my_credit_cards/CreditCardsComponents/CreditCardPlaceholder'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router-dom'\r\nimport {\r\n AppButton,\r\n AppCarousel,\r\n AppTypography,\r\n FlexBox,\r\n PaddingContainer,\r\n} from 'shared'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { CreditCard } from 'typedef/creditCards'\r\nimport { Ticket } from 'typedef/ticket'\r\nimport { Translations } from 'utils'\r\nimport usePaymentCard from './creditCardHooks/usePaymentCard'\r\n\r\nexport interface ChooseCardProps {\r\n ticket: Ticket\r\n cards: CreditCard[]\r\n initSlide?: number\r\n paymentPath: string\r\n manageCardPath: string\r\n addCardPath: string\r\n}\r\n\r\nexport const ChooseCard: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const { paymentCard, setPaymentCard } = usePaymentCard()\r\n const touch = useTouchScreen()\r\n const goToPayment = React.useCallback(\r\n () => push(props.paymentPath),\r\n [props.paymentPath, push]\r\n )\r\n\r\n const selectCard = React.useCallback(\r\n (card: CreditCard) => {\r\n setPaymentCard(card)\r\n if (touch) {\r\n goToPayment()\r\n }\r\n },\r\n [goToPayment, setPaymentCard, touch]\r\n )\r\n\r\n const onManageCards = React.useCallback(() => {\r\n push(props.manageCardPath)\r\n }, [props.manageCardPath, push])\r\n\r\n const onAddCard = React.useCallback(\r\n () => push(props.addCardPath),\r\n [props.addCardPath, push]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!paymentCard && props.cards.length) {\r\n setPaymentCard(props.cards[0])\r\n }\r\n }, [dispatch, props.cards, paymentCard, setPaymentCard])\r\n\r\n return (\r\n \r\n \r\n {t(Translations.ALMOST_FINISHED)}\r\n \r\n\r\n {!props.cards.length && (\r\n <>\r\n \r\n {t(Translations.TAP_ADD_NEW_CARD)}\r\n \r\n \r\n \r\n \r\n {t(Translations.ADD_NEW_CARD)}\r\n \r\n \r\n \r\n )}\r\n\r\n {!!props.cards.length && (\r\n <>\r\n \r\n {t(Translations.TAP_STORED_CARD)}\r\n
\r\n {t(Translations.TO_ADD_NEW_TAP_MANAGE_CARDS)}\r\n
\r\n {props.cards.length > 1 && (\r\n \r\n {props.cards.map(el => (\r\n selectCard(el)}\r\n touch={touch}\r\n />\r\n ))}\r\n \r\n )}\r\n\r\n \r\n {props.cards.length === 1 && (\r\n selectCard(props.cards[0])}\r\n touch={touch}\r\n />\r\n )}\r\n \r\n {t(Translations.MANAGE_CARDS)}\r\n \r\n {!touch && (\r\n \r\n {t(Translations.SELECT_CARD)}\r\n \r\n )}\r\n \r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default ChooseCard\r\n","import React, { useContext } from 'react'\r\nimport moment from 'moment'\r\n\r\nexport type LoaderContextType = {\r\n setCounter: (arg: any) => void\r\n clearCounter: () => void\r\n}\r\nexport const CounterContext = React.createContext(\r\n {} as LoaderContextType\r\n)\r\nexport const useCounterContext = () => useContext(CounterContext)\r\n\r\nexport const CounterProvider: React.FC = props => {\r\n const [{ endDate, isRunning, onEnd }, setCounter] = React.useState({\r\n endDate: undefined,\r\n onEnd: () => undefined,\r\n isRunning: false,\r\n })\r\n\r\n const getElapsedSeconds = React.useCallback(() => {\r\n let seconds = moment\r\n .duration(moment(endDate).diff(moment(), 'millisecond'))\r\n .asSeconds()\r\n if (seconds < 0) {\r\n seconds = 0\r\n }\r\n return seconds\r\n }, [endDate])\r\n\r\n const [seconds, setSeconds] = React.useState(getElapsedSeconds())\r\n const getElapsedTimeString = React.useCallback(\r\n (seconds: number) =>\r\n moment.duration(seconds, 'seconds').format('mm:ss', {\r\n trim: false,\r\n }),\r\n []\r\n )\r\n const [, setTimeString] = React.useState(\r\n getElapsedTimeString(getElapsedSeconds())\r\n )\r\n\r\n React.useEffect(() => {\r\n if (isRunning) {\r\n const timer = setInterval(() => {\r\n setSeconds(getElapsedSeconds())\r\n }, 1000)\r\n return () => {\r\n clearInterval(timer)\r\n }\r\n }\r\n }, [getElapsedSeconds, isRunning])\r\n\r\n React.useEffect(() => {\r\n setTimeString(getElapsedTimeString(seconds))\r\n }, [getElapsedTimeString, seconds])\r\n\r\n React.useEffect(() => {\r\n if (seconds > 0) {\r\n setCounter(state => ({ isRunning: true, ...state }))\r\n } else {\r\n stopCounter()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [seconds])\r\n const clearCounter = () =>\r\n setCounter({ endDate: undefined, isRunning: false, onEnd: () => undefined })\r\n\r\n const stopCounter = () => {\r\n onEnd()\r\n clearCounter()\r\n }\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default CounterContext\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppButton, AppPopup, FlexBox } from 'shared'\r\nimport { useCounterContext } from 'shared/CounterProvider/CounterProvider'\r\nimport { parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport usePaymentCard from './creditCardHooks/usePaymentCard'\r\n\r\nexport interface CancelParkCarDialogProps {\r\n closeDialog: () => void\r\n open: boolean\r\n}\r\n\r\nexport const CancelParkCarDialog: React.FC<\r\n CancelParkCarDialogProps\r\n> = props => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const { unsetPaymentCard } = usePaymentCard()\r\n const { clearCounter } = useCounterContext()\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const ticket = useSelector((state: AppState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n\r\n const onYesClick = () => {\r\n let path = paths.parking.tickets\r\n if (ticket) {\r\n path = `${paths.parking.parkCar}/${ticket.lot.lotId}`\r\n }\r\n push(path)\r\n unsetPaymentCard()\r\n clearCounter()\r\n dispatch(parkCarSlice.actions.resetParkingDetails())\r\n props.closeDialog()\r\n }\r\n return (\r\n \r\n \r\n \r\n {t(Translations.YES)}\r\n \r\n \r\n {t(Translations.NO)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CancelParkCarDialog\r\n","import { useChangeLayout } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Redirect, useParams } from 'react-router-dom'\r\nimport { useSelector } from 'react-redux'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider, WhiteBoxContainer } from 'shared'\r\nimport PopupProvider from 'shared/popup_provider'\r\nimport { Translations } from 'utils'\r\nimport { ContactInformations } from './ContactInformations'\r\nimport { contactInformationsSlice } from 'store/slices'\r\nimport { CancelParkCarDialog } from 'pages/park_car_credit_card/CreditCardComponents'\r\n\r\nexport const ContactInformationsPage = () => {\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const { t } = useTranslation()\r\n const title = t(Translations.PARK_CAR)\r\n const { carId } = useParams<{ carId: string }>()\r\n const { paymentRedirectionAvailable } = useSelector(\r\n contactInformationsSlice.stateSelectors\r\n )\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n hasGoBack: false,\r\n rightIcon: 'close',\r\n onClickRight: () => setShowDialog(true),\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app'\r\n )\r\n\r\n if (!carId || paymentRedirectionAvailable === null) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n setShowDialog(false)}\r\n />\r\n \r\n \r\n \r\n )\r\n}\r\n","import { Form, Formik } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n AppButton,\r\n AppTypography,\r\n FlexBox,\r\n PhoneNumberContainer,\r\n Placeholder,\r\n SharedIcon,\r\n} from 'shared'\r\nimport * as Yup from 'yup'\r\nimport { Input } from 'shared/Input'\r\nimport {\r\n countryCodeRegex,\r\n phoneNumberRegex,\r\n Translations,\r\n blurLastInput,\r\n} from 'utils'\r\nimport CodeStepPopup from '../CodeStepPopup'\r\nimport { ReceiptsAndNotificationsProps, RedirectType } from './types'\r\nimport { useResendCode } from './useResendCode'\r\nimport { useSendVerificationSMS } from './useSendVerificationSMS'\r\nimport { useSubmitForm } from './useSubmitForm'\r\nimport NewPhoneNumberInput from 'shared/PhoneNumberAndCountryCodeInput'\r\nimport { useGetTicket } from 'pages/park_car/ParkCarHooks'\r\nimport HybridRecaptcha from '../../../shared/ReCaptcha/HybridRecaptcha';\r\nimport {validateFeature } from '../../../shared/ReCaptcha/HybridRecaptcha';\r\n\r\nconst ReceiptsAndNotifications = ({ carId }: ReceiptsAndNotificationsProps) => {\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const [showCodeStepPopup, setShowCodeStepPopup] = useState(false)\r\n const [pin, setPin] = useState('')\r\n const [confirmToken, setConfirmToken] = useState('')\r\n const [, , ticket] = useGetTicket()\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n const [recaptchaToken, setRecaptchaToken] = useState(null);\r\n\r\n const handleResendCode = useResendCode(confirmToken, setConfirmToken)\r\n const handleSubmitWithPhoneNumber = useSendVerificationSMS(\r\n setShowCodeStepPopup,\r\n setConfirmToken,\r\n carId,\r\n recaptchaToken\r\n )\r\n const handleSubmit = useSubmitForm(\r\n RedirectType.ReceiptsAndNotifications,\r\n carId,\r\n confirmToken,\r\n pin\r\n )\r\n \r\n const handleTokenReceived = (token: string) => {\r\n setRecaptchaToken(token);\r\n };\r\n\r\n const handleRecaptchaSuccess = () => {\r\n setRecaptchaVerified(true);\r\n };\r\n\r\n const handleRecaptchaFailure = () => {\r\n enqueueSnackbar(t(Translations.RECAPTCHA_VERIFICATION_FAILED), { variant: 'error' });\r\n setRecaptchaVerified(false);\r\n };\r\n const sendReceiptSchema = Yup.object().shape({\r\n email: Yup.string().email(t(Translations.INVALID_EMAIL)),\r\n code: Yup.string().matches(\r\n countryCodeRegex,\r\n t(Translations.INVALID_COUNTRY_CODE)\r\n ),\r\n phoneNumber: Yup.string().matches(\r\n phoneNumberRegex,\r\n t(Translations.INVALID_PHONE_NUMBER)\r\n ),\r\n })\r\n\r\n const title = ticket?.externalServiceDeliversReceipts\r\n ? t(Translations.NOTIFICATIONS)\r\n : t(Translations.RECEIPTS_AND_NOTIFICATIONS)\r\n const subtitle = ticket?.externalServiceDeliversReceipts\r\n ? t(Translations.PARKING_NOTIFICATIONS)\r\n : t(Translations.TO_RECEIVE_PARKING_EXPIRATION_TEXT_MESSAGES)\r\n\r\n const icon = \r\n\r\n const initialValues = {\r\n email: '',\r\n phoneNumber: '',\r\n code: '',\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {subtitle}\r\n \r\n {({\r\n values,\r\n errors,\r\n handleBlur,\r\n handleChange,\r\n validateForm,\r\n submitForm,\r\n }) => (\r\n
\r\n \r\n \r\n \r\n {!ticket?.externalServiceDeliversReceipts && (\r\n {\r\n blurLastInput(e)\r\n }}\r\n >\r\n )}\r\n \r\n \r\n {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), { variant: 'warning' });\r\n return;\r\n }\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n handleSubmitWithPhoneNumber(values)\r\n } else {\r\n enqueueSnackbar(entries[0][1])\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.CONFIRM)}\r\n \r\n \r\n setShowCodeStepPopup(false)}\r\n showCodeStepPopup={showCodeStepPopup}\r\n submitForm={submitForm}\r\n pin={pin}\r\n setPin={setPin}\r\n handleResendCode={handleResendCode}\r\n />\r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default ReceiptsAndNotifications\r\n","import { useChangeLayout } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Redirect, useHistory, useLocation, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider, WhiteBoxContainer } from 'shared'\r\nimport PopupProvider from 'shared/popup_provider'\r\nimport { Translations } from 'utils'\r\nimport ReceiptsAndNotifications from './ReceiptsAndNotifications'\r\nimport { useSelector } from 'react-redux'\r\nimport { customerSlice } from 'store/slices'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\n\r\ninterface LocationState {\r\n externalService: boolean\r\n}\r\n\r\nconst ReceiptsAndNotifiactionsPage = () => {\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const { carId } = useParams<{ carId: string }>()\r\n const { setPopup, showPopup } = usePopup()\r\n const { customerSignedIn } = useSelector(customerSlice.selectCustomerStatus)\r\n const location = useLocation()\r\n const externalService = location.state && location.state.externalService\r\n const title = externalService\r\n ? t(Translations.NOTIFICATIONS)\r\n : t(Translations.RECEIPTS_AND_NOTIFICATIONS)\r\n\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack: () => push(paths.parking.tickets),\r\n },\r\n },\r\n 'app'\r\n )\r\n\r\n React.useEffect(() => {\r\n if (customerSignedIn) {\r\n setPopup({\r\n variant: 'success',\r\n title: t(Translations.SUCCESS),\r\n description: ' ',\r\n buttons: [\r\n {\r\n onClick() {\r\n push(paths.parking.tickets)\r\n },\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n if (!carId) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ReceiptsAndNotifiactionsPage\r\n","import { List, ListItem, ListItemIcon, ListItemText } from '@mui/material'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { AppButton, AppTypography, FlexBox, SharedIcon } from 'shared'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { Translations } from 'utils'\r\nimport { CustomerDetails } from '../../../typedef/customer'\r\nimport { PhoneNumberUtil, PhoneNumberFormat } from 'google-libphonenumber'\r\ninterface MyProfileDetailsProps {\r\n details: CustomerDetails | undefined\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n minWidth: 36,\r\n },\r\n}))\r\n\r\nexport const MyProfileDetails: React.FC = props => {\r\n const history = useHistory()\r\n const { t } = useTranslation()\r\n const classes = useStyles()\r\n\r\n const newPhoneNumber = () => {\r\n const phoneUtil = PhoneNumberUtil.getInstance()\r\n if (props.details.phoneNumber) {\r\n const parsedPhoneNumber = phoneUtil.parse(\r\n `+${props.details.phoneNumberCountryCode}${props.details.phoneNumber}`\r\n )\r\n return `${phoneUtil.format(\r\n parsedPhoneNumber,\r\n PhoneNumberFormat.INTERNATIONAL\r\n )}`\r\n } else {\r\n return ''\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {props.details?.firstName} {props.details?.lastName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.details?.email && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n history.push(paths.parker.edit)}\r\n data-testid=\"editCustomerDetails\"\r\n >\r\n {t(Translations.EDIT)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default MyProfileDetails\r\n","import { getPromiseStatus } from 'api/utils'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n ErrorPlaceholder,\r\n FlexBox,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport * as customerSlice from 'store/slices/customerSlice'\r\nimport { actions } from 'store/slices/customerSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport { MyProfileDetails } from './MyProfileDetails'\r\n\r\nexport interface MyProfileProps {\r\n onClickRefresh: () => void\r\n}\r\n\r\nexport const MyProfile: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const { details, promisesStatus } = useSelector(customerSlice.stateSelectors)\r\n const fetchStatus = getPromiseStatus(promisesStatus.getCustomerDetails.status)\r\n return (\r\n \r\n {fetchStatus.pendingIdle && }\r\n {!details && !fetchStatus.pendingIdle && (\r\n \r\n )}\r\n {details && }\r\n \r\n dispatch(actions.destroySession())}\r\n >\r\n {t(Translations.SIGN_OUT)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default MyProfile\r\n","import {\r\n CircularProgress,\r\n Divider,\r\n Icon,\r\n IconButton,\r\n ListItem,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n} from '@mui/material'\r\nimport * as React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { SharedIcon } from 'shared'\r\nimport * as carSlice from 'store/slices/carsSlice'\r\nimport { CarStateType } from 'store/slices/carsSlice.types'\r\nimport { fetchStatus } from 'store/slices/slice.utils'\r\nimport styled from 'styled-components'\r\ninterface CarBarProps {\r\n carPlate: string\r\n handleDeleteClick(): void\r\n car: CarStateType\r\n divider?: boolean\r\n}\r\n\r\nconst PlateIcon = styled.div`\r\n width: 45px;\r\n margin: 10px 15px 5px 0;\r\n`\r\n\r\nconst CarBar: React.FunctionComponent = props => {\r\n const { removeCar } = useSelector(carSlice.stateSelectors).promisesStatus\r\n const status = fetchStatus(removeCar[props.car.carId])\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {status.pending ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {status.rejected && (\r\n \r\n )}\r\n {status.idle && }\r\n \r\n )}\r\n \r\n \r\n {props.divider && }\r\n \r\n )\r\n}\r\n\r\nexport default CarBar\r\n","import { List, Slide } from '@mui/material'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { TransitionGroup } from 'react-transition-group'\r\nimport { removeCar } from 'store/slices/carsSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { showPopup } from '../../store/globalPopup/actions'\r\nimport { Car } from '../../typedef/car'\r\nimport Translations from '../../utils/translations'\r\nimport CarBar from './CarBar'\r\n\r\ninterface MyCarsProps {\r\n cars: Car[]\r\n}\r\n\r\nexport const MyCars: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { enqueueSnackbar } = useSnackbar()\r\n\r\n const deleteCar = async (carId: string) => {\r\n const resultAction = await dispatch(removeCar({ carId }))\r\n if (removeCar.rejected.match(resultAction)) {\r\n enqueueSnackbar(t(Translations.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN))\r\n }\r\n }\r\n const handlePopup = (carId: string) =>\r\n dispatch(\r\n showPopup({\r\n title: t(Translations.DELETE_CAR),\r\n description: t(Translations.ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_CAR),\r\n variant: 'delete',\r\n handleAdditionalButtonClick: () => deleteCar(carId),\r\n })\r\n )\r\n\r\n return (\r\n \r\n \r\n {props?.cars?.map((v, i, arr) => (\r\n \r\n
\r\n handlePopup(v.carId)}\r\n divider={i < arr.length - 1}\r\n />\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default MyCars\r\n","import { Grow } from '@mui/material'\r\nimport { MyCars as MyCarsDetails } from 'pages/my_cars/MyCars'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n AppTypography,\r\n ErrorPlaceholder,\r\n FlexBox,\r\n Placeholder,\r\n SharedIcon,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport * as carsSlice from 'store/slices/carsSlice'\r\nimport { fetchStatus } from 'store/slices/slice.utils'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface MyProfileProps {\r\n onClickRefresh: () => void\r\n}\r\n\r\nexport const MyProfile: React.FC = props => {\r\n const { t } = useTranslation()\r\n const { promisesStatus } = useSelector(carsSlice.stateSelectors)\r\n const cars = useSelector(carsSlice.selectAllCars)\r\n const status = fetchStatus(promisesStatus.getCars)\r\n const carAmount = cars.length ? ` (${cars.length})` : ''\r\n const carTitle = `${t(Translations.MY_CARS)}${carAmount}`\r\n const history = useHistory()\r\n const shouldRenderError = () =>\r\n !cars.length && (status.rejected || status.pendingRejected)\r\n\r\n return (\r\n \r\n \r\n {carTitle}\r\n \r\n {status.pendingIdle && }\r\n {shouldRenderError() && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n
\r\n {!cars.length && (status.fulfilled || status.pendingFulfilled) && (\r\n }\r\n >\r\n {status.pending && }\r\n \r\n )}\r\n \r\n history.push(paths.parker.addCar)}\r\n topGutter={!shouldRenderError() ? 15 : 0}\r\n data-testid=\"addNewCar\"\r\n >\r\n {t(Translations.ADD_NEW_CAR)}\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default MyProfile\r\n","import {\r\n IconButton,\r\n ListItem,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n CircularProgress,\r\n Icon,\r\n} from '@mui/material'\r\nimport * as React from 'react'\r\nimport { SharedIcon } from 'shared'\r\nimport styled from 'styled-components'\r\nimport { CardType, CreditCard } from '../../../typedef/creditCards'\r\nimport { creditCardsSlice } from 'store/slices'\r\nimport { getCreditCardIcon } from '../../../utils/creditCardTypeMapper'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from 'store/rootReducer'\r\n\r\ninterface CardBarProps {\r\n card: CreditCard\r\n handleDeleteClick?: () => void\r\n noRightAction?: boolean\r\n}\r\n\r\nconst CardIcon = styled.img`\r\n width: 45px;\r\n margin: 0 15px 0 0;\r\n`\r\n\r\nconst CreditCardBar: React.FunctionComponent = ({\r\n card,\r\n handleDeleteClick,\r\n noRightAction,\r\n ...props\r\n}) => {\r\n const cardIcon = getCreditCardIcon(card.cardType)\r\n const status = useSelector((state: RootState) =>\r\n creditCardsSlice.promiseStatusSelectors(state, card.creditCardId)\r\n ).removeCreditCardStatus\r\n\r\n return (\r\n \r\n \r\n \r\n {!noRightAction && (\r\n \r\n {status.pending ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {status.rejected && (\r\n \r\n )}\r\n {status.idle && }\r\n \r\n )}\r\n \r\n )}\r\n \r\n )\r\n}\r\nCreditCardBar.defaultProps = {\r\n handleDeleteClick: () => undefined,\r\n}\r\nexport default CreditCardBar\r\n","import { Slide, Divider, List } from '@mui/material'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { TransitionGroup } from 'react-transition-group'\r\nimport { showPopup } from 'store/globalPopup/actions'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { creditCardsSlice, customerSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { CreditCard } from 'typedef/creditCards'\r\nimport Translations from 'utils/translations'\r\nimport CreditCardBar from './CreditCardBar'\r\n\r\ninterface CreditCardsListProps {\r\n creditCards?: CreditCard[]\r\n}\r\n\r\nexport const CreditCardsList: React.FunctionComponent =\r\n props => {\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n const { customerSignedIn, customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n\r\n const handlePopup = (creditCardId: string) =>\r\n dispatch(\r\n showPopup({\r\n title: t(Translations.DELETE_CREDIT_CARD),\r\n description: t(\r\n Translations.ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_CREDIT_CARD\r\n ),\r\n variant: 'delete',\r\n handleAdditionalButtonClick: () => {\r\n if (customerSignedIn) {\r\n dispatch(\r\n creditCardsSlice.removeCreditCard({\r\n creditCardId,\r\n lotId: ticket?.lot?.lotId,\r\n })\r\n )\r\n }\r\n\r\n if (customerSignedInAsGuest) {\r\n dispatch(creditCardsSlice.actions.removeCard(creditCardId))\r\n }\r\n },\r\n })\r\n )\r\n\r\n return (\r\n \r\n \r\n {props?.creditCards?.map((el, i, arr) => (\r\n \r\n
\r\n handlePopup(el.creditCardId)}\r\n />\r\n {arr.length - 1 > i && (\r\n \r\n )}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n )\r\n }\r\n\r\nexport default CreditCardsList\r\n","import { Grow } from '@mui/material'\r\nimport CreditCardsList from 'pages/my_credit_cards/CreditCardsComponents/CreditCardsList'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n AppSpinner,\r\n ErrorPlaceholder,\r\n Placeholder,\r\n SharedIcon,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { creditCardsSlice } from 'store/slices'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface MyCreditCardsProps {\r\n onClickRefresh: () => void\r\n}\r\n\r\nexport const MyCreditCards: React.FC = props => {\r\n const { t } = useTranslation()\r\n const status = useSelector(\r\n creditCardsSlice.promiseStatusSelectors\r\n ).getCreditCardsStatus\r\n const cards = useSelector(creditCardsSlice.selectAll)\r\n\r\n const shouldRenderError = () =>\r\n !cards.length && (status.rejected || status.pendingRejected)\r\n return (\r\n \r\n \r\n {shouldRenderError() && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n {!cards.length && (status.fulfilled || status.pendingFulfilled) && (\r\n }\r\n />\r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default MyCreditCards\r\n","import MyReceipts from 'pages/my_receipts/MyReceipts'\r\nimport MyReceiptsPlaceholder from 'pages/my_receipts/MyReceiptsPlaceholder'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n AppTypography,\r\n ErrorPlaceholder,\r\n FlexBox,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { receiptsSlice } from 'store/slices'\r\nimport Translations from 'utils/translations'\r\n\r\ninterface LastReceiptProps {\r\n onClickRefresh: () => void\r\n}\r\nconst LastReceipt: React.FC = props => {\r\n const { getReceiptsStatus: status } = useSelector(\r\n receiptsSlice.promiseStatusSelectors\r\n )\r\n const receipts = useSelector(receiptsSlice.selectAllReceipts)\r\n const { t } = useTranslation()\r\n const history = useHistory()\r\n\r\n const shouldRenderError = () =>\r\n !receipts.length && (status.fulfilled || status.pendingFulfilled)\r\n return (\r\n \r\n \r\n {t(Translations.LAST_RECEIPT)}\r\n \r\n {status.pendingIdle && }\r\n {!receipts.length && (status.rejected || status.pendingRejected) && (\r\n \r\n )}\r\n {!!receipts.length && }\r\n {shouldRenderError() && (\r\n \r\n {status.pending && }\r\n \r\n )}\r\n {receipts.length > 1 && (\r\n \r\n history.push(paths.parker.myReceipts)}\r\n data-testid=\"seeMoreButton\"\r\n >\r\n {t(Translations.SEE_MORE)}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default LastReceipt\r\n","import { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector, batch } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { AppButton } from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport {\r\n carsSlice,\r\n receiptsSlice,\r\n customerSlice,\r\n sliceUtil,\r\n creditCardsSlice,\r\n ticketsSlice,\r\n} from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { Translations } from 'utils'\r\nimport * as ParkerComponent from '.'\r\nexport interface ParkerContainerProps {}\r\n\r\nexport const ParkerContainer: React.FC = props => {\r\n const snackbarKey = React.useRef(null)\r\n const dispatch = useAppDispatch()\r\n const { enqueueSnackbar, closeSnackbar } = useSnackbar()\r\n const { t } = useTranslation()\r\n\r\n const { getCarsStatus } = useSelector(carsSlice.promiseStatusSelectors)\r\n const { getReceiptsStatus } = useSelector(\r\n receiptsSlice.promiseStatusSelectors\r\n )\r\n const { getCustomerDetails } = useSelector(\r\n customerSlice.stateSelectors\r\n ).promisesStatus\r\n\r\n const getCustomerDetailsStatus = sliceUtil.fetchStatus(getCustomerDetails)\r\n const { getCreditCardsStatus } = useSelector(\r\n creditCardsSlice.promiseStatusSelectors\r\n )\r\n\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n\r\n const reFetchData = React.useCallback(\r\n (close?: boolean) => {\r\n batch(() => {\r\n if (getCustomerDetailsStatus.rejected) {\r\n dispatch(customerSlice.getCustomerDetails())\r\n }\r\n if (getCarsStatus.rejected) {\r\n dispatch(carsSlice.getCars())\r\n }\r\n if (getReceiptsStatus.rejected) {\r\n dispatch(receiptsSlice.getReceipts())\r\n }\r\n if (getCreditCardsStatus.rejected) {\r\n dispatch(\r\n creditCardsSlice.getCreditCards({ lotId: ticket?.lot?.lotId })\r\n )\r\n }\r\n if (close) {\r\n closeSnackbar(snackbarKey.current)\r\n }\r\n })\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [\r\n closeSnackbar,\r\n dispatch,\r\n getCarsStatus.rejected,\r\n getCreditCardsStatus.rejected,\r\n getCustomerDetailsStatus.rejected,\r\n getReceiptsStatus.rejected,\r\n ]\r\n )\r\n\r\n const action = React.useCallback(\r\n (key: any) => (\r\n {\r\n closeSnackbar(key)\r\n reFetchData()\r\n }}\r\n >\r\n {t(Translations.REFRESH)}\r\n \r\n ),\r\n [closeSnackbar, reFetchData, t]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (getCustomerDetailsStatus.idle) {\r\n dispatch(customerSlice.getCustomerDetails())\r\n }\r\n if (getCarsStatus.idle) {\r\n dispatch(carsSlice.getCars())\r\n }\r\n if (getReceiptsStatus.idle) {\r\n dispatch(receiptsSlice.getReceipts())\r\n }\r\n if (getCreditCardsStatus.idle) {\r\n dispatch(creditCardsSlice.getCreditCards({ lotId: ticket?.lot?.lotId }))\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n dispatch,\r\n getCarsStatus.idle,\r\n getCustomerDetailsStatus.idle,\r\n getReceiptsStatus.idle,\r\n getCreditCardsStatus.idle,\r\n ])\r\n\r\n React.useEffect(() => {\r\n if (\r\n (getCustomerDetailsStatus.rejected ||\r\n getCarsStatus.rejected ||\r\n getReceiptsStatus.rejected ||\r\n getCreditCardsStatus.rejected) &&\r\n !getCustomerDetailsStatus.pending &&\r\n !getCarsStatus.pending &&\r\n !getReceiptsStatus.pending &&\r\n !getCreditCardsStatus.pending\r\n ) {\r\n snackbarKey.current = enqueueSnackbar(\r\n t(Translations.SOME_DATA_HAS_NOT_BEEN_UPDATED),\r\n {\r\n persist: true,\r\n key: 'fetchError',\r\n action,\r\n }\r\n )\r\n }\r\n }, [\r\n dispatch,\r\n enqueueSnackbar,\r\n getCustomerDetailsStatus.rejected,\r\n getCarsStatus.rejected,\r\n getReceiptsStatus.rejected,\r\n getCreditCardsStatus.rejected,\r\n t,\r\n action,\r\n getCustomerDetailsStatus.pending,\r\n getCarsStatus.pending,\r\n getReceiptsStatus.pending,\r\n getCreditCardsStatus.pending,\r\n ])\r\n\r\n return (\r\n <>\r\n reFetchData(true)} />\r\n reFetchData(true)} />\r\n reFetchData(true)} />\r\n reFetchData(true)} />\r\n \r\n )\r\n}\r\n\r\nexport default ParkerContainer\r\n","import * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppButton,\r\n FlexBox,\r\n Placeholder,\r\n SharedIcon,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { customerSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { Translations } from 'utils'\r\n\r\ninterface ParkerGuestProps {}\r\nexport const ParkerContainerGuest = (props: ParkerGuestProps) => {\r\n const { t } = useTranslation()\r\n const history = useHistory()\r\n const dispatch = useAppDispatch()\r\n\r\n return (\r\n \r\n }\r\n />\r\n \r\n {\r\n dispatch(customerSlice.actions.destroySession())\r\n history.push(paths.auth.login)\r\n }}\r\n >\r\n {t(Translations.LOG_IN)}\r\n \r\n {\r\n dispatch(customerSlice.actions.destroySession())\r\n\r\n history.push(paths.auth.signUp)\r\n }}\r\n >\r\n {t(Translations.SIGN_UP)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ParkerContainerGuest\r\n","import { useChangeLayout, useUpdateTicket } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { AppSnackBarProvider } from 'shared'\r\nimport { customerSlice } from 'store/slices'\r\nimport { Translations } from 'utils'\r\nimport ParkerContainer from './ParkerComponents/ParkerContainer'\r\nimport { ParkerContainerGuest } from './ParkerComponents/ParkerContainerGuest'\r\n\r\ninterface ParkerPageProps {}\r\n\r\nconst ParkerPage = (props: ParkerPageProps) => {\r\n const { t } = useTranslation()\r\n const { customerSignedIn, customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n useUpdateTicket()\r\n const title = t(Translations.MY_PROFILE)\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n hasGoBack: false,\r\n },\r\n },\r\n 'app'\r\n )\r\n\r\n return (\r\n \r\n {customerSignedIn && }\r\n {customerSignedInAsGuest && }\r\n \r\n )\r\n}\r\n\r\nexport default ParkerPage\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, AppPopup, AppTypography, FlexBox, SharedIcon } from 'shared'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface ConfirmPopupProps {\r\n showConfirmPopup: boolean\r\n spotNumber: string\r\n closePopup: () => void\r\n onConfirmClick: () => void\r\n}\r\n\r\nexport const ConfirmPopup: React.FC = ({\r\n closePopup,\r\n onConfirmClick,\r\n showConfirmPopup,\r\n spotNumber,\r\n}) => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n }\r\n >\r\n \r\n
\r\n \r\n {`${t(Translations.PLEASE_CONFIRM_YOU_ARE_IN_SPOT)} `}\r\n \r\n \r\n {spotNumber}\r\n \r\n
\r\n
\r\n \r\n \r\n {t(Translations.CONFIRM)}\r\n \r\n \r\n {t(Translations.CANCEL)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ConfirmPopup\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, AppPopup, AppTypography, FlexBox } from 'shared'\r\nimport { contactInformationsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport { CompanyContactInfo } from 'typedef/companyDetails'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface NeedHelpPopupProps {\r\n showNeedHelpPopup: boolean\r\n companyDetails?: CompanyContactInfo\r\n lotId: string\r\n closePopup: () => void\r\n}\r\n\r\nconst StyledLink = styled.a`\r\n color: ${props => props.theme.palette.primary.main};\r\n font-weight: bold;\r\n text-decoration: none;\r\n margin-left: 4px;\r\n`\r\n\r\nexport const NeedHelpPopup = ({\r\n closePopup,\r\n showNeedHelpPopup,\r\n lotId,\r\n}: NeedHelpPopupProps) => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const [companyDetails, setCompanyDetails] =\r\n React.useState(null)\r\n const [companyDetailsError, setCompanyDetailsError] = React.useState(false)\r\n\r\n const fetchCompanyContactInfo = React.useCallback(async () => {\r\n const promise = await dispatch(\r\n contactInformationsSlice.getCompanyContactInfo({\r\n lotId,\r\n })\r\n )\r\n if (\r\n contactInformationsSlice.getCompanyContactInfo.fulfilled.match(promise)\r\n ) {\r\n const res = unwrapResult(promise)\r\n setCompanyDetails(res)\r\n } else setCompanyDetailsError(true)\r\n }, [lotId, dispatch])\r\n\r\n const handleClosePopup = () => {\r\n closePopup()\r\n if (companyDetailsError) {\r\n setCompanyDetailsError(false)\r\n fetchCompanyContactInfo()\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n fetchCompanyContactInfo()\r\n }, [fetchCompanyContactInfo])\r\n\r\n return (\r\n \r\n {t(Translations.CONTACT_INFORMATION)}\r\n \r\n }\r\n >\r\n \r\n {companyDetailsError ? (\r\n \r\n {t(Translations.UNEXPECTED_ERROR_PLEASE_TRY_AGAIN)}\r\n \r\n ) : (\r\n <>\r\n \r\n {t(Translations.COMPANY_NAME)}: {companyDetails?.companyName}\r\n \r\n \r\n {t(Translations.PHONE)}:\r\n \r\n {companyDetails?.phone}\r\n \r\n \r\n \r\n {t(Translations.WEBSITE)}:\r\n \r\n {companyDetails?.website}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {t(Translations.OK)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default NeedHelpPopup\r\n","import React from 'react'\r\nimport { AppSpinner, FlexBox, GridWrapper, WhiteBoxContainer } from 'shared'\r\nimport { GetLotDetailsParkData } from 'typedef/lot'\r\nimport * as C from '.'\r\nimport { useParkCar } from '../ParkCarHooks'\r\nimport ConfirmPopup from './ConfirmPopup'\r\nimport LicenseField from './LicenseField'\r\nimport NeedHelpPopup from './NeedHelpPopup'\r\nimport SelectedLotTitle from './SelectedLotTitle'\r\nimport SpotField from './SpotField'\r\n\r\nexport interface MonthlyParkCarCardProps {\r\n lot: GetLotDetailsParkData\r\n}\r\n\r\nexport const MonthlyParkCarCard: React.FC = ({\r\n lot,\r\n ...props\r\n}) => {\r\n const [licencePlate, setLicencePlate] = React.useState('')\r\n const [spotNumber, setSpotNumber] = React.useState('')\r\n const [showConfirmPopup, setShowConfirmPopup] = React.useState(false)\r\n const [showNeedHelpPopup, setShowNeedHelpPopup] = React.useState(false)\r\n const [isLoading, parkCar] = useParkCar()\r\n const [isTosChecked, setIsTosChecked] = React.useState(false)\r\n\r\n const isPayButtonDisabled = () => {\r\n if (isLoading || !licencePlate) return true\r\n if (lot.spot.isEnabled && !spotNumber) return true\r\n return false\r\n }\r\n\r\n const onPayConfirm = () => {\r\n setShowConfirmPopup(false)\r\n parkCar({\r\n plate: licencePlate,\r\n spot: spotNumber,\r\n })\r\n }\r\n\r\n const onPayClick = () => {\r\n if (lot.spot?.isEnabled) {\r\n setShowConfirmPopup(true)\r\n } else {\r\n onPayConfirm()\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n setLicencePlate(e.target.value)}\r\n onChange={e => setLicencePlate(e.target.value)}\r\n value={licencePlate}\r\n />\r\n {lot?.spot?.isEnabled && (\r\n setSpotNumber(e.target.value)}\r\n onChange={e => setSpotNumber(e.target.value)}\r\n maxSpotNumber={lot?.spot?.maxSpotNumber}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n\r\n setShowConfirmPopup(false)}\r\n onConfirmClick={onPayConfirm}\r\n showConfirmPopup={showConfirmPopup}\r\n spotNumber={spotNumber}\r\n />\r\n setShowNeedHelpPopup(false)}\r\n showNeedHelpPopup={showNeedHelpPopup}\r\n lotId={lot.lotId}\r\n />\r\n \r\n )\r\n}\r\n\r\nMonthlyParkCarCard.defaultProps = {}\r\nexport default MonthlyParkCarCard\r\n","import { TFunction } from 'i18next'\r\nimport { GetLotDetailsParkData } from 'typedef'\r\nimport { Translations } from 'utils'\r\nimport { licencePlateRegex } from 'utils/regex'\r\nimport * as Yup from 'yup'\r\n\r\nexport const spotNumberSchema = (t: TFunction, lot?: GetLotDetailsParkData) => {\r\n const yupSchema = Yup.number()\r\n .typeError(\r\n t(Translations.SPOT_NUMBER_MUST_BE_BETWEEN, {\r\n min: lot.spot?.minSpotNumber || 1,\r\n max: lot.spot?.maxSpotNumber || 9999,\r\n })\r\n )\r\n .min(\r\n lot.spot?.minSpotNumber || 1,\r\n t(Translations.SPOT_NUMBER_MUST_BE_BETWEEN, {\r\n min: lot.spot?.minSpotNumber || 1,\r\n max: lot.spot?.maxSpotNumber || 9999,\r\n })\r\n )\r\n .max(\r\n lot.spot?.maxSpotNumber || 9999,\r\n t(Translations.SPOT_NUMBER_MUST_BE_BETWEEN, {\r\n min: lot.spot?.minSpotNumber || 1,\r\n max: lot.spot?.maxSpotNumber || 9999,\r\n })\r\n )\r\n\r\n return lot?.spot?.isEnabled\r\n ? yupSchema.required(t(Translations.SPOT_NUMBER_IS_REQUIRED))\r\n : yupSchema\r\n}\r\n\r\nexport const parkCarSchema = (t: TFunction, lot?: GetLotDetailsParkData) =>\r\n Yup.object().shape({\r\n spotNumber: spotNumberSchema(t, lot),\r\n licencePlate: Yup.string()\r\n .required(t(Translations.PLATE_CANNOT_BE_EMPTY))\r\n .matches(\r\n licencePlateRegex,\r\n t(Translations.ONLY_ALPHANUMERIC_CHARACTERS_ARE_ALLOWED)\r\n ),\r\n })\r\n","import React from 'react'\r\nimport { TimeSelectOption } from 'typedef/lot'\r\n\r\nexport interface Props {\r\n selectedTimeOption?: TimeSelectOption\r\n licencePlate?: string\r\n spotNumber?: string\r\n minutes?: number\r\n hours?: number\r\n days?: number\r\n isAllDay?: boolean\r\n hasSpot: boolean\r\n pricePromiseFullfilled?: boolean\r\n isTos?: boolean\r\n}\r\n\r\nexport const usePayButton = ({\r\n days,\r\n hours,\r\n isAllDay,\r\n licencePlate,\r\n minutes,\r\n selectedTimeOption,\r\n spotNumber,\r\n hasSpot,\r\n pricePromiseFullfilled,\r\n isTos,\r\n}: Props) => {\r\n const [isPayButtonDisabled, setIsPayButtonDisabled] = React.useState(true)\r\n\r\n const setButton = React.useCallback(() => {\r\n if (!selectedTimeOption || !pricePromiseFullfilled) {\r\n setIsPayButtonDisabled(true)\r\n return\r\n }\r\n if (hasSpot && !spotNumber) {\r\n setIsPayButtonDisabled(true)\r\n return\r\n }\r\n if (!licencePlate) {\r\n setIsPayButtonDisabled(true)\r\n return\r\n }\r\n // if (!isTos) {\r\n // setIsPayButtonDisabled(true)\r\n // return\r\n // }\r\n if (selectedTimeOption.intervalOptions) {\r\n if (minutes || hours || days || isAllDay) {\r\n setIsPayButtonDisabled(false)\r\n } else {\r\n setIsPayButtonDisabled(true)\r\n }\r\n return\r\n }\r\n setIsPayButtonDisabled(false)\r\n }, [\r\n licencePlate,\r\n spotNumber,\r\n minutes,\r\n hours,\r\n days,\r\n isAllDay,\r\n selectedTimeOption,\r\n pricePromiseFullfilled,\r\n hasSpot,\r\n ])\r\n React.useEffect(() => {\r\n setButton()\r\n }, [setButton])\r\n\r\n return { isPayButtonDisabled }\r\n}\r\n\r\nexport default usePayButton\r\n","import {\r\n Divider,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n SvgIcon,\r\n} from '@mui/material'\r\nimport React from 'react'\r\nimport { AppTypography, SharedIcon } from 'shared'\r\nimport { Currency } from 'typedef'\r\nimport { formatCurrency } from 'utils'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nexport interface SelectPriceItemProps {\r\n onClick?: () => void\r\n label?: string\r\n amount?: number\r\n currency?: Currency\r\n selected?: boolean\r\n divider?: boolean\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n minWidth: 0,\r\n width: 25,\r\n marginRight: 6,\r\n },\r\n}))\r\n\r\nexport const SelectPriceItem: React.FC = props => {\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.label}\r\n }\r\n />\r\n \r\n {formatCurrency(props.currency, props.amount)}\r\n \r\n }\r\n />\r\n \r\n {props.divider && }\r\n \r\n )\r\n}\r\nSelectPriceItem.defaultProps = {\r\n amount: 0,\r\n label: '-',\r\n onClick: () => undefined,\r\n currency: {\r\n cultureName: 'en_US',\r\n currencyFormat: null,\r\n currencySymbol: null,\r\n },\r\n}\r\nexport default SelectPriceItem\r\n","import { List } from '@mui/material'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { FullLayout, PageDialog, Topbar, WhiteBoxContainer } from 'shared'\r\nimport { TimeSelectOption } from 'typedef/lot'\r\nimport { Translations } from 'utils'\r\nimport SelectPriceItem from './SelectPriceItem'\r\nimport { Currency } from 'typedef'\r\n\r\nexport interface TimeSelectOptionDialogProps {\r\n timeSelectOptions: TimeSelectOption[]\r\n currency?: Currency\r\n open: boolean\r\n closeDialog: () => void\r\n onClick: (e: TimeSelectOption) => void\r\n}\r\n\r\nexport const TimeSelectOptionDialog: React.FC<\r\n TimeSelectOptionDialogProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n const onClickItem = (arg: TimeSelectOption) => {\r\n props.onClick(arg)\r\n props.closeDialog()\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.timeSelectOptions.map(el => (\r\n onClickItem(el)}\r\n key={nanoid()}\r\n currency={props.currency}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default TimeSelectOptionDialog\r\n","import { useFormikContext } from 'formik'\r\nimport React from 'react'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\n\r\nexport interface useEndDateProps {}\r\n\r\nexport const useEndDate = () => {\r\n const { values, setFieldValue } = useFormikContext()\r\n const {\r\n parkForCustomTimeDate,\r\n parkForDefaultTimeDate,\r\n parkUntilDate,\r\n periodMode,\r\n endDate,\r\n } = values\r\n\r\n React.useEffect(() => {\r\n let val: string | null = null\r\n if (periodMode === 'parkFor') {\r\n if (typeof parkForCustomTimeDate === 'string') {\r\n val = parkForCustomTimeDate\r\n }\r\n if (typeof parkForDefaultTimeDate === 'string') {\r\n val = parkForDefaultTimeDate\r\n }\r\n }\r\n if (periodMode === 'parkUntil') {\r\n if (typeof parkUntilDate === 'string') {\r\n val = parkUntilDate\r\n }\r\n }\r\n\r\n setFieldValue('endDate', val)\r\n }, [\r\n parkForCustomTimeDate,\r\n parkForDefaultTimeDate,\r\n parkUntilDate,\r\n periodMode,\r\n setFieldValue,\r\n ])\r\n\r\n return [endDate, periodMode]\r\n}\r\n\r\nexport default useEndDate\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { useFormikContext } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport { useParkCarPath, useParkMode } from 'pages/park_car/ParkCarHooks'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { apiDateFormat, handleFormikErrors, Translations } from 'utils'\r\nimport moment from 'moment'\r\n\r\nexport const useExternalPricing = () => {\r\n const dispatch = useAppDispatch()\r\n const parkMode = useParkMode()\r\n const { carId } = useParams<{ carId?: string }>()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const { t } = useTranslation()\r\n const { lot } = useSelector(parkCarSlice.stateSelectors)\r\n const [_, goTo] = useParkCarPath()\r\n const { values, validateForm, setFieldValue } = useFormikContext()\r\n const { licencePlate, spotNumber, endDate, currentTime } = values\r\n const { pending } = useSelector(\r\n parkCarSlice.promiseStatusSelectors\r\n ).getExternalPricingStatus\r\n\r\n const getPricing = () =>\r\n validateForm().then(err =>\r\n handleFormikErrors(\r\n err,\r\n async () => {\r\n const args = {\r\n plate: licencePlate,\r\n spot: spotNumber,\r\n startTime:\r\n parkMode === 'parkCar' ? apiDateFormat(currentTime) : null,\r\n endTime: apiDateFormat(endDate),\r\n valAreaId: lot?.lotId,\r\n externalPricingType: lot?.externalPricingType,\r\n carId,\r\n }\r\n if (moment(currentTime) >= moment(endDate).startOf('minute')) {\r\n return enqueueSnackbar(t(Translations.INVALID_END_TIME))\r\n }\r\n const promise = await dispatch(parkCarSlice.getExternalPricing(args))\r\n if (parkCarSlice.getExternalPricing.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise)\r\n if (!res.pricings.length) {\r\n return enqueueSnackbar(\r\n t(Translations.NO_AVAILABLE_PARKING_AT_CURRENT_TIME)\r\n )\r\n }\r\n\r\n setFieldValue(\r\n 'pricings',\r\n res.pricings.sort((el1, el2) =>\r\n el1.amount > el2.amount ? 1 : -1\r\n )\r\n )\r\n setFieldValue(\r\n 'pricingExpirationDateUtc',\r\n res.pricingExpirationDateUtc\r\n )\r\n goTo('select')\r\n } else {\r\n enqueueSnackbar(\r\n t(Translations.SERVICE_TEMPORARILY_UNAVAILABLE_TRY_AGAIN_LATER)\r\n )\r\n }\r\n },\r\n enqueueSnackbar\r\n )\r\n )\r\n\r\n return [pending, getPricing] as const\r\n}\r\n\r\nexport default useExternalPricing\r\n","import { ExternalPricingOption, GetLotDetailsParkData } from 'typedef'\r\nimport * as Yup from 'yup'\r\nimport { licencePlateRegex, Translations } from 'utils'\r\nimport { spotNumberSchema } from 'pages/park_car/fields'\r\nimport { TFunction } from 'i18next'\r\n\r\nexport type PeriodMode = 'parkFor' | 'parkUntil'\r\nexport interface TimeElements {\r\n minute: number\r\n hour: number\r\n day: number\r\n}\r\nexport interface T2Fields {\r\n licencePlate: string\r\n spotNumber: string\r\n isSpotEnabled: boolean\r\n currentTime?: string\r\n startDate?: string\r\n endDate?: string | null\r\n periodMode: 'parkFor' | 'parkUntil'\r\n parkUntilDate: string | null\r\n parkForCustomTimeDate: string | null\r\n minute: number\r\n hour: number\r\n day: number\r\n parkForDefaultTimeDate: string | null\r\n defaultMinutes: number | null\r\n pricings: ExternalPricingOption[]\r\n selectedPricing: string\r\n lastListView: 'excerpt' | 'full'\r\n pricingExpirationDateUtc?: string\r\n}\r\n\r\nexport const parkCarT2Schema = (\r\n t: TFunction,\r\n lot?: GetLotDetailsParkData,\r\n BMT?: boolean\r\n) =>\r\n Yup.object().shape({\r\n licencePlate: Yup.string()\r\n .required(t(Translations.LICENCE_PLATE_IS_REQUIRED))\r\n .matches(\r\n licencePlateRegex,\r\n t(Translations.ONLY_ALPHANUMERIC_CHARACTERS_ARE_ALLOWED)\r\n ),\r\n\r\n spotNumber: spotNumberSchema(t, lot),\r\n })\r\n","import { Formik } from 'formik'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useGetTicket, useParkDetails, useParkMode } from '../ParkCarHooks'\r\nimport { parkCarT2Schema, T2Fields } from './fields'\r\nimport { useTranslation } from 'react-i18next'\r\nexport interface ParkCarT2FormProps {}\r\n\r\nexport const initialValues: T2Fields = {\r\n spotNumber: '',\r\n licencePlate: '',\r\n periodMode: 'parkFor',\r\n parkUntilDate: null,\r\n startDate: '',\r\n parkForCustomTimeDate: null,\r\n parkForDefaultTimeDate: null,\r\n defaultMinutes: null,\r\n endDate: null,\r\n day: 0,\r\n hour: 0,\r\n minute: 0,\r\n pricings: [],\r\n selectedPricing: '',\r\n lastListView: 'excerpt',\r\n pricingExpirationDateUtc: null,\r\n isSpotEnabled: false,\r\n}\r\n\r\nexport const ParkCarT2Form: React.FC = props => {\r\n const { t } = useTranslation()\r\n const [init, setInit] = React.useState(initialValues)\r\n const parkMode = useParkMode()\r\n const { lot } = useSelector(parkCarSlice.stateSelectors)\r\n const [, , ticket] = useGetTicket()\r\n const { parkingStartDateTime, plate, spot } = useParkDetails()\r\n\r\n React.useEffect(() => {\r\n let init = initialValues\r\n if (lot) {\r\n init = {\r\n ...init,\r\n startDate: lot.currentDateTimeLocal,\r\n currentTime: lot.currentDateTimeLocal,\r\n isSpotEnabled: lot.spot?.isEnabled,\r\n }\r\n }\r\n\r\n if (parkMode === 'parkCar') {\r\n if (plate) {\r\n init = { ...init, licencePlate: plate }\r\n }\r\n if (spot) {\r\n init = { ...init, spotNumber: spot }\r\n }\r\n }\r\n\r\n if (parkMode === 'addMoreTime' && ticket) {\r\n init = {\r\n ...init,\r\n startDate: parkingStartDateTime,\r\n currentTime: ticket.currentDateTime,\r\n licencePlate: ticket.plate,\r\n spotNumber: ticket.spot,\r\n isSpotEnabled: Boolean(ticket.spot),\r\n }\r\n }\r\n setInit(init)\r\n }, [lot, parkMode, parkingStartDateTime, plate, spot, ticket])\r\n\r\n return (\r\n \r\n {utils => {\r\n return
{props.children}
\r\n }}\r\n \r\n )\r\n}\r\n\r\nexport default ParkCarT2Form\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport { useFormikContext } from 'formik'\r\nimport { useUpdateLayout } from 'hooks'\r\nimport { initialValues } from 'pages/park_car/ParkCarT2/ParkCarT2Form'\r\nimport React from 'react'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { ParkCarState } from 'store/slices/parkCarSlice types'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { T2Fields } from '../fields'\r\n\r\nexport const useResetForm = () => {\r\n const updateLayout = useUpdateLayout({}, undefined, true)\r\n const { setFieldValue } = useFormikContext()\r\n const dispatch = useAppDispatch()\r\n const resetForm = React.useCallback(() => {\r\n setFieldValue('lastListView', initialValues['lastListView'])\r\n setFieldValue('pricings', initialValues['pricings'])\r\n setFieldValue(\r\n 'pricingExpirationDateUtc',\r\n initialValues['pricingExpirationDateUtc']\r\n )\r\n setFieldValue('selectedPricing', initialValues['selectedPricing'])\r\n dispatch(\r\n parkCarSlice.actions.updateParkingDetails<\r\n Partial\r\n >({ externalPricingId: initialValues['selectedPricing'] })\r\n )\r\n }, [setFieldValue, updateLayout])\r\n\r\n return resetForm\r\n}\r\n\r\nexport default useResetForm\r\n","import { useFormikContext } from 'formik'\r\nimport { useCounter } from 'shared'\r\nimport { T2Fields } from '../fields'\r\nimport useExpiredPricingPopup from './useExpiredPricingPopup'\r\n\r\nexport const useT2Counter = () => {\r\n const { values } = useFormikContext()\r\n const showPopup = useExpiredPricingPopup()\r\n useCounter(values.pricingExpirationDateUtc, showPopup)\r\n}\r\n\r\nexport default useT2Counter\r\n","import { useFormikContext } from 'formik'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport { T2Fields } from '../fields'\r\n\r\nexport const useCurrentTime = () => {\r\n const { values, setFieldValue } = useFormikContext()\r\n const { startDate, currentTime } = values\r\n const currentDateRef = React.useRef(null)\r\n const timer = React.useRef(null)\r\n\r\n React.useEffect(() => {\r\n if (currentTime && !timer.current) {\r\n currentDateRef.current = currentTime\r\n timer.current = setInterval(() => {\r\n currentDateRef.current = moment(currentDateRef.current)\r\n .add(5, 'seconds')\r\n .toString()\r\n setFieldValue('currentTime', currentDateRef.current)\r\n }, 5000)\r\n }\r\n }, [currentTime, setFieldValue, startDate])\r\n\r\n React.useEffect(() => {\r\n return () => clearInterval(timer.current)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return currentTime\r\n}\r\n\r\nexport default useCurrentTime\r\n","import { useFormikContext } from 'formik'\r\nimport moment from 'moment'\r\nimport { useParkMode } from 'pages/park_car/ParkCarHooks'\r\nimport React from 'react'\r\nimport { T2Fields } from '../fields'\r\n\r\nexport interface useMinDateProps {}\r\n\r\nexport const useMinDate = () => {\r\n const { values } = useFormikContext()\r\n const { currentTime, startDate } = values\r\n const parkMode = useParkMode()\r\n const [minDate, setMinDate] = React.useState(null)\r\n\r\n React.useEffect(() => {\r\n let minDate = ''\r\n if (parkMode === 'parkCar') {\r\n minDate = moment(currentTime)\r\n .add(1, 'minute')\r\n .startOf('minute')\r\n .toString()\r\n }\r\n if (parkMode === 'addMoreTime') {\r\n if (moment(startDate) > moment(currentTime)) {\r\n minDate = moment(startDate)\r\n .add(1, 'minute')\r\n .startOf('minute')\r\n .toString()\r\n } else {\r\n minDate = moment(currentTime)\r\n .add(1, 'minute')\r\n .startOf('minute')\r\n .toString()\r\n }\r\n }\r\n if (!minDate) throw Error('Invalid min date')\r\n setMinDate(minDate)\r\n }, [currentTime, parkMode, startDate])\r\n\r\n return minDate\r\n}\r\n\r\nexport default useMinDate\r\n","import { getErrorMessage } from 'api/utils'\r\nimport { useParkMode } from 'pages/park_car/ParkCarHooks'\r\nimport useAutoClearTimeExceedingPopup from 'pages/park_car/ParkCarHooks/useAutoClearTimeExceedingPopup'\r\nimport { useExpiredPricingPopup } from 'pages/park_car/ParkCarT2/T2Hooks'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { mapSlice, parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { ErrorCode, ErrorData } from 'typedef'\r\n\r\nexport const useFailedPay = () => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { ticketId, carId } = useParams<{ ticketId: string; carId: string }>()\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n const setExpiredPricingPopup = useExpiredPricingPopup()\r\n const setAutoClearTimeExceedingPopup = useAutoClearTimeExceedingPopup()\r\n const { setPopup, showPopup } = usePopup()\r\n const parkMode = useParkMode()\r\n\r\n const onFailClick = React.useCallback(() => {\r\n dispatch(parkCarSlice.actions.setTicket({ carId: carId || ticketId }))\r\n if (parkMode === 'addMoreTime') {\r\n return push(`${paths.parking.addTime}/${ticketId || carId}`)\r\n }\r\n if (parkMode === 'parkCar') {\r\n return push(`${paths.parking.parkCar}/${ticket?.lot.lotId}`)\r\n }\r\n }, [dispatch, parkMode, push, ticket?.lot.lotId, ticketId, carId])\r\n\r\n const onSessionExpiredClick = () => {\r\n dispatch(mapSlice.actions.selectLot({ lotId: ticket?.lot.lotId }))\r\n push(paths.root.root)\r\n }\r\n\r\n const setFailedPopup = () =>\r\n setPopup({\r\n ...getErrorMessage(ErrorCode.FailedSaveCarPayment),\r\n buttons: [\r\n {\r\n onClick: onFailClick,\r\n },\r\n ],\r\n disableBackdropClick: true,\r\n })\r\n\r\n const setExpiredPopup = () =>\r\n setPopup({\r\n ...getErrorMessage(ErrorCode.PaymentTimeExpired),\r\n buttons: [\r\n {\r\n onClick: () => {\r\n onSessionExpiredClick()\r\n },\r\n },\r\n ],\r\n disableBackdropClick: true,\r\n })\r\n\r\n const showExpiredPopup = () => {\r\n setExpiredPopup();\r\n showPopup(true);\r\n }\r\n\r\n const handleRejection = (payload: ErrorData) => {\r\n if (payload.code === ErrorCode.PaymentTimeExpired) {\r\n setExpiredPopup()\r\n } else if (payload.code === ErrorCode.CurrentPricingIsExpired) {\r\n setExpiredPricingPopup()\r\n } else if (payload.code === ErrorCode.AutoClearTimeExeeded) {\r\n setAutoClearTimeExceedingPopup()\r\n push(paths.parking.tickets)\r\n } else {\r\n setFailedPopup()\r\n }\r\n showPopup(true)\r\n }\r\n\r\n return { handleRejection, showExpiredPopup, onSessionExpiredClick }\r\n}\r\n\r\nexport default useFailedPay\r\n","import useFailedPay from 'pages/park_car_summary/ParkCarSummaryHooks/useFailedPay'\r\nimport React from 'react'\r\nimport { useTimer } from 'react-timer-hook'\r\n\r\nexport const ExpirationPopupTimer = ({\r\n expiryTimestamp,\r\n}: {\r\n expiryTimestamp: Date\r\n}) => {\r\n const { showExpiredPopup } = useFailedPay()\r\n\r\n useTimer({ expiryTimestamp, onExpire: () => showExpiredPopup() })\r\n\r\n return <>\r\n}\r\n","import { Formik } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useLocation } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { FlexBox, GridWrapper } from 'shared'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport * as parkCar from 'store/slices/parkCarSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport {\r\n GetLotDetailsParkData,\r\n TimeSelectOption,\r\n IntervalOptions,\r\n OptionType,\r\n} from 'typedef/lot'\r\nimport { GetPricePayload } from 'typedef/price'\r\nimport { ParkCarPayload } from 'typedef/ticket'\r\nimport { Translations, blurLastInput } from 'utils'\r\nimport * as C from '.'\r\nimport { parkCarSchema } from '../fields'\r\nimport usePayButton from '../ParkCarHooks/usePayButton'\r\nimport ConfirmPopup from './ConfirmPopup'\r\nimport LicenseField from './LicenseField'\r\nimport NeedHelpPopup from './NeedHelpPopup'\r\nimport SelectedLotTitle from './SelectedLotTitle'\r\nimport SpotField from './SpotField'\r\nimport TimeSelectOptionDialog from './TimeSelectOptionDialog'\r\nimport HybridRecaptcha from '../../../shared/ReCaptcha/HybridRecaptcha'\r\nimport { validateFeature } from '../../../shared/ReCaptcha/HybridRecaptcha'\r\nimport { ExpirationPopupTimer } from 'utils/Timer/ExpirationPopupTimer'\r\nexport interface ParkCarCardProps {\r\n fetchPricing: (args: GetPricePayload) => void\r\n onPayConfirm: (\r\n args: Omit\r\n ) => void\r\n lot: GetLotDetailsParkData\r\n initLicencePlate?: string\r\n initSpotNumber?: string\r\n disabled: boolean\r\n addTime?: boolean\r\n recaptchaToken: string | null\r\n setRecaptchaToken: React.Dispatch>\r\n}\r\n\r\nexport const ParkCarCard: React.FC = ({ lot, ...props }) => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { state } = useLocation<{\r\n preValidationSettings: GetPricePayload & { time: number }\r\n providedPlate: string\r\n providedSpotNumber: string\r\n }>()\r\n const pricing = useSelector(parkCar.selectPricing)\r\n const [minutes, setMinutes] = React.useState(0)\r\n const [hours, setHours] = React.useState(0)\r\n const [days, setDays] = React.useState(0)\r\n const [isAllDay, setIsAllDay] = React.useState(false)\r\n const [licencePlate, setLicencePlate] = React.useState('')\r\n const [spotNumber, setSpotNumber] = React.useState('')\r\n const [isTosChecked, setIsTosChecked] = React.useState(false)\r\n const [showTimeSelectOptionDialog, setShowTimeSelectOptionDialog] =\r\n React.useState(false)\r\n const [showConfirmPopup, setShowConfirmPopup] = React.useState(false)\r\n const [showNeedHelpPopup, setShowNeedHelpPopup] = React.useState(false)\r\n const [selectedTimeOption, setSelectedTimeOption] =\r\n React.useState(null)\r\n const { getPriceStatus } = useSelector(parkCar.promiseStatusSelectors)\r\n const { setPopup, showPopup } = usePopup()\r\n const { t } = useTranslation()\r\n const { isPayButtonDisabled } = usePayButton({\r\n days,\r\n hours,\r\n isAllDay,\r\n licencePlate,\r\n minutes,\r\n selectedTimeOption,\r\n spotNumber,\r\n hasSpot: lot?.spot?.isEnabled,\r\n pricePromiseFullfilled: getPriceStatus.fulfilled,\r\n })\r\n const { enqueueSnackbar } = useSnackbar()\r\n const [intervalOptions, setIntervalOptions] = React.useState(\r\n {\r\n showDaySelect: selectedTimeOption?.intervalOptions?.showDaySelect,\r\n showHourSelect: selectedTimeOption?.intervalOptions?.showHourSelect,\r\n showMinuteSelect: selectedTimeOption?.intervalOptions?.showMinuteSelect,\r\n dayInterval: selectedTimeOption?.intervalOptions?.dayInterval,\r\n maxDays: selectedTimeOption?.intervalOptions?.maxDays,\r\n hourInterval: selectedTimeOption?.intervalOptions?.hourInterval,\r\n maxHours: selectedTimeOption?.intervalOptions?.maxHours,\r\n minuteInterval: selectedTimeOption?.intervalOptions?.minuteInterval,\r\n maxMinutes: selectedTimeOption?.intervalOptions?.maxMinutes,\r\n maxTotalMinutes: selectedTimeOption?.intervalOptions?.maxTotalMinutes,\r\n }\r\n )\r\n const [recaptchaVerified, setRecaptchaVerified] = React.useState(false)\r\n const handleTokenReceived = (token: string) => {\r\n props.setRecaptchaToken(token)\r\n }\r\n\r\n const handleRecaptchaSuccess = () => {\r\n setRecaptchaVerified(true)\r\n }\r\n\r\n const handleRecaptchaFailure = () => {\r\n enqueueSnackbar(t(Translations.RECAPTCHA_VERIFICATION_FAILED), {\r\n variant: 'error',\r\n })\r\n setRecaptchaVerified(false)\r\n }\r\n\r\n const onSelectedTimeChange = (arg: TimeSelectOption) => {\r\n setDays(0)\r\n setHours(0)\r\n setMinutes(0)\r\n setIsAllDay(false)\r\n setSelectedTimeOption(arg)\r\n if (arg.intervalOptions) {\r\n setInitialTimeValue(arg.intervalOptions)\r\n }\r\n }\r\n\r\n const setInitialTimeValue = (options: IntervalOptions) => {\r\n if (options?.showMinuteSelect) {\r\n setMinutes(options?.minuteInterval)\r\n } else if (options?.showHourSelect) {\r\n setHours(options?.hourInterval)\r\n } else if (options?.showDaySelect) {\r\n setDays(options?.dayInterval)\r\n }\r\n }\r\n\r\n const setPreviouslyChosenTimeValues = (\r\n option: GetPricePayload & {\r\n time: number\r\n }\r\n ) => {\r\n if (option.parkingTimeMinutes) {\r\n setMinutes(state.preValidationSettings.parkingTimeMinutes)\r\n }\r\n if (option.parkingTimeHours) {\r\n setHours(state.preValidationSettings.parkingTimeHours)\r\n }\r\n if (option.parkingTimeDays) {\r\n setDays(state.preValidationSettings.parkingTimeDays)\r\n }\r\n }\r\n\r\n const onPayConfirm = () => {\r\n setShowConfirmPopup(false)\r\n props.onPayConfirm({\r\n plate: licencePlate,\r\n spot: spotNumber,\r\n parkTime: {\r\n optionId: selectedTimeOption.optionId,\r\n optionType: selectedTimeOption.optionType,\r\n parkingExpireDateTime:\r\n isAllDay ||\r\n selectedTimeOption.optionType == OptionType.MultiChoiceSubtype\r\n ? selectedTimeOption.endDateTime\r\n : null,\r\n parkingTimeDays: days,\r\n parkingTimeHours: hours,\r\n parkingTimeMinutes: minutes,\r\n },\r\n })\r\n }\r\n\r\n // auto select if only one option (mainly MIX type)\r\n // if doing validation, previous values will be set when validation is completed\r\n // if doing validation on multiprice location, previously choosen pricins will be selected\r\n React.useEffect(() => {\r\n if (lot.timeSelectOption?.length === 1) {\r\n setSelectedTimeOption(lot.timeSelectOption[0])\r\n setIntervalOptions(lot.timeSelectOption[0].intervalOptions)\r\n if (state?.preValidationSettings) {\r\n setPreviouslyChosenTimeValues(state.preValidationSettings)\r\n history.replaceState({}, '')\r\n } else setInitialTimeValue(lot.timeSelectOption[0].intervalOptions)\r\n } else if (state?.preValidationSettings?.optionId) {\r\n const preSelectedTimeOption = lot.timeSelectOption.find(\r\n e => e.optionId === state.preValidationSettings.optionId\r\n )\r\n if (preSelectedTimeOption) {\r\n setSelectedTimeOption(preSelectedTimeOption)\r\n if (preSelectedTimeOption.intervalOptions) {\r\n setPreviouslyChosenTimeValues(state.preValidationSettings)\r\n }\r\n }\r\n history.replaceState({}, '')\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n //Sets plate and spot number after validation, if user typed it\r\n React.useEffect(() => {\r\n if (state?.providedPlate) {\r\n setLicencePlate(state.providedPlate)\r\n }\r\n if (state?.providedSpotNumber) {\r\n setSpotNumber(state.providedSpotNumber)\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n // Fetch pricing for types with interval options\r\n React.useEffect(() => {\r\n if (!selectedTimeOption || !selectedTimeOption.intervalOptions) return\r\n if (!minutes && !hours && !days && !isAllDay) {\r\n dispatch(parkCar.actions.resetPricing())\r\n return\r\n }\r\n const pricingIntervalPayload = {\r\n parkingTimeMinutes: minutes,\r\n parkingTimeHours: hours,\r\n parkingTimeDays: days,\r\n parkingExpireDateTime:\r\n isAllDay ||\r\n selectedTimeOption.optionType == OptionType.MultiChoiceSubtype\r\n ? selectedTimeOption.endDateTime\r\n : null,\r\n lotId: lot.lotId,\r\n parkerId: lot.parkerId,\r\n optionId: selectedTimeOption.optionId,\r\n optionType: selectedTimeOption.optionType,\r\n }\r\n props.fetchPricing(pricingIntervalPayload)\r\n // eslint-disable-next-line\r\n }, [minutes, hours, days, isAllDay, selectedTimeOption])\r\n\r\n React.useEffect(() => {\r\n if (!selectedTimeOption || !selectedTimeOption.intervalOptions) return\r\n let i = {\r\n showDaySelect: selectedTimeOption.intervalOptions?.showDaySelect,\r\n showHourSelect: selectedTimeOption.intervalOptions?.showHourSelect,\r\n showMinuteSelect: selectedTimeOption.intervalOptions?.showMinuteSelect,\r\n dayInterval: selectedTimeOption.intervalOptions?.dayInterval,\r\n maxDays: selectedTimeOption.intervalOptions?.maxDays,\r\n hourInterval: selectedTimeOption.intervalOptions?.hourInterval,\r\n maxHours: selectedTimeOption.intervalOptions?.maxHours,\r\n minuteInterval: selectedTimeOption.intervalOptions?.minuteInterval,\r\n maxMinutes: selectedTimeOption.intervalOptions?.maxMinutes,\r\n maxTotalMinutes: selectedTimeOption?.intervalOptions?.maxTotalMinutes,\r\n }\r\n i = i\r\n\r\n const maxValueLastLimitationD = Math.floor(i.maxTotalMinutes / (24 * 60))\r\n const maxValueLastLimitationH =\r\n Math.floor((i.maxTotalMinutes % (24 * 60)) / 60) +\r\n (i.showDaySelect ? 0 : maxValueLastLimitationD * 24)\r\n const maxValueLastLimitationM = Math.floor(i.maxTotalMinutes % 60)\r\n\r\n if (i.showMinuteSelect) {\r\n if (!props.addTime) {\r\n if (\r\n hours == selectedTimeOption.intervalOptions.maxHours &&\r\n selectedTimeOption.intervalOptions.showHourSelect &&\r\n !selectedTimeOption.intervalOptions.showDaySelect\r\n ) {\r\n setMinutes(0)\r\n }\r\n if (minutes != 0) {\r\n if (\r\n selectedTimeOption.intervalOptions.maxHours != 0 &&\r\n !selectedTimeOption.intervalOptions.showDaySelect\r\n ) {\r\n if (i.maxHours == 0) {\r\n i.maxHours = 23\r\n i.hourInterval = 24\r\n }\r\n }\r\n }\r\n } else {\r\n if (i.maxHours >= maxValueLastLimitationH) {\r\n i.maxHours = maxValueLastLimitationH\r\n }\r\n\r\n if (hours == maxValueLastLimitationH) {\r\n if (\r\n i.maxHours == 0 &&\r\n selectedTimeOption.intervalOptions.showHourSelect\r\n ) {\r\n i.maxMinutes = Number(maxValueLastLimitationM)\r\n i.maxHours = 23\r\n i.hourInterval = 24\r\n }\r\n if (minutes > Number(maxValueLastLimitationM)) {\r\n setMinutes(\r\n Number(maxValueLastLimitationM) -\r\n (Number(maxValueLastLimitationM) % i.minuteInterval)\r\n )\r\n }\r\n }\r\n }\r\n }\r\n if (i.showDaySelect) {\r\n if (!props.addTime) {\r\n if (\r\n days == selectedTimeOption.intervalOptions.maxDays &&\r\n selectedTimeOption.intervalOptions.showHourSelect\r\n ) {\r\n setHours(0)\r\n }\r\n if (\r\n days == selectedTimeOption.intervalOptions.maxDays &&\r\n selectedTimeOption.intervalOptions.showMinuteSelect\r\n ) {\r\n i.minuteInterval = 24\r\n i.maxMinutes = 23\r\n setMinutes(0)\r\n }\r\n if (hours != 0 || minutes != 0) {\r\n if (selectedTimeOption.intervalOptions.maxDays != 0) {\r\n if (i.maxDays == 0) {\r\n i.maxDays = 23\r\n i.dayInterval = 24\r\n }\r\n }\r\n }\r\n } else {\r\n if (i.maxDays >= maxValueLastLimitationD) {\r\n i.maxDays = maxValueLastLimitationD\r\n }\r\n if (days == maxValueLastLimitationD) {\r\n if (i.maxDays == 0) {\r\n i.maxDays = 23\r\n i.dayInterval = 24\r\n i.maxHours = Number(maxValueLastLimitationH)\r\n }\r\n if (\r\n selectedTimeOption.intervalOptions.showHourSelect &&\r\n hours > Number(maxValueLastLimitationH)\r\n ) {\r\n setHours(\r\n Number(maxValueLastLimitationH) -\r\n (Number(maxValueLastLimitationH) % i.hourInterval)\r\n )\r\n if (\r\n selectedTimeOption.intervalOptions.showMinuteSelect &&\r\n minutes > Number(maxValueLastLimitationM)\r\n ) {\r\n setMinutes(\r\n Number(maxValueLastLimitationM) -\r\n (Number(maxValueLastLimitationM) % i.minuteInterval)\r\n )\r\n }\r\n }\r\n if (\r\n selectedTimeOption.intervalOptions.showMinuteSelect &&\r\n !selectedTimeOption.intervalOptions.showHourSelect &&\r\n minutes > Number(maxValueLastLimitationM)\r\n ) {\r\n setMinutes(\r\n Number(maxValueLastLimitationM) -\r\n (Number(maxValueLastLimitationM) % i.minuteInterval)\r\n )\r\n }\r\n if (selectedTimeOption.intervalOptions.showHourSelect) {\r\n if (i.maxHours == 0) {\r\n i.hourInterval = 24\r\n i.maxHours = 23\r\n }\r\n }\r\n\r\n if (\r\n selectedTimeOption.intervalOptions.showMinuteSelect &&\r\n (i.maxHours == hours ||\r\n selectedTimeOption.intervalOptions.showHourSelect == false)\r\n ) {\r\n if (i.maxMinutes == 0) {\r\n i.minuteInterval = 24\r\n i.maxMinutes = 23\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (i.showHourSelect && !i.showDaySelect && !i.showMinuteSelect) {\r\n i.maxHours = Number(maxValueLastLimitationH)\r\n }\r\n setIntervalOptions(i as IntervalOptions)\r\n // eslint-disable-next-line\r\n }, [minutes, hours, days, selectedTimeOption])\r\n\r\n // Fetch pricing for types without interval options\r\n React.useEffect(() => {\r\n if (!selectedTimeOption || selectedTimeOption.intervalOptions) return\r\n const pricingNonIntervalPayload = {\r\n lotId: lot.lotId,\r\n parkerId: lot.parkerId,\r\n optionId: selectedTimeOption.optionId,\r\n optionType: selectedTimeOption.optionType,\r\n parkingExpireDateTime:\r\n isAllDay ||\r\n selectedTimeOption.optionType == OptionType.MultiChoiceSubtype\r\n ? selectedTimeOption.endDateTime\r\n : null,\r\n }\r\n\r\n props.fetchPricing(pricingNonIntervalPayload)\r\n // eslint-disable-next-line\r\n }, [selectedTimeOption, isAllDay])\r\n\r\n React.useEffect(() => {\r\n dispatch(parkCar.actions.resetPricing())\r\n if (!lot?.timeSelectOption?.length && !lot?.isExternalPricingEnabled) {\r\n if (!props.addTime) {\r\n setPopup({\r\n title: t(Translations.PARKING_UNAVAILABLE),\r\n disableBackdropClick: true,\r\n description: t(\r\n Translations.WE_ARE_SORRY_BUT_THE_CURRENT_PARKING_IS_NOT_AVAILABLE\r\n ),\r\n variant: 'error',\r\n buttons: [\r\n {\r\n onClick: () => push(paths.home.map),\r\n },\r\n ],\r\n })\r\n } else {\r\n setPopup({\r\n title: t(Translations.PARKING_UNAVAILABLE),\r\n disableBackdropClick: true,\r\n description: t(\r\n Translations.BUY_MORE_TIME_OPTION_IS_UNVAILABLE_BECAUSE_MAXIMUM_PARKING_TIME_HAS_BEEN_REACHED\r\n ),\r\n variant: 'error',\r\n buttons: [\r\n {\r\n onClick: () => push(paths.home.map),\r\n },\r\n ],\r\n })\r\n }\r\n showPopup(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onPayClick = () => {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), {\r\n variant: 'warning',\r\n })\r\n return\r\n }\r\n if (props.addTime) {\r\n onPayConfirm()\r\n } else {\r\n if (lot.spot?.isEnabled) {\r\n setShowConfirmPopup(true)\r\n } else {\r\n onPayConfirm()\r\n }\r\n }\r\n }\r\n const onSelectPricingClick = () => setShowTimeSelectOptionDialog(true)\r\n\r\n React.useEffect(() => {\r\n if (props.initLicencePlate) {\r\n setLicencePlate(props.initLicencePlate)\r\n }\r\n }, [props.initLicencePlate])\r\n\r\n React.useEffect(() => {\r\n if (props.initSpotNumber) {\r\n setSpotNumber(props.initSpotNumber)\r\n }\r\n }, [props.initSpotNumber])\r\n\r\n const expirationTime = new Date()\r\n expirationTime.setSeconds(expirationTime.getSeconds() + 300)\r\n\r\n return (\r\n <>\r\n \r\n \r\n {({ errors, handleChange, validateForm, submitForm, setTouched }) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n setLicencePlate(e.target.value)}\r\n onChange={e => setLicencePlate(e.target.value)}\r\n disabled={props.addTime}\r\n value={licencePlate}\r\n onKeyDown={e => {\r\n !lot?.spot?.isEnabled && blurLastInput(e)\r\n }}\r\n />\r\n {lot?.spot?.isEnabled && (\r\n {\r\n handleChange(e)\r\n setSpotNumber(e.target.value)\r\n }}\r\n onChange={e => setSpotNumber(e.target.value)}\r\n disabled={props.addTime}\r\n value={spotNumber}\r\n maxSpotNumber={lot?.spot?.maxSpotNumber}\r\n error={!!errors.spotNumber}\r\n onKeyDown={e => {\r\n blurLastInput(e)\r\n }}\r\n />\r\n )}\r\n \r\n\r\n {(!selectedTimeOption || (selectedTimeOption && !pricing)) && (\r\n <>\r\n \r\n \r\n )}\r\n {selectedTimeOption?.intervalOptions && (\r\n \r\n )}\r\n {selectedTimeOption?.showAllDayUntil && (\r\n \r\n \r\n \r\n )}\r\n {selectedTimeOption && pricing && (\r\n 1}\r\n changePricingOnClick={() =>\r\n setShowTimeSelectOptionDialog(true)\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n {\r\n validateForm().then(errors => {\r\n setTouched({\r\n spotNumber: true,\r\n })\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n submitForm()\r\n } else {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }}\r\n onValidateClick={() => {\r\n dispatch(\r\n parkCar.actions.setProvidedPlate({\r\n providedPlate: licencePlate,\r\n })\r\n )\r\n dispatch(\r\n parkCar.actions.setProvidedSpotNumber({\r\n providedSpotNumber: spotNumber,\r\n })\r\n )\r\n push(`${paths.parking.upfrontValidate}/${lot.parkerId}`)\r\n }}\r\n isUpfrontCouponAvailable={\r\n lot.isUpfrontCouponAvailable && !props.addTime\r\n }\r\n >\r\n \r\n \r\n \r\n
\r\n )\r\n }}\r\n \r\n {lot.timeSelectOption && (\r\n setShowTimeSelectOptionDialog(false)}\r\n timeSelectOptions={lot.timeSelectOption}\r\n onClick={onSelectedTimeChange}\r\n currency={lot.currency}\r\n />\r\n )}\r\n setShowConfirmPopup(false)}\r\n onConfirmClick={onPayConfirm}\r\n showConfirmPopup={showConfirmPopup}\r\n spotNumber={spotNumber}\r\n />\r\n setShowNeedHelpPopup(false)}\r\n showNeedHelpPopup={showNeedHelpPopup}\r\n lotId={lot.lotId}\r\n />\r\n \r\n )\r\n}\r\n\r\nParkCarCard.defaultProps = {\r\n initSpotNumber: '',\r\n initLicencePlate: '',\r\n}\r\nexport default ParkCarCard\r\n","import { useGetTicket } from 'pages/park_car/ParkCarHooks'\r\nimport usePaymentCard from 'pages/park_car_credit_card/CreditCardComponents/creditCardHooks/usePaymentCard'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { customerSlice, parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { PayForCarPayload } from 'typedef'\r\nimport Translations from 'utils/translations'\r\nimport useFailedPay from './useFailedPay'\r\n\r\nexport const usePay = () => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const { ticketId, carId } = useParams<{ carId?: string; ticketId?: string; }>()\r\n const [loading, setLoading] = React.useState(false)\r\n const { customerSignedIn, customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const { paymentCard, hasCardBeenUsed, zipCode, recaptchaToken } = usePaymentCard()\r\n const { setPopup, showPopup } = usePopup()\r\n const { handleRejection: onFailedPay } = useFailedPay()\r\n const [, getTicket] = useGetTicket()\r\n\r\n const onSuccessPayment = async () => {\r\n setPopup({\r\n title: t(Translations.PAYMENT_SUCCESSFUL),\r\n variant: 'success',\r\n description: ' ',\r\n })\r\n showPopup(true)\r\n await getTicket()\r\n setLoading(false)\r\n\r\n dispatch(parkCarSlice.actions.resetParkingDetails())\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({\r\n ticketId: carId || ticketId,\r\n })\r\n )\r\n return push(paths.parking.tickets)\r\n }\r\n\r\n const pay = React.useCallback(async () => {\r\n let args: PayForCarPayload = {\r\n carId: ticketId,\r\n zipCode,\r\n recaptchaToken\r\n }\r\n\r\n if (customerSignedIn) {\r\n args = {\r\n ...args,\r\n creditCardId: paymentCard.creditCardId,\r\n }\r\n }\r\n\r\n if (customerSignedInAsGuest && !hasCardBeenUsed) {\r\n args = {\r\n ...args,\r\n creditCardInfo: {\r\n ccNumber: paymentCard?.ccNumber,\r\n expirationMonth: paymentCard?.expirationMonth,\r\n expirationYear: paymentCard?.expirationYear,\r\n },\r\n }\r\n }\r\n setLoading(true)\r\n const promise = await dispatch(ticketsSlice.payForCar(args))\r\n if (ticketsSlice.payForCar.rejected.match(promise)) {\r\n setLoading(false)\r\n onFailedPay(promise.payload)\r\n } else {\r\n onSuccessPayment()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n customerSignedIn,\r\n customerSignedInAsGuest,\r\n dispatch,\r\n hasCardBeenUsed,\r\n paymentCard,\r\n push,\r\n setPopup,\r\n showPopup,\r\n t,\r\n ticketId,\r\n zipCode,\r\n recaptchaToken\r\n ])\r\n\r\n return { pay, loading, onSuccessPayment }\r\n}\r\n\r\nexport default usePay\r\n","import { getErrorMessage } from 'api/utils'\r\nimport moment from 'moment'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { useCounterContext } from 'shared/CounterProvider/CounterProvider'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { mapSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { ErrorCode } from 'typedef'\r\n\r\nexport const useTimeoutCounter = () => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n const { showPopup, setPopup } = usePopup()\r\n const { clearCounter, setCounter } = useCounterContext()\r\n\r\n const runTimer = () => {\r\n setCounter({\r\n isRunning: true,\r\n endDate: moment().add(5, 'minutes').toISOString(),\r\n onEnd: () => {\r\n setPopup({\r\n ...getErrorMessage(ErrorCode.PaymentTimeExpired),\r\n buttons: [\r\n {\r\n onClick: () => {\r\n dispatch(\r\n mapSlice.actions.selectLot({ lotId: ticket?.lot.lotId })\r\n )\r\n push(paths.root.root)\r\n clearCounter()\r\n },\r\n },\r\n ],\r\n disableBackdropClick: true,\r\n })\r\n showPopup(true)\r\n },\r\n })\r\n }\r\n\r\n return { runTimer, clearCounter }\r\n}\r\n\r\nexport default useTimeoutCounter\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport usePaymentCard from 'pages/park_car_credit_card/CreditCardComponents/creditCardHooks/usePaymentCard'\r\nimport useFailedPay from 'pages/park_car_summary/ParkCarSummaryHooks/useFailedPay'\r\nimport usePay from 'pages/park_car_summary/ParkCarSummaryHooks/usePay'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport useGetTicket from './useGetTicket'\r\nimport useParkCarRedirect from './useParkCarRedirect'\r\nimport useParkDetails from './useParkDetails'\r\nimport useTimeoutCounter from './useTimoutCounter'\r\n\r\nexport interface useBuyMoreTimeProps {}\r\n\r\nexport const useBuyMoreTime = () => {\r\n const { carId, ticketId } = useParams<{ carId?: string; ticketId?: string }>()\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const [redirectIsLoading, parkCarRedirect] = useParkCarRedirect()\r\n const { buyMoreTimeStatus } = useSelector(parkCarSlice.promiseStatusSelectors)\r\n const [getTicketIsLoading] = useGetTicket()\r\n const { externalPricingId, setIsPaymentRequired, isPaymentRequired } =\r\n useParkDetails()\r\n const { totalAmount, pricingPayload } = useParkDetails()\r\n const { paymentCard } = usePaymentCard()\r\n const { pay, loading: payIsLoading, onSuccessPayment } = usePay()\r\n const { handleRejection } = useFailedPay()\r\n const { runTimer, clearCounter: stopTimer } = useTimeoutCounter()\r\n const buyMoreTime = async (recaptchaToken?: string) => {\r\n const promise = await dispatch(\r\n parkCarSlice.buyMoreTime({\r\n carId: carId || ticketId,\r\n parkTime: !externalPricingId ? pricingPayload : null,\r\n externalPricingId,\r\n })\r\n )\r\n if (parkCarSlice.buyMoreTime.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise)\r\n setIsPaymentRequired(res.requiresPayment)\r\n if (res.requiresPayment && res.paymentRedirectionAvailable) {\r\n return parkCarRedirect(carId || ticketId, recaptchaToken)\r\n }\r\n if (res.requiresPayment && !paymentCard) {\r\n return push(`${paths.parking.addTimeSelectCard}/${carId || ticketId}`)\r\n }\r\n onSuccessPayment()\r\n } else {\r\n handleRejection(promise.payload)\r\n }\r\n }\r\n\r\n const submitBMT = async (recaptchaToken?: string) => {\r\n if (isPaymentRequired) {\r\n await pay()\r\n stopTimer()\r\n return setIsPaymentRequired(false)\r\n }\r\n if (!isPaymentRequired) {\r\n await buyMoreTime(recaptchaToken)\r\n stopTimer()\r\n return stopTimer()\r\n }\r\n }\r\n\r\n const redirectBMT = async (recaptchaToken?: string) => {\r\n runTimer()\r\n if (!totalAmount) {\r\n return buyMoreTime(recaptchaToken)\r\n }\r\n if (!paymentCard) {\r\n return buyMoreTime(recaptchaToken)\r\n }\r\n if (paymentCard) {\r\n push(`${paths.parking.addTimePay}/${carId || ticketId}`)\r\n }\r\n }\r\n\r\n const isLoading = () =>\r\n redirectIsLoading ||\r\n buyMoreTimeStatus.pending ||\r\n getTicketIsLoading ||\r\n payIsLoading\r\n\r\n return [isLoading(), redirectBMT, submitBMT] as const\r\n}\r\n\r\nexport default useBuyMoreTime\r\n","import React, { useEffect } from 'react'\r\nimport paths from 'routing/paths'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { AppSpinner, WhiteBoxContainer } from 'shared'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { mapSlice, parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { ParkCarPayload } from 'typedef'\r\nimport ParkCarCard from './ParkCarComponents/ParkCarCard'\r\nimport {\r\n useGetCars,\r\n useGetPrice,\r\n useParkCar,\r\n useParkMode,\r\n} from './ParkCarHooks'\r\nimport useBuyMoreTime from './ParkCarHooks/useBuyMoreTime'\r\nimport { useTranslation } from 'react-i18next'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface ParkCarWrapperProps {}\r\n\r\nexport const ParkCarDefault: React.FC = props => {\r\n const { carId } = useParams<{ carId?: string }>()\r\n const ticket = useSelector((state: AppState) =>\r\n ticketsSlice.selectById(state, carId)\r\n )\r\n const { lot } = useSelector(parkCarSlice.stateSelectors)\r\n useGetCars()\r\n const [parkCarLoading, parkCar] = useParkCar()\r\n const [getPriceLoading, getPrice] = useGetPrice()\r\n const [isLoadingBMT, buyMoreTime] = useBuyMoreTime()\r\n const parkMode = useParkMode()\r\n const { push } = useHistory()\r\n const dispatch = useAppDispatch()\r\n const { setPopup, showPopup } = usePopup()\r\n const { t } = useTranslation()\r\n const [recaptchaToken, setRecaptchaToken] = React.useState(null);\r\n const isLoading = React.useCallback(\r\n () => parkCarLoading || getPriceLoading || isLoadingBMT,\r\n\r\n [parkCarLoading, getPriceLoading, isLoadingBMT]\r\n )\r\n\r\n const showStoppedLocationOnMap = async () => {\r\n await dispatch(mapSlice.getLotDetailsMap({ lotId: lot.lotId }))\r\n dispatch(mapSlice.actions.selectLot({ lotId: lot.lotId, position: true }))\r\n dispatch(mapSlice.actions.setZoom(17))\r\n push(paths.home.map)\r\n }\r\n\r\n useEffect(() => {\r\n if (lot.isLocationStopped) {\r\n setPopup({\r\n title: t(Translations.TEXT2PARK_NOT_AVAILABLE),\r\n variant: 'error',\r\n description:\r\n lot.locationStoppedMessage ??\r\n t(Translations.TEXT2PARK_IS_CURRENTLY_NOT_AVAILABLE),\r\n disableBackdropClick: true,\r\n buttons: [\r\n {\r\n onClick: () => {\r\n showStoppedLocationOnMap()\r\n },\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n } else if (lot.lotCapacity?.lotIsFull && parkMode !== 'addMoreTime') {\r\n setPopup({\r\n title: t(Translations.NO_SPACES_AVAILABLE),\r\n variant: 'error',\r\n description:\r\n lot.lotCapacity?.capacityFullWEBMessage ??\r\n t(Translations.TEXT2PARK_IS_CURRENTLY_NOT_AVAILABLE),\r\n disableBackdropClick: true,\r\n buttons: [\r\n {\r\n onClick: () => {\r\n showStoppedLocationOnMap()\r\n },\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onClick = (\r\n args: Omit\r\n ) => {\r\n if (parkMode === 'parkCar') {\r\n parkCar(args, recaptchaToken)\r\n }\r\n if (parkMode === 'addMoreTime') {\r\n buyMoreTime(recaptchaToken)\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\nexport default ParkCarDefault\r\n","import { MobileDatePicker, MobileTimePicker } from '@mui/lab'\r\nimport { useFormikContext } from 'formik'\r\nimport moment, { Moment } from 'moment'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppTextField, FlexBox } from 'shared'\r\nimport { Translations } from 'utils'\r\nimport { useMinDate } from '../T2Hooks'\r\n\r\nexport interface ParkUntilSelectProps {}\r\n\r\nexport const SelectParkUntil: React.FC = props => {\r\n const { t } = useTranslation()\r\n const { values, setFieldValue } = useFormikContext()\r\n const { parkUntilDate, currentTime } = values\r\n const minDate = useMinDate()\r\n const onChange = (date: Moment | null | string) => {\r\n let convertedDate = date\r\n if (date instanceof moment) {\r\n convertedDate = moment(date).startOf('minute').toString()\r\n }\r\n setFieldValue('parkUntilDate', convertedDate)\r\n }\r\n\r\n React.useEffect(() => {\r\n if (!parkUntilDate && minDate) {\r\n setFieldValue('parkUntilDate', minDate)\r\n }\r\n }, [setFieldValue, currentTime, parkUntilDate, minDate])\r\n\r\n React.useEffect(() => {\r\n return () => setFieldValue('parkUntilDate', null) as any\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n return (\r\n \r\n undefined}\r\n onAccept={onChange}\r\n value={parkUntilDate}\r\n minDate={moment(minDate)}\r\n disablePast\r\n renderInput={props => }\r\n okText={t(Translations.OK)}\r\n cancelText={t(Translations.CANCEL)}\r\n />\r\n undefined}\r\n onAccept={onChange}\r\n value={parkUntilDate}\r\n renderInput={props => }\r\n okText={t(Translations.OK)}\r\n cancelText={t(Translations.CANCEL)}\r\n toolbarTitle={t(Translations.SELECT_TIME)}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default SelectParkUntil\r\n","import { useFormikContext } from 'formik'\r\nimport { PeriodMode, T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport React from 'react'\r\nimport { AppTabButtons } from 'shared'\r\nimport { AppButtonProps } from 'shared/AppButton'\r\nexport interface PeriodSwitchProps {}\r\n\r\nexport const PeriodSwitch: React.FC = props => {\r\n const { setFieldValue, values } = useFormikContext()\r\n\r\n const periodButtonsOptions: {\r\n name: PeriodMode\r\n translation: AppButtonProps['translation']\r\n }[] = [\r\n { name: 'parkFor', translation: 'PARK_FOR' },\r\n {\r\n name: 'parkUntil',\r\n translation: 'PARK_UNTIL',\r\n },\r\n ]\r\n\r\n return (\r\n setFieldValue('periodMode', v)}\r\n options={periodButtonsOptions}\r\n />\r\n )\r\n}\r\n\r\nexport default PeriodSwitch\r\n","import { useFormikContext } from 'formik'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport { SpotField } from 'pages/park_car/ParkCarComponents'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { parkCarSlice } from 'store/slices'\r\n\r\nexport interface LicenseSpotProps {\r\n disabled?: boolean\r\n defaultValue?: string\r\n}\r\n\r\nexport const Spot: React.FC = props => {\r\n const { lot } = useSelector(parkCarSlice.stateSelectors)\r\n const {\r\n handleChange,\r\n handleBlur,\r\n errors,\r\n values,\r\n } = useFormikContext()\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default Spot\r\n","import { useFormikContext } from 'formik'\r\nimport moment from 'moment'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport React from 'react'\r\nimport { AppSelectListField, FlexBox } from 'shared'\r\nexport interface SelectCustomTimeProps {\r\n disabled?: boolean\r\n}\r\n\r\nexport const SelectCustomTime: React.FC = props => {\r\n const { values, handleChange, setFieldValue } = useFormikContext()\r\n const { day, hour, minute, startDate } = values\r\n\r\n React.useEffect(() => {\r\n let val: string\r\n if (day || hour || minute) {\r\n val = moment(startDate)\r\n .add(day, 'days')\r\n .add(hour, 'hours')\r\n .add(minute, 'minute')\r\n .toString()\r\n } else {\r\n val = null\r\n }\r\n setFieldValue('parkForCustomTimeDate', val)\r\n }, [day, hour, minute, setFieldValue, startDate])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SelectCustomTime\r\n","import { SvgIcon } from '@mui/material'\r\nimport { useFormikContext } from 'formik'\r\nimport moment from 'moment'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, FlexBox } from 'shared'\r\nimport styled, { css } from 'styled-components'\r\nimport Translations from 'utils/translations'\r\nexport interface SelectDefaultTimeProps {}\r\n\r\nconst SelectedTick: React.FC<{ color?: boolean }> = ({ color }) => (\r\n \r\n \r\n \r\n \r\n \r\n)\r\nconst StyledButton = styled(AppButton)<{ $noColor?: boolean }>`\r\n font-size: 16px;\r\n padding-left: 2px;\r\n padding-right: 2px;\r\n ${_ =>\r\n _.$noColor &&\r\n css`\r\n color: black;\r\n filter: grayscale(1);\r\n `}\r\n\r\n .MuiButton-startIcon {\r\n transform: scale(0.75);\r\n }\r\n`\r\nexport const SelectDefaultTime: React.FC = props => {\r\n const { t } = useTranslation()\r\n const { values, setFieldValue } = useFormikContext()\r\n const { defaultMinutes, startDate } = values\r\n const buttonValues = [\r\n {\r\n value: 30,\r\n text: '30 M',\r\n },\r\n {\r\n value: 60,\r\n text: '1 H',\r\n },\r\n {\r\n value: 120,\r\n text: '2 H',\r\n },\r\n {\r\n value: 0,\r\n text: t(Translations.ALL_DAY),\r\n },\r\n ]\r\n\r\n const onChange = (val: number) => {\r\n if (defaultMinutes === val) {\r\n setFieldValue('defaultMinutes', null)\r\n } else {\r\n setFieldValue('defaultMinutes', val)\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n let val: string\r\n if (defaultMinutes !== null) {\r\n val = defaultMinutes\r\n ? (val = moment(startDate).add(defaultMinutes, 'minute').toString())\r\n : moment(startDate).endOf('day').toString()\r\n } else {\r\n val = null\r\n }\r\n setFieldValue('parkForDefaultTimeDate', val)\r\n }, [defaultMinutes, setFieldValue, startDate])\r\n\r\n return (\r\n \r\n {buttonValues.map(({ text, value }) => {\r\n const selected = defaultMinutes === value\r\n return (\r\n }\r\n onClick={e => onChange(value)}\r\n >\r\n {text}\r\n \r\n )\r\n })}\r\n \r\n )\r\n}\r\n\r\nexport default SelectDefaultTime\r\n","import React from 'react'\r\nimport { AppButton } from 'shared'\r\nimport { AppButtonProps } from 'shared/AppButton'\r\nimport Translations from 'utils/translations'\r\n\r\nexport const SubmitButton: React.FC = props => {\r\n return \r\n}\r\nSubmitButton.defaultProps = {\r\n translation: Translations.PAY,\r\n}\r\nexport default SubmitButton\r\n","import { useFormikContext } from 'formik'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport { LicenseField } from 'pages/park_car/ParkCarComponents'\r\nimport React from 'react'\r\n\r\nexport interface LicenseProps {\r\n disabled?: boolean\r\n}\r\n\r\nexport const License: React.FC = props => {\r\n const {\r\n handleBlur,\r\n errors,\r\n values,\r\n handleChange,\r\n } = useFormikContext()\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default License\r\n","import { Divider, List } from '@mui/material'\r\nimport { useFormikContext } from 'formik'\r\nimport moment from 'moment'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport SelectPriceItem from 'pages/park_car/ParkCarComponents/SelectPriceItem'\r\nimport React from 'react'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { ParkCarState } from 'store/slices/parkCarSlice types'\r\n\r\nexport interface PricingListProps {\r\n onSelect?: () => void\r\n limit?: number\r\n}\r\n\r\nexport const PricingList: React.FC = props => {\r\n const { values, setFieldValue } = useFormikContext()\r\n const { selectedPricing, pricings } = values\r\n const dispatch = useAppDispatch()\r\n\r\n const onClick = (id: string) => {\r\n let arg = id\r\n if (id === selectedPricing) {\r\n arg = ''\r\n }\r\n setFieldValue('selectedPricing', arg)\r\n dispatch(\r\n parkCarSlice.actions.updateParkingDetails<\r\n Partial\r\n >({\r\n externalPricingId: arg,\r\n })\r\n )\r\n\r\n arg && props.onSelect()\r\n }\r\n\r\n React.useEffect(() => {\r\n if (selectedPricing) {\r\n const obj = pricings\r\n .slice(0, props.limit)\r\n .find(el => el.externalPricingId === selectedPricing)\r\n\r\n if (!obj) {\r\n setFieldValue('selectedPricing', '')\r\n dispatch(\r\n parkCarSlice.actions.updateParkingDetails<\r\n Partial\r\n >({\r\n fees: [],\r\n parkingExpireDateTime: '',\r\n totalAmount: 0,\r\n externalPricingId: '',\r\n })\r\n )\r\n } else {\r\n dispatch(\r\n parkCarSlice.actions.updateParkingDetails<\r\n Partial\r\n >({\r\n fees: obj.fees,\r\n parkingExpireDateTime: obj.parkingExpireDateTime,\r\n totalAmount: obj.amount,\r\n externalPricingId: obj.externalPricingId,\r\n })\r\n )\r\n }\r\n }\r\n }, [dispatch, pricings, props.limit, selectedPricing, setFieldValue])\r\n\r\n return (\r\n <>\r\n \r\n \r\n {pricings.slice(0, props.limit).map(el => (\r\n onClick(el.externalPricingId)}\r\n key={el.externalPricingId}\r\n selected={el.externalPricingId === selectedPricing}\r\n divider\r\n />\r\n ))}\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\nPricingList.defaultProps = {\r\n onSelect: () => undefined,\r\n}\r\nexport default PricingList\r\n","import { useFormikContext } from 'formik'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport { TotalText } from 'pages/park_car/ParkCarComponents'\r\nimport React from 'react'\r\nimport { ExternalPricingOption } from 'typedef'\r\n\r\nexport interface TotalAmountProps {}\r\n\r\nexport const TotalAmount: React.FC = props => {\r\n const [selected, setSelected] = React.useState(\r\n null\r\n )\r\n const { values } = useFormikContext()\r\n const { selectedPricing, pricings } = values\r\n React.useEffect(() => {\r\n if (selectedPricing) {\r\n const pricing = pricings.find(\r\n el => el.externalPricingId === selectedPricing\r\n )\r\n setSelected(pricing)\r\n } else {\r\n setSelected(null)\r\n }\r\n }, [pricings, selectedPricing])\r\n\r\n return \r\n}\r\n\r\nexport default TotalAmount\r\n","import { useFormikContext } from 'formik'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport { useParkCarPath } from 'pages/park_car/ParkCarHooks'\r\nimport React from 'react'\r\nimport { AppButton, DetailsBox } from 'shared'\r\n\r\nexport interface SummaryBoxProps {}\r\n\r\nexport const SummaryBox: React.FC = props => {\r\n const [_, goTo] = useParkCarPath()\r\n const { values } = useFormikContext()\r\n const { selectedPricing, pricings, licencePlate, spotNumber } = values\r\n const pricing = pricings.find(el => el.externalPricingId === selectedPricing)\r\n\r\n const hasChargeFees = () => {\r\n if (!pricing?.fees?.length) return false\r\n const totalAmount = pricing.fees\r\n .map(el => el.amount)\r\n .reduce((prev, curr) => prev + curr)\r\n if (!totalAmount) return false\r\n return true\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {hasChargeFees() && (\r\n <>\r\n \r\n \r\n {pricing.fees.map((el, i) => (\r\n \r\n ))}\r\n \r\n \r\n )}\r\n {Boolean(pricings.length > 1) && (\r\n <>\r\n \r\n \r\n goTo('select')}\r\n />\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default SummaryBox\r\n","import { useFormikContext } from 'formik'\r\nimport React from 'react'\r\nimport { Counter } from 'shared'\r\nimport { T2Fields } from '../fields'\r\nimport { useExpiredPricingPopup } from '../T2Hooks'\r\n\r\nexport interface RemaingTimeProps {}\r\n\r\nexport const RemaingTime: React.FC = props => {\r\n const { values } = useFormikContext()\r\n const showPopup = useExpiredPricingPopup()\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default RemaingTime\r\n","import { useFormikContext } from 'formik'\r\nimport { SelectedLotTitle, TermsButton } from 'pages/park_car/ParkCarComponents'\r\nimport React from 'react'\r\nimport { AppButton, FlexBox, GridWrapper, WhiteBoxContainer } from 'shared'\r\nimport { PricingList, RemaingTime, SubmitButton, TotalAmount } from '.'\r\nimport { T2Fields } from '../fields'\r\n\r\nexport interface ExcerptListProps {\r\n onClickMore: () => void\r\n onClickSubmit: () => void\r\n}\r\n\r\nexport const ExcerptList: React.FC = ({\r\n onClickMore,\r\n onClickSubmit,\r\n}) => {\r\n const { values } = useFormikContext()\r\n const { selectedPricing, pricings } = values\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {pricings.length > 4 && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ExcerptList\r\n","import React from 'react'\r\nimport { WhiteBoxContainer } from 'shared'\r\nimport { PricingList } from '.'\r\nimport { useT2Counter } from '../T2Hooks'\r\n\r\nexport interface FullListProps {\r\n onClick: () => void\r\n}\r\n\r\nexport const FullList: React.FC = ({ onClick }) => {\r\n useT2Counter()\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default FullList\r\n","import { useFormikContext } from 'formik'\r\nimport { useUpdateLayout } from 'hooks'\r\nimport { useParkCarPath } from 'pages/park_car/ParkCarHooks'\r\nimport { T2Fields } from 'pages/park_car/ParkCarT2'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next/'\r\nimport { Translations } from 'utils'\r\nimport { ExcerptList, FullList } from '../T2Components'\r\nexport interface ParkCarT2SelectPricingProps {}\r\n\r\nexport const ParkCarT2SelectPricing: React.FC = props => {\r\n const { values, setFieldValue } = useFormikContext()\r\n const { pricings, lastListView } = values\r\n const { t } = useTranslation()\r\n const updateLayout = useUpdateLayout(\r\n {\r\n topbar: {\r\n title: t(Translations.PRICING_LIST),\r\n onClickBack: () =>\r\n lastListView === 'full'\r\n ? setFieldValue('lastListView', 'excerpt')\r\n : goTo('set'),\r\n },\r\n },\r\n [lastListView]\r\n )\r\n const [, goTo] = useParkCarPath()\r\n const setFullList = () => setFieldValue('lastListView', 'full')\r\n\r\n const onSubmit = () => {\r\n updateLayout({\r\n topbar: {\r\n onClickBack: () => goTo('select'),\r\n },\r\n })\r\n goTo('summary')\r\n }\r\n\r\n React.useEffect(() => {\r\n if (pricings.length === 1) {\r\n setFieldValue('selectedPricing', pricings[0].externalPricingId)\r\n }\r\n }, [pricings, setFieldValue])\r\n\r\n if (!pricings.length) {\r\n goTo('set')\r\n return null\r\n }\r\n\r\n return lastListView === 'full' ? (\r\n \r\n ) : (\r\n \r\n )\r\n}\r\n\r\nexport default ParkCarT2SelectPricing\r\n","import { useFormikContext } from 'formik'\r\nimport { useUpdateLayout } from 'hooks'\r\nimport { SelectedLotTitle, TermsButton } from 'pages/park_car/ParkCarComponents'\r\nimport { useParkMode } from 'pages/park_car/ParkCarHooks'\r\nimport {\r\n License,\r\n PeriodSwitch,\r\n SelectCustomTime,\r\n SelectDefaultTime,\r\n SelectParkUntil,\r\n Spot,\r\n SubmitButton,\r\n} from 'pages/park_car/ParkCarT2/T2Components'\r\nimport { useEndDate, useResetForm } from 'pages/park_car/ParkCarT2/T2Hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next/'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppSpinner,\r\n DetailsBox,\r\n FlexBox,\r\n GridWrapper,\r\n TextDivider,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { Translations } from 'utils'\r\nimport { T2Fields } from '../fields'\r\n\r\nexport interface ParkCarT2SetTimeProps {\r\n onSubmit: () => void\r\n loading: boolean\r\n}\r\n\r\nexport const ParkCarT2SetTime: React.FC = props => {\r\n const [endDate, periodMode] = useEndDate()\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const parkMode = useParkMode()\r\n const resetForm = useResetForm()\r\n const { values } = useFormikContext()\r\n const { spotNumber, parkForDefaultTimeDate, isSpotEnabled } = values\r\n const { t } = useTranslation()\r\n useUpdateLayout({\r\n topbar: {\r\n title: t(Translations.PARK_CAR),\r\n onClickBack: () => {\r\n dispatch(parkCarSlice.actions.resetParkingDetails())\r\n push(parkMode === 'parkCar' ? paths.home.map : paths.parking.tickets)\r\n },\r\n },\r\n })\r\n\r\n React.useEffect(() => {\r\n resetForm()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {isSpotEnabled && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {periodMode === 'parkUntil' && }\r\n {periodMode === 'parkFor' && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ParkCarT2SetTime\r\n","import { useFormikContext } from 'formik'\r\nimport React from 'react'\r\nimport { AppSpinner, FlexBox, GridWrapper, WhiteBoxContainer } from 'shared'\r\nimport { T2Fields } from '../fields'\r\nimport { SelectedLotTitle, TermsButton } from 'pages/park_car/ParkCarComponents'\r\nimport {\r\n useParkCarPath,\r\n useParkCar,\r\n useParkMode,\r\n} from 'pages/park_car/ParkCarHooks'\r\nimport {\r\n RemaingTime,\r\n SubmitButton,\r\n SummaryBox,\r\n TotalAmount,\r\n} from 'pages/park_car/ParkCarT2/T2Components'\r\nimport useBuyMoreTime from 'pages/park_car/ParkCarHooks/useBuyMoreTime'\r\nimport { useUpdateLayout } from 'hooks'\r\nimport { Translations } from 'utils'\r\nimport { useTranslation } from 'react-i18next/'\r\n\r\nexport interface ParkCarT2SummaryProps {}\r\n\r\nexport const ParkCarT2Summary: React.FC = props => {\r\n const [isLoadingParkCar, parkCar] = useParkCar()\r\n const [isLoadingBMT, buyMoreTime] = useBuyMoreTime()\r\n const parkMode = useParkMode()\r\n const { values } = useFormikContext()\r\n const [, goTo] = useParkCarPath()\r\n const { spotNumber, licencePlate, selectedPricing } = values\r\n const { t } = useTranslation()\r\n useUpdateLayout({\r\n topbar: {\r\n title: t(Translations.PARK_CAR),\r\n },\r\n })\r\n\r\n const onClick = () => {\r\n if (parkMode === 'parkCar') {\r\n parkCar({\r\n plate: licencePlate,\r\n spot: spotNumber,\r\n })\r\n }\r\n if (parkMode === 'addMoreTime') {\r\n buyMoreTime()\r\n }\r\n }\r\n\r\n if (!selectedPricing) {\r\n goTo('select')\r\n return null\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ParkCarT2Summary\r\n","import { useFormikContext } from 'formik'\r\nimport React from 'react'\r\nimport { Route, Switch, useLocation } from 'react-router-dom'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { ParkCarState } from 'store/slices/parkCarSlice types'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { useParkCarPath } from '../ParkCarHooks'\r\nimport { T2Fields } from './fields'\r\nimport { useExternalPricing, useCurrentTime } from './T2Hooks'\r\nimport {\r\n ParkCarT2SelectPricing,\r\n ParkCarT2SetTime,\r\n ParkCarT2Summary,\r\n} from './T2Views'\r\n\r\nexport interface ParkCarT2SwitchProps {\r\n initFetch: () => void\r\n}\r\n\r\nexport const ParkCarT2Switch: React.FC = props => {\r\n useCurrentTime()\r\n const location = useLocation()\r\n const [parkCarPath, goTo] = useParkCarPath()\r\n const [loading, getExternalPricing] = useExternalPricing()\r\n const { state } = useLocation<{ fullRefresh: boolean }>()\r\n const { values } = useFormikContext()\r\n const dispatch = useAppDispatch()\r\n const { licencePlate, spotNumber } = values\r\n\r\n React.useEffect(() => {\r\n if (state.fullRefresh) {\r\n props.initFetch()\r\n dispatch(\r\n parkCarSlice.actions.updateParkingDetails<\r\n Partial\r\n >({\r\n spot: spotNumber,\r\n plate: licencePlate,\r\n })\r\n )\r\n goTo()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state.fullRefresh])\r\n\r\n return (\r\n \r\n }\r\n />\r\n }\r\n />\r\n (\r\n \r\n )}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default ParkCarT2Switch\r\n","import React from 'react'\r\nimport ParkCarT2Form from './ParkCarT2Form'\r\nimport ParkCarT2Switch from './ParkCarT2Switch'\r\n\r\nexport interface ParkCarT2Props {\r\n initFetch: () => void\r\n}\r\n\r\nexport const ParkCarT2: React.FC = props => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ParkCarT2\r\n","import { useChangeLayout } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSpinner, ErrorPlaceholder, WhiteBoxContainer } from 'shared'\r\nimport { useCounterContext } from 'shared/CounterProvider/CounterProvider'\r\nimport { customerSlice, parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { ExternalPricingType } from 'typedef'\r\nimport { Translations } from 'utils'\r\nimport { SelectedLotTitle } from './ParkCarComponents'\r\nimport MonthlyParkCarCard from './ParkCarComponents/MonthlyParkCarCard'\r\nimport ParkCarDefault from './ParkCarDefault'\r\nimport { useInitParkCar, useParkMode } from './ParkCarHooks'\r\nimport { ParkCarT2 } from './ParkCarT2'\r\n\r\nexport const ParkCar: React.FC = props => {\r\n const notExpiredTickets = useSelector(ticketsSlice.selectSortedParkedTickets)\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { customerSignedInAsGuest, customerSignedOut } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const { token } = useParams<{ token?: string }>()\r\n const { clearCounter } = useCounterContext()\r\n const title = t(Translations.PARK_CAR)\r\n const { push } = useHistory()\r\n const { lot } = useSelector(parkCarSlice.stateSelectors)\r\n const parkMode = useParkMode()\r\n\r\n useChangeLayout(\r\n {\r\n layout: {\r\n hasBottomBar: false,\r\n },\r\n bottomMenu: null,\r\n topbar: {\r\n title,\r\n onClickBack: () => push(paths.home.map),\r\n },\r\n },\r\n 'app'\r\n )\r\n const { isError, isLoading, fetchData } = useInitParkCar()\r\n\r\n React.useEffect(() => {\r\n clearCounter()\r\n return () => {\r\n dispatch(parkCarSlice.actions.setTicket({ carId: null }))\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n window.onpageshow = function (event) {\r\n if (event.persisted) {\r\n window.location.reload()\r\n }\r\n }\r\n\r\n // no more than 1 active ticket for guest\r\n if (\r\n customerSignedInAsGuest &&\r\n notExpiredTickets.length &&\r\n parkMode === 'parkCar'\r\n )\r\n return \r\n\r\n if (customerSignedOut && !token) return \r\n\r\n if (isLoading || isError)\r\n return (\r\n \r\n \r\n \r\n {isError && }\r\n \r\n )\r\n\r\n if (lot?.monthlyParkerInfo) return \r\n return !lot?.isExternalPricingEnabled ? (\r\n \r\n ) : (\r\n <>\r\n {lot?.externalPricingType === ExternalPricingType.T2 && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default ParkCar\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { useChangeLayout } from 'hooks'\r\nimport React, { useEffect } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSpinner, WhiteBoxContainer } from 'shared'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { CarStatus, TransactionStatus } from 'typedef/ticket'\r\nimport { Translations } from 'utils'\r\n\r\nexport interface AwaitTransactionPageProps {}\r\n\r\nconst AwaitTransactionPage: React.FC = () => {\r\n const dispatch = useAppDispatch()\r\n const { carId, transactionId } = useParams<{ carId: string, transactionId: string }>()\r\n const [loading, setLoading] = React.useState(false)\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const { setPopup, showPopup } = usePopup()\r\n\r\n const unpaidRedirection = (carStatus: CarStatus, lotId: string) => {\r\n dispatch(parkCarSlice.actions.setTicket({ carId }))\r\n if (carStatus === CarStatus.Parked) {\r\n push(`${paths.parking.addTime}/${carId}`)\r\n } else if (carStatus === CarStatus.RequiresPayment) {\r\n push(`${paths.parking.parkCar}/${lotId}`)\r\n } else {\r\n push(paths.parking.tickets)\r\n }\r\n }\r\n\r\n const paidRedirection = () => {\r\n setPopup({\r\n title: t(Translations.PAYMENT_SUCCESSFUL),\r\n variant: 'success',\r\n description: ' ',\r\n })\r\n showPopup(true)\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({\r\n ticketId: carId,\r\n })\r\n )\r\n return push(paths.parking.tickets)\r\n }\r\n\r\n const fetchTicket = async (paid: boolean) => {\r\n setLoading(true)\r\n const promise = await dispatch(ticketsSlice.getTicket({ carId }))\r\n if (ticketsSlice.getTicket.fulfilled.match(promise)) {\r\n const { carStatus, lot } = unwrapResult(promise)\r\n if (paid) {\r\n paidRedirection()\r\n } else {\r\n unpaidRedirection(carStatus, lot.lotId)\r\n }\r\n } else {\r\n // transaction status failed\r\n setPopup({\r\n ...promise.payload,\r\n disableBackdropClick: true,\r\n buttons: [\r\n { onClick: () => fetchTicket(paid) },\r\n {\r\n text: t(Translations.BACK_TO_TICKETS),\r\n onClick: () => push(paths.parking.tickets),\r\n },\r\n ],\r\n })\r\n setLoading(false)\r\n showPopup(true)\r\n }\r\n }\r\n\r\n const fetchTransactionStatus = async () => {\r\n setLoading(true)\r\n const promise = await dispatch(\r\n parkCarSlice.parkCarTransactionStatus({ carId, transactionId })\r\n )\r\n\r\n if (parkCarSlice.parkCarTransactionStatus.fulfilled.match(promise)) {\r\n const result = unwrapResult(promise)\r\n if (\r\n [\r\n TransactionStatus.SuccessfulCommit,\r\n TransactionStatus.SuccessfulPreAuth,\r\n ].includes(result.transactionStatus)\r\n ) {\r\n // paid ticket\r\n fetchTicket(true)\r\n } else {\r\n // unpaid ticket\r\n fetchTicket(false)\r\n }\r\n } else {\r\n // get transaction status failed\r\n setPopup({\r\n ...promise.payload,\r\n disableBackdropClick: true,\r\n buttons: [\r\n { onClick: () => fetchTransactionStatus() },\r\n {\r\n text: t(Translations.BACK_TO_TICKETS),\r\n onClick: () => push(paths.parking.tickets),\r\n },\r\n ],\r\n })\r\n setLoading(false)\r\n showPopup(true)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchTransactionStatus()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useChangeLayout(\r\n {\r\n layout: {\r\n hasBottomBar: true,\r\n },\r\n topbar: {\r\n title: t(Translations.PARK_CAR),\r\n onClickBack: () => push(paths.home.map),\r\n },\r\n },\r\n 'app'\r\n )\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default AwaitTransactionPage\r\n","import {\r\n number,\r\n // expirationDate,\r\n expirationMonth,\r\n expirationYear,\r\n} from 'card-validator'\r\nimport { expirationDate } from 'card-validator/dist/expiration-date'\r\n\r\nexport function formatCreditCardNumber(cardNumber: string) {\r\n // if (cardNumber.endsWith(' ')) return cardNumber.trimLeft()\r\n\r\n const digitGroupRegex = /(\\d{4}(?!\\s)(?!$))/g\r\n const formattedcardNumber = cardNumber\r\n .trimRight()\r\n .replace(digitGroupRegex, '$1 ')\r\n return formattedcardNumber\r\n}\r\n\r\nexport function formatCreditCardExpirationDate(expDate: string) {\r\n if (!expDate) return ''\r\n expDate = expDate.trim()\r\n let digits = expDate.replace(/[^0-9]+/, '')\r\n if (digits.length > 2) {\r\n digits = `${digits.slice(0, 2)} / ${digits.slice(2)}`\r\n }\r\n return digits\r\n}\r\n\r\nexport function validateCardNumber(cardNumber: string) {\r\n if (!cardNumber) return false\r\n const str = cardNumber.replace(/\\s/g, '')\r\n const { isValid } = number(str, {\r\n luhnValidateUnionPay: true,\r\n })\r\n return isValid\r\n}\r\nexport function validateExpirationDate(dateStr: string) {\r\n const { isValid } = expirationDate(dateStr, 20)\r\n return isValid\r\n}\r\nexport function validateExpirationMonth(month: string) {\r\n const { isValid } = expirationMonth(month)\r\n return isValid\r\n}\r\nexport function validateExpirationYear(year: string) {\r\n const { isValid } = expirationYear(year, 20)\r\n return isValid\r\n}\r\n\r\nexport const asterisks2Digits: (arg: string) => string = cardNumber => {\r\n const asteriskString = '**** **** **** ****'\r\n let str = ''\r\n cardNumber\r\n .replace(/\\s/g, '')\r\n .split('')\r\n .forEach((el, i) => {\r\n if (i > 3 && i < 16 && i % 4 === 0) {\r\n str = str.concat(' ', el)\r\n } else {\r\n str = str.concat('', el)\r\n }\r\n })\r\n\r\n const length = str.length\r\n return str.concat(asteriskString.slice(length))\r\n}\r\n","import { Grid, ButtonProps } from '@mui/material'\r\nimport { Form, Formik } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, FlexBox, Input } from 'shared'\r\nimport { AppButtonProps } from 'shared/AppButton'\r\nimport { AddCreditCardPayload } from 'typedef/creditCards'\r\nimport {\r\n validateCardNumber,\r\n validateExpirationDate,\r\n validateExpirationMonth,\r\n validateExpirationYear,\r\n} from 'utils/creditCard'\r\nimport * as Yup from 'yup'\r\nimport styled from 'styled-components'\r\nimport { zipCodeRegex, Translations, blurLastInput } from 'utils'\r\nexport interface AddCreditCardFormProps {\r\n addCreditCard: (arg: AddCreditCardPayload) => void\r\n setCardType?: (arg: string) => void\r\n setMonth?: (arg: string) => void\r\n setYear?: (arg: string) => void\r\n disabled?: boolean\r\n buttonProps?: ButtonProps & AppButtonProps\r\n}\r\nconst InputWithSlash = styled(Input)`\r\n &::after {\r\n content: '/';\r\n position: absolute;\r\n right: -12px;\r\n top: 50%;\r\n transform: translate(0%, -20%);\r\n font-size: 22px;\r\n }\r\n`\r\nexport const AddCreditCardForm: React.FC = props => {\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const [currentInput, setCurrentInput] = React.useState(0)\r\n const inputRefs = React.useRef[]>(\r\n [...Array(4)].map(() => React.createRef())\r\n )\r\n const focusNextInput = (\r\n e: React.FormEvent,\r\n creditCard?: boolean\r\n ) => {\r\n if (currentInput >= inputRefs.current.length) return false\r\n const valueLength = creditCard\r\n ? e.currentTarget.value?.replace(/\\s/g, '').length\r\n : e.currentTarget.value.length\r\n const maxLength = creditCard\r\n ? 16\r\n : parseInt(e.currentTarget.attributes.getNamedItem('maxLength').value)\r\n if (valueLength < maxLength) return false\r\n\r\n inputRefs.current[currentInput + 1].current?.focus()\r\n return true\r\n }\r\n\r\n const creditCardSchema = Yup.object().shape({\r\n cardnumber: Yup.string()\r\n .required(t(Translations.CREDIT_CARD_SHOULD_NOT_BE_EMPTY))\r\n .test(\r\n 'credit-card-validation',\r\n t(Translations.INVALID_CARD_NUMBER),\r\n validateCardNumber\r\n ),\r\n month: Yup.string()\r\n .required(t(Translations.DATE_SHOULD_NOT_BE_EMPTY))\r\n .min(2, t(Translations.DATE_IS_INVALID))\r\n .test(\r\n 'expiration-month-validation',\r\n t(Translations.DATE_IS_INVALID),\r\n function (value) {\r\n if (!this.parent.year || this.parent.year?.length < 4) {\r\n return validateExpirationMonth(value)\r\n } else {\r\n return validateExpirationDate(`${value}/${this?.parent?.year}`)\r\n }\r\n }\r\n ),\r\n year: Yup.string()\r\n .required(t(Translations.DATE_SHOULD_NOT_BE_EMPTY))\r\n .min(4, t(Translations.DATE_IS_INVALID))\r\n .test(\r\n 'expiration-year-validation',\r\n t(Translations.DATE_IS_INVALID),\r\n function (value) {\r\n if (!this.parent.month || this.parent.month?.length < 2) {\r\n return validateExpirationYear(value)\r\n } else {\r\n return validateExpirationDate(`${this?.parent?.month}/${value}`)\r\n }\r\n }\r\n ),\r\n billing: Yup.string()\r\n .required(t(Translations.ZIP_CODE_SHOULD_NOT_BE_EMPTY))\r\n .matches(zipCodeRegex, t(Translations.INVALID_ZIP_CODE)),\r\n })\r\n\r\n return (\r\n {\r\n props.addCreditCard({\r\n lotId: '',\r\n ccNumber: data.cardnumber.replace(/\\s/g, ''),\r\n zipCode: data.billing,\r\n expirationMonth: parseInt(data.month),\r\n expirationYear: parseInt(data.year),\r\n })\r\n }}\r\n validationSchema={creditCardSchema}\r\n >\r\n {({\r\n values,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n validateForm,\r\n submitForm,\r\n touched,\r\n setTouched,\r\n }) => {\r\n return (\r\n
\r\n \r\n \r\n setCurrentInput(0)}\r\n refProp={inputRefs.current[0]}\r\n placeholder={t(Translations.CREDIT_CARD_NUMBER)}\r\n maxLength={19}\r\n value={values.cardnumber}\r\n onChange={e => {\r\n props.setCardType(e.currentTarget.value)\r\n handleChange(e)\r\n focusNextInput(e, true)\r\n }}\r\n onBlur={handleBlur}\r\n error={\r\n touched['cardnumber'] &&\r\n (!!errors.cardnumber || !values.cardnumber)\r\n }\r\n />\r\n \r\n \r\n setCurrentInput(1)}\r\n refProp={inputRefs.current[1]}\r\n value={values.month}\r\n onChange={e => {\r\n handleChange(e)\r\n props.setMonth(e.currentTarget.value)\r\n focusNextInput(e)\r\n }}\r\n onBlur={handleBlur}\r\n error={touched['month'] && (!!errors.month || !values.month)}\r\n />\r\n \r\n \r\n setCurrentInput(2)}\r\n refProp={inputRefs.current[2]}\r\n placeholder={t(Translations.YEAR_SHORT)}\r\n maxLength={4}\r\n value={values.year}\r\n onChange={e => {\r\n handleChange(e)\r\n props.setYear(e.currentTarget.value)\r\n focusNextInput(e)\r\n }}\r\n onBlur={handleBlur}\r\n error={touched['year'] && (!!errors.year || !values.year)}\r\n />\r\n \r\n \r\n setCurrentInput(3)}\r\n refProp={inputRefs.current[3]}\r\n maxLength={15}\r\n value={values.billing}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n inputMode=\"text\"\r\n onKeyDown={e => {\r\n blurLastInput(e)\r\n }}\r\n error={\r\n touched['billing'] && (!!errors.billing || !values.billing)\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n validateForm().then(errors => {\r\n setTouched({\r\n billing: true,\r\n cardnumber: true,\r\n month: true,\r\n year: true,\r\n })\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n submitForm()\r\n } else {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }\r\n disabled={props.disabled}\r\n {...props.buttonProps}\r\n >\r\n {t(Translations.ADD_CARD)}\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }}\r\n \r\n )\r\n}\r\nAddCreditCardForm.defaultProps = {\r\n buttonProps: {},\r\n setCardType: () => undefined,\r\n setMonth: () => undefined,\r\n setYear: () => undefined,\r\n}\r\nexport default AddCreditCardForm\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport styled from 'styled-components'\r\nimport { CardType } from 'typedef/creditCards'\r\nimport { Translations } from 'utils'\r\nimport * as C from './Cards'\r\n\r\nconst StyledCardWrapperFullDetails = styled.div<{\r\n digits: string\r\n unknown: boolean\r\n}>`\r\n position: relative;\r\n transition: all 0.2s;\r\n width: 290px;\r\n margin: auto;\r\n text-align: center;\r\n :after {\r\n content: '${_ => _.digits}';\r\n position: absolute;\r\n bottom: 40%;\r\n right: 14px;\r\n color: ${_ => (_.unknown ? '#646464' : 'white')};\r\n font-weight: bold;\r\n letter-spacing: 0.3em;\r\n width: auto;\r\n font-family: 'SF Pro Display', 'Helvetica', 'Arial', sans-serif;\r\n text-align: right;\r\n }\r\n`\r\nconst ExpDate = styled.span<{ unknown: boolean }>`\r\n position: absolute;\r\n bottom: 20%;\r\n right: 18px;\r\n color: ${_ => (_.unknown ? '#646464' : 'white')};\r\n font-weight: 500;\r\n font-size: 14px;\r\n width: auto;\r\n font-family: 'SF Pro Display', 'Helvetica', 'Arial', sans-serif;\r\n text-align: right;\r\n`\r\nexport interface CardWrapperFullDetailsProps {\r\n digits: string\r\n month: string\r\n year: string\r\n type: CardType\r\n}\r\nexport const CardWrapperFullDetails: React.FC = ({\r\n type,\r\n digits,\r\n month,\r\n year,\r\n}) => {\r\n const {\r\n AmericanExpress,\r\n DinersClub,\r\n Discover,\r\n Invalid,\r\n JCB,\r\n MasterCard,\r\n Visa,\r\n } = CardType\r\n const { t } = useTranslation()\r\n return (\r\n \r\n \r\n {`${month || t(Translations.MONTH_SHORT)}/${year || t(Translations.YEAR_SHORT)}`}\r\n \r\n <>\r\n {type === MasterCard && }\r\n {type === DinersClub && }\r\n {type === AmericanExpress && }\r\n\r\n {type === Discover && }\r\n {type === JCB && }\r\n {type === Visa && }\r\n {type === Invalid && }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default CardWrapperFullDetails\r\n","import { Grid } from '@mui/material'\r\nimport { nanoid, unwrapResult } from '@reduxjs/toolkit'\r\nimport AddCreditCardForm from 'pages/my_credit_cards/CreditCardsComponents/AddCreditCardForm'\r\nimport CardWrapperFullDetails from 'pages/my_credit_cards/CreditCardsComponents/CardWrapperFullDetails'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { AppSpinner, WhiteBoxContainer } from 'shared'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { creditCardsSlice, customerSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { AddCreditCardPayload, CardType, CreditCard } from 'typedef/creditCards'\r\nimport { asterisks2Digits } from 'utils/creditCard'\r\nimport { getCreditCardType } from 'utils/creditCardTypeMapper'\r\nimport usePaymentCard from './creditCardHooks/usePaymentCard'\r\n\r\nexport interface AddCreditCardProps {\r\n carId: string\r\n payPath: string\r\n}\r\n\r\nexport const AddCreditCard: React.FC = props => {\r\n const [cardType, setCardType] = React.useState(CardType.Invalid)\r\n const [cardNumber, setCardNumber] = React.useState('')\r\n const [month, setMonth] = React.useState('')\r\n const [year, setYear] = React.useState('')\r\n const { setPaymentCard } = usePaymentCard()\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { setPopup, showPopup } = usePopup()\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, props.carId)\r\n )\r\n\r\n const { addCreditCardStatus } = useSelector(\r\n creditCardsSlice.promiseStatusSelectors\r\n )\r\n const { customerSignedIn, customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n\r\n const changeCardType = (cardNumber: string) => {\r\n setCardNumber(cardNumber)\r\n const cardType = getCreditCardType(cardNumber)\r\n setCardType(cardType)\r\n }\r\n\r\n const addCreditCard = async (arg: AddCreditCardPayload) => {\r\n if (customerSignedIn) {\r\n const promise = await dispatch(\r\n creditCardsSlice.addCreditCard({ ...arg, lotId: ticket?.lot?.lotId })\r\n )\r\n if (creditCardsSlice.addCreditCard.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise)\r\n dispatch(creditCardsSlice.actions.resetPromiseStatus('addCreditCard'))\r\n setPaymentCard(res)\r\n push(props.payPath)\r\n } else {\r\n if (promise.payload.variant === 'error') {\r\n setPopup(promise.payload)\r\n }\r\n if (promise.payload.variant === 'warning') {\r\n setPopup({\r\n ...promise.payload,\r\n buttons: [{ onClick: () => addCreditCard(promise.meta.arg) }, {}],\r\n })\r\n }\r\n showPopup(true)\r\n }\r\n }\r\n if (customerSignedInAsGuest) {\r\n const tempCard: CreditCard = {\r\n lotId: ticket?.lot?.lotId,\r\n cardType: getCreditCardType(arg.ccNumber),\r\n creditCardId: nanoid(),\r\n last4Digits: arg.ccNumber.slice(-4),\r\n ccNumber: arg.ccNumber,\r\n expirationMonth: arg.expirationMonth,\r\n expirationYear: arg.expirationYear,\r\n zipCode: arg.zipCode,\r\n }\r\n dispatch(creditCardsSlice.actions.addCard(tempCard))\r\n setPaymentCard(tempCard)\r\n push(props.payPath)\r\n }\r\n }\r\n\r\n const showElement = () => {\r\n const spinner = addCreditCardStatus.pending\r\n return { spinner }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import { useChangeLayout } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport { AddCreditCard } from './CreditCardComponents/AddCreditCard'\r\nimport { CancelParkCarDialog } from './CreditCardComponents'\r\nimport { useParkMode } from 'pages/park_car/ParkCarHooks'\r\n\r\nexport interface AddCardPageProps {}\r\n\r\nexport const AddCardPage: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const title = t(Translations.ADD_CREDIT_CARD)\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const parkMode = useParkMode()\r\n const { getTicketStatus } = useSelector((state: RootState) =>\r\n ticketsSlice.promiseStatusSelectors(state, ticketId)\r\n )\r\n\r\n const onClickRight = () => {\r\n setShowDialog(true)\r\n }\r\n\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n hasGoBack: false,\r\n rightIcon: 'close',\r\n onClickRight,\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app'\r\n )\r\n\r\n const fetchTicket = () =>\r\n dispatch(ticketsSlice.getTicket({ carId: ticketId }))\r\n\r\n const fetchData = () => {\r\n if (!getTicketStatus.fulfilled) fetchTicket()\r\n }\r\n\r\n React.useEffect(() => {\r\n fetchData()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch])\r\n\r\n return (\r\n <>\r\n \r\n setShowDialog(false)}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default AddCardPage\r\n","import { useChangeLayout } from 'hooks'\r\nimport CreditCardsPlaceholder from 'pages/my_credit_cards/CreditCardsComponents/CreditCardPlaceholder'\r\nimport CreditCardsList from 'pages/my_credit_cards/CreditCardsComponents/CreditCardsList'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppButton,\r\n AppSnackBarProvider,\r\n AppSpinner,\r\n ErrorPlaceholder,\r\n FlexBox,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { creditCardsSlice, customerSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport { CancelParkCarDialog } from './CreditCardComponents'\r\n\r\nexport interface ManageCardsProps {\r\n addCardPath: string\r\n}\r\n\r\nexport const ManageCards: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const { customerSignedIn } = useSelector(customerSlice.selectCustomerStatus)\r\n\r\n const status = useSelector(\r\n creditCardsSlice.promiseStatusSelectors\r\n ).getCreditCardsStatus\r\n\r\n const cards = useSelector(creditCardsSlice.selectAll)\r\n\r\n const addCard = React.useCallback(\r\n () => push(props.addCardPath),\r\n [push, props.addCardPath]\r\n )\r\n const AddCardButton = () => (\r\n \r\n \r\n {t(Translations.ADD_NEW_CARD)}\r\n \r\n \r\n )\r\n const fetchCards = React.useCallback(\r\n () => {\r\n if (customerSignedIn) {\r\n dispatch(creditCardsSlice.getCreditCards({ lotId: ticket?.lot?.lotId }))\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [dispatch]\r\n )\r\n const showElement = () => {\r\n const whiteBox = customerSignedIn && (status.idle || status.pendingIdle)\r\n const error =\r\n customerSignedIn && (status.pendingRejected || status.rejected)\r\n const spinner = customerSignedIn && status.pending\r\n const placeholder = !cards.length\r\n const card = customerSignedIn\r\n ? !!cards.length && (status.fulfilled || status.pendingFulfilled)\r\n : !!cards.length\r\n return { error, spinner, placeholder, card, whiteBox }\r\n }\r\n\r\n if (showElement().card || showElement().error || showElement().whiteBox)\r\n return (\r\n \r\n \r\n {showElement().error && }\r\n {showElement().card && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n if (showElement().placeholder)\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n return null\r\n}\r\n\r\nexport const ManageCardsPage: React.FC = props => {\r\n const { location, goBack } = useHistory()\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const title = t(Translations.MANAGE_CREDIT_CARDS)\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const { customerSignedIn } = useSelector(customerSlice.selectCustomerStatus)\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n const onClickRight = () => {\r\n setShowDialog(true)\r\n }\r\n\r\n const onClickBack = () => {\r\n // if (location.pathname === `${paths.parking.manageCards}/${ticketId}`) {\r\n // return push(`${paths.parking.selectCard}/${ticketId}`)\r\n // }\r\n // if (\r\n // location.pathname === `${paths.parking.addTimeManageCards}/${ticketId}`\r\n // ) {\r\n // return push(`${paths.parking.addTimeSelectCard}/${ticketId}`)\r\n // }\r\n return goBack()\r\n }\r\n const addCardPath = React.useCallback(() => {\r\n if (location.pathname === `${paths.parking.manageCards}/${ticketId}`) {\r\n return `${paths.parking.addCard}/${ticketId}`\r\n }\r\n if (\r\n location.pathname === `${paths.parking.addTimeManageCards}/${ticketId}`\r\n ) {\r\n return `${paths.parking.addTimeAddCard}/${ticketId}`\r\n }\r\n }, [location.pathname, ticketId])\r\n\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack,\r\n rightIcon: 'close',\r\n onClickRight,\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app'\r\n )\r\n\r\n React.useEffect(() => {\r\n if (customerSignedIn) {\r\n dispatch(creditCardsSlice.getCreditCards({ lotId: ticket?.lot?.lotId }))\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n if (!ticketId) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n setShowDialog(false)}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default ManageCardsPage\r\n","import {\r\n ChooseCard,\r\n ParkingDetails,\r\n} from 'pages/park_car_credit_card/CreditCardComponents'\r\nimport React from 'react'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport { AppSpinner, ErrorPlaceholder, WhiteBoxContainer } from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { creditCardsSlice, parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\n\r\nexport interface SelectCardGuestWrapperProps {\r\n paymentPath: string\r\n manageCardPath: string\r\n addCardPath: string\r\n ticketId: string\r\n}\r\n\r\nexport const SelectCardGuestWrapper: React.FC = props => {\r\n const [initSlide, setInitSlide] = React.useState(0)\r\n const mounted = React.useRef(false)\r\n const dispatch = useAppDispatch()\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, props.ticketId)\r\n )\r\n const { getTicketStatus } = useSelector((state: AppState) =>\r\n ticketsSlice.promiseStatusSelectors(state, props.ticketId)\r\n )\r\n\r\n const cards = useSelector(creditCardsSlice.selectAll)\r\n const selectedCard = useSelector(parkCarSlice.selectCardId)\r\n\r\n const fetchTicket = () =>\r\n dispatch(ticketsSlice.getTicket({ carId: props.ticketId }))\r\n\r\n const fetchData = () =>\r\n batch(() => {\r\n if (!getTicketStatus.fulfilled) fetchTicket()\r\n })\r\n\r\n React.useEffect(() => {\r\n fetchData()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch])\r\n\r\n React.useLayoutEffect(() => {\r\n if (selectedCard && cards.length) {\r\n const selectedCardIndex = cards.findIndex(\r\n el => el.creditCardId === selectedCard?.creditCardId\r\n )\r\n if (selectedCardIndex !== -1) {\r\n setInitSlide(selectedCardIndex)\r\n }\r\n }\r\n\r\n // for autoselect and focus first card\r\n mounted.current = true\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch])\r\n\r\n const showElement = () => {\r\n const error = getTicketStatus.pendingRejected || getTicketStatus.rejected\r\n const spinner =\r\n getTicketStatus.pendingIdle || getTicketStatus.pendingRejected\r\n const chooseCard = mounted.current\r\n return { error, spinner, chooseCard }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {showElement().error && }\r\n \r\n \r\n {showElement().chooseCard && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default SelectCardGuestWrapper\r\n","import { useSelectedCardIndex } from 'hooks'\r\nimport {\r\n ChooseCard,\r\n ParkingDetails,\r\n} from 'pages/park_car_credit_card/CreditCardComponents'\r\nimport React from 'react'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport { AppSpinner, ErrorPlaceholder, WhiteBoxContainer } from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { creditCardsSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\n\r\nexport interface SelectCardWrapperProps {\r\n paymentPath: string\r\n manageCardPath: string\r\n addCardPath: string\r\n ticketId: string\r\n}\r\n\r\nexport const SelectCardWrapper: React.FC = props => {\r\n const initCardIndex = useSelectedCardIndex()\r\n const mounted = React.useRef(false)\r\n const dispatch = useAppDispatch()\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, props.ticketId)\r\n )\r\n const { getTicketStatus } = useSelector((state: AppState) =>\r\n ticketsSlice.promiseStatusSelectors(state, props.ticketId)\r\n )\r\n const { getCreditCardsStatus } = useSelector(\r\n creditCardsSlice.promiseStatusSelectors\r\n )\r\n const cards = useSelector(creditCardsSlice.selectAll)\r\n\r\n const fetchCards = () =>\r\n dispatch(creditCardsSlice.getCreditCards({ lotId: ticket?.lot?.lotId }))\r\n const fetchTicket = () =>\r\n dispatch(ticketsSlice.getTicket({ carId: props.ticketId }))\r\n\r\n const fetchData = () =>\r\n batch(() => {\r\n if (!getTicketStatus.fulfilled) fetchTicket()\r\n fetchCards()\r\n })\r\n\r\n React.useEffect(() => {\r\n fetchData()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch, ticket])\r\n\r\n const showElement = () => {\r\n const error =\r\n getTicketStatus.pendingRejected ||\r\n getTicketStatus.rejected ||\r\n getCreditCardsStatus.rejected ||\r\n getCreditCardsStatus.pendingRejected\r\n const spinner =\r\n getTicketStatus.pendingIdle ||\r\n getTicketStatus.pendingRejected ||\r\n getCreditCardsStatus.pending\r\n const chooseCard = getCreditCardsStatus.fulfilled && mounted.current\r\n return { error, spinner, chooseCard }\r\n }\r\n mounted.current = true\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {showElement().error && }\r\n \r\n {showElement().chooseCard && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default SelectCardWrapper\r\n","import { useUpdateLayout } from 'hooks'\r\nimport { CancelParkCarDialog } from 'pages/park_car_credit_card/CreditCardComponents'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider } from 'shared'\r\nimport { customerSlice } from 'store/slices'\r\nimport Translations from 'utils/translations'\r\nimport SelectCardGuestWrapper from './SelectCardGuestWrapper'\r\nimport SelectCardWrapper from './SelectCardWrapper'\r\n\r\nexport const SelectCreditCardPage: React.FC = props => {\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const { t } = useTranslation()\r\n const title = t(Translations.PARK_CAR)\r\n const { customerSignedIn, customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n\r\n const onClickRight = () => {\r\n setShowDialog(true)\r\n }\r\n\r\n useUpdateLayout({\r\n topbar: {\r\n title,\r\n hasGoBack: false,\r\n rightIcon: 'close',\r\n onClickRight,\r\n },\r\n bottomMenu: false,\r\n layout: {\r\n hasFlatBackground: true,\r\n narrow: false,\r\n },\r\n })\r\n\r\n if (!ticketId) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n {customerSignedIn && (\r\n \r\n )}\r\n {customerSignedInAsGuest && (\r\n \r\n )}\r\n setShowDialog(false)}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default SelectCreditCardPage\r\n","import { useChangeLayout } from 'hooks'\r\nimport { useGetTicket, useParkDetails } from 'pages/park_car/ParkCarHooks'\r\nimport { CancelParkCarDialog } from 'pages/park_car_credit_card/CreditCardComponents'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider } from 'shared'\r\nimport { customerSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { CarStatus } from 'typedef/ticket'\r\nimport Translations from 'utils/translations'\r\nimport SelectCardGuestWrapper from './SelectCardGuestWrapper'\r\nimport SelectCardWrapper from './SelectCardWrapper'\r\n\r\nexport const AddTimeSelectCardPage: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const [, , ticket] = useGetTicket()\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const { goBack } = useHistory()\r\n const { t } = useTranslation()\r\n const title = t(Translations.PARK_CAR)\r\n const { customerSignedIn, customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const { externalPricingId, pricingPayload } = useParkDetails()\r\n const onClickBack = React.useCallback(() => {\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({\r\n ticketId,\r\n })\r\n )\r\n // push(`${paths.parking.addTime}/${ticketId}`)\r\n goBack()\r\n }, [dispatch, goBack, ticketId])\r\n\r\n const onClickRight = () => {\r\n setShowDialog(true)\r\n }\r\n\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack,\r\n rightIcon: 'close',\r\n onClickRight,\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app'\r\n )\r\n\r\n if (!ticketId) {\r\n return \r\n }\r\n\r\n if (ticket?.carStatus === CarStatus.ParkingHasExpired) {\r\n return \r\n }\r\n if (!externalPricingId && !pricingPayload && customerSignedIn) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n {customerSignedIn && (\r\n \r\n )}\r\n {customerSignedInAsGuest && (\r\n \r\n )}\r\n setShowDialog(false)}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default AddTimeSelectCardPage\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { CSSTransition } from 'react-transition-group'\r\nimport { Placeholder, SharedIcon } from 'shared'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface PaymentSuccessfulProps {\r\n show: boolean\r\n}\r\n\r\nexport const PaymentSuccessful: React.FC = props => {\r\n const { t } = useTranslation()\r\n return (\r\n \r\n }\r\n title={t(Translations.PAYMENT_SUCCESSFUL)}\r\n minHeight={120}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default PaymentSuccessful\r\n","import { TotalText } from 'pages/park_car/ParkCarComponents'\r\nimport { useParkDetails } from 'pages/park_car/ParkCarHooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppTypography, DetailsBox, SharedIcon } from 'shared'\r\nimport styled, { css } from 'styled-components'\r\nimport { Ticket } from 'typedef/ticket'\r\nimport { countParkTime, Translations } from 'utils'\r\n\r\nconst IconsWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n div:not(:last-of-type) {\r\n border-right: 1px solid ${_ => _.theme.palette.divider};\r\n }\r\n`\r\nconst IconWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n ${_ => css`\r\n padding: ${_.theme.spacing(1.5)} ${_.theme.spacing(3)};\r\n `}\r\n`\r\n\r\nexport type PaymentSummaryDetailsProps = Pick\r\n\r\nexport const PaymentSummaryDetails: React.FC = ({\r\n plate,\r\n spot,\r\n}) => {\r\n const {\r\n totalAmount,\r\n currency,\r\n parkingExpireDateTime,\r\n fees,\r\n parkingFee,\r\n parkingStartDateTime,\r\n upfrontCoupons,\r\n } = useParkDetails()\r\n\r\n const { t } = useTranslation()\r\n const time = countParkTime(parkingStartDateTime, parkingExpireDateTime)\r\n return (\r\n <>\r\n \r\n \r\n \r\n {spot && (\r\n \r\n \r\n {spot}\r\n \r\n )}\r\n \r\n \r\n {plate}\r\n \r\n \r\n \r\n \r\n {time}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {[parkingFee, ...fees]\r\n .filter(el => el)\r\n .map((el, i) => (\r\n \r\n ))}\r\n {!!upfrontCoupons &&\r\n upfrontCoupons.map((el, i) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PaymentSummaryDetails\r\n","import { Grid } from '@mui/material'\r\nimport { Form, Formik } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport React, { useState } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, FlexBox, Input } from 'shared'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { CreditCard } from 'typedef/creditCards'\r\nimport { Translations, zipCodeRegex, blurLastInput } from 'utils'\r\nimport * as Yup from 'yup'\r\nimport HybridRecaptcha from '../../../shared/ReCaptcha/HybridRecaptcha';\r\nimport {validateFeature } from '../../../shared/ReCaptcha/HybridRecaptcha';\r\n\r\n\r\nexport interface ZipCodeFormProps {\r\n disabled?: boolean\r\n creditCard: CreditCard\r\n onSubmit: ({ zipCode, recaptchaToken }: { zipCode: string, recaptchaToken: string }) => void\r\n}\r\n\r\nexport const ZipCodeForm: React.FC = props => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const zipCodeRef = React.useRef(null)\r\n const creditCardSchema = Yup.object().shape({\r\n billing: Yup.string()\r\n .required(t(Translations.ZIP_CODE_SHOULD_NOT_BE_EMPTY))\r\n .matches(zipCodeRegex, t(Translations.INVALID_ZIP_CODE)),\r\n })\r\n const [recaptchaVerified, setRecaptchaVerified] = useState(false);\r\n const [recaptchaToken, setRecaptchaToken] = useState(null);\r\n const handleTokenReceived = (token: string) => {\r\n setRecaptchaToken(token);\r\n };\r\n\r\n const handleRecaptchaSuccess = () => {\r\n setRecaptchaVerified(true);\r\n };\r\n\r\n const handleRecaptchaFailure = () => {\r\n enqueueSnackbar(t(Translations.RECAPTCHA_VERIFICATION_FAILED), { variant: 'error' });\r\n setRecaptchaVerified(false);\r\n };\r\n\r\n React.useEffect(() => {\r\n zipCodeRef.current?.focus()\r\n }, [])\r\n\r\n return (\r\n {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), { variant: 'warning' });\r\n return;\r\n }\r\n await props.onSubmit({ zipCode: billing, recaptchaToken: recaptchaToken })\r\n }}\r\n validateOnBlur\r\n validateOnChange={false}\r\n validationSchema={creditCardSchema}\r\n >\r\n {({\r\n values,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n validateForm,\r\n isSubmitting,\r\n }) => {\r\n return (\r\n
\r\n \r\n \r\n {\r\n blurLastInput(e)\r\n }}\r\n />\r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n \r\n {\r\n dispatch(parkCarSlice.actions.setZipCode(values.billing))\r\n dispatch(parkCarSlice.actions.setRecaptchaToken(recaptchaToken))\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length) {\r\n entries.forEach(el => enqueueSnackbar(el[1]))\r\n }\r\n })\r\n }}\r\n disabled={\r\n props.disabled ||\r\n values.billing.length < 5 ||\r\n isSubmitting\r\n }\r\n >\r\n {t(Translations.PAY)}\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }}\r\n \r\n )\r\n}\r\n\r\nexport default ZipCodeForm\r\n","import { Divider } from '@mui/material'\r\nimport CreditCardBar from 'pages/my_credit_cards/CreditCardsComponents/CreditCardBar'\r\nimport { SelectedLotTitle } from 'pages/park_car/ParkCarComponents'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppButton, FlexBox, AppTypography } from 'shared'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport { CreditCard } from 'typedef/creditCards'\r\nimport { Ticket } from 'typedef/ticket'\r\nimport { Translations } from 'utils'\r\nimport PaymentSuccessful from './ParkCarSummaryComponents/PaymentSuccessful'\r\nimport PaymentSummaryDetails from './ParkCarSummaryComponents/PaymentSummaryDetails'\r\nimport ZipCodeForm from './ParkCarSummaryComponents/ZipCodeForm'\r\n\r\nconst StyledCreditCardBar = styled(CreditCardBar)`\r\n padding-left: 0;\r\n`\r\nexport interface PaymentSummaryContainerProps {\r\n ticket: Ticket\r\n card?: CreditCard\r\n paid: boolean\r\n onSubmit: ({ zipCode, recaptchaToken }: { zipCode: string, recaptchaToken: string }) => void\r\n pending: boolean\r\n summaryProps: Pick\r\n}\r\n\r\nexport const ParkCarSummaryView: React.FC<\r\n PaymentSummaryContainerProps\r\n> = props => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n\r\n const onOkClick = React.useCallback(() => {\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({\r\n ticketId: props.ticket.carId,\r\n })\r\n )\r\n push(paths.parking.tickets)\r\n }, [dispatch, props.ticket.carId, push])\r\n\r\n return (\r\n <>\r\n \r\n {}\r\n {props.card && (\r\n <>\r\n \r\n \r\n {!props.paid && (\r\n <>\r\n \r\n {t(Translations.BILLING_ZIP_CODE)}\r\n \r\n \r\n {t(Translations.ENTER_ZIP_CODE)}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {props.paid && (\r\n \r\n \r\n \r\n {t(Translations.OK)}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default ParkCarSummaryView\r\n","import { useChangeLayout } from 'hooks'\r\nimport { CancelParkCarDialog } from 'pages/park_car_credit_card/CreditCardComponents'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppSnackBarProvider,\r\n AppSpinner,\r\n ErrorPlaceholder,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { creditCardsSlice, parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { CarStatus } from 'typedef/ticket'\r\nimport Translations from 'utils/translations'\r\nimport usePay from './ParkCarSummaryHooks/usePay'\r\nimport ParkCarSummaryView from './ParkCarSummaryView'\r\nexport interface PaymentSummaryProps {}\r\n\r\nexport const ParkCarSummary: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n const { getTicketStatus, payForCarStatus } = useSelector((state: AppState) =>\r\n ticketsSlice.promiseStatusSelectors(state, ticketId)\r\n )\r\n const { getCreditCardsStatus } = useSelector(\r\n creditCardsSlice.promiseStatusSelectors\r\n )\r\n const selectedCard = useSelector(parkCarSlice.selectCardId)\r\n const { pay: onSubmit, loading } = usePay()\r\n const fetchData = () => dispatch(ticketsSlice.getTicket({ carId: ticketId }))\r\n\r\n React.useEffect(\r\n () => () => {\r\n dispatch(\r\n creditCardsSlice.actions.removeCardZip(selectedCard?.creditCardId)\r\n )\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [dispatch]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (getTicketStatus.fulfilled && !ticket) {\r\n return push(paths.parking.tickets)\r\n }\r\n }, [dispatch, getTicketStatus.fulfilled, push, ticket])\r\n\r\n React.useEffect(() => {\r\n if (getTicketStatus.fulfilled && ticket) {\r\n if (!selectedCard && ticket.carStatus === CarStatus.RequiresPayment) {\r\n push(`${paths.parking.selectCard}/${ticketId}`)\r\n }\r\n }\r\n }, [getTicketStatus.fulfilled, push, selectedCard, ticket, ticketId])\r\n\r\n const showElement = () => {\r\n const spinner =\r\n getTicketStatus.pendingRejected ||\r\n getTicketStatus.pendingIdle ||\r\n loading ||\r\n getCreditCardsStatus.pending ||\r\n payForCarStatus.pending\r\n const error = getTicketStatus.pendingRejected || getTicketStatus.rejected\r\n const summary =\r\n Boolean(ticket) &&\r\n (getTicketStatus.fulfilled || getTicketStatus.pendingFulfilled) &&\r\n Boolean(selectedCard)\r\n\r\n return { spinner, error, summary }\r\n }\r\n return (\r\n \r\n {}\r\n {showElement().error && }\r\n {showElement().summary && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport const ParkCarSummaryPage: React.FC = props => {\r\n const { goBack } = useHistory()\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const { t } = useTranslation()\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const title = t(Translations.PARK_CAR)\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n const { pending } = useSelector((state: RootState) =>\r\n ticketsSlice.promiseStatusSelectors(state, ticketId)\r\n ).payForCarStatus\r\n const selectedCard = useSelector(parkCarSlice.selectCardId)\r\n const { pricing } = useSelector(parkCarSlice.stateSelectors)\r\n const dispatch = useAppDispatch()\r\n const onClickRight = () => {\r\n setShowDialog(true)\r\n }\r\n const noTopbarButtons = () =>\r\n ticket?.carStatus === CarStatus.Parked || pending\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack: goBack,\r\n hasGoBack: noTopbarButtons() ? false : true,\r\n rightIcon: noTopbarButtons() ? null : 'close',\r\n onClickRight,\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app',\r\n [ticket?.carStatus, pending]\r\n )\r\n\r\n React.useEffect(\r\n () => () => {\r\n dispatch(parkCarSlice.actions.setZipCode(''))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },\r\n [dispatch]\r\n )\r\n\r\n if (!ticketId) {\r\n return \r\n }\r\n if (!selectedCard || !pricing) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n setShowDialog(false)}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default ParkCarSummaryPage\r\n","import { useChangeLayout } from 'hooks'\r\nimport { useGetTicket, useParkDetails } from 'pages/park_car/ParkCarHooks'\r\nimport useBuyMoreTime from 'pages/park_car/ParkCarHooks/useBuyMoreTime'\r\nimport { CancelParkCarDialog } from 'pages/park_car_credit_card/CreditCardComponents'\r\nimport usePaymentCard from 'pages/park_car_credit_card/CreditCardComponents/creditCardHooks/usePaymentCard'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Redirect, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider, AppSpinner, WhiteBoxContainer } from 'shared'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport ParkCarView from './ParkCarSummaryView'\r\nimport HybridRecaptcha from '../../shared/ReCaptcha/HybridRecaptcha';\r\nimport {validateFeature } from '../../shared/ReCaptcha/HybridRecaptcha';\r\nimport { useSnackbar } from 'notistack';\r\nimport { FlexBox } from 'shared'\r\n\r\nexport const AddTimeSummaryPage: React.FC = props => {\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n const { t } = useTranslation()\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const title = t(Translations.PARK_CAR)\r\n const { externalPricingId, pricingPayload } = useParkDetails()\r\n const [loading, , submitBMT] = useBuyMoreTime()\r\n const { paymentCard } = usePaymentCard()\r\n const [, , ticket] = useGetTicket()\r\n const dispatch = useAppDispatch()\r\n const [recaptchaToken, setRecaptchaToken] = React.useState(null);\r\n const [recaptchaVerified, setRecaptchaVerified] = React.useState(false); \r\n const handleTokenReceived = (token: string) => {\r\n setRecaptchaToken(token);\r\n };\r\n\r\n const handleRecaptchaSuccess = () => {\r\n setRecaptchaVerified(true);\r\n };\r\n const { enqueueSnackbar } = useSnackbar();\r\n const handleRecaptchaFailure = () => {\r\n enqueueSnackbar(t(Translations.RECAPTCHA_VERIFICATION_FAILED), { variant: 'error' });\r\n setRecaptchaVerified(false);\r\n };\r\n\r\n\r\n const onClickRight = () => {\r\n setShowDialog(true)\r\n }\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n hasGoBack: loading ? false : true,\r\n rightIcon: loading ? null : 'close',\r\n onClickRight,\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app',\r\n [loading]\r\n )\r\n React.useEffect(\r\n () => () => {\r\n dispatch(parkCarSlice.actions.setZipCode(''))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },\r\n [dispatch]\r\n )\r\n\r\n if (!ticketId || !ticket || (!externalPricingId && !pricingPayload)) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {ticket && paymentCard && (\r\n <>\r\n \r\n \r\n \r\n {\r\n if (!recaptchaVerified) {\r\n enqueueSnackbar(t(Translations.PLEASE_COMPLETE_RECAPTCHA_VERIFICATION), { variant: 'warning' });\r\n return;\r\n }\r\n submitBMT(recaptchaToken)}\r\n }\r\n paid={false}\r\n pending={loading}\r\n summaryProps={ticket}\r\n />\r\n \r\n )}\r\n \r\n setShowDialog(false)}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default AddTimeSummaryPage\r\n","import { useChangeLayout } from 'hooks'\r\nimport { SelectedLotTitle } from 'pages/park_car/ParkCarComponents'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n FlexBox,\r\n Placeholder,\r\n SharedIcon,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { Translations } from 'utils'\r\nimport PaymentSummaryDetails from './ParkCarSummaryComponents/PaymentSummaryDetails'\r\n\r\nexport interface PaymentSummaryContainerProps {}\r\n\r\nconst ParkCarSummarySuccessPage: React.FC<\r\n PaymentSummaryContainerProps\r\n> = props => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const { ticketId } = useParams<{ ticketId: string }>()\r\n\r\n const ticket = useSelector((state: RootState) =>\r\n ticketsSlice.selectById(state, ticketId)\r\n )\r\n const { getTicketStatus } = useSelector((state: AppState) =>\r\n ticketsSlice.promiseStatusSelectors(state, ticketId)\r\n )\r\n\r\n const fetchData = () => dispatch(ticketsSlice.getTicket({ carId: ticketId }))\r\n\r\n React.useEffect(() => {\r\n if (ticket)\r\n dispatch(\r\n parkCarSlice.getLotDetailsPark({\r\n carId: ticketId,\r\n lotId: ticket.lot.lotId,\r\n })\r\n )\r\n }, [dispatch, ticket, ticketId])\r\n\r\n React.useEffect(() => {\r\n fetchData()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch, ticketId])\r\n\r\n const onOkClick = React.useCallback(() => {\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({\r\n ticketId: ticket.carId,\r\n })\r\n )\r\n push(paths.parking.tickets)\r\n }, [dispatch, ticket, push])\r\n\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title: t(Translations.PARK_CAR),\r\n hasGoBack: false,\r\n rightIcon: null,\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app',\r\n []\r\n )\r\n\r\n if (!ticketId) {\r\n return \r\n }\r\n\r\n const showElement = () => {\r\n const spinner =\r\n getTicketStatus.pendingRejected || getTicketStatus.pendingIdle\r\n const error = getTicketStatus.pendingRejected || getTicketStatus.rejected\r\n const summary =\r\n Boolean(ticket) &&\r\n (getTicketStatus.fulfilled || getTicketStatus.pendingFulfilled)\r\n\r\n return { spinner, error, summary }\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n {showElement().summary && (\r\n <>\r\n }\r\n title={t(Translations.PAYMENT_SUCCESSFUL)}\r\n minHeight={120}\r\n />\r\n\r\n \r\n\r\n \r\n \r\n \r\n {t(Translations.OK)}\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default ParkCarSummarySuccessPage\r\n","import { ThemeProvider } from '@mui/material/styles'\r\nimport { unwrapResult } from '@reduxjs/toolkit'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport React from 'react'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { customerSlice, layoutSlice, mapSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { login, refreshToken } from 'store/slices/customerSlice'\r\nimport { UserRole } from 'typedef'\r\nimport { useTokenValidation } from 'hooks'\r\nimport { AppSpinner, PaddingContainer, PageHeading } from 'shared'\r\nimport { whiteTheme } from 'themes'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Translations } from 'utils'\r\n\r\nexport interface PcodeSignInProps {}\r\n\r\nexport const PcodeSignIn: React.FC = props => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { myPosition } = useSelector(mapSlice.stateSelectors)\r\n const { setLoader } = layoutSlice.actions\r\n const { pcode } = useParams<{ pcode: string }>()\r\n\r\n const validToken = useTokenValidation()\r\n const trySignIn = async () => {\r\n //Check if token exist and if its valid\r\n if (validToken) {\r\n //Refresh token\r\n dispatch(setLoader(true))\r\n const promise = await dispatch(\r\n refreshToken({ token: validToken.refresh })\r\n )\r\n if (refreshToken.fulfilled.match(promise)) {\r\n //If user is already logged as guest, session needs to be destroyed and\r\n //he will be logged as a new guest\r\n const res = unwrapResult(promise)\r\n if (res.role !== UserRole.User) {\r\n await dispatch(customerSlice.actions.destroySession())\r\n await dispatch(login({ mode: UserRole.Guest }))\r\n }\r\n }\r\n dispatch(setLoader(false))\r\n } else {\r\n //If token is not valid or does not exist user will be logged\r\n //automatically as a guest\r\n await dispatch(login({ mode: UserRole.Guest }))\r\n }\r\n }\r\n\r\n const redirectFromQrCode = async () => {\r\n await trySignIn()\r\n await getLotDetailsFromPcode()\r\n }\r\n\r\n const getLotDetailsFromPcode = async () => {\r\n const promise = await dispatch(mapSlice.getLotsByPcode({ pcode }))\r\n if (mapSlice.getLotsByPcode.fulfilled.match(promise)) {\r\n const { lots } = unwrapResult(promise)\r\n if (lots.length === 1) {\r\n const lotId = lots[0].lotId\r\n const redirectUrl = lots[0].redirectUrl\r\n if (redirectUrl) {\r\n window.location.href = redirectUrl\r\n } else push(`${paths.parking.parkCar}/${lotId}`)\r\n } else if (lots.length > 1) {\r\n if (myPosition) {\r\n batch(() => {\r\n dispatch(customerSlice.actions.setCorporationGlobalPcode(pcode))\r\n dispatch(mapSlice.actions.focusMapOnMyLocation())\r\n dispatch(mapSlice.actions.setZoom(12))\r\n })\r\n push(paths.home.map)\r\n } else {\r\n batch(() => {\r\n dispatch(customerSlice.actions.setCorporationGlobalPcode(pcode))\r\n dispatch(mapSlice.getLotDetailsMap({ lotId: lots[0].lotId }))\r\n dispatch(\r\n mapSlice.actions.selectLot({\r\n lotId: lots[0].lotId,\r\n position: true,\r\n })\r\n )\r\n dispatch(mapSlice.actions.setZoom(1))\r\n })\r\n push(paths.home.map)\r\n }\r\n } else {\r\n push(paths.root.root)\r\n }\r\n } else {\r\n push(paths.root.root)\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n redirectFromQrCode()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PcodeSignIn\r\n","import { List, ListItem, ListItemIcon, ListItemText } from '@mui/material'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\nimport { getPromiseStatus } from 'api/utils'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppDialog, AppSpinner, AppTypography, SharedIcon } from 'shared'\r\nimport * as parkCar from 'store/slices/parkCarSlice'\r\nimport { Lot } from 'typedef/lot'\r\nimport { Translations } from 'utils'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nexport interface SelectLotDialogProps {\r\n lots: Lot[]\r\n open: boolean\r\n closeDialog: () => void\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n minWidth: 36,\r\n },\r\n}))\r\n\r\nexport const SelectLotDialog: React.FC = props => {\r\n const { t } = useTranslation()\r\n const classes = useStyles()\r\n const history = useHistory()\r\n const promiseStatus = useSelector(parkCar.selectPromiseStatus)\r\n const { pending } = getPromiseStatus(promiseStatus.getLotDetailsPark.status)\r\n\r\n const onClickItem = async (lotId: string) =>\r\n history.push(`${paths.parking.parkCar}/${lotId}`)\r\n\r\n return (\r\n (!pending ? props.closeDialog() : undefined)}\r\n >\r\n \r\n \r\n {t(Translations.PARK_ANOTHER_CAR)}\r\n \r\n \r\n {props.lots.map(el => (\r\n onClickItem(el.lotId)} key={nanoid()}>\r\n \r\n \r\n \r\n {el.lotName}\r\n }\r\n secondary={\r\n \r\n {el.locationName}\r\n \r\n }\r\n />\r\n \r\n ))}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SelectLotDialog\r\n","import { Ticket, CarStatus, PaymentOperationType } from 'typedef/ticket'\r\n\r\nimport { cars } from './myCars'\r\nimport { mapLot } from './lots'\r\n\r\nimport moment from 'moment'\r\n\r\nexport const tickets: Partial[] = [\r\n {\r\n addTimeEnable: true,\r\n carId: 'id1',\r\n advertisementUrl: 'https://i.ibb.co/CBRvxDm/Untitled.png',\r\n carStatus: CarStatus.Parked,\r\n currentDateTime: moment().toISOString(true),\r\n parkingExpireDateTime: moment().add(30, 'minute').toISOString(true),\r\n plate: cars[0].plate,\r\n validateEnable: true,\r\n isMonthlyParker: true,\r\n spot: 'A01',\r\n lot: mapLot,\r\n settlement: {\r\n parkingAmount: 200,\r\n currency: {\r\n currencySymbol: '$',\r\n cultureName: 'dolar',\r\n currencyFormat: 1,\r\n },\r\n finalAmount: 300,\r\n convenienceFee: 100,\r\n paymentOperationList: [\r\n {\r\n amount: 100,\r\n dateAtLocal: moment().toString(),\r\n dateAtUTC: moment().toString(),\r\n type: PaymentOperationType.Payment,\r\n },\r\n {\r\n amount: 150,\r\n dateAtUTC: moment().toString(),\r\n dateAtLocal: moment().toString(),\r\n type: PaymentOperationType.Coupon,\r\n name: 'Coupon',\r\n },\r\n {\r\n amount: 100,\r\n dateAtUTC: moment().toString(),\r\n dateAtLocal: moment().toString(),\r\n type: PaymentOperationType.BuyMoreTime,\r\n },\r\n ],\r\n },\r\n },\r\n {\r\n addTimeEnable: true,\r\n carId: 'id2',\r\n advertisementUrl:\r\n 'https://tezadvnodeprod.blob.core.windows.net/tezadvnodeprod/banners/15/4b43edfb-4170-5950-34cd-418cf9b5e5f0.jpg',\r\n carStatus: CarStatus.Parked,\r\n currentDateTime: moment().subtract(30, 'minute').toISOString(true),\r\n parkingExpireDateTime: moment().subtract(1, 'minute').toISOString(true),\r\n plate: cars[1].plate,\r\n validateEnable: true,\r\n isMonthlyParker: true,\r\n spot: 'A02',\r\n lot: mapLot,\r\n settlement: {\r\n parkingAmount: 200,\r\n currency: {\r\n currencySymbol: '$',\r\n cultureName: 'dolar',\r\n currencyFormat: 1,\r\n },\r\n finalAmount: 350,\r\n convenienceFee: 150,\r\n paymentOperationList: [\r\n {\r\n amount: 100,\r\n dateAtUTC: moment().toString(),\r\n dateAtLocal: moment().toString(),\r\n type: PaymentOperationType.Payment,\r\n },\r\n {\r\n amount: 150,\r\n dateAtLocal: moment().toString(),\r\n dateAtUTC: moment().toString(),\r\n type: PaymentOperationType.Coupon,\r\n },\r\n {\r\n amount: 100,\r\n dateAtUTC: moment().toString(),\r\n dateAtLocal: moment().toString(),\r\n type: PaymentOperationType.BuyMoreTime,\r\n },\r\n ],\r\n },\r\n },\r\n]\r\n","import React from 'react'\r\nimport { batch, useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { mapSlice, ticketsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { CarStatus } from 'typedef'\r\n\r\nexport const useTicketActions = (carId: string) => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const ticket = useSelector((state: AppState) =>\r\n ticketsSlice.selectById(state, carId)\r\n )\r\n const onClickValidate = React.useCallback(() => {\r\n push(`${paths.parking.validators}/${ticket.carId}`)\r\n }, [push, ticket.carId])\r\n\r\n const onClickReceipt = () =>\r\n push(`${paths.parker.sendReceipt}/${ticket.carId}`)\r\n\r\n const onClickFindCar = React.useCallback(\r\n (lotId: string) => {\r\n batch(() => {\r\n dispatch(mapSlice.actions.selectLot({ lotId }))\r\n dispatch(mapSlice.getLotDetailsMap({ lotId }))\r\n dispatch(mapSlice.actions.foundParkedCar({ lotId }))\r\n })\r\n push(paths.home.map)\r\n },\r\n [dispatch, push]\r\n )\r\n\r\n const hasLotGeolocation = () =>\r\n Boolean(\r\n ticket.lot.geolocation?.latitude && ticket.lot.geolocation?.longitude\r\n )\r\n\r\n const isTicketExpired = () => ticket.carStatus === CarStatus.ParkingHasExpired\r\n\r\n return {\r\n onClickValidate,\r\n onClickReceipt,\r\n onClickFindCar,\r\n hasLotGeolocation: hasLotGeolocation(),\r\n isExpired: isTicketExpired(),\r\n }\r\n}\r\n\r\nexport default useTicketActions\r\n","import {\r\n Avatar,\r\n IconButton,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemText,\r\n} from '@mui/material'\r\nimport React from 'react'\r\nimport { SharedIcon } from 'shared'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { Lot } from 'typedef/lot'\r\nexport interface LotNameProps {\r\n lot: Lot\r\n hasRightElement?: boolean\r\n onClickFindCar?: (lotId: string) => void\r\n}\r\nconst useStyles = makeStyles(_ => ({\r\n root: {\r\n width: 50,\r\n overflow: 'initial',\r\n backgroundColor: 'inherit',\r\n },\r\n}))\r\n\r\nexport const LotName: React.FC = ({\r\n lot,\r\n hasRightElement,\r\n onClickFindCar,\r\n}) => {\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {hasRightElement && (\r\n onClickFindCar(lot.lotId)}>\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\nLotName.defaultProps = {}\r\nexport default LotName\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, FlexBox } from 'shared'\r\nimport { Translations } from 'utils'\r\n\r\ninterface TicketUnpaidButtonsProps {\r\n onClickPay: () => void\r\n}\r\nexport const TicketUnpaidButtons: React.FC<\r\n TicketUnpaidButtonsProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n return (\r\n \r\n \r\n {t(Translations.PAY)}\r\n
\r\n \r\n )\r\n}\r\ninterface TicketValidButtonsProps {\r\n onClickValidate: () => void\r\n onClickAddTime: () => void\r\n validateEnable: boolean\r\n addTimeEnable: boolean\r\n}\r\nexport const TicketValidButtons: React.FC = props => {\r\n const { t } = useTranslation()\r\n return (\r\n \r\n {props.validateEnable && (\r\n \r\n {t(Translations.VALIDATE)}\r\n \r\n )}\r\n {props.addTimeEnable && (\r\n \r\n {t(Translations.ADD_TIME)}\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\ninterface TicketExpiredButtonsProps {\r\n onClickReceipt: () => void\r\n onClickParkAgain: () => void\r\n parkAgainEnable: boolean\r\n isExternalService?: boolean\r\n}\r\nexport const TicketExpiredButtons: React.FC<\r\n TicketExpiredButtonsProps\r\n> = props => {\r\n const { t } = useTranslation()\r\n return (\r\n \r\n {!props.isExternalService && (\r\n \r\n {t(Translations.RECEIPT)}\r\n \r\n )}\r\n {props.parkAgainEnable && (\r\n \r\n {t(Translations.PARK_AGAIN)}\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import { Typography } from '@mui/material'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, AppTypography, SharedIcon } from 'shared'\r\nimport styled from 'styled-components'\r\nimport { CarStatus, Ticket as ITicket } from 'typedef/ticket'\r\nimport { formatCurrency, Translations } from 'utils'\r\n\r\nconst InfoBox = styled.div<{ valid: boolean }>`\r\n background: ${_ =>\r\n _.valid ? _.theme.palette.grey[100] : _.theme.palette.secondary.light};\r\n padding: ${_ => _.theme.spacing(1)};\r\n margin-bottom: ${_ => _.theme.spacing(2.5)};\r\n border-radius: 8px;\r\n`\r\nconst CarRow = styled.div`\r\n padding: ${_ => _.theme.spacing(1)} 0;\r\n display: flex;\r\n div:first-of-type {\r\n margin-right: ${_ => _.theme.spacing(3)};\r\n }\r\n`\r\nconst ParkingExpireRow = styled.div<{ valid: boolean }>`\r\n padding: ${_ => _.theme.spacing(1)} 0;\r\n border: 1px solid ${_ => (_.valid ? _.theme.palette.divider : '#ffc6c6')};\r\n border-width: 1px 0 0 0;\r\n text-align: left;\r\n color: ${_ => (_.valid ? 'inherit' : _.theme.palette.secondary.main)};\r\n`\r\nconst SeeDetailsRow = styled.div`\r\n padding-top: ${_ => _.theme.spacing(1)};\r\n border: 1px solid ${_ => _.theme.palette.divider};\r\n border-width: 1px 0 0 0;\r\n`\r\n\r\nconst TimeCell = styled.div`\r\n p {\r\n display: inline-block;\r\n font-weight: bold;\r\n }\r\n p:first-of-type {\r\n font-size: 1.5rem;\r\n margin-right: ${_ => _.theme.spacing(1)};\r\n }\r\n`\r\nconst IconText = styled.div`\r\n display: flex;\r\n align-items: center;\r\n`\r\n\r\nconst formatTime = (d: string) => moment(d).format('LT')\r\nconst formatDate = (d: string) => moment(d).format('MMM DD')\r\n\r\nexport interface TicketDetailsProps {\r\n ticket: ITicket\r\n onClickDetails: () => void\r\n}\r\n\r\nconst TicketDetails: React.FC = ({\r\n ticket,\r\n onClickDetails,\r\n}) => {\r\n const { t } = useTranslation()\r\n\r\n // const isTicketValid = isValid(ticket.parkingExpireDateTime)\r\n const isTicketValid = ticket.carStatus !== CarStatus.ParkingHasExpired\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {ticket.plate}\r\n \r\n \r\n \r\n {ticket.spot}\r\n \r\n \r\n \r\n \r\n {t(\r\n isTicketValid\r\n ? Translations.PARKING_EXPIRES_AT\r\n : Translations.PARKING_EXPIRED_AT\r\n )}\r\n \r\n \r\n {formatTime(ticket.parkingExpireDateTime)}\r\n {formatDate(ticket.parkingExpireDateTime)}\r\n \r\n \r\n {!ticket.isMonthlyParker && isTicketValid && (\r\n \r\n \r\n {t(Translations.SEE_DETAILS)}\r\n \r\n \r\n )}\r\n \r\n {!ticket.isMonthlyParker && ticket.settlement && isTicketValid && (\r\n \r\n {t(Translations.TOTAL)}\r\n {': '}\r\n {formatCurrency(\r\n ticket.settlement?.currency,\r\n ticket.settlement?.finalAmount\r\n )}\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default TicketDetails\r\n","import { Divider, List, ListItem } from '@mui/material'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { AppButton, AppDialog, AppTypography, FlexBox } from 'shared'\r\nimport {\r\n PaymentOperation,\r\n PaymentOperationType,\r\n Settlement,\r\n} from 'typedef/ticket'\r\nimport { formatCurrency, Translations } from 'utils'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\ninterface DetailsDialogProps {\r\n settlement: Settlement\r\n show: boolean\r\n onClick: () => void\r\n}\r\n\r\nconst useStyles = makeStyles(() => ({\r\n item: {\r\n justifyContent: 'space-between',\r\n },\r\n}))\r\n\r\nconst DetailsDialog: React.FC = props => {\r\n const { t } = useTranslation()\r\n const classes = useStyles()\r\n const {\r\n convenienceFee,\r\n currency,\r\n finalAmount,\r\n paymentOperationList,\r\n convenienceFeeName,\r\n } = props.settlement\r\n\r\n const label = (type: PaymentOperationType, name: string | undefined) => {\r\n const nameText = !!name ? name : ''\r\n switch (type) {\r\n case PaymentOperationType.Payment:\r\n return `${t(t(Translations.PARKED))} ${nameText}`\r\n case PaymentOperationType.Coupon:\r\n return `${t(Translations.VALIDATED)} (${nameText})`\r\n case PaymentOperationType.BuyMoreTime:\r\n return `${t(Translations.BUY_MORE_TIME)} ${nameText}`\r\n }\r\n }\r\n\r\n const value = (type: PaymentOperationType, value: number) => {\r\n const val = formatCurrency(currency, value)\r\n return type === PaymentOperationType.Coupon ? `(${val})` : `${val}`\r\n }\r\n\r\n return (\r\n \r\n \r\n {t(Translations.TICKET_DETAILS)}\r\n \r\n \r\n {paymentOperationList.map((el: PaymentOperation) => (\r\n \r\n {label(el.type, el.name)}\r\n {value(el.type, el.amount)}\r\n \r\n ))}\r\n\r\n {!!convenienceFee && (\r\n \r\n \r\n {convenienceFeeName || t(Translations.CONVENIENCE_FEE)}\r\n \r\n \r\n {formatCurrency(currency, convenienceFee)}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {t(Translations.TOTAL)}\r\n {': '}\r\n {formatCurrency(currency, finalAmount)}\r\n \r\n \r\n \r\n {t(Translations.OK)}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default DetailsDialog\r\n","import { Box, Divider } from '@mui/material'\r\nimport NeedHelpPopup from 'pages/park_car/ParkCarComponents/NeedHelpPopup'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport AppButton from 'shared/AppButton'\r\nimport { customerSlice, parkCarSlice } from 'store/slices'\r\nimport { TicketState } from 'store/slices/ticketsSlice.types'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { CarStatus, ParkerType } from 'typedef'\r\nimport Translations from 'utils/translations'\r\nimport { tickets } from '__fixtures__'\r\nimport useTicketActions from '../TicketHooks/useTicketActions'\r\nimport LotName from './LotName'\r\nimport {\r\n TicketExpiredButtons,\r\n TicketUnpaidButtons,\r\n TicketValidButtons,\r\n} from './TicketButtons'\r\nimport TicketDetails from './TicketDetails'\r\nimport TicketDetailsDialog from './TicketDetailsDialog'\r\n\r\nexport interface TicketStandardProps {\r\n ticket: TicketState\r\n}\r\n\r\nexport const TicketStandard: React.FC = ({ ticket }) => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const { customerSignedInAsGuest } = useSelector(\r\n customerSlice.selectCustomerStatus\r\n )\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const [showNeedHelpPopup, setShowNeedHelpPopup] = React.useState(false)\r\n\r\n const onClickDetails = () => setShowDialog(!showDialog)\r\n\r\n const {\r\n onClickFindCar,\r\n hasLotGeolocation,\r\n onClickValidate,\r\n onClickReceipt,\r\n isExpired: isTicketExpired,\r\n } = useTicketActions(ticket.carId)\r\n\r\n const onClickParkAgain = () => {\r\n dispatch(parkCarSlice.actions.setTicket({ carId: ticket.carId }))\r\n push(`${paths.parking.parkCar}/${ticket.lot.lotId}`)\r\n }\r\n const onClickPay = React.useCallback(() => {\r\n push(`${paths.parking.selectCard}/${ticket.carId}`)\r\n }, [push, ticket.carId])\r\n\r\n const onClickAddTime = React.useCallback(() => {\r\n push(`${paths.parking.addTime}/${ticket.carId}`)\r\n }, [push, ticket.carId])\r\n\r\n const carStatus = {\r\n expired: ticket.carStatus === CarStatus.ParkingHasExpired,\r\n unpaid: ticket.carStatus === CarStatus.RequiresPayment,\r\n parked: ticket.carStatus === CarStatus.Parked,\r\n }\r\n\r\n const displayReceipt =\r\n ticket.parkerType === ParkerType.Normal &&\r\n ticket.settlement.finalAmount !== 0 &&\r\n !isTicketExpired\r\n\r\n return (\r\n <>\r\n \r\n \r\n {ticket.parkerType === ParkerType.Normal && (\r\n <>\r\n {carStatus.parked && (\r\n \r\n )}\r\n {isTicketExpired && (\r\n \r\n )}\r\n {carStatus.unpaid && }\r\n \r\n )}\r\n {ticket.settlement && (\r\n \r\n )}\r\n \r\n {displayReceipt && customerSignedInAsGuest && (\r\n <>\r\n \r\n // push(`${paths.parker.receiptsAndNotifications}/${ticket.carId}`)\r\n push({\r\n pathname: `${paths.parker.receiptsAndNotifications}/${ticket.carId}`,\r\n state: {\r\n externalService: ticket.externalServiceDeliversReceipts,\r\n },\r\n })\r\n }\r\n data-testid=\"helpButton\"\r\n >\r\n {ticket.externalServiceDeliversReceipts\r\n ? t(Translations.NOTIFICATIONS)\r\n : t(Translations.RECEIPTS_AND_NOTIFICATIONS)}\r\n \r\n \r\n \r\n )}\r\n setShowNeedHelpPopup(true)}\r\n data-testid=\"helpButton\"\r\n >\r\n {t(Translations.NEED_HELP)}\r\n \r\n \r\n setShowNeedHelpPopup(false)}\r\n showNeedHelpPopup={showNeedHelpPopup}\r\n lotId={ticket.lot.lotId}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default TicketStandard\r\n","import React from 'react'\r\nimport { WhiteBoxContainer } from 'shared'\r\nimport { TicketState } from 'store/slices/ticketsSlice.types'\r\nimport { parseCustomStyles } from 'utils'\r\nimport TicketNormal from './TicketNormal'\r\n\r\nexport interface TicketProps {\r\n ticket: TicketState\r\n center?: boolean\r\n minHeight?: number\r\n}\r\n\r\nconst Ticket: React.ForwardRefRenderFunction = (\r\n { ticket, center, minHeight },\r\n ref\r\n) => {\r\n const { cardBgUrl } = parseCustomStyles(ticket.customStyles)\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default React.forwardRef(Ticket)\r\n","import { nanoid } from '@reduxjs/toolkit'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { Settings } from 'react-slick'\r\nimport { AppCarousel } from 'shared'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport { TicketState } from 'store/slices/ticketsSlice.types'\r\nimport Ticket from './Ticket'\r\n\r\nconst responsive: Settings['responsive'] = [\r\n {\r\n breakpoint: 640,\r\n settings: { centerMode: false, slidesToShow: 1 },\r\n },\r\n]\r\nexport interface TicketsCarouselProps {\r\n tickets: TicketState[]\r\n}\r\n\r\nconst TicketsCarousel: React.FC = props => {\r\n const ticketsRef = React.useRef([])\r\n const [minHeight, setMinHeight] = React.useState(0)\r\n const { selectedTicket } = useSelector(ticketsSlice.stateSelectors)\r\n const selectedTicketIndex = props.tickets.findIndex(\r\n el => el.carId === selectedTicket?.carId\r\n )\r\n const initialSlide = () =>\r\n selectedTicketIndex > -1 ? selectedTicketIndex : 0\r\n\r\n const renderTickets = props.tickets.map((ticket, i) => (\r\n (ticketsRef.current[i] = el)}\r\n minHeight={minHeight}\r\n />\r\n ))\r\n\r\n React.useEffect(() => {\r\n const maxHeight = Math.max(\r\n ...ticketsRef.current.map(el => el.clientHeight as number)\r\n )\r\n if (typeof maxHeight === 'number') {\r\n setMinHeight(maxHeight)\r\n }\r\n }, [props.tickets])\r\n\r\n if (!props.tickets?.length) return null\r\n if (props.tickets.length === 1) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n {renderTickets}\r\n \r\n )\r\n}\r\n\r\nexport default TicketsCarousel\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Placeholder, SharedIcon } from 'shared'\r\nimport Translations from 'utils/translations'\r\nexport interface TicketsPlaceholderProps {}\r\n\r\nconst TicketsPlaceholder: React.FC = props => {\r\n const { t } = useTranslation()\r\n return (\r\n }\r\n />\r\n )\r\n}\r\n\r\nexport default TicketsPlaceholder\r\n","import { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n ErrorPlaceholder,\r\n FlexBox,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport { TicketState } from 'store/slices/ticketsSlice.types'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { Lot } from 'typedef/lot'\r\nimport Translations from 'utils/translations'\r\nimport SelectLotDialog from './SelectLotDialog'\r\nimport TicketsCarousel from './TicketsCarousel'\r\nimport TicketsPlaceholder from './TicketsPlaceholder'\r\n\r\nexport interface TicketsContainerProps {\r\n showDialog: boolean\r\n closeDialog: () => void\r\n onParkCar: () => void\r\n tickets: TicketState[]\r\n lots: Lot[]\r\n}\r\n\r\nconst TicketsContainer: React.FC = props => {\r\n const snackbarKey = React.useRef(null)\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar, closeSnackbar } = useSnackbar()\r\n const dispatch = useAppDispatch()\r\n\r\n const status = useSelector(ticketsSlice.promiseStatusSelectors)\r\n .getTicketsStatus\r\n\r\n const reFetchData = (close?: boolean) => {\r\n dispatch(ticketsSlice.getTickets())\r\n if (close) {\r\n closeSnackbar(snackbarKey.current)\r\n }\r\n }\r\n\r\n const action = (key: any) => (\r\n {\r\n closeSnackbar(key)\r\n reFetchData()\r\n }}\r\n >\r\n {t(Translations.REFRESH)}\r\n \r\n )\r\n\r\n React.useEffect(() => {\r\n if (status.rejected) {\r\n snackbarKey.current = enqueueSnackbar(\r\n t(Translations.SOME_DATA_HAS_NOT_BEEN_UPDATED),\r\n {\r\n persist: true,\r\n key: 'fetchError',\r\n action,\r\n }\r\n )\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [status.rejected])\r\n\r\n React.useEffect(() => {\r\n if (status.pending && Boolean(props.tickets.length)) {\r\n enqueueSnackbar(t(Translations.REFRESHING_DATA), {\r\n key: 'refresh',\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [status.pending, props.tickets.length])\r\n\r\n React.useEffect(() => {\r\n dispatch(ticketsSlice.getTickets())\r\n }, [dispatch])\r\n\r\n return (\r\n <>\r\n {!!props.tickets.length && }\r\n {!props.tickets.length && (\r\n \r\n {status.pendingIdle && }\r\n {(status.rejected || status.pendingRejected) && (\r\n reFetchData(true)}\r\n />\r\n )}\r\n {(status.pendingFulfilled || status.fulfilled) && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {t(Translations.PARK_CAR)}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default TicketsContainer\r\n","import { useChangeLayout, useUpdateTicket } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider } from 'shared'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport Translations from 'utils/translations'\r\nimport TicketsContainer from './TicketComponents/TicketsContainer'\r\nexport interface TicketsViewProps {}\r\n\r\nconst TicketsView: React.FC = () => {\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n useUpdateTicket()\r\n const { t } = useTranslation()\r\n const history = useHistory()\r\n const tickets = useSelector(ticketsSlice.selectSortedParkedTickets)\r\n const expiredTickets = useSelector(ticketsSlice.selectSortedExpiredTickets)\r\n const lots = useSelector(ticketsSlice.selectParkAnotherCarLots)\r\n const onParkCar = () =>\r\n !!lots.length ? setShowDialog(true) : history.push(paths.home.map)\r\n const title = React.useCallback(\r\n () =>\r\n `${tickets.length} ${t(\r\n tickets.length === 1\r\n ? Translations.CAR_PARKED\r\n : Translations.CARS_PARKED\r\n )}`,\r\n [tickets.length, t]\r\n )\r\n\r\n useChangeLayout(\r\n {\r\n layout: {\r\n ad: true,\r\n },\r\n topbar: {\r\n title: title(),\r\n hasGoBack: false,\r\n rightIcon: 'add',\r\n onClickRight: onParkCar,\r\n },\r\n bottomMenu: true,\r\n },\r\n 'app',\r\n [tickets.length]\r\n )\r\n return (\r\n \r\n setShowDialog(false)}\r\n onParkCar={onParkCar}\r\n tickets={[...tickets, ...expiredTickets]}\r\n lots={lots}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default TicketsView\r\n","import { useChangeLayout, useUpdateTicket } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSnackBarProvider } from 'shared'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport Translations from 'utils/translations'\r\nimport TicketsContainer from './TicketComponents/TicketsContainer'\r\n\r\nexport interface TicketsGuestViewProps {}\r\n\r\nconst TicketsGuestView: React.FC = () => {\r\n const [showDialog, setShowDialog] = React.useState(false)\r\n const [canParkCar, setCanParkCar] = React.useState(false)\r\n useUpdateTicket()\r\n const { t } = useTranslation()\r\n const history = useHistory()\r\n const tickets = useSelector(ticketsSlice.selectParkedTickets)\r\n const expiredTickets = useSelector(ticketsSlice.selectSortedExpiredTickets)\r\n const { fulfilled } = useSelector(\r\n ticketsSlice.promiseStatusSelectors\r\n ).getTicketsStatus\r\n const lots = useSelector(ticketsSlice.selectParkAnotherCarLots)\r\n const onParkCar = () =>\r\n !!tickets.length ? setShowDialog(true) : history.push(paths.home.map)\r\n const title = React.useCallback(\r\n () =>\r\n `${tickets.length} ${t(\r\n tickets.length === 1\r\n ? Translations.CAR_PARKED\r\n : Translations.CARS_PARKED\r\n )}`,\r\n [tickets.length, t]\r\n )\r\n\r\n useChangeLayout(\r\n {\r\n layout: {\r\n ad: true,\r\n },\r\n topbar: {\r\n title: title(),\r\n hasGoBack: false,\r\n rightIcon: canParkCar ? 'add' : null,\r\n onClickRight: onParkCar,\r\n },\r\n },\r\n 'app',\r\n [tickets.length, canParkCar]\r\n )\r\n React.useEffect(() => {\r\n if (tickets.length || !fulfilled) {\r\n setCanParkCar(false)\r\n } else {\r\n setCanParkCar(true)\r\n }\r\n }, [canParkCar, fulfilled, tickets.length])\r\n return (\r\n \r\n setShowDialog(false)}\r\n onParkCar={onParkCar}\r\n tickets={[...tickets, ...expiredTickets]}\r\n lots={lots}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default TicketsGuestView\r\n","export default __webpack_public_path__ + \"static/media/info_gray.37acf9a1.svg\";","import * as React from 'react'\r\nimport AppTypography from 'shared/AppTypography'\r\nimport styled from 'styled-components'\r\nimport infoIcon from '../../assets/icons/info_gray.svg'\r\n\r\ninterface InformationTextProps {\r\n text: string\r\n}\r\n\r\nconst InfoContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n margin: 20px 0px;\r\n`\r\n\r\nconst InfoIcon = styled.img`\r\n width: 30px;\r\n padding: 0px 10px;\r\n`\r\n\r\nconst InformationText: React.FunctionComponent = props => {\r\n return (\r\n \r\n \r\n {props.text}\r\n \r\n )\r\n}\r\n\r\nexport default InformationText\r\n","import {\r\n Avatar,\r\n Divider,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemText,\r\n} from '@mui/material'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport InformationText from 'shared/styled/InformationText'\r\nimport { Partner } from 'typedef/validator'\r\nimport { Translations } from 'utils'\r\nimport { FlexBox, AppButton } from 'shared'\r\nimport CodeInput from 'shared/CodeInput'\r\nimport styled from 'styled-components'\r\n\r\nconst StyledCodeInput = styled(CodeInput)`\r\n input {\r\n border: 1px solid ${_ => _.theme.palette.divider};\r\n }\r\n`\r\nexport interface ValidateTicketProps {\r\n partner: Partner\r\n handleSubmit: (validationCode: string) => void\r\n}\r\n\r\nexport const ValidateTicket: React.FC = props => {\r\n const { t } = useTranslation()\r\n const { name, logoDir } = props.partner\r\n const [pin, setPin] = React.useState('')\r\n const [codeValid, setCodeValid] = React.useState(false)\r\n\r\n const renderInfoText = () => {\r\n if (props.partner.qrCodeEnable) {\r\n if (props.partner.qrValidationMessage) {\r\n return props.partner.qrValidationMessage\r\n }\r\n return t(Translations.PLEASE_SCAN_THE_POSTED_QR_CODE)\r\n }\r\n return t(Translations.VALIDATOR_INFO)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!props.partner.qrCodeEnable && (\r\n \r\n \r\n props.handleSubmit(pin)}\r\n >\r\n {t(Translations.ACCEPT)}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default ValidateTicket\r\n","import { fetchStatusIs } from 'api/utils'\r\nimport { useChangeLayout } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { AppSpinner, WhiteBoxContainer } from 'shared'\r\nimport { showPopup } from 'store/globalPopup/actions'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { parkCarSlice } from 'store/slices'\r\nimport {\r\n selectSendValidateCodeUpfrontStatus,\r\n selectValidatorById,\r\n validateCodeUpfront,\r\n} from 'store/slices/validatorsSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport ValidateTicket from './ValidateTicket'\r\n\r\nexport const UpfrontValidate = () => {\r\n const history = useHistory()\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { parkerId, couponId } = useParams<{\r\n parkerId?: string\r\n couponId?: string\r\n }>()\r\n\r\n const { lot, pricingPayload, providedPlate, providedSpotNumber } =\r\n useSelector(parkCarSlice.stateSelectors)\r\n const partner = useSelector((state: RootState) =>\r\n selectValidatorById(state, couponId)\r\n )\r\n\r\n const { pending } = fetchStatusIs(\r\n useSelector((state: RootState) =>\r\n selectSendValidateCodeUpfrontStatus(state)\r\n )\r\n )\r\n const title = t(Translations.VALIDATE)\r\n useChangeLayout(\r\n {\r\n layout: {\r\n hasBottomBar: false,\r\n },\r\n topbar: {\r\n title,\r\n onClickBack: () => {\r\n history.push(`${paths.parking.upfrontValidate}/${parkerId}`)\r\n },\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app'\r\n )\r\n if (!partner) {\r\n history.push(paths.home.map)\r\n return null\r\n }\r\n const handleSubmit = async (validationCode: string) => {\r\n const actionResult = await dispatch(\r\n validateCodeUpfront({\r\n parkerId,\r\n couponId: partner.couponId,\r\n partnerId: partner.partnerId,\r\n validationCode,\r\n })\r\n )\r\n\r\n if (validateCodeUpfront.rejected.match(actionResult)) {\r\n dispatch(\r\n showPopup({\r\n ...actionResult.payload,\r\n handleAdditionalButtonClick: () => handleSubmit(validationCode),\r\n })\r\n )\r\n } else {\r\n dispatch(\r\n showPopup({\r\n variant: 'success',\r\n title: `${t(Translations.SUCCESS)}!`,\r\n description: t(Translations.TICKET_HAS_BEEN_VALIDATED),\r\n okButtonClick: () => {\r\n history.push({\r\n pathname: `${paths.parking.parkCar}/${lot.lotId}`,\r\n state: {\r\n preValidationSettings: pricingPayload,\r\n providedPlate: providedPlate,\r\n providedSpotNumber: providedSpotNumber,\r\n },\r\n })\r\n },\r\n })\r\n )\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import { Avatar, ListItem, ListItemAvatar, ListItemText } from '@mui/material'\r\nimport React from 'react'\r\nimport { SharedIcon } from 'shared'\r\nimport { ValidatorBarProps } from './types'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst useStyles = makeStyles(_ => ({\r\n root: {\r\n paddingTop: 8,\r\n background: 'white',\r\n paddingBottom: 8,\r\n },\r\n listItemRoot: {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n listTextRoot: {\r\n paddingLeft: 8,\r\n },\r\n}))\r\nexport const ValidateBar: React.FC = props => {\r\n const { name, logoDir } = props.partner\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ValidateBar\r\n","import { Divider, List } from '@mui/material'\r\nimport React from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\nimport ValidatorBar from './ValidatorBar'\r\nimport { ValidatorProps } from './types'\r\nimport { paths } from 'routing'\r\n\r\nconst Validators = (props: ValidatorProps) => {\r\n const history = useHistory()\r\n const handleRedirection = (couponId: number) => {\r\n if (props.carId) {\r\n history.push(\r\n `${paths.parking.validators}/${props.carId}/${paths.parking.validate}/${couponId}`\r\n )\r\n } else if (props.parkerId) {\r\n history.push(\r\n `${paths.parking.upfrontValidate}/${props.parkerId}/${paths.parking.validate}/${couponId}`\r\n )\r\n }\r\n }\r\n\r\n if (!props.partners || !props.partners.length) return null\r\n\r\n return (\r\n \r\n {props.partners.map((p, i, arr) => (\r\n \r\n handleRedirection(p.couponId)}\r\n />\r\n {i < arr.length - 1 && }\r\n \r\n ))}\r\n \r\n )\r\n}\r\n\r\nexport default Validators\r\n","import * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Placeholder, PlaceholderProps, SharedIcon } from 'shared'\r\nimport Translations from 'utils/translations'\r\n\r\nexport const ValidatorsPlaceholder: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n }\r\n {...props}\r\n />\r\n )\r\n}\r\nexport default ValidatorsPlaceholder\r\n","import { useChangeLayout } from 'hooks'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { AppSpinner, ErrorPlaceholder, WhiteBoxContainer } from 'shared'\r\nimport { parkCarSlice, validatorsSlice } from 'store/slices/'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { GetValidatorsParams } from 'typedef/validator'\r\nimport Translations from 'utils/translations'\r\nimport { Validators } from '.'\r\nimport ValidatorsPlaceholder from './ValidatorsPlaceholder'\r\n\r\nexport const UpfrontValidationView = () => {\r\n const { t } = useTranslation()\r\n const { push } = useHistory()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const dispatch = useAppDispatch()\r\n const partners = useSelector(validatorsSlice.selectAllValidators)\r\n const status = useSelector(\r\n validatorsSlice.promiseStatusSelectors\r\n ).getValidatorsStatus\r\n\r\n const { lot, pricingPayload, providedPlate, providedSpotNumber } =\r\n useSelector(parkCarSlice.stateSelectors)\r\n\r\n const title = t(Translations.VALIDATE)\r\n\r\n useChangeLayout(\r\n {\r\n layout: {\r\n hasBottomBar: false,\r\n },\r\n topbar: {\r\n title,\r\n onClickBack: () =>\r\n push({\r\n pathname: `${paths.parking.parkCar}/${lot.lotId}`,\r\n state: {\r\n preValidationSettings: pricingPayload,\r\n providedPlate: providedPlate,\r\n providedSpotNumber: providedSpotNumber,\r\n },\r\n }),\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app'\r\n )\r\n\r\n const fetch = React.useCallback(async () => {\r\n if (!lot?.lotId) return\r\n const params: GetValidatorsParams = {\r\n lotId: lot.lotId,\r\n }\r\n const actionResult = await dispatch(validatorsSlice.getValidators(params))\r\n if (validatorsSlice.getValidators.rejected.match(actionResult)) {\r\n if (actionResult.meta.condition) return\r\n enqueueSnackbar(t(Translations.FETCH_RECEIPTS_ERROR))\r\n }\r\n }, [dispatch, enqueueSnackbar, t, lot])\r\n\r\n React.useEffect(() => {\r\n fetch()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n if (!lot?.parkerId) {\r\n push(paths.home.map)\r\n return null\r\n }\r\n\r\n return (\r\n \r\n {status.pending ? (\r\n \r\n ) : (\r\n <>\r\n {status.rejected && }\r\n {status.fulfilled && (\r\n <>\r\n {!!partners.length && (\r\n \r\n )}\r\n {!partners.length && }\r\n \r\n )}\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import { fetchStatusIs } from 'api/utils'\r\nimport { useChangeLayout } from 'hooks'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { AppSpinner, WhiteBoxContainer } from 'shared'\r\nimport { showPopup } from 'store/globalPopup/actions'\r\nimport { RootState } from 'store/rootReducer'\r\nimport { ticketsSlice } from 'store/slices'\r\nimport {\r\n selectSendValidateCodeStatus,\r\n selectValidatorById,\r\n validateCode,\r\n} from 'store/slices/validatorsSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport Translations from 'utils/translations'\r\nimport { ValidateProps } from './types'\r\nimport ValidateTicket from './ValidateTicket'\r\n\r\nexport const Validate: React.FC = props => {\r\n const history = useHistory()\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { carId, couponId } = props.match.params\r\n const partner = useSelector((state: RootState) =>\r\n selectValidatorById(state, couponId)\r\n )\r\n\r\n const { pending } = fetchStatusIs(\r\n useSelector((state: RootState) => selectSendValidateCodeStatus(state))\r\n )\r\n const title = t(Translations.VALIDATE)\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack: () => {\r\n dispatch(ticketsSlice.getTicket({ carId }))\r\n history.push(`${paths.parking.validators}/${carId}`)\r\n },\r\n },\r\n bottomMenu: false,\r\n },\r\n 'app'\r\n )\r\n if (!partner) {\r\n history.push(paths.parking.tickets)\r\n return null\r\n }\r\n const handleSubmit = async (validationCode: string) => {\r\n const actionResult = await dispatch(\r\n validateCode({\r\n carId,\r\n couponId: partner.couponId,\r\n partnerId: partner.partnerId,\r\n validationCode,\r\n })\r\n )\r\n\r\n if (validateCode.rejected.match(actionResult)) {\r\n dispatch(\r\n showPopup({\r\n ...actionResult.payload,\r\n handleAdditionalButtonClick: () => handleSubmit(validationCode),\r\n })\r\n )\r\n } else {\r\n dispatch(ticketsSlice.getTicket({ carId }))\r\n\r\n dispatch(\r\n showPopup({\r\n variant: 'success',\r\n title: `${t(Translations.SUCCESS)}!`,\r\n description: t(Translations.TICKET_HAS_BEEN_VALIDATED),\r\n okButtonClick: () => history.push(paths.parking.tickets),\r\n })\r\n )\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Validate\r\n","import { useChangeLayout } from 'hooks'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { AppSpinner, ErrorPlaceholder, WhiteBoxContainer } from 'shared'\r\nimport { ticketsSlice, validatorsSlice } from 'store/slices/'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { GetValidatorsParams } from 'typedef/validator'\r\nimport Translations from 'utils/translations'\r\nimport { Validators } from '.'\r\nimport { ValidatorsViewProps } from './types'\r\nimport ValidatorsPlaceholder from './ValidatorsPlaceholder'\r\n\r\nconst ValidatorsView: React.FC = props => {\r\n const { t } = useTranslation()\r\n const { push } = useHistory()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const dispatch = useAppDispatch()\r\n const partners = useSelector(validatorsSlice.selectAllValidators)\r\n const status = useSelector(\r\n validatorsSlice.promiseStatusSelectors\r\n ).getValidatorsStatus\r\n\r\n const { carId } = props.match.params\r\n const ticket = useSelector((state: AppState) =>\r\n ticketsSlice.selectById(state, carId)\r\n )\r\n const title = t(Translations.VALIDATE)\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack: () => push(paths.parking.tickets),\r\n },\r\n },\r\n 'app'\r\n )\r\n\r\n const fetch = React.useCallback(async () => {\r\n if (!carId || !ticket?.lot.lotId) return\r\n const params: GetValidatorsParams = {\r\n carId,\r\n lotId: ticket?.lot.lotId,\r\n }\r\n const actionResult = await dispatch(validatorsSlice.getValidators(params))\r\n if (validatorsSlice.getValidators.rejected.match(actionResult)) {\r\n if (actionResult.meta.condition) return\r\n enqueueSnackbar(t(Translations.FETCH_RECEIPTS_ERROR))\r\n }\r\n }, [carId, dispatch, enqueueSnackbar, t, ticket?.lot.lotId])\r\n\r\n React.useEffect(() => {\r\n fetch()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n if (!ticket) {\r\n push(paths.parker.myProfile)\r\n return null\r\n }\r\n\r\n return (\r\n \r\n {status.pending ? (\r\n \r\n ) : (\r\n <>\r\n {status.rejected && }\r\n {status.fulfilled && (\r\n <>\r\n {!!partners.length && (\r\n \r\n )}\r\n {!partners.length && }\r\n \r\n )}\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default ValidatorsView\r\n","import ResetPassword from 'pages/auth/forgot_password/resetPassword/ResetPassword'\r\nimport ForgotPassword from 'pages/auth/forgot_password/sendMail/ForgotPassword'\r\nimport { ForgotPasswordRedirect } from 'pages/auth/forgot_password/sendMail/ForgotPasswordRedirect'\r\nimport Login from 'pages/auth/login/Login'\r\nimport { LoginRedirect } from 'pages/auth/login/LoginRedirect'\r\nimport SignUp from 'pages/auth/signup/SignUp'\r\nimport { SignUpRedirect } from 'pages/auth/signup/SignUpRedirect'\r\nimport { FindCars } from 'pages/find_cars'\r\nimport Map from 'pages/map/MapView'\r\nimport { SendReceipt } from 'pages/my_receipts'\r\nimport { ContactInformationsPage } from 'pages/my_receipts/receiptsAndNotifications/ContactInformationsPage'\r\nimport ReceiptsAndNotificationsPage from 'pages/my_receipts/receiptsAndNotifications/ReceiptsAndNotificationsPage'\r\nimport { Parker } from 'pages/parker'\r\nimport { ParkCar } from 'pages/park_car'\r\nimport AwaitTransactionPage from 'pages/park_car/AwaitTransation'\r\nimport {\r\n AddCreditCard as ParkCarAddCreditCard,\r\n ManageCards as ParkCarManageCards,\r\n SelectCreditCard as ParkCarSelectCreditCard,\r\n} from 'pages/park_car_credit_card/'\r\nimport AddTimeSelectCardPage from 'pages/park_car_credit_card/AddTimeSelectCardPage'\r\nimport { AddTimeSummaryPage, ParkCarSummaryPage } from 'pages/park_car_summary'\r\nimport ParkCarSummarySuccessPage from 'pages/park_car_summary/ParkCarSummarySuccessPage'\r\nimport PcodeSignIn from 'pages/pcode_redirect/PcodeSingIn'\r\nimport { TicketsGuest } from 'pages/tickets'\r\nimport { UpfrontValidate } from 'pages/validators/UpfrontValidate'\r\nimport { UpfrontValidationView } from 'pages/validators/UpfrontValidationView'\r\nimport Validate from 'pages/validators/Validate'\r\nimport ValidatorsView from 'pages/validators/ValidatorsView'\r\nimport * as React from 'react'\r\nimport { Redirect, Route, Switch } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\n\r\nconst SignedInAsGuestRoutes: React.FC = props => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* PARKER */}\r\n \r\n\r\n {/**\r\n * SMS\r\n **/}\r\n \r\n \r\n \r\n\r\n {/**\r\n * ADD TIME\r\n */}\r\n {/* */}\r\n \r\n \r\n \r\n \r\n\r\n {/**\r\n * PARKING\r\n **/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SignedInAsGuestRoutes\r\n","import { ThemeProvider } from '@mui/material/styles'\r\nimport React from 'react'\r\nimport { AppSpinner, PaddingContainer, PageHeading } from 'shared'\r\nimport { whiteTheme } from 'themes'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Translations } from 'utils'\r\nimport { useParams, Redirect } from 'react-router-dom'\r\nimport { useSelector } from 'react-redux'\r\nimport { contactInformationsSlice, parkCarSlice } from 'store/slices'\r\nimport { useParkCar } from 'pages/park_car/ParkCarHooks'\r\nimport { paths } from 'routing'\r\n\r\nexport const LoginRedirectLoader = () => {\r\n const { t } = useTranslation()\r\n const [, , paymentRequired] = useParkCar()\r\n const { paymentRedirectionAvailable } = useSelector(\r\n contactInformationsSlice.stateSelectors\r\n )\r\n const { carId } = useParams<{ carId: string }>()\r\n const { lot } = useSelector(parkCarSlice.stateSelectors)\r\n\r\n const externalLogoUrl = lot ? lot.logoLink : undefined\r\n const title = lot ? lot.lotName : t(Translations.PARKING_MADE_EASY)\r\n\r\n React.useEffect(() => {\r\n const recaptchaToken = sessionStorage.getItem('recaptchaToken');\r\n if (carId && paymentRedirectionAvailable !== null) {\r\n paymentRequired({ carId, paymentRedirectionAvailable }, recaptchaToken)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n if (!carId || paymentRedirectionAvailable === null) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import { Form, Formik } from 'formik'\r\nimport { useChangeLayout } from 'hooks'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport {\r\n AppButton,\r\n AppSnackBarProvider,\r\n AppSpinner,\r\n FlexBox,\r\n Input,\r\n Placeholder,\r\n SharedIcon,\r\n WhiteBoxContainer,\r\n} from 'shared'\r\nimport { showPopup } from 'store/globalPopup/actions'\r\nimport { carsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { licencePlateRegex } from 'utils/regex'\r\nimport { Translations, blurLastInput } from 'utils'\r\nimport * as Yup from 'yup'\r\n\r\ninterface AddCarProps {}\r\n\r\nconst AddCar: React.FunctionComponent = props => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const history = useHistory()\r\n const { addCarStatus } = useSelector(carsSlice.promiseStatusSelectors)\r\n const { enqueueSnackbar } = useSnackbar()\r\n const handleSubmit = async (values: { plate: string; name: string }) => {\r\n const resultAction = await dispatch(\r\n carsSlice.addCar({\r\n name: values.name,\r\n plate: values.plate,\r\n })\r\n )\r\n if (carsSlice.addCar.fulfilled.match(resultAction)) {\r\n dispatch(\r\n showPopup({\r\n title: t(Translations.SUCCESS),\r\n description: t(Translations.THE_CAR_HAS_BEEN_ADDED),\r\n variant: 'success',\r\n okButtonClick: () => history.push(paths.parker.myProfile),\r\n })\r\n )\r\n dispatch(carsSlice.getCars())\r\n }\r\n if (carsSlice.addCar.rejected.match(resultAction)) {\r\n enqueueSnackbar(resultAction.payload.description)\r\n }\r\n }\r\n\r\n const CarInputSchema = Yup.object().shape({\r\n plate: Yup.string()\r\n .required(t(Translations.PLATE_CANNOT_BE_EMPTY))\r\n .matches(\r\n licencePlateRegex,\r\n t(Translations.ONLY_ALPHANUMERIC_CHARACTERS_ARE_ALLOWED)\r\n ),\r\n name: Yup.string(),\r\n })\r\n\r\n return (\r\n \r\n \r\n }\r\n />\r\n\r\n \r\n {({ values, errors, handleBlur, handleChange, validateForm }) => (\r\n
\r\n \r\n {\r\n blurLastInput(e)\r\n }}\r\n data-testid=\"vehicleNameInput\"\r\n />\r\n \r\n {\r\n validateForm().then(errors => {\r\n if (errors) {\r\n const messages = Object.values(errors) as string[]\r\n if (messages.length) {\r\n enqueueSnackbar(messages[0])\r\n }\r\n }\r\n })\r\n }}\r\n >\r\n {t('ADD_NEW_CAR')}\r\n \r\n history.push(paths.parker.myProfile)}\r\n >\r\n {t(Translations.CANCEL)}\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport const AddCarView: React.FC = props => {\r\n const { t } = useTranslation()\r\n const title = t(Translations.ADD_NEW_CAR)\r\n const { push } = useHistory()\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n onClickBack: () => push(paths.parker.myProfile),\r\n title,\r\n },\r\n },\r\n 'app'\r\n )\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default AddCarView\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { fetchStatusIs } from 'api/utils'\r\nimport { Form, Formik, FormikValues } from 'formik'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { AppButton, AppSpinner, FlexBox, WhiteBoxContainer } from 'shared'\r\nimport { showPopup } from 'store/globalPopup/actions'\r\nimport { customerSlice } from 'store/slices'\r\nimport {\r\n editCustomerDetails,\r\n selectEditCustomerDetailsFetchStatus,\r\n} from 'store/slices/customerSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport * as Yup from 'yup'\r\nimport { Input } from '../../shared/Input'\r\nimport { AppState } from '../../store/store'\r\nimport { Translations, blurLastInput } from 'utils'\r\nimport NewPhoneNumberInput from 'shared/PhoneNumberAndCountryCodeInput'\r\n\r\nconst PhoneNumberContainer = styled.div`\r\n display: flex;\r\n margin-bottom: 15px;\r\n`\r\nconst PasswordInput = styled(Input)`\r\n font-size: 50px !important;\r\n`\r\nconst GreyButton = styled(AppButton)`\r\n color: ${_ => _.theme.palette.grey['500']};\r\n`\r\ninterface EditProfileProps {\r\n onClickChangePass: () => void\r\n}\r\n\r\nexport const EditProfile: React.FC = props => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const history = useHistory()\r\n\r\n const details = useSelector((state: AppState) => state.customer.details)\r\n\r\n const { pending } = fetchStatusIs(\r\n useSelector(selectEditCustomerDetailsFetchStatus)\r\n )\r\n\r\n const validationSchema = Yup.object().shape({\r\n firstName: Yup.string().required(t(Translations.FIELD_REQUIRED)),\r\n lastName: Yup.string().required(t(Translations.FIELD_REQUIRED)),\r\n email: Yup.string()\r\n .email(t(Translations.INVALID_EMAIL))\r\n .required(t(Translations.FIELD_REQUIRED)),\r\n })\r\n\r\n const onSubmit = async ({ firstName, lastName, email }: FormikValues) => {\r\n const error = () => {\r\n dispatch(\r\n showPopup({\r\n variant: 'warning',\r\n title: t(Translations.OOPS),\r\n description: `${t(Translations.YOUR_ACCOUNT_CANNOT_BE_SAVE)}. ${t(\r\n Translations.PLEASE_TRY_AGAIN_LATER\r\n )}.`,\r\n okButtonClick: () => undefined,\r\n handleAdditionalButtonClick: () =>\r\n onSubmit({ firstName, lastName, email }),\r\n })\r\n )\r\n }\r\n\r\n const actionResult = await dispatch(\r\n editCustomerDetails({\r\n firstName,\r\n lastName,\r\n email,\r\n })\r\n )\r\n\r\n if (editCustomerDetails.rejected.match(actionResult)) {\r\n error()\r\n }\r\n if (editCustomerDetails.fulfilled.match(actionResult)) {\r\n const res = unwrapResult(actionResult)\r\n if (!res) {\r\n error()\r\n } else {\r\n dispatch(\r\n showPopup({\r\n variant: 'success',\r\n title: t(Translations.SUCCESS),\r\n description: t(\r\n Translations.YOUR_ACCOUNT_HAS_BEEN_SUCCESSFULLY_SAVED\r\n ),\r\n okButtonClick: () => undefined,\r\n })\r\n )\r\n }\r\n }\r\n }\r\n\r\n const onDelete = () => {\r\n dispatch(\r\n showPopup({\r\n title: t(Translations.DELETE_MY_ACCOUNT),\r\n description: t(\r\n Translations.ARE_YOU_SURE_YOU_WANT_TO_REMOVE_YOUR_ACCOUNT\r\n ),\r\n variant: 'delete',\r\n handleAdditionalButtonClick: () => history.push(paths.parker.delete),\r\n })\r\n )\r\n }\r\n React.useEffect(() => {\r\n if (!details) {\r\n dispatch(customerSlice.getCustomerDetails())\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n {details && (\r\n \r\n {({\r\n values,\r\n handleChange,\r\n handleBlur,\r\n handleSubmit,\r\n isValid,\r\n errors,\r\n dirty,\r\n }) => (\r\n
\r\n {\r\n blurLastInput(e)\r\n }}\r\n data-testid=\"firstNameInput\"\r\n />\r\n {\r\n blurLastInput(e)\r\n }}\r\n data-testid=\"lastNameInput\"\r\n />\r\n \r\n \r\n \r\n {\r\n blurLastInput(e)\r\n }}\r\n data-testid=\"emailInput\"\r\n />\r\n \r\n \r\n \r\n {t(Translations.CHANGE_PASSWORD)}\r\n \r\n \r\n \r\n \r\n {t(Translations.SAVE)}\r\n \r\n \r\n {t(Translations.DELETE_MY_ACCOUNT)}\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default EditProfile\r\n","import { useChangeLayout } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport Translations from 'utils/translations'\r\nimport { EditProfile } from './EditProfile'\r\n\r\nexport interface EditProfileViewProps {}\r\n\r\nexport const EditProfileView: React.FC = props => {\r\n const history = useHistory()\r\n const { t } = useTranslation()\r\n const title = t(Translations.EDIT_MY_INFO)\r\n const onClickBack = () => history.push(paths.parker.myProfile)\r\n\r\n useChangeLayout(\r\n {\r\n topbar: {\r\n title,\r\n onClickBack,\r\n },\r\n },\r\n 'app'\r\n )\r\n\r\n const onClickChangePass = () => {\r\n history.push(paths.parker.changePassword)\r\n }\r\n\r\n return \r\n}\r\n\r\nexport default EditProfileView\r\n","import styled from 'styled-components'\r\n\r\nexport const Form = styled.form`\r\n padding: 13.25px;\r\n`\r\n","import { Formik } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n AppButton,\r\n FlexBox,\r\n Input,\r\n PaddingContainer,\r\n PageHeading,\r\n} from 'shared'\r\nimport * as Yup from 'yup'\r\nimport { Form } from '../../shared/styled/typography/Form'\r\nimport Translations from '../../utils/translations'\r\n\r\ninterface ChangePasswordProps {\r\n onClickCancel: () => void\r\n onSubmit: (currentPassword: string, password: string) => void\r\n}\r\n\r\nconst ChangePassword = (props: ChangePasswordProps) => {\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar } = useSnackbar()\r\n\r\n const validationSchema = Yup.object().shape({\r\n currentPassword: Yup.string().required(\r\n t(Translations.CURRENT_PASSWORD_CANNOT_BE_EMPTY)\r\n ),\r\n password: Yup.string()\r\n .required(t(Translations.PASSWORD_CANNOT_BE_EMPTY))\r\n .matches(\r\n /(?=.*[A-Z]{1,})(?=.*[0-9]{1,})(?=.*[^A-Za-z0-9])(?=.*.{8,})/,\r\n t(Translations.MINIMUM_8_CHARACTERS_AT_LEAST_ONE_CAPITAL)\r\n ),\r\n confirmPassword: Yup.string()\r\n .required(t(Translations.CONFIRM_PASSWORD_CANNOT_BE_EMPTY))\r\n .oneOf([Yup.ref('password'), null], t(Translations.PASSWORD_NOT_MATCH)),\r\n })\r\n return (\r\n \r\n \r\n {\r\n props.onSubmit(currentPassword, password)\r\n }}\r\n validateOnChange={false}\r\n validateOnMount={false}\r\n validateOnBlur={false}\r\n >\r\n {({\r\n values,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n handleSubmit,\r\n validateForm,\r\n }) => (\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n handleSubmit()\r\n } else {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.CHANGE)}\r\n \r\n \r\n {t(Translations.CANCEL)}\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default ChangePassword\r\n","import { ThemeProvider } from '@mui/material/styles'\r\nimport { useChangeLayout } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppPopupProvider, AppSnackBarProvider } from 'shared'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { hideLoader, showLoader } from 'store/loader'\r\nimport { customerSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { whiteTheme } from 'themes/white-theme'\r\nimport { Translations } from 'utils'\r\nimport ChangePassword from './ChangePassword'\r\nexport interface ChangePassowrdContainerProps {}\r\n\r\nexport const ChangePassowrdContainer: React.FC =\r\n props => {\r\n const dispatch = useAppDispatch()\r\n const { t } = useTranslation()\r\n const { push } = useHistory()\r\n const { setPopup, showPopup } = usePopup()\r\n const onClickCancel = () => {\r\n push(paths.parker.edit)\r\n }\r\n\r\n const onSubmit = async (password: string, newPassword: string) => {\r\n dispatch(showLoader())\r\n const promise = await dispatch(\r\n customerSlice.changePassword({ password, newPassword })\r\n )\r\n dispatch(hideLoader())\r\n if (customerSlice.changePassword.fulfilled.match(promise)) {\r\n setPopup({\r\n title: t(Translations.SUCCESS),\r\n description: t(Translations.YOUR_PASSWORD_HAS_BEEN_CHANGED),\r\n variant: 'success',\r\n buttons: [{ onClick: () => onClickCancel() }],\r\n })\r\n } else {\r\n setPopup({\r\n ...promise.payload,\r\n buttons: [{ onClick: () => onSubmit(password, newPassword) }, {}],\r\n })\r\n }\r\n showPopup(true)\r\n }\r\n\r\n return \r\n }\r\n\r\nexport const ChangePasswordPage: React.FC = props => {\r\n useChangeLayout()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ChangePasswordPage\r\n","import { unwrapResult } from '@reduxjs/toolkit'\r\nimport { Formik, FormikValues } from 'formik'\r\nimport { useSnackbar } from 'notistack'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport {\r\n AppButton,\r\n AppSpinner,\r\n FlexBox,\r\n Input,\r\n PaddingContainer,\r\n PageHeading,\r\n} from 'shared'\r\nimport { showPopup } from 'store/globalPopup/actions'\r\nimport { customerSlice } from 'store/slices'\r\nimport { deleteAccount } from 'store/slices/customerSlice'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { ErrorCode } from 'typedef/api'\r\nimport * as Yup from 'yup'\r\nimport { Form } from '../../shared/styled/typography/Form'\r\nimport Translations from '../../utils/translations'\r\n\r\ninterface DeleteAccountProps {}\r\n\r\nconst DeleteAccount = (props: DeleteAccountProps) => {\r\n const { t } = useTranslation()\r\n const history = useHistory()\r\n const dispatch = useAppDispatch()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const { pending } = useSelector(\r\n customerSlice.promiseStatusSelectors\r\n ).deleteAccountStatus\r\n\r\n const validationSchema = Yup.object().shape({\r\n password: Yup.string().required(t(Translations.FIELD_REQUIRED)),\r\n })\r\n\r\n const onSubmit = async ({ password }: FormikValues) => {\r\n const errorPopup = () => {\r\n dispatch(\r\n showPopup({\r\n variant: 'warning',\r\n title: t(Translations.OOPS),\r\n description: `${t(\r\n Translations.YOUR_ACCOUNT_CANNOT_BE_DELETED_AT_THE_MOMENT\r\n )}. ${t(Translations.PLEASE_TRY_AGAIN_LATER)}.`,\r\n okButtonClick: () => undefined,\r\n handleAdditionalButtonClick: () => onSubmit({ password }),\r\n })\r\n )\r\n }\r\n\r\n const actionResult = await dispatch(deleteAccount(password))\r\n\r\n if (deleteAccount.rejected.match(actionResult)) {\r\n const error = actionResult.payload.code\r\n if (error === ErrorCode.IncorrectUserOrPassword) {\r\n enqueueSnackbar(t(Translations.INVALID_PASSWORD))\r\n return\r\n }\r\n if (error === ErrorCode.HasParkedCars) {\r\n enqueueSnackbar(t(Translations.HAS_PARKED_CARS))\r\n return\r\n }\r\n errorPopup()\r\n }\r\n if (deleteAccount.fulfilled.match(actionResult)) {\r\n const res = unwrapResult(actionResult)\r\n\r\n if (!res) {\r\n errorPopup()\r\n } else {\r\n dispatch(\r\n showPopup({\r\n variant: 'success',\r\n title: `${t(Translations.SUCCESS)}!`,\r\n description: t(Translations.YOUR_ACCOUNT_HAS_BEEN_DELETED),\r\n okButtonClick: () => history.push(paths.root.root),\r\n })\r\n )\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {({\r\n values,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n handleSubmit,\r\n validateForm,\r\n }) => (\r\n
\r\n \r\n \r\n {\r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length !== 0) {\r\n entries.forEach(el => {\r\n enqueueSnackbar(el[1])\r\n })\r\n }\r\n })\r\n }}\r\n >\r\n {t(Translations.DELETE)}\r\n \r\n {\r\n history.push(paths.parker.edit)\r\n }}\r\n >\r\n {t(Translations.CANCEL)}\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DeleteAccount\r\n","import { ThemeProvider } from '@mui/material/styles'\r\n\r\nimport { useChangeLayout } from 'hooks'\r\nimport React from 'react'\r\nimport { whiteTheme } from 'themes/white-theme'\r\nimport DeleteAccount from './DeleteAccount'\r\n\r\nexport interface DeleteAccountViewProps {}\r\n\r\nexport const DeleteAccountView: React.FC = props => {\r\n useChangeLayout()\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default DeleteAccountView\r\n","import { ThemeProvider } from '@mui/material/styles'\r\nimport { Form, Formik } from 'formik'\r\nimport { useChangeLayout } from 'hooks'\r\nimport { useSnackbar } from 'notistack'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, useHistory, useParams } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport {\r\n AppButton,\r\n AppSnackBarProvider,\r\n AppSpinner,\r\n FlexBox,\r\n Input,\r\n PaddingContainer,\r\n PageHeading,\r\n} from 'shared'\r\nimport PopupProvider, { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport TextArea from 'shared/TextArea'\r\nimport { receiptsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport { whiteTheme } from 'themes'\r\nimport Translations from 'utils/translations'\r\nimport * as Yup from 'yup'\r\nexport interface QuestionProps {\r\n carId: string\r\n}\r\n\r\nexport const Question: React.FC = ({ carId }) => {\r\n const dispatch = useAppDispatch()\r\n const history = useHistory()\r\n const { t } = useTranslation()\r\n const { enqueueSnackbar } = useSnackbar()\r\n const { setPopup, showPopup } = usePopup()\r\n const { sendQuestionStatus } = useSelector((state: AppState) =>\r\n receiptsSlice.promiseStatusSelectors(state, carId)\r\n )\r\n const receipt = useSelector((state: AppState) =>\r\n receiptsSlice.selectReceiptById(state, carId)\r\n )\r\n\r\n const QuestionSchema = Yup.object().shape({\r\n email: Yup.string()\r\n .email(t(Translations.INVALID_EMAIL))\r\n .required(t(Translations.EMAIL_CANNOT_BE_EMPTY)),\r\n message: Yup.string()\r\n .required(t(Translations.QUESTION_CANNOT_BE_EMPTY))\r\n .test('message', t(Translations.QUESTION_CANNOT_BE_EMPTY), (val: any) => {\r\n if (!val) return false\r\n if (val.trim().length < 3) return false\r\n return true\r\n }),\r\n })\r\n const handleSubmit = async (values: { email: string; message: string }) => {\r\n const promise = await dispatch(\r\n receiptsSlice.sendQuestion({\r\n email: values.email,\r\n message: values.message.trim(),\r\n carId,\r\n })\r\n )\r\n if (receiptsSlice.sendQuestion.rejected.match(promise)) {\r\n setPopup({\r\n ...promise.payload,\r\n buttons: [\r\n {\r\n onClick() {\r\n handleSubmit(values)\r\n showPopup(false)\r\n },\r\n },\r\n {},\r\n ],\r\n })\r\n showPopup(true)\r\n } else {\r\n setPopup({\r\n variant: 'success',\r\n title: t(Translations.SUCCESS),\r\n description: t(Translations.YOUR_QUESTION_HAS_BEEN_SENT),\r\n buttons: [\r\n {\r\n onClick() {\r\n history.push(paths.parker.myReceipts)\r\n },\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n }\r\n }\r\n\r\n return (\r\n \r\n {({ values, errors, handleChange, validateForm, submitForm }) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n validateForm().then(errors => {\r\n const entries = Object.entries(errors)\r\n if (entries.length === 0) {\r\n submitForm()\r\n } else {\r\n enqueueSnackbar(entries[0][1])\r\n }\r\n })\r\n }\r\n disabled={sendQuestionStatus.pending}\r\n data-testid=\"sendQuestion\"\r\n >\r\n {t(Translations.SEND)}\r\n \r\n history.push(paths.parker.myReceipts)}\r\n data-testid=\"cancel\"\r\n >\r\n {t(Translations.CANCEL)}\r\n \r\n \r\n \r\n )\r\n }}\r\n \r\n )\r\n}\r\n\r\nexport const QuestionPage: React.FC = props => {\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n const { carId } = useParams<{ carId: string }>()\r\n const { sendQuestionStatus } = useSelector((state: AppState) =>\r\n receiptsSlice.promiseStatusSelectors(state, carId)\r\n )\r\n const receipt = useSelector((state: AppState) =>\r\n receiptsSlice.selectReceiptById(state, carId)\r\n )\r\n useChangeLayout({\r\n layout: { hasTopBar: true },\r\n topbar: {\r\n transparent: true,\r\n onClickBack: () => push(paths.parker.myReceipts),\r\n },\r\n })\r\n\r\n if (!carId || !receipt) {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default QuestionPage\r\n","import { LoginRedirectLoader } from 'pages/auth/login/LoginRedirectLoader'\r\nimport { SignUp } from 'pages/auth/signup'\r\nimport Map from 'pages/map/MapView'\r\nimport AddCar from 'pages/my_cars/AddCar'\r\nimport {\r\n ChangePasswordView,\r\n DeleteAccountView,\r\n EditProfileView,\r\n} from 'pages/my_profile'\r\nimport { MyReceiptsView, SendReceipt } from 'pages/my_receipts'\r\nimport { ContactInformationsPage } from 'pages/my_receipts/receiptsAndNotifications/ContactInformationsPage'\r\nimport ReceiptsAndNotificationsPage from 'pages/my_receipts/receiptsAndNotifications/ReceiptsAndNotificationsPage'\r\nimport { Parker } from 'pages/parker'\r\nimport { ParkCar } from 'pages/park_car'\r\nimport AwaitTransactionPage from 'pages/park_car/AwaitTransation'\r\nimport {\r\n AddCreditCard,\r\n AddCreditCard as ParkCarAddCreditCard,\r\n ManageCards as ParkCarManageCards,\r\n SelectCreditCard as ParkCarSelectCreditCard,\r\n} from 'pages/park_car_credit_card/'\r\nimport { AddTimeSelectCardPage } from 'pages/park_car_credit_card/AddTimeSelectCardPage'\r\nimport { AddTimeSummaryPage, ParkCarSummaryPage } from 'pages/park_car_summary'\r\nimport ParkCarSummarySuccessPage from 'pages/park_car_summary/ParkCarSummarySuccessPage'\r\nimport PcodeSignIn from 'pages/pcode_redirect/PcodeSingIn'\r\nimport Question from 'pages/question/Question'\r\nimport { Tickets } from 'pages/tickets'\r\nimport { UpfrontValidate } from 'pages/validators/UpfrontValidate'\r\nimport { UpfrontValidationView } from 'pages/validators/UpfrontValidationView'\r\nimport Validate from 'pages/validators/Validate'\r\nimport ValidatorsView from 'pages/validators/ValidatorsView'\r\nimport * as React from 'react'\r\nimport { Redirect, Route, Switch, useLocation } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\n\r\ninterface SignedInRoutesProps {}\r\n\r\nconst SignedInRoutes = (props: SignedInRoutesProps) => {\r\n const location = useLocation()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* add card on singup (need to be logged in) */}\r\n \r\n\r\n {/**\r\n * PARKING\r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**\r\n * ADD TIME\r\n */}\r\n \r\n \r\n \r\n \r\n \r\n {/**\r\n * SMS\r\n **/}\r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SignedInRoutes\r\n","import { ThemeProvider } from '@mui/material/styles'\r\nimport ResetPassword from 'pages/auth/forgot_password/resetPassword/ResetPassword'\r\nimport ForgotPassword from 'pages/auth/forgot_password/sendMail/ForgotPassword'\r\nimport Login from 'pages/auth/login/Login'\r\nimport SignUp from 'pages/auth/signup/SignUp'\r\nimport * as React from 'react'\r\nimport { Redirect, Route, Switch } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { whiteTheme } from 'themes'\r\ninterface SignedOutRoutesProps {}\r\n\r\nconst WhiteThemeRoutes = (props: SignedOutRoutesProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\nconst SignedOutRoutes = (props: SignedOutRoutesProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SignedOutRoutes\r\n","import { ThemeProvider } from '@mui/material/styles'\r\n\r\nimport { unwrapResult } from '@reduxjs/toolkit'\r\nimport { useChangeLayout } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSpinner, PaddingContainer, PageHeading } from 'shared'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { customerSlice, parkCarSlice, ticketsSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { whiteTheme } from 'themes'\r\nimport { ErrorCode } from 'typedef'\r\nimport { Translations } from 'utils'\r\n\r\nexport interface ParkCarProps {}\r\n\r\nexport const ParkCarSmsPage: React.FC = props => {\r\n const [loading, setLoading] = React.useState(false)\r\n const dispatch = useAppDispatch()\r\n const { setPopup, showPopup } = usePopup()\r\n useChangeLayout()\r\n const { t } = useTranslation()\r\n const { push, location } = useHistory()\r\n const { token } = useParams<{ token: string }>()\r\n\r\n const fetchTicket = async (carId: string) => {\r\n setLoading(true)\r\n const promise = await dispatch(ticketsSlice.getTicket({ carId }))\r\n if (ticketsSlice.getTicket.fulfilled.match(promise)) {\r\n dispatch(\r\n ticketsSlice.actions.setSelectedTicket({\r\n ticketId: carId,\r\n })\r\n )\r\n\r\n const addMoreTime = location.pathname.match(new RegExp(paths.sms.addTime))\r\n\r\n addMoreTime\r\n ? push(`${paths.parking.addTime}/${carId}`)\r\n : push(paths.parking.tickets)\r\n } else {\r\n setLoading(false)\r\n setPopup({\r\n ...promise.payload,\r\n disableBackdropClick: true,\r\n buttons: [\r\n { onClick: () => fetchTicket(carId) },\r\n {\r\n onClick: () => {\r\n dispatch(customerSlice.actions.destroySession())\r\n push(paths.auth.login)\r\n },\r\n text: t(Translations.BACK_TO_LOGIN),\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n }\r\n }\r\n const fetchLot = React.useCallback(async () => {\r\n setLoading(true)\r\n const promise = await dispatch(parkCarSlice.getLotDetailsPark({ token }))\r\n if (parkCarSlice.getLotDetailsPark.fulfilled.match(promise)) {\r\n const res = unwrapResult(promise)\r\n if (res.carId) {\r\n fetchTicket(res.carId)\r\n } else {\r\n if (res.redirectUrl) {\r\n window.location.href = res.redirectUrl\r\n } else push(`${paths.parking.parkCar}/${res.lotId}`)\r\n }\r\n } else {\r\n setLoading(false)\r\n setPopup({\r\n ...promise.payload,\r\n disableBackdropClick: true,\r\n buttons: [\r\n promise.payload.code === ErrorCode.TokenExpired\r\n ? undefined\r\n : { onClick: () => fetchLot() },\r\n {\r\n onClick: () => {\r\n dispatch(customerSlice.actions.destroySession())\r\n push(paths.auth.login)\r\n },\r\n text: t(Translations.BACK_TO_LOGIN),\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch, token, push])\r\n\r\n React.useEffect(() => {\r\n fetchLot()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dispatch])\r\n\r\n return (\r\n \r\n \r\n \r\n {loading && }\r\n \r\n \r\n )\r\n}\r\nexport default ParkCarSmsPage\r\n","import { ThemeProvider } from '@mui/material/styles'\r\n\r\nimport { unwrapResult } from '@reduxjs/toolkit'\r\nimport { useTokenValidation } from 'hooks'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { AppSpinner, PaddingContainer, PageHeading } from 'shared'\r\nimport { usePopup } from 'shared/popup_provider/AppPopupProvider'\r\nimport { customerSlice, layoutSlice, mapSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { whiteTheme } from 'themes'\r\nimport Translations from 'utils/translations'\r\n\r\nexport interface MapSmsPageProps {}\r\n\r\nexport const MapSmsPage: React.FC = props => {\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n const [loading, setLoading] = React.useState(false)\r\n const { t } = useTranslation()\r\n const history = useHistory()\r\n const { token } = useParams<{ token: string }>()\r\n const { setPopup, showPopup } = usePopup()\r\n const { myPosition, position, geoState } = useSelector(\r\n mapSlice.stateSelectors\r\n )\r\n const effectedRef = React.useRef(false)\r\n const isCorporation = history.location.pathname.match(\r\n new RegExp(`^${paths.sms.corp}.*`)\r\n )\r\n const validToken = useTokenValidation()\r\n const { refreshToken } = customerSlice\r\n const { setLoader } = layoutSlice.actions\r\n\r\n const fetchLots = async () => {\r\n await trySignIn()\r\n effectedRef.current = true\r\n setLoading(true)\r\n showPopup(false)\r\n const promise = await dispatch(\r\n mapSlice.getLots({\r\n northEastBoundLat: position.lat + 0.033,\r\n northEastBoundLng: position.lng - 0.033,\r\n southWestBoundLat: position.lat - 0.033,\r\n southWestBoundLng: position.lng + 0.033,\r\n token,\r\n })\r\n )\r\n if (mapSlice.getLots.rejected.match(promise)) {\r\n setLoading(false)\r\n setPopup({\r\n ...promise.payload,\r\n disableBackdropClick: true,\r\n buttons: [\r\n { onClick: () => fetchLots() },\r\n {\r\n onClick: () => {\r\n dispatch(customerSlice.actions.destroySession())\r\n push(paths.auth.login)\r\n },\r\n text: t(Translations.BACK_TO_LOGIN),\r\n },\r\n ],\r\n })\r\n showPopup(true)\r\n } else {\r\n const res = unwrapResult(promise)\r\n if (isCorporation && res.lots.length && geoState !== 'granted') {\r\n await dispatch(mapSlice.getLotDetailsMap({ lotId: res.lots[0].lotId }))\r\n dispatch(\r\n mapSlice.actions.selectLot({\r\n lotId: res.lots[0]?.lotId,\r\n position: true,\r\n })\r\n )\r\n dispatch(mapSlice.actions.setZoom(1))\r\n } else if (\r\n isCorporation &&\r\n res.lots.length &&\r\n geoState === 'granted' &&\r\n myPosition\r\n ) {\r\n dispatch(mapSlice.actions.focusMapOnMyLocation())\r\n dispatch(mapSlice.actions.setZoom(12))\r\n }\r\n setLoading(false)\r\n push(paths.home.map)\r\n }\r\n }\r\n\r\n const trySignIn = async () => {\r\n if (validToken) {\r\n dispatch(setLoader(true))\r\n await dispatch(refreshToken({ token: validToken.refresh }))\r\n dispatch(setLoader(false))\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n if (geoState && !effectedRef.current) {\r\n if (geoState === 'granted' && myPosition) {\r\n fetchLots()\r\n }\r\n if (geoState !== 'granted') {\r\n fetchLots()\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [geoState, myPosition])\r\n React.useEffect(() => {\r\n if (isCorporation) {\r\n dispatch(customerSlice.actions.setCorporationToken(token))\r\n }\r\n setLoading(true)\r\n const timer = setTimeout(() => {\r\n if (!effectedRef.current) {\r\n fetchLots()\r\n }\r\n }, 5000)\r\n return () => clearTimeout(timer)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n return (\r\n \r\n \r\n \r\n {loading && }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default MapSmsPage\r\n","import { ThemeProvider } from '@mui/material/styles'\r\nimport React from 'react'\r\nimport { useHistory, useParams } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { layoutSlice } from 'store/slices'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { refreshToken } from 'store/slices/customerSlice'\r\nimport { useTokenValidation } from 'hooks'\r\nimport { AppSpinner, PaddingContainer, PageHeading } from 'shared'\r\nimport { whiteTheme } from 'themes'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Translations } from 'utils'\r\n\r\nexport const LandingPageRedirect = () => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { push } = useHistory()\r\n\r\n const { setLoader } = layoutSlice.actions\r\n const { lotId } = useParams<{ lotId: string }>()\r\n\r\n const validToken = useTokenValidation()\r\n const trySignIn = async () => {\r\n if (validToken) {\r\n dispatch(setLoader(true))\r\n await dispatch(refreshToken({ token: validToken.refresh }))\r\n dispatch(setLoader(false))\r\n }\r\n }\r\n\r\n const redirectFromLandinPage = async () => {\r\n await trySignIn()\r\n push(`${paths.parking.parkCar}/${lotId}`)\r\n }\r\n\r\n React.useEffect(() => {\r\n redirectFromLandinPage()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { Redirect, Route, Switch } from 'react-router-dom'\r\nimport paths from 'routing/paths'\r\nimport { AppBottomNavigation, FullLayout, Topbar, Ad } from 'shared'\r\nimport { selectCustomerStatus } from 'store/slices/customerSlice'\r\nimport * as layoutSlice from 'store/slices/layoutSlice'\r\nimport SignedInAsGuestRoutes from './SignedInAsGuestRoutes'\r\nimport SignedInRoutes from './SignedInRoutes'\r\nimport SignedOutRoutes from './SignedOutRoutes'\r\nimport ParkCarSms from 'pages/park_car/ParkCarSmsPage'\r\nimport MapSmsPage from 'pages/map/MapSmsPage'\r\nimport PcodeSignIn from 'pages/pcode_redirect/PcodeSingIn'\r\nimport { LandingPageRedirect } from 'pages/landing_page_redirect/LandingPageRedirect'\r\nconst Root: React.FC = props =>
ROOT VIEW
\r\n\r\nconst AppRoutes: React.FC = (props: any) => {\r\n const { customerSignedIn, customerSignedInAsGuest, customerSignedOut } =\r\n useSelector(selectCustomerStatus)\r\n const { bottomMenu, layout, topbar } = useSelector(layoutSlice.stateSelectors)\r\n return (\r\n <>\r\n \r\n {topbar && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {customerSignedOut && (\r\n \r\n )}\r\n {customerSignedIn && (\r\n \r\n )}\r\n {customerSignedInAsGuest && (\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n \r\n {layout.ad && }\r\n \r\n {bottomMenu && }\r\n \r\n )\r\n}\r\n\r\nexport default AppRoutes\r\n","export enum LogSource {\r\n WebApp = 1,\r\n iOS = 2,\r\n Android = 3,\r\n}\r\nexport enum LogType {\r\n Information = 1,\r\n Warning = 2,\r\n Error = 3,\r\n}\r\n\r\nexport interface LogActionRequest {\r\n logMessage: string\r\n logSource: LogSource\r\n deviceInfo: string\r\n logType?: LogType /**default Information */\r\n}\r\n","import { logAction } from 'api/LogApi'\r\nimport React from 'react'\r\nimport { ErrorBoundary } from 'react-error-boundary'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { paths } from 'routing'\r\nimport { ErrorPlaceholder, FullLayout, Topbar, WhiteBoxContainer } from 'shared'\r\nimport { LogSource, LogType } from 'typedef/log'\r\nimport { Translations } from 'utils'\r\n\r\nconst getDeviceInfo = () => {\r\n const navUserAgent = navigator.userAgent\r\n let browserName = navigator.appName\r\n let browserVersion = '' + parseFloat(navigator.appVersion)\r\n let tempNameOffset, tempVersionOffset, tempVersion\r\n\r\n if ((tempVersionOffset = navUserAgent.indexOf('Opera')) !== -1) {\r\n browserName = 'Opera'\r\n browserVersion = navUserAgent.substring(tempVersionOffset + 6)\r\n if ((tempVersionOffset = navUserAgent.indexOf('Version')) !== -1)\r\n browserVersion = navUserAgent.substring(tempVersionOffset + 8)\r\n } else if ((tempVersionOffset = navUserAgent.indexOf('MSIE')) !== -1) {\r\n browserName = 'Microsoft Internet Explorer'\r\n browserVersion = navUserAgent.substring(tempVersionOffset + 5)\r\n } else if ((tempVersionOffset = navUserAgent.indexOf('Chrome')) !== -1) {\r\n browserName = 'Chrome'\r\n browserVersion = navUserAgent.substring(tempVersionOffset + 7)\r\n } else if ((tempVersionOffset = navUserAgent.indexOf('Safari')) !== -1) {\r\n browserName = 'Safari'\r\n browserVersion = navUserAgent.substring(tempVersionOffset + 7)\r\n if ((tempVersionOffset = navUserAgent.indexOf('Version')) !== -1)\r\n browserVersion = navUserAgent.substring(tempVersionOffset + 8)\r\n } else if ((tempVersionOffset = navUserAgent.indexOf('Firefox')) !== -1) {\r\n browserName = 'Firefox'\r\n browserVersion = navUserAgent.substring(tempVersionOffset + 8)\r\n } else if (\r\n (tempNameOffset = navUserAgent.lastIndexOf(' ') + 1) <\r\n (tempVersionOffset = navUserAgent.lastIndexOf('/'))\r\n ) {\r\n browserName = navUserAgent.substring(tempNameOffset, tempVersionOffset)\r\n browserVersion = navUserAgent.substring(tempVersionOffset + 1)\r\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\r\n browserName = navigator.appName\r\n }\r\n }\r\n\r\n // trim version\r\n if ((tempVersion = browserVersion.indexOf(';')) !== -1)\r\n browserVersion = browserVersion.substring(0, tempVersion)\r\n if ((tempVersion = browserVersion.indexOf(' ')) !== -1)\r\n browserVersion = browserVersion.substring(0, tempVersion)\r\n return { browserName, browserVersion, appVersion: navigator.appVersion }\r\n}\r\n\r\nexport interface FallbackComponentProps {\r\n resetErrorBoundary: () => void\r\n}\r\n\r\nexport const FallbackComponent: React.FC = props => {\r\n const { push } = useHistory()\r\n const { t } = useTranslation()\r\n\r\n return (\r\n <>\r\n undefined}\r\n title={t(Translations.APPLICATION_CRASHED)}\r\n hasGoBack={false}\r\n />\r\n\r\n \r\n \r\n {\r\n props.resetErrorBoundary()\r\n push(paths.root.root)\r\n }}\r\n />\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const ErrorsWrapper: React.FC = props => {\r\n const { location } = useHistory()\r\n // const { t } = useTranslation()\r\n const onError = (err: Error) => {\r\n const { appVersion, browserName, browserVersion } = getDeviceInfo()\r\n const deviceInfo = `${browserName} ${browserVersion}`\r\n const { message, name, stack } = err\r\n const logMessage = JSON.stringify({\r\n appVersion,\r\n path: location.pathname,\r\n name,\r\n message,\r\n stack,\r\n })\r\n\r\n if (process.env.NODE_ENV === 'development') return\r\n logAction({\r\n deviceInfo,\r\n logMessage,\r\n logSource: LogSource.WebApp,\r\n logType: LogType.Warning,\r\n })\r\n }\r\n\r\n return (\r\n {\r\n return \r\n }}\r\n onReset={() => {\r\n // reset the state of your app so the error doesn't happen again\r\n }}\r\n >\r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default ErrorsWrapper\r\n","import axios from 'api'\r\nimport { Response } from 'typedef/api'\r\nimport { LogActionRequest } from 'typedef/log'\r\nimport { LOG } from './constants'\r\n\r\nexport const logAction = async (params: LogActionRequest) => {\r\n try {\r\n const response = await axios.post>(LOG, params)\r\n return response.data.data\r\n } catch (err) {\r\n throw err\r\n }\r\n}\r\n","import { ThemeProvider } from '@mui/material/styles'\r\n\r\nimport Interweave, { Node } from 'interweave'\r\nimport * as React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n AppSpinner,\r\n AppTypography,\r\n FlexBox,\r\n FullLayout,\r\n PaddingContainer,\r\n PageDialog,\r\n PageHeading,\r\n SharedIcon,\r\n Topbar,\r\n} from 'shared'\r\nimport { closeTerms } from 'store/globalPopup/actions'\r\nimport { termsSlice } from 'store/slices'\r\nimport { AppState, useAppDispatch } from 'store/store'\r\nimport styled from 'styled-components'\r\nimport { whiteTheme } from 'themes'\r\nimport Translations from '../../../utils/translations'\r\n\r\nconst StyledFlexBox = styled(FlexBox)`\r\n text-align: left;\r\n .headerLocal {\r\n font-weight: bold;\r\n }\r\n`\r\nconst LogoContainer = styled.div`\r\n background: #fff;\r\n border-radius: 14px;\r\n margin: auto;\r\n padding: 20px 10px;\r\n box-sizing: border-box;\r\n max-height: 150px;\r\n width: max-content;\r\n min-width: 220px;\r\n img {\r\n height: 100%;\r\n width: auto;\r\n box-sizing: border-box;\r\n max-width: 100%;\r\n max-height: 110px;\r\n }\r\n`\r\n\r\ninterface TermsAndConditionsProps {}\r\n\r\nfunction transform(node: HTMLElement, children: Node[]): React.ReactNode {\r\n if (node.tagName === 'B' || node.tagName === 'STRONG') {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n }\r\n if (node.tagName === 'P') {\r\n return {children}\r\n }\r\n}\r\n\r\nconst TermsAndConditions = (props: TermsAndConditionsProps) => {\r\n const { t } = useTranslation()\r\n const dispatch = useAppDispatch()\r\n const { terms, logoLink } = useSelector(termsSlice.stateSelectors)\r\n const { pending } = useSelector(\r\n termsSlice.promiseStatusSelectors\r\n ).getTermstatus\r\n const [imageError, setImageError] = React.useState(false)\r\n\r\n const content = () => {\r\n if (!terms?.text) return ''\r\n return terms?.text\r\n }\r\n const renderStandardHeading = () => (\r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n\r\n const renderLotHeading = () => (\r\n \r\n \r\n setImageError(true)} alt=\"logo\" />\r\n \r\n \r\n )\r\n\r\n React.useEffect(\r\n () => () => {\r\n dispatch(termsSlice.actions.setLogoLink(''))\r\n },\r\n [dispatch]\r\n )\r\n\r\n return (\r\n \r\n dispatch(closeTerms())} transparent />\r\n \r\n \r\n {!imageError ? renderLotHeading() : renderStandardHeading()}\r\n \r\n \r\n \r\n {pending ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst TermsDialog = () => {\r\n const showTerms = useSelector((state: AppState) => state.popup.showTerms)\r\n const dispatch = useAppDispatch()\r\n window.onkeydown = function (e: any) {\r\n if (e.keyCode == 8 && showTerms) {\r\n e.preventDefault()\r\n dispatch(closeTerms())\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default TermsDialog\r\n","import * as React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { Popup, PopupProps } from 'shared'\r\nimport { AppState } from '../../store/store'\r\n\r\ninterface GlobalPopupProps {\r\n popupProps: PopupProps\r\n}\r\n\r\nconst GlobalPopup: React.FunctionComponent = props => {\r\n return \r\n}\r\n\r\nconst mapStateToProps = (state: AppState): GlobalPopupProps => ({\r\n popupProps: { ...state.popup.popup, open: state.popup.show },\r\n})\r\n\r\nexport default connect(mapStateToProps, {})(GlobalPopup)\r\n","import * as React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { CSSTransition } from 'react-transition-group'\r\nimport { SharedIcon } from 'shared'\r\nimport { layoutSlice } from 'store/slices'\r\nimport styled, { keyframes } from 'styled-components'\r\nimport { AppState } from '../../store/store'\r\n\r\nconst jump = keyframes`\r\n from { transform: translateY( -25%) ; }\r\n 50% { transform: translateY( 50%) ; }\r\n to { transform: translateY( -25%) ; }\r\n}`\r\n\r\nconst LoaderContainer = styled.div`\r\n position: fixed;\r\n z-index: 5;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n`\r\nconst SvgContainer = styled.div`\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform-origin: center center;\r\n transform: translate(-15px, -50%);\r\n svg {\r\n animation: ${jump} 1.2s infinite;\r\n }\r\n`\r\n\r\nconst Loader = () => {\r\n const { show } = useSelector((state: AppState) => state.loader)\r\n const { loader } = useSelector(layoutSlice.stateSelectors)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Loader\r\n","import React, { useEffect, useState } from 'react'\r\nimport { TIME_TO_LOGOUT } from '../../../src/api/config'\r\n\r\ninterface TimerProps { \r\n automaticLogout: () => void\r\n}\r\n\r\nconst Timer = ({ automaticLogout }: TimerProps) => {\r\n const [remainingTime, setRemainingTime] = useState(TIME_TO_LOGOUT)\r\n\r\n useEffect(() => {\r\n const timerId = setInterval(() => {\r\n setRemainingTime(prevTime => (prevTime > 0 ? prevTime - 1 : 0));\r\n }, 1000);\r\n\r\n return () => clearInterval(timerId);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const resetTimer = () => setRemainingTime(TIME_TO_LOGOUT);\r\n \r\n window.addEventListener('mousedown', resetTimer);\r\n window.addEventListener('keydown', resetTimer);\r\n\r\n return () => {\r\n window.removeEventListener('mousedown', resetTimer);\r\n window.removeEventListener('keydown', resetTimer);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if(remainingTime == 0){\r\n automaticLogout();\r\n }\r\n \r\n }, [remainingTime, automaticLogout]);\r\n\r\n const formatTime = (time: number) => {\r\n const minutes = Math.floor(time / 60)\r\n const seconds = time - minutes * 60\r\n const formattedMinutes = minutes < 10 ? '0' + minutes : minutes\r\n const formattedSeconds = seconds < 10 ? '0' + seconds : seconds\r\n return `${formattedMinutes}:${formattedSeconds}`\r\n }\r\n\r\n return (\r\n
{formatTime(remainingTime)}
\r\n )\r\n}\r\n\r\nexport default Timer\r\n","import React from 'react'\r\nimport Timer from './Timer'\r\nimport { useAppDispatch } from 'store/store'\r\nimport { useSelector } from 'react-redux'\r\nimport { customerSlice } from 'store/slices'\r\n\r\n\r\nexport interface AutoLogoutProps {\r\n children: React.ReactNode\r\n}\r\n\r\nconst AutoLogout = ({ children }: AutoLogoutProps) => { \r\n const dispatch = useAppDispatch()\r\n const { role } = useSelector(customerSlice.stateSelectors)\r\n\r\n const automaticLogout = () => {\r\n dispatch(customerSlice.actions.destroySession())\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n {role === 1 && ( \r\n \r\n )}\r\n
\r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport default AutoLogout\r\n","import {\r\n ThemeProvider as MuiThemeProvider,\r\n StyledEngineProvider,\r\n} from '@mui/material/styles'\r\nimport AdapterMoment from '@mui/lab/AdapterMoment'\r\nimport LocalizationProvider from '@mui/lab/LocalizationProvider'\r\nimport ErrorsWrapper from 'ErrorsWrapper'\r\nimport { useDebugRouter, useGeolocation, useRefreshSession } from 'hooks'\r\nimport React from 'react'\r\nimport { RouteComponentProps } from 'react-router-dom'\r\nimport AppRoutes from 'routing/AppRoutes'\r\nimport { AppPopupProvider, AppSnackBarProvider } from 'shared'\r\nimport { CounterProvider } from 'shared/CounterProvider/CounterProvider'\r\nimport { ThemeProvider as StyledThemeProvider } from 'styled-components'\r\nimport { GlobalStyle, theme } from 'themes'\r\nimport TermsAndConditions from './pages/auth/terms_and_conditions/TermsAndConditions'\r\nimport GlobalPopup from './pages/global_popup/GlobalPopup'\r\nimport './reset.css'\r\nimport Loader from './shared/loader/Loader'\r\nimport i18n from 'i18n'\r\nimport moment from 'moment'\r\nimport 'moment/locale/es'\r\nimport { useTranslation } from 'react-i18next'\r\nimport AutoLogout from '../src/shared/autoLogout/AutoLogout'\r\nimport { GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';\r\nimport { CAPTCHA_V3_KEY } from 'api/config'\r\n\r\nconst App: React.FC = props => {\r\n const [initLocation] = React.useState(props.location.pathname)\r\n const { turnOnGeo } = useGeolocation()\r\n const { t } = useTranslation()\r\n useRefreshSession(initLocation)\r\n useDebugRouter()\r\n React.useEffect(() => {\r\n turnOnGeo()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [t])\r\n React.useEffect(() => {\r\n moment.locale(i18n.resolvedLanguage)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [i18n.resolvedLanguage])\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default App\r\n","export const isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n)\r\n","import { isLocalhost } from './utils/env'\r\n\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void\r\n}\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\r\n window.location.href\r\n )\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config)\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n )\r\n })\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config)\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing\r\n if (installingWorker == null) {\r\n return\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n )\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration)\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n // eslint-disable-next-line no-console\r\n console.log('Content is cached for offline use.')\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error)\r\n })\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type')\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload()\r\n })\r\n })\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config)\r\n }\r\n })\r\n .catch(() => {\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n )\r\n })\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister()\r\n })\r\n }\r\n}\r\n","import { createBrowserHistory } from 'history'\r\n\r\nexport const history = createBrowserHistory()\r\nlet lastLocation: any = null\r\nhistory.listen(location => {\r\n lastLocation = location\r\n})\r\n\r\n// monkey patching to prevent pushing same url into history stack\r\nconst prevHistoryPush = history.push\r\nhistory.push = (pathname: string, state = {}) => {\r\n if (\r\n lastLocation === null ||\r\n pathname !==\r\n lastLocation.pathname + lastLocation.search + lastLocation.hash ||\r\n JSON.stringify(state) !== JSON.stringify(lastLocation.state)\r\n ) {\r\n prevHistoryPush(pathname, state)\r\n }\r\n}\r\n\r\nexport default history\r\n","/* eslint-disable no-console */\r\nimport withClearCache from 'ClearCache'\r\nimport React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport 'api/axios'\r\nimport './i18n'\r\nimport { Provider } from 'react-redux'\r\nimport { Route, Router } from 'react-router-dom'\r\nimport { store } from 'store'\r\nimport App from './App'\r\nimport * as serviceWorker from './serviceWorker'\r\nimport { isLocalhost } from './utils/env'\r\nimport history from './historyListener'\r\nimport '@mui/material'\r\n// import { worker } from 'mocks/browser'\r\n\r\nconst ClearCacheComponent = withClearCache(App)\r\n\r\n// MSV - to enable intercept requests start msw worker below\r\n// Execute the init command of the Mock Service Worker CLI:\r\n// $ npx msw init public/ --save\r\n// to create mockCerviceWorker.js file\r\n\r\n// if (process.env.NODE_ENV === 'development') {\r\n// worker.start()\r\n// }\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n)\r\n// })\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.register({\r\n onSuccess: (registration: ServiceWorkerRegistration) => {\r\n if (isLocalhost) {\r\n console.log('Service worker registered.')\r\n console.log(registration)\r\n }\r\n },\r\n onUpdate: (registration: ServiceWorkerRegistration) => {\r\n if (isLocalhost) {\r\n console.log('Service worker updated.')\r\n console.log(registration)\r\n }\r\n },\r\n})\r\n"],"sourceRoot":""}