{"version":3,"sources":["assets/images/logo/OLI_WRD_4C_LTBG.png","views/apps/booking/components/BookAppointment/DepositCollection.module.scss","redux/reducers/auth/index.js","redux/reducers/navbar/index.js","configs/themeConfig.js","redux/reducers/layout/index.js","views/tables/data-tables/store/reducer/index.js","redux/reducers/rootReducer.js","redux/storeConfig/store.js","configs/acl/ability.js","configs/acl/initialAbility.js","utility/context/Can.js","utility/context/ThemeColors.js","utility/context/Internationalization.js","@core/components/spinner/Fallback-spinner.js","serviceWorker.js","assets/images/icons/avatar-default.png","utility/Constant.js","utility/Cookie.js","utility/Utils.js","@core/components/avatar/index.js","@core/components/toast/index.js","@core/auth/jwt/jwtService.js","@core/auth/jwt/jwtDefaultConfig.js","@core/auth/jwt/useJwt.js","redux/actions/layout/index.js","@core/layouts/components/layout-wrapper/index.js","apis/external.api.js","apis/new-staff.api.js","apis/auth.api.js","apis/booking.api.js","apis/appointment.api.js","apis/customer.api.js","apis/messaging.api.js","recoil/atoms/current-shop/index.js","recoil/atoms/auth/externalKey.js","recoil/atoms/booking/timeZone.js","recoil/atoms/booking/booking.js","recoil/atoms/booking/bookingStep.js","recoil/atoms/auth/user.js","views/components/dropdowns/OliverDropdown.js","@core/components/avatar-group/index.js","views/apps/booking/components/ProductItem.js","views/components/dropdowns/ProductDropdown.js","@core/layouts/components/navbar/NavbarSms.js","views/apps/booking/components/AvailableDatesPicker.js","recoil/atoms/booking/client.js","views/apps/booking/components/returningClientHelper.js","views/apps/booking/components/BookAppointment/AppointmentSelection.js","views/apps/booking/components/BookAppointment/CustomerForm.js","views/apps/booking/components/depositHelper.js","views/apps/booking/components/BookAppointment/KeywordAction.js","views/apps/booking/components/BookAppointment/ClientInfoCollection.js","apis/keyword-actions.api.js","views/components/inputs/VerificationCodeInput.js","views/apps/booking/components/BookAppointment/Verification.js","assets/images/icons/google.png","assets/images/icons/facebook.png","@core/components/input-password-toggle/index.js","utility/hooks/useConfirm.js","utility/hooks/useShop.js","utility/hooks/useUserState.js","queries/user.query.js","queries/staff.query.js","views/apps/booking/components/BookAppointment/Login.js","views/apps/booking/components/BookAppointment/SignUp.js","views/apps/booking/components/BookAppointment/BookSuccess.js","views/apps/booking/components/BookAppointment/ForgotPasswordForm.js","views/apps/booking/components/BookAppointment/ResetPasswordForm.js","views/apps/booking/components/BookAppointment/VerifyResetPasswordForm.js","views/apps/booking/components/BookAppointment/ForgotPassword.js","queries/reset-password.query.js","utility/hooks/useQuerySearch.js","views/apps/booking/components/BookAppointment/DepositCheckoutForm.js","utility/hooks/useMomentTimezone.js","views/apps/booking/components/BookAppointment/DepositCollection.js","views/apps/booking/components/BookAppointment/InsuranceCheckoutForm.js","views/apps/booking/components/BookAppointment/InsuranceOffer.js","views/apps/booking/components/BookAppointment/ClientTypeSelection.js","views/apps/booking/components/BookAppointment/ReturningClientInfo.js","views/apps/booking/components/BookAppointment/LocationSelection.js","views/apps/booking/components/BookAppointment/NoAvailability.js","views/apps/booking/components/BookAppointment/index.js","views/apps/booking/routes.js","views/apps/booking/components/BookingLeftSide.js","views/apps/booking/components/BookingRightSide.js","views/apps/booking/index.js","views/apps/appointments/components/AppointmentsLeftSide.js","views/apps/appointments/components/Appointments/AppointmentItem.js","views/apps/appointments/components/Appointments/index.js","recoil/atoms/common/confirm-box.js","@core/components/ui-loader/index.js","views/apps/account/components/MyAccount/index.js","views/apps/appointments/components/AppointmentDetail/index.js","@core/components/select/index.js","@core/components/form-date-time/input-date-time.js","@core/components/form-date-time/index.js","views/apps/appointments/components/AppointmentReschedule/RescheduleForm.js","apis/timeoff-api.js","views/apps/appointments/routes.js","views/apps/appointments/components/AppointmentReschedule/index.js","views/apps/appointments/index.js","views/apps/account/components/MyAccountLeftSide.js","views/apps/account/routes.js","views/apps/account/index.js","views/apps/pets/components/MyPetsLeftSide.js","views/apps/pets/routes.js","views/apps/pets/components/MyPets/index.js","router/routes/Apps.js","views/apps/pets/index.js","router/routes/index.js","utility/hooks/useSkin.js","@core/layouts/BlankLayout.js","@core/components/customizer/index.js","@core/layouts/components/footer/index.js","@core/layouts/components/navbar/NavbarBookmarks.js","@core/layouts/components/navbar/UserDropdown.js","assets/images/portrait/small/avatar-s-11.jpg","@core/layouts/components/navbar/NavbarUser.js","@core/layouts/components/navbar/index.js","navigation/vertical/apps.js","navigation/vertical/index.js","@core/layouts/components/menu/vertical-menu/VerticalMenuHeader.js","@core/layouts/utils.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuLink.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuGroup.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuSectionHeader.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuItems.js","@core/layouts/components/menu/vertical-menu/index.js","utility/hooks/useRTL.js","utility/hooks/useNavbarType.js","utility/hooks/useFooterType.js","utility/hooks/useNavbarColor.js","@core/layouts/VerticalLayout.js","layouts/VerticalLayout.js","navigation/horizontal/apps.js","navigation/horizontal/pages.js","navigation/horizontal/others.js","navigation/horizontal/dashboards.js","navigation/horizontal/ui-elements.js","navigation/horizontal/forms-tables.js","navigation/horizontal/charts-maps.js","navigation/horizontal/index.js","@core/layouts/components/menu/horizontal-menu/HorizontalNavMenuLink.js","@core/layouts/components/menu/horizontal-menu/HorizontalNavMenuGroup.js","@core/layouts/components/menu/horizontal-menu/HorizontalNavMenuItems.js","@core/layouts/components/menu/horizontal-menu/index.js","@core/layouts/HorizontalLayout.js","layouts/HorizontalLayout.js","router/Router.js","utility/hooks/useLayout.js","utility/hooks/useRouterTransition.js","configs/firebase.js","@core/components/confirm-box/index.js","App.js","index.js","assets/images/logo/OLI_APP_4C_LTBG.png"],"names":["module","exports","initialState","userData","authReducer","state","action","type","data","config","storageTokenKeyName","storageRefreshTokenKeyName","obj","suggestions","bookmarks","query","navbarReducer","val","objectToUpdate","find","item","id","isBookmarked","bookmarkIndex","findIndex","x","push","splice","themeConfig","app","appName","appLogoImage","require","default","appLogoTextImage","layout","isRTL","skin","routerTransition","contentWidth","menu","isHidden","isCollapsed","navbar","backgroundColor","footer","customizer","scrollTop","menuCollapsed","window","localStorage","getItem","JSON","parse","initialMenuCollapsed","menuHidden","layoutReducer","value","setItem","total","params","allData","DataTablesReducer","totalPages","rootReducer","combineReducers","auth","dataTables","middleware","thunk","createDebounce","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","existingAbility","ability","Ability","subject","AbilityContext","createContext","createContextualCan","Consumer","ThemeColors","ThemeContext","children","useState","colors","setColors","useEffect","getHex","color","getComputedStyle","document","body","getPropertyValue","trim","primary","light","concat","main","secondary","success","danger","warning","info","dark","Provider","menuMessages","en","messagesEn","userMessagesEn","de","messagesDe","userMessagesDe","fr","messagesFr","userMessagesFr","pt","messagesPt","userMessagesPt","Context","IntlProviderWrapper","locale","setLocale","messages","setMessages","switchLanguage","lang","defaultLocale","SpinnerComponent","className","src","logo","alt","Boolean","location","hostname","match","MOMENT_DATE_FORMAT_FRIENDLY","CORE_API_URL","process","DAY_MONTH_DATE_TIME_FORMAT","DAY_MONTH_DATE_FORMAT","CookieKeys","SpecialErrors","AliasAlreadyUsed","InvalidCode","InvalidTenant","VerificationMaximumExceeded","AppointmentSteps","ClientTypeSelection","ReturningClientInfo","LocationSelection","AppointmentSelection","ClientInfoCollection","Verification","Login","SignUp","ForgotPassword","DepositCollection","BookSuccess","NoAvailability","DefaultAvatar","regexEmail","urlPattern","StatusContent","REQUESTED","ACCEPTED","CONFIRMED","DECLINED","DELETED","DONE","prefix","cookie","UCookie","Cookie","key","set","path","get","remove","numberToString","num","isUserLoggedIn","selectThemeColors","theme","primary25","neutral10","neutral20","neutral30","getEffectiveAppointmentStatus","isPast","status","includes","Avatar","forwardRef","props","ref","imgClassName","initials","size","badgeUp","content","icon","badgeColor","badgeText","img","imgHeight","imgWidth","Tag","tag","contentStyles","rest","isError","setIsError","classnames","undefined","style","str","results","split","forEach","e","join","getInitials","Badge","pill","height","width","onError","defaultProps","requestInterceptor","responseInterceptor","ToastComponent","title","options","autoClose","hideProgressBar","closeButton","toast","toastr","error","loginEndpoint","registerEndpoint","refreshEndpoint","logoutEndpoint","tokenType","storageClientIdKeyName","axios","defaults","baseURL","timeout","JwtService","jwtOverrideConfig","jwtConfig","jwtDefaultConfig","isAlreadyFetchingAccessToken","subscribers","this","interceptors","request","eject","use","accessToken","getToken","clientId","getClientId","headers","Authorization","Promise","reject","response","message","logout","toastError","href","url","reload","Object","values","filter","callback","pathname","args","post","destination","setToken","dest","assign","refreshToken","getRefreshToken","useJwt","jwt","handleContentWidth","dispatch","handleMenuCollapsed","handleMenuHidden","onResize","querySelector","screen","LayoutWrapper","appLayout","wrapperClass","transition","routeMeta","useDispatch","useSelector","navbarStore","Fragment","addEventListener","removeEventListener","length","getExternalKey","getStaffs","URLSearchParams","toString","updateCustomer","put","role","signUp","createVerificationCode","verifyCode","customerSignIn","socialSignIn","getProfile","updateProfile","requestResetPassword","verifyResetPasswordCode","resetPassword","getShopInfo","getBookingAppointments","userId","bookAppointment","getAppointmentDetail","cancelAppointment","delete","acceptAppointment","enableReminders","getTimezones","getSpecies","getAvailableDates","addToWaitlist","removeFromWaitlist","startPaymentCollection","chargePaymentMethod","updatePaymentRequest","checkoutInsurance","completeInsurancePayment","createCalendarBlock","checkTimeSlotAvailability","metaPath","getCustomerMetadata","shopId","updateCustomerAdmin","getClient","upsertClient","emailVaccinations","refillMedication","sendSms","shopState","atom","externalKey","token","externalKeyState","timeZoneState","defaultSelectedProduct","provider","products","initialBookingState","selectedProducts","customer","dateTime","dateTimeProviderId","roomId","verificationError","species","returningClientFlow","isSaved","isDropoff","referralSource","bookingState","initialBookingStep","bookingStepState","previousStepState","user","userState","OliverDropdown","items","selectedItem","onChange","disabled","contentTitle","isOpen","setIsOpen","UncontrolledButtonDropdown","toggle","DropdownToggle","outline","DropdownMenu","map","DropdownItem","active","onClick","name","AvatarGroup","i","ItemTag","UncontrolledTooltip","placement","target","meta","ProductItem","selected","hideProviders","isShowCost","isShowDuration","Row","cn","metadata","time","cost","description","ProductDropdown","shop","direction","isBookingShowProductPrice","isBookingShowProductDuration","NavbarSms","buttonText","minWidth","fontSize","useRecoilValue","showPopover","setShowPopover","phoneNumber","isEditingPhoneNumber","setIsEditingPhoneNumber","isLoading","setIsLoading","isTextSent","setIsTextSent","setPhoneNumber","displayPhoneNumber","setDisplayPhoneNumber","errors","setErrors","isTextUsEnabled","useMemo","feature_settings","booking_text_us_enabled","enabled","phoneRegExp","validatePhoneNumber","test","reset","sendSmsMutation","useMutation","Button","paddingBottom","marginLeft","Modal","marginTop","paddingRight","delay","fade","trigger","ModalHeader","marginBottom","ModalBody","fontWeight","phone","replace","formatPhone","Label","for","Input","maxLength","placeholder","sanitizedPhoneNumber","displayPhone","onChangePhoneNumber","autocomplete","margin","ModalFooter","justifyContent","mutate","phone_number","onSuccess","setTimeout","onStartConversation","loading","Spinner","AvailableDatesPicker","loadedDates","refetchDates","selectedDate","setSelectedDate","setFormattedDate","selectedProduct","isFetchingDates","isLoadingDates","visibleDatesCount","setVisibleDatesCount","maxedOut","setMaxedOut","isSameDay","date1","date2","getFullYear","getMonth","getDate","date","Date","isToday","tomorrow","setDate","isTomorrow","moment","format","displayedDates","opening","index","available","sort","a","b","availableDatesCount","renderOpening","times","preventDefault","formattedValue","isBefore","firstAvailableDate","label","selectOpening","lastAvailableDate","add","isAfter","loadMore","clientState","isReturningClient","client","created_at","now","getTime","goNextStep","step","booking","setBooking","backPreviousStep","useRecoilState","setClient","defaultTimezone","setDefaultTimezone","bookingPolicyOpen","setBookingPolicyOpen","availableSpecies","setAvailableSpecies","selectedSpecies","setSelectedSpecies","availableAppointmentTypes","setAvailableAppointmentTypes","allProviders","setAllProviders","availableProviders","setAvailableProviders","selectedProvider","setSelectedProvider","availableDates","setAvailableDates","hasOpenedDatePicker","setHasOpenedDatePicker","targetDate","setTargetDate","placeholderAvailableTimes","availableTimes","setAvailableTimes","showWaitlistHint","setShowWaitlistHint","showDropoffToggle","setShowDropoffToggle","isSavingBlockedTime","setIsSavingBlockedTime","skipProviderSelection","setSkipProviderSelection","daysToCheck","setSelectedProduct","selectedProductId","setSelectedProductId","Math","random","productResetCode","setProductResetCode","providerResetCode","setProviderResetCode","anySelectionsMade","resetDateOnNewSelectionMade","isMultiLocationEnabled","multi_location_v1_enabled","bookingPolicy","timezone","isBookingSkipProvider","useQuery","showDetail","orderIndex","isFetchingAppointmentTypes","isFetching","isLoadingAppointmentTypes","user_id","result","prev","firstName","first_name","last_name","email","address1","address2","city","zip","patients","appointment_type","hidden_from_clients","speciesIds","speciesId","isFetchingSpecies","isLoadingSpecies","formatAvailableTimes","slice","fetchAvailableDates","queryKey","providerId","productId","providedDate","is_dropoff","page","formattedDate","momentTz","tz","utc","toISOString","productIds","providerIds","location_id","days_to_check","max_attempts","exact_start_date","formatDropoffTimes","dropoff_time_booking_widget_labels","setting","dropoffTimes","am_label","firstTime","pm_label","pmTime","useInfiniteQuery","pageParam","initialPageParam","getNextPageParam","lastPage","lastData","useTimeSlots","use_time_slots","lastDate","searchFromDate","pages","dates","arr","field","uniqueValues","makeUniqueArray","flat","earliestAvailableDate","availableSelectedDate","reverse","fetchNextPage","Sentry","Error","_data","hasNextPage","waitlistEnabled","waitlist_ui_v1_enabled","waitlistEligible","d","showPrivate","tmp","cloneDeep","order","isBookingAnyone","unshift","isFetchingProviders","isLoadingProviders","createCalendarBlockMutation","checkAvailabilityMutation","selectTimeSlot","timeSlot","provider_id","room_id","dateTimeLabel","secondary_date_time","compoundSecondaryDateTime","compoundSecondaryProviderId","secondary_provider_id","compoundSecondaryRoomId","secondary_room_id","tertiary_date_time","compoundTertiaryDateTime","compoundTertiaryRoomId","tertiary_room_id","compoundTertiaryProviderId","tertiary_provider_id","hold_time_slots_enabled","holdTimeSlotsEnabled","productLength","toDate","payload","expire","last_modified_by","last_modified_date","from_date","to_date","time_slot_calendar_id","tmpTimes","onHoldTimeSlot","check_vetbridge_time_slot_availability","checkRealtimeAvailabilityEnabled","start_time","duration","checkRealtimeAvailability","filterAppointmentTypes","allAppointmentTypes","filtered","allowReturningClients","allowNewClients","product_ids","disableAvailableTimes","filterProviders","maxDropoffs","provider_user_ids","new_client_booking_enabled","isNewClientBookingDisabled","availableApptTypes","product","uncheckProduct","toggleBookingPolicy","waitToShow","display","paddingTop","getElementById","ReactDOM","createPortal","opacity","Popover","PopoverHeader","top","right","PopoverBody","borderRadius","dropoffEnabled","dropoffRequired","skip","CustomInput","checked","formatProviderTitle","row","rowIndex","colIndex","React","memo","sanitizePhoneNumber","schema","yup","shape","nullable","max","context","phoneCode","petName","CustomerForm","allowRemind","setAllowRemind","onSubmitProp","onSubmit","breeds","defaultValues","sex","birthdate","clientDob","breed","breed_id","note","useForm","mode","shouldFocusError","resolver","yupResolver","handleSubmit","watch","control","setValue","setError","formState","isDirty","dirtyFields","getValues","addNewPet","setAddNewPet","petNameErrorType","setPetNameErrorType","overridePetNameError","setOverridePetNameError","hasWellnessPlan","setHasWellnessPlan","hasValidationError","setHasValidationError","sexes","prevValues","keys","shouldDirty","sessionStorage","removeItem","stringify","isTelemedicine","availablePatientNames","patient","deceased_at","isInsuranceOfferEnabled","vertical_insure_enabled","isClientDobRequired","booking_client_date_of_birth_collection_enabled","patientDetailsRequired","booking_patient_demographic_collection_enabled","emailAndPhoneRequired","require_phone_and_email_for_client_booking","phoneAlwaysRequired","require_phone_for_client_booking","addressRequired","settingRequires","collect_address_from_new_clients_enabled","states","notesPlaceholderText","notes_placeholder_text_for_client_booking","notesRequired","require_notes_for_client_booking","hideEmail","hidePhone","hasError","clientName","namePass","every","v","petNameMsg","animation","render","FormGroup","Col","xs","cursor","caret","overflow","maxHeight","padding","choosePetName","check","styles","provided","isDisabled","isFocused","isSelected","minHeight","border","borderColor","boxShadow","dropdownIndicator","singleValue","option","valueContainer","paddingLeft","zIndex","onChangeBreedId","ask_returning_clients_for_wellness_plan","askForWellnessPlanEnabled","Alert","isAutoAccept","isDepositRequired","deposit_collection_v1_enabled","depositRequiredBeforeBooking","collectDepositFromReturningClients","collectDepositFromNewClients","saveAppointmentBeforeDeposit","appointmentRequestWithoutDeposit","KeywordAction","keywordAction","onContinue","onCancel","info_message","allow_bypass","fontFamily","alignItems","action_type","prompt_message","setStep","setBookingStep","setUser","keywordActions","setKeywordActions","showKeywordAction","setShowKeywordAction","activeKeywordAction","setActiveKeywordAction","confirmedKeywordAction","setConfirmedKeywordAction","setBreeds","refetchKeywordActions","refetch","getBreeds","species_id","display_name","history","pushState","selectedProviders","chain","groupBy","mapValues","reduce","res","uniqBy","updateCustomerMutation","avatar","onMutate","skipProviderAvailabilityCheck","skip_provider_availability_check","isAppointmentLimitEnabled","booking_limit_per_time_slot_enabled","apply_to_providers","limit","isRequestedProviderInNoteEnabled","include_requested_provider_in_appointment_note","getSource","source","search","addBookingMutation","saveAppointment","clientInfo","saveAsRequest","anyone","specificDoctorRequested","sendReminder","isReminderSMS","isReminderEmail","isSendConfirmation","compound_secondary_date_time","compound_secondary_room_id","compound_secondary_provider_id","compound_tertiary_date_time","compound_tertiary_room_id","compound_tertiary_provider_id","speciesName","patientName","client_dob","ignoreOverlap","confirmed_keyword_action","specific_doctor_requested","appointmentId","upsertClientMutation","findOrCreateClient","fullName","nameParts","lastName","clientParams","country","localClient","verificationCodeMutation","beginVerification","is_demo","skip_demo_shop_booking_otp_enabled","triggerKeywordActions","actionsForProduct","all_products","withKeywords","keywords","bestMatch","keyword","toLowerCase","genericActions","withoutKeywords","sanitizeNote","customerChanged","isEmpty","omit","sm","VerificationCodeInput","codeLength","doClearCode","setDoClearCode","setCode","inputsRef","useRef","current","input","handleInput","inputIndex","code","focus","codeValue","Array","from","handleMobileCodeUtility","handlePaste","pasteData","clipboardData","getData","pasteLength","sanitizedPasteData","inputs","_","inputMode","innerRef","onKeyDown","handleBack","onPaste","autoComplete","isResendDisabled","setIsResendDisabled","showVerificationError","setShowVerificationError","previousStep","timer","clearTimeout","redirect","formatPhoneNumber","updateUserMutation","tmpUser","updateUserRecordWithExistingClient","isReturning","verifyCodeMutation","createCodeMutation","isMobile","whiteSpace","codeDestination","InputPasswordToggle","hideIcon","showIcon","visible","htmlFor","iconSize","inputClassName","inputVisibility","setInputVisibility","InputGroup","InputGroupAddon","addonType","InputGroupText","renderIcon","resolve","useShop","useUserState","useLoginMutation","username","password","rememberMe","console","log","useSocialSignInMutation","oAuthType","idToken","useGoogleLogin","socialSignInMutation","googleAuthProvider","firebase","GoogleAuthProvider","signInWithPopup","then","credential","getIdToken","photoURL","displayName","catch","useFacebookLogin","facebookProvider","FacebookAuthProvider","useStaffDetailQuery","getStaffDetail","required","socialError","setSocialError","useHistory","loggedIn","signInMutation","onSettle","signInGoogle","signInFacebook","offset","Form","reqUsername","FormText","block","GoogleIcon","FacebookIcon","parent","min","confirmPassword","oneOf","signUpMutation","useSignUpMutation","countryCodeEditable","inputProps","dialCode","buttonClass","inputClass","BookSuccessAccept","userName","staff","bookingDateTime","address","BookSuccessWaiting","addedToWaitlist","setAddedToWaitlist","thankYouPage","isBookingShowThankYouPage","ReactGA","initialize","ga","send_to","currency","event","category","addToWaitlistMutation","removeFromWaitlistMutation","modifyWaitlist","client_id","appointment_id","selectedStaff","md","ForgotPasswordForm","ResetPasswordForm","VerifyResetPasswordForm","onResend","count","setCount","startCount","newCount","fields","_step","setUsername","setReqUsername","getReqUsername","requestResetPasswordMutation","verifyResetPasswordMutation","resetPasswordMutation","loginMutation","onSubmitRequestReset","useQuerySearch","useLocation","DepositCheckoutForm","stripe","useStripe","elements","useElements","receiptEmail","setReceiptEmail","setIsComplete","setIsPaymentMethodSaved","isPaymentIntent","setMessage","clientSecret","retrievePaymentIntent","paymentIntent","confirmPayment","confirmParams","receipt_email","deposit","completed_at","amount","confirmSetup","payment_intent","lineHeight","textAlign","marginRight","useMomentTimezone","momentTimezone","setClientSecret","setIsPaymentIntent","isPaymentMethodSaved","isComplete","paymentRequestId","setPaymentRequestId","stripePromise","setStripePromise","platformCustomerId","setPlatformCustomerId","hasUpdatedPaymentWithAppointmentId","setHasUpdatedPaymentWithAppointmentId","startPaymentCollectionMutation","paymentId","ppid","client_secret","client_name","confirmation_number","stripe_account","loadStripe","stripe_public_key","stripeAccount","refetchPaymentRequest","updatePaymentRequestMutation","updatePaymentRequestAppointmentId","deposit_paid","cId","chargePaymentMutation","acceptAppointmentMutation","hasProduct","payment_request_id","platform_customer_id","next_action","redirect_to_url","onChargePayment","payment_type","product_id","created_by","onStartPaymentCollection","appearance","variables","colorPrimary","toFixed","nextButtonText","InsuranceCheckoutForm","onCompletePayment","InsuranceOffer","isLoadingCheckout","setIsLoadingCheckout","viClientId","setViClientId","clientFirstName","setClientFirstName","clientLastName","setClientLastName","clientEmail","setClientEmail","setClientState","clientCity","setClientCity","clientZip","setClientZip","setSpecies","declaredBreed","setDeclaredBreed","plan","age","setAge","setPetName","skipOffer","setSkipOffer","gender","setGender","InsuranceStates","insuranceState","setInsuranceState","selectedQuote","setSelectedQuote","makingIndependentPayment","setMakingIndependentPayment","isSuccess","setIsSuccess","elementRef","err","refetchOnWindowFocus","existingQuoteRefetch","viClientIdRefetch","toUpperCase","nameArray","today","birthDate","m","checkoutInsuranceMutation","onNextStep","subscription_premium","payment_amount","quote_id","is_deposit_paid","complete","scrollIntoView","behavior","petInsuranceComponent","offerStateChange","quotes","detail","isArray","some","q","selectedState","quote","onStateChange","completeInsurancePaymentMutation","font","proceed","setProceed","onSelectClientType","clientType","setEmail","isLoginRedirect","setIsLoginRedirect","emailRegExp","validateEmail","endsWith","hidePhoneNumber","position","left","transform","onKeyUp","onChangeEmail","locations","setLocations","staleTime","maxWidth","BookAppointment","appointmentStep","setPreviousStep","useMediaQuery","useParams","isBookStaffMode","isEqual","isDepositCollectionRequired","isReturningClientBookingDisabled","returning_client_booking_enabled","getRedirect","StepComponent","tmp0","tmp1","bookingRoutes","exact","component","sideBar","button","BookingLeftSide","isTabletOrMobile","ShopDefaultAvatar","daysOfWeek","contactInfo","googleMapUrl","BookingRightSide","setShopCoordinates","mapCoordinates","isBookingShowMap","Number","hide_client_booking_hours_enabled","hideBookingHours","businessHours","day","offline","startHour","startMinute","endHour","endMinute","BookingWizard","setExternalKey","setShop","timeZones","setTimeZones","setClientId","jwtToken","shopInfo","basename","Container","lg","route","fallback","AppointmentsLeftSide","NavItem","to","activeClassName","AppointmentItem","rightIcon","servicesRef","tab","setIsCollapsed","setCollapsible","fromDate","guess","providers","providerName","providerAvatar","heightServices","isAppointmentPast","scrollHeight","Media","collapsed","productName","productTime","Appointments","qs","setTab","appointments","onItemClick","Card","CardBody","Nav","tabs","NavLink","TabContent","activeTab","TabPane","tabId","confirmBoxState","show","isConfirm","useConfirm","confirmBox","setConfirmBox","confirm","confirmButtonColor","onConfirm","UILoader","blocking","loader","overlayColor","AppointmentDetail","isLoadingCancellation","setIsLoadingCancellation","cacheTime","isClientOnlineCancellationEnabled","client_online_cancellation_enabled","cancelAppointmentMutation","isDeclineOrCancel","groupByStaff","handleDeleteEvent","CardHeader","goBack","Select","isCreatable","CreatableSelect","ReactSelect","cacheOptions","classNamePrefix","isClearable","InputDateTime","timeOptions","errorMessage","onDateChange","minDate","disable","setTime","equal","handleChange","dateFormat","borderTopLeftRadius","borderBottomLeftRadius","newValue","FormDateTime","fieldState","detailSchema","isValid","RescheduleForm","appointment","isUpdatingAppointment","startDate","setStartDate","bookingLeadTime","setDefault","diffOffset","utcOffset","timeData","uniq","service","flattenDeep","includedItems","p","timesOptions","isSameOrAfter","timeOffs","isFetchingTimeOffs","select","providerMetadata","staffWorkingHours","staffBusinessHours","weekday","findLast","startTime","endTime","invalidTimes","isSameOrBefore","isOfflineDate","useCallback","dateItem","bookingHours","holidayHours","isSame","appointmentsRoutes","useSetRecoilState","upsertAppointmentMutation","updateAppointment","reminderSMS","reminderEmail","AppointmentsApp","objectFit","xl","MyAccountLeftSide","dob","mob","months","MyAccount","metadataResult","updateProfileMutation","useUpdateProfileMutation","cookieUser","dateOfBirth","monthOfBirth","isAdmin","accountRoutes","AccountApp","MyPetsLeftSide","petsRoutes","setPatients","activePatientId","setActivePatientId","vaccinations","setVaccinations","medications","setMedications","emailModalOpen","setEmailModalOpen","refillModalOpen","setRefillModalOpen","selectedMedication","setSelectedMedication","refillMessage","setRefillMessage","loadingSendEmail","setLoadingSendEmail","localeCompare","isLoadingClient","isFetchingClient","patient_id","isLoadingVaccinations","isFetchingVaccinations","isLoadingMedications","isFetchingMedications","speciesFromId","getSpeciesEmoji","isMedicationRefillEnabled","pet_portal_medication_refills_enabled","onClickRequestRefill","medication","emailVaccinationsMutation","requestRefillMutation","formatExpireLabel","formatDate","toLocaleDateString","vaccination","issue_date","expired","expiration_date","expires_soon","instructions","rows","medication_id","AppRoutes","beginLogin","publicRoute","Routes","useSkin","setSkin","element","classList","bordered","valueToStore","Function","BlankLayout","isMounted","setIsMounted","Customizer","isRtl","setIsRtl","setLayout","navbarType","setNavbarType","footerType","setFooterType","navbarColor","setNavbarColor","setIsHidden","setContentWidth","setMenuCollapsed","setTransition","openCustomizer","setOpenCustomizer","handleToggle","transitionOptions","transitionValue","open","skinsArr","radio","marginCondition","renderSkinsRadio","defaultValue","navbarTypeArr","renderNavbarTypeRadio","footerTypeArr","renderFooterTypeRadio","Footer","rel","NavbarBookmarks","setMenuVisibility","showNavbarMenu","UserDropdown","userAvatar","UncontrolledDropdown","Link","signOut","NavbarUser","ThemeNavbar","navLink","resource","apps","VerticalMenuHeader","setGroupOpen","menuHover","Toggler","isNavLinkActive","link","currentURL","routerProps","isNavGroupActive","child","navigation","getAllParents","recurse","canViewMenuGroup","useContext","hasAnyVisibleChild","can","canViewMenuItem","VerticalNavMenuLink","setGroupActive","groupActive","activeItem","setActiveItem","groupOpen","toggleActiveGroup","parentItem","currentActiveItem","LinkTag","externalLink","matchPath","strict","parents","searchParents","newTab","isActive","resetActiveGroup","badge","VerticalNavMenuGroup","allParents","activeArr","indexOf","openArr","onCollapseClick","pop","toggleOpenGroup","Collapse","VerticalNavMenuItems","VerticalNavMenuSectionHeader","header","VerticalMenuNavItems","Components","TagName","resolveNavItemComponent","Sidebar","setMenuHover","shadowRef","expanded","onMouseEnter","onMouseLeave","wheelPropagation","onScrollY","container","contains","scrollMenu","useRTL","getElementsByTagName","setAttribute","handleRTL","useNavbarType","useFooterType","useNavbarColor","VerticalLayout","menuVisibility","innerWidth","windowWidth","setWindowWidth","layoutStore","handleWindowWidth","footerClasses","static","sticky","hidden","bgColorCondition","floating","Navbar","expand","showUnder","bottom","parentOf","dashboards","uiElements","formsAndTables","chartsAndMaps","others","HorizontalNavMenuLink","setOpenDropdown","isChild","HorizontalNavMenuGroup","submenu","openDropdown","menuModifiers","setMaxHeight","fn","stylesObj","pageHeight","innerHeight","ddTop","instance","reference","getBoundingClientRect","popper","overflowY","ddRef","closest","Dropdown","modifiers","HorizontalNavMenuItems","HorizontalMenu","HorizontalLayout","navbarScrolled","setNavbarScrolled","pageYOffset","navbarClasses","FinalRoute","authRoute","Router","useCurrentUserProfile","refetchUser","lastLayout","setLastLayout","handleLayout","useLayout","useRouterTransition","DefaultLayout","Layouts","NotAuthorized","lazy","import","ResolveRoutes","LayoutTag","LayoutRoutes","LayoutPaths","LayoutRoutesAndPaths","REACT_APP_BASENAME","firebaseConfig","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","vapid","ConfirmBox","unmountOnClose","centered","backdrop","confirmButtonText","queryClient","QueryClient","defaultOptions","queries","App","QueryClientProvider","createBrowserHistory","dsn","sampleRate","tracesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","environment","integrations","networkDetailAllowUrls","maskAllText","maskAllInputs","routingInstrumentation","createRoot","newestOnTop","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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AO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MAAO,KAAM/d,MAAO,MACtB,CAAE+d,MA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","file":"static/js/main.f543c59f.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/OLI_WRD_4C_LTBG.95a4c075.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"deposit-collection-container\":\"DepositCollection_deposit-collection-container__1D4RN\",\"deposit-title\":\"DepositCollection_deposit-title__L7cU-\",\"amount-row\":\"DepositCollection_amount-row__lxyTQ\",\"deposit-amount-container\":\"DepositCollection_deposit-amount-container__1XxnQ\",\"deposit-amount\":\"DepositCollection_deposit-amount__2ehcX\",\"deposit-amount-subtitle\":\"DepositCollection_deposit-amount-subtitle__Xoqfn\",\"deposit-disclaimer\":\"DepositCollection_deposit-disclaimer__3y9sq\",\"deposit-card-info\":\"DepositCollection_deposit-card-info__1qttw\",\"deposit-section-title\":\"DepositCollection_deposit-section-title__34Mv1\",\"deposit-payment-loading\":\"DepositCollection_deposit-payment-loading__3zcr_\",\"deposit-success-row\":\"DepositCollection_deposit-success-row__Tu8o5\",\"deposit-success-subtitle\":\"DepositCollection_deposit-success-subtitle__1HSRD\",\"deposit-confirmation-number\":\"DepositCollection_deposit-confirmation-number__3wuz2\",\"deposit-summary-title\":\"DepositCollection_deposit-summary-title__1MKkI\",\"deposit-summary-value\":\"DepositCollection_deposit-summary-value__3q2xN\",\"deposit-receipt\":\"DepositCollection_deposit-receipt__18f4O\",\"deposit-receipt-text\":\"DepositCollection_deposit-receipt-text__RMN72\"};","// ** Initial State\nconst initialState = {\n userData: {}\n}\n\nconst authReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'LOGIN':\n return {\n ...state,\n userData: action.data,\n [action.config.storageTokenKeyName]: action[action.config.storageTokenKeyName],\n [action.config.storageRefreshTokenKeyName]: action[action.config.storageRefreshTokenKeyName]\n }\n case 'LOGOUT':\n const obj = { ...action }\n delete obj.type\n return { ...state, userData: {}, ...obj }\n default:\n return state\n }\n}\n\nexport default authReducer\n","// ** Initial State\nconst initialState = {\n suggestions: [],\n bookmarks: [],\n query: ''\n}\n\nconst navbarReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'HANDLE_SEARCH_QUERY':\n return { ...state, query: action.val }\n case 'GET_BOOKMARKS':\n return { ...state, suggestions: action.data, bookmarks: action.bookmarks }\n case 'UPDATE_BOOKMARKED':\n let objectToUpdate\n\n // ** find & update object\n state.suggestions.find(item => {\n if (item.id === action.id) {\n item.isBookmarked = !item.isBookmarked\n objectToUpdate = item\n }\n })\n\n // ** Get index to add or remove bookmark from array\n const bookmarkIndex = state.bookmarks.findIndex(x => x.id === action.id)\n\n if (bookmarkIndex === -1) {\n state.bookmarks.push(objectToUpdate)\n } else {\n state.bookmarks.splice(bookmarkIndex, 1)\n }\n\n return { ...state }\n default:\n return state\n }\n}\n\nexport default navbarReducer\n","// You can customize the template with the help of this file\n\n//Template config options\nconst themeConfig = {\n app: {\n appName: 'Oliver',\n appLogoImage: require('@src/assets/images/logo/OLI_APP_4C_LTBG.png').default,\n appLogoTextImage: require('@src/assets/images/logo/OLI_WRD_4C_LTBG.png').default,\n },\n layout: {\n isRTL: false,\n skin: 'bordered', // light, dark, bordered, semi-dark\n routerTransition: 'fadeIn', // fadeIn, fadeInLeft, zoomIn, none or check this for more transition https://animate.style/\n type: 'vertical', // vertical, horizontal\n contentWidth: 'full', // full, boxed\n menu: {\n isHidden: false,\n isCollapsed: false,\n },\n navbar: {\n // ? For horizontal menu, navbar type will work for navMenu type\n type: 'sticky', // static , sticky , floating, hidden\n backgroundColor: 'white', // BS color options [primary, success, etc]\n },\n footer: {\n type: 'hidden', // static, sticky, hidden\n },\n customizer: false,\n scrollTop: true, // Enable scroll to top button\n },\n};\n\nexport default themeConfig;\n","// ** ThemeConfig Import\nimport themeConfig from '@configs/themeConfig'\n\n// ** Returns Initial Menu Collapsed State\nconst initialMenuCollapsed = () => {\n const item = window.localStorage.getItem('menuCollapsed')\n //** Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : themeConfig.layout.menu.isCollapsed\n}\n\n// ** Initial State\nconst initialState = {\n isRTL: themeConfig.layout.isRTL,\n menuCollapsed: initialMenuCollapsed(),\n menuHidden: themeConfig.layout.menu.isHidden,\n contentWidth: themeConfig.layout.contentWidth\n}\n\nconst layoutReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'HANDLE_CONTENT_WIDTH':\n return { ...state, contentWidth: action.value }\n case 'HANDLE_MENU_COLLAPSED':\n window.localStorage.setItem('menuCollapsed', action.value)\n return { ...state, menuCollapsed: action.value }\n case 'HANDLE_MENU_HIDDEN':\n return { ...state, menuHidden: action.value }\n case 'HANDLE_RTL':\n return { ...state, isRTL: action.value }\n default:\n return state\n }\n}\n\nexport default layoutReducer\n","// ** Initial State\nconst initialState = {\n data: [],\n total: 1,\n params: {},\n allData: []\n}\n\nconst DataTablesReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'GET_DATA':\n return {\n ...state,\n allData: action.allData,\n data: action.data,\n total: action.totalPages,\n params: action.params\n }\n default:\n return state\n }\n}\n\nexport default DataTablesReducer\n","// ** Redux Imports\nimport { combineReducers } from 'redux'\n\n// ** Reducers Imports\nimport auth from './auth'\nimport navbar from './navbar'\nimport layout from './layout'\nimport dataTables from '@src/views/tables/data-tables/store/reducer'\n\nconst rootReducer = combineReducers({\n auth,\n navbar,\n layout,\n dataTables\n})\n\nexport default rootReducer\n","// ** Redux, Thunk & Root Reducer Imports\nimport thunk from 'redux-thunk'\nimport createDebounce from 'redux-debounced'\nimport rootReducer from '../reducers/rootReducer'\nimport { createStore, applyMiddleware, compose } from 'redux'\n\n// ** init middleware\nconst middleware = [thunk, createDebounce()]\n\n// ** Dev Tools\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\n// ** Create store\nconst store = createStore(rootReducer, {}, composeEnhancers(applyMiddleware(...middleware)))\n\nexport { store }\n","import { Ability } from '@casl/ability'\nimport { initialAbility } from './initialAbility'\n\n// Read ability from localStorage\n// * Handles auto fetching previous abilities if already logged in user\n// ? You can update this if you store user abilities to more secure place\n// ! Anyone can update localStorage so be careful and please update this\nconst userData = JSON.parse(localStorage.getItem('userData'))\nconst existingAbility = userData ? userData.ability : null\n\nexport default new Ability(existingAbility || initialAbility)\n","// ** Initial user ability\nexport const initialAbility = [\n {\n action: 'read',\n subject: 'Auth'\n },\n {\n action: 'read',\n subject: 'calendar'\n }\n]\n\nexport const _ = undefined\n","// ** Imports createContext function\nimport { createContext } from 'react'\n\n// ** Imports createContextualCan function\nimport { createContextualCan } from '@casl/react'\n\n// ** Create Context\nexport const AbilityContext = createContext()\n\n// ** Init Can Context\nexport const Can = createContextualCan(AbilityContext.Consumer)\n","// ** React Imports\nimport { useEffect, useState, createContext } from 'react'\n\n// ** Create Context\nconst ThemeColors = createContext()\n\nconst ThemeContext = ({ children }) => {\n // ** State\n const [colors, setColors] = useState({})\n\n //** ComponentDidMount\n useEffect(() => {\n if (window !== 'undefined') {\n //** Get variable value\n const getHex = color => window.getComputedStyle(document.body).getPropertyValue(color).trim()\n\n //** Colors obj\n const obj = {\n primary: {\n light: getHex('--primary').concat('1a'),\n main: getHex('--primary')\n },\n secondary: {\n light: getHex('--secondary').concat('1a'),\n main: getHex('--secondary')\n },\n success: {\n light: getHex('--success').concat('1a'),\n main: getHex('--success')\n },\n danger: {\n light: getHex('--danger').concat('1a'),\n main: getHex('--danger')\n },\n warning: {\n light: getHex('--warning').concat('1a'),\n main: getHex('--warning')\n },\n info: {\n light: getHex('--info').concat('1a'),\n main: getHex('--info')\n },\n dark: {\n light: getHex('--dark').concat('1a'),\n main: getHex('--dark')\n }\n }\n\n setColors({ ...obj })\n }\n }, [])\n\n return {children}\n}\n\nexport { ThemeColors, ThemeContext }\n","// ** React Imports\nimport { useState, createContext } from 'react'\n\n// ** Intl Provider Import\nimport { IntlProvider } from 'react-intl'\n\n// ** Core Language Data\nimport messagesEn from '@assets/data/locales/en.json'\nimport messagesDe from '@assets/data/locales/de.json'\nimport messagesFr from '@assets/data/locales/fr.json'\nimport messagesPt from '@assets/data/locales/pt.json'\n\n// ** User Language Data\nimport userMessagesEn from '@src/assets/data/locales/en.json'\nimport userMessagesDe from '@src/assets/data/locales/de.json'\nimport userMessagesFr from '@src/assets/data/locales/fr.json'\nimport userMessagesPt from '@src/assets/data/locales/pt.json'\n\n// ** Menu msg obj\nconst menuMessages = {\n en: { ...messagesEn, ...userMessagesEn },\n de: { ...messagesDe, ...userMessagesDe },\n fr: { ...messagesFr, ...userMessagesFr },\n pt: { ...messagesPt, ...userMessagesPt }\n}\n\n// ** Create Context\nconst Context = createContext()\n\nconst IntlProviderWrapper = ({ children }) => {\n // ** States\n const [locale, setLocale] = useState('en')\n const [messages, setMessages] = useState(menuMessages['en'])\n\n // ** Switches Language\n const switchLanguage = lang => {\n setLocale(lang)\n setMessages(menuMessages[lang])\n }\n\n return (\n \n \n {children}\n \n \n )\n}\n\nexport { IntlProviderWrapper, Context as IntlContext }\n","// ** Logo\nimport logo from '@src/assets/images/logo/OLI_APP_4C_LTBG.png'\n\nconst SpinnerComponent = () => {\n return (\n
\n logo\n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default SpinnerComponent\n","/*eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker === null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (response.status === 404 || (contentType !== null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.')\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n })\n }\n}\n","export default \"data:image/png;base64,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\"","import DefaultAvatarImg from '@src/assets/images/icons/avatar-default.png';\n\nexport const DATE_FORMAT_FRIENDLY = 'D, M j';\nexport const MOMENT_DATE_FORMAT_FRIENDLY = 'ddd, MMM DD';\nexport const API_ADMIN_URL = 'https://admin.getoliver.com/v1/api';\nexport const API_TENANT_URL = 'https://api.getoliver.com/services';\nexport const API_TENANT_PUBLIC_URL = 'https://api.getoliver.com/v1/api/external';\nexport const CORE_API_URL = process.env.REACT_APP_CORE_API_URL || '/core/v1';\nexport const MESSAGE_API_URL = process.env.REACT_APP_MESSAGE_API_URL || '/message';\n\nexport const HOUR_FORMAT = 'hh:mm A';\nexport const MONTH_DATE_HOUR_FORMAT = 'MMM DD, hh:mm A';\nexport const YEAR_MONTH_DATE_FORMAT = 'YYYY-MM-DD';\nexport const YEAR_MONTH_DATE_HOUR_FORMAT = 'YYYY-MM-DD HH:mm';\nexport const DAY_MONTH_DATE_TIME_FORMAT = 'dddd MMM D, YYYY, h:mma';\nexport const DAY_MONTH_DATE_FORMAT = 'dddd MMM D, YYYY';\n\nexport const CookieKeys = {\n user: 'user',\n client: 'client',\n shop: 'shop',\n confirmationForm: '@OLIVER_BOOKING/ConfirmationForm',\n messaging: '@OLIVER_BOOKING/messaging',\n};\n\nexport const SpecialErrors = {\n AliasAlreadyUsed: 'AliasAlreadyUsed',\n InvalidCode: 'Invalid code',\n InvalidTenant: 'Invalid tenant and user',\n VerificationMaximumExceeded: 'VerificationMaximumExceeded',\n};\n\nexport const AppointmentSteps = {\n ClientTypeSelection: 1,\n ReturningClientInfo: 2,\n LocationSelection: 3,\n AppointmentSelection: 4,\n ClientInfoCollection: 5,\n Verification: 6,\n Login: 7,\n SignUp: 8,\n ForgotPassword: 9,\n DepositCollection: 10,\n BookSuccess: 12,\n NoAvailability: 13,\n};\n\nexport const DefaultAvatar = DefaultAvatarImg;\n\nexport const COLORS = [\n { hex: '#BB6BD9', rgb: '187, 107, 217', hexLighter: '#F0DAFB', rgbLighter: '240, 218, 251' },\n { hex: '#5749F2', rgb: '87, 73, 242', hexLighter: '#DDDAFB', rgbLighter: '221, 218, 251' },\n { hex: '#2D9CDB', rgb: '45, 156, 219', hexLighter: '#DAE7FB', rgbLighter: '218, 231, 251' },\n { hex: '#5CC9CA', rgb: '92, 201, 202', hexLighter: '#DAF9FB', rgbLighter: '218, 249, 251' },\n { hex: '#54B463', rgb: '84, 180, 99', hexLighter: '#CBECD7', rgbLighter: '203, 236, 215' },\n { hex: '#DD3075', rgb: '221, 48, 117', hexLighter: '#F3C1DB', rgbLighter: '243, 193, 219' },\n { hex: '#E05A51', rgb: '224, 90, 81', hexLighter: '#FBDADA', rgbLighter: '251, 218, 218' },\n { hex: '#ED8537', rgb: '237, 133, 55', hexLighter: '#FADFC7', rgbLighter: '250, 223, 199' },\n { hex: '#F2C94C', rgb: '242, 201, 76', hexLighter: '#FBF6DA', rgbLighter: '251, 246, 218' },\n { hex: '#99A3B7', rgb: '153, 163, 183', hexLighter: '#F2F2F2', rgbLighter: '242, 242, 242' },\n];\n\nexport const AppointmentLabels = ['Anyone', 'Requested', 'Walk-in', 'Pending', 'No-show', 'Done'];\n\n// export const avatarDefault = 'https://www.pixsy.com/wp-content/uploads/2021/04/ben-sweet-2LowviVHZ-E-unsplash-1.jpeg';\n\n// eslint-disable-next-line\nexport const regexEmail =\n /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n// eslint-disable-next-line\nexport const regexUrl =\n /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i;\n\nexport const urlPattern = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/i;\n\nexport const StatusContent = {\n REQUESTED: 'Requested',\n ACCEPTED: 'Accepted',\n CONFIRMED: 'Confirmed',\n DECLINED: 'Declined',\n DELETED: 'Canceled',\n DONE: 'Finished',\n};\n","import UCookie from 'universal-cookie';\n\nconst prefix = '@OLIVER_BOOKING-';\n\nexport const cookie = new UCookie();\n\nexport const Cookie = {\n setItem: (key, data) => {\n return cookie.set(`${prefix}${key}`, data, { path: '/' });\n },\n getItem: key => {\n return cookie.get(`${prefix}${key}`);\n },\n removeItem: key => {\n return cookie.remove(`${prefix}${key}`, { path: '/' });\n },\n};\n","import { COLORS, CookieKeys, StatusContent } from './Constant';\nimport { Cookie } from './Cookie';\n\n// ** Checks if an object is empty (returns boolean)\nexport const isObjEmpty = obj => Object.keys(obj).length === 0;\n\n// ** Returns K format from a number\nexport const kFormatter = num => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num);\n\n// ** Converts HTML to string\nexport const htmlToString = html => html.replace(/<\\/?[^>]+(>|$)/g, '');\n\n// ** Converts number to string\nexport const numberToString = num => `${num < 10 ? '0' : ''}${num}`;\n\n// ** Checks if the passed date is today\nconst isToday = date => {\n const today = new Date();\n return (\n /* eslint-disable operator-linebreak */\n date.getDate() === today.getDate() && date.getMonth() === today.getMonth() && date.getFullYear() === today.getFullYear()\n /* eslint-enable */\n );\n};\n\n/**\n ** Format and return date in Humanize format\n ** Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\n ** Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\n * @param {String} value date to format\n * @param {Object} formatting Intl object to format with\n */\nexport const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => {\n if (!value) return value;\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value));\n};\n\n// ** Returns short month of passed date\nexport const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {\n const date = new Date(value);\n let formatting = { month: 'short', day: 'numeric' };\n\n if (toTimeForCurrentDay && isToday(date)) {\n formatting = { hour: 'numeric', minute: 'numeric' };\n }\n\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value));\n};\n\n/**\n ** Return if user is logged in\n ** This is completely up to you and how you want to store the token in your frontend application\n * ? e.g. If you are using cookies to store the application please update this function\n */\nexport const isUserLoggedIn = () => !!Cookie.getItem(CookieKeys.user);\nexport const getUserData = () => Cookie.getItem(CookieKeys.user);\nexport const getShopData = () => Cookie.getItem(CookieKeys.shop);\n\n/**\n ** This function is used for demo purpose route navigation\n ** In real app you won't need this function because your app will navigate to same route for each users regardless of ability\n ** Please note role field is just for showing purpose it's not used by anything in frontend\n ** We are checking role just for ease\n * ? NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.\n * @param {String} userRole Role of user\n */\nexport const getHomeRouteForLoggedInUser = userRole => {\n if (userRole === 'admin') return '/';\n if (userRole === 'client') return '/access-control';\n return '/login';\n};\n\n// Get random color - use for Calendar event\nexport const getRandomColor = code => {\n let sum = 0;\n for (const index in code) {\n if (code.charCodeAt(index)) {\n sum += code.charCodeAt(index);\n }\n }\n return COLORS[sum % COLORS.length];\n};\n\n// ** React Select Theme Colors\nexport const selectThemeColors = theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary25: '#7367f01a', // for option hover bg-color\n primary: '#03464C', // for selected option bg-color\n neutral10: '#03464C', // for tags bg-color\n neutral20: '#ededed', // for input border-color\n neutral30: '#ededed', // for input hover border-color\n },\n});\n\nexport const getStatusColor = (isPast, status) => {\n if (status === 'REQUESTED' && !isPast) return { hex: '#ea6b63', hexLighter: '#ea6b634d' }; // Red\n if (status === 'ACCEPTED' && !isPast) return { hex: '#f1eb9ccc', hexLighter: '#f1eb9c66' }; // Yellow\n if (status === 'CONFIRMED' && !isPast) return { hex: '#9BBE95', hexLighter: '#b8e1b1cc' }; // Green\n if (status === 'DELETED') return { hex: '#656565', hexLighter: '#656565aa' }; // Dark Grey\n return { hex: '#9BBE95', hexLighter: '#b8e1b1cc' }; // Green\n};\n\nexport const getEffectiveAppointmentStatus = ({ isPast, status }) => {\n if (isPast && ['ACCEPTED', 'CONFIRMED'].includes(status)) return StatusContent.DONE;\n return StatusContent?.[status] || StatusContent.ACCEPTED;\n};\n\nexport * from './Constant';\n","// ** React Imports\nimport { forwardRef, useState } from 'react';\n\n// ** Third Party Components\nimport Proptypes from 'prop-types';\nimport { Badge } from 'reactstrap';\nimport classnames from 'classnames';\nimport { DefaultAvatar } from '../../../utility/Constant';\n\nconst Avatar = forwardRef((props, ref) => {\n // ** Props\n const {\n color,\n className,\n imgClassName,\n initials,\n size,\n badgeUp,\n content,\n icon,\n badgeColor,\n badgeText,\n img,\n imgHeight,\n imgWidth,\n status,\n tag: Tag,\n contentStyles,\n ...rest\n } = props;\n\n const [isError, setIsError] = useState(false);\n\n // ** Function to extract initials from content\n const getInitials = str => {\n const results = [];\n const wordArray = str.split(' ');\n wordArray.forEach(e => {\n results.push(e[0]);\n });\n return results.join('');\n };\n\n return (\n \n {img === false || img === undefined ? (\n \n {initials ? getInitials(content) : content}\n\n {icon ? icon : null}\n {badgeUp ? (\n \n {badgeText ? badgeText : '0'}\n \n ) : null}\n \n ) : (\n <>\n {isError ? (\n \n ) : (\n setIsError(true)}\n />\n )}\n \n )}\n {status ? (\n \n ) : null}\n \n );\n});\n\nexport default Avatar;\n\n// ** PropTypes\nAvatar.propTypes = {\n imgClassName: Proptypes.string,\n className: Proptypes.string,\n src: Proptypes.string,\n tag: Proptypes.oneOfType([Proptypes.func, Proptypes.string]),\n badgeUp: Proptypes.bool,\n content: Proptypes.string,\n icon: Proptypes.node,\n contentStyles: Proptypes.object,\n badgeText: Proptypes.string,\n imgHeight: Proptypes.oneOfType([Proptypes.string, Proptypes.number]),\n imgWidth: Proptypes.oneOfType([Proptypes.string, Proptypes.number]),\n size: Proptypes.oneOf(['sm', 'lg', 'xl']),\n status: Proptypes.oneOf(['online', 'offline', 'away', 'busy']),\n badgeColor: Proptypes.oneOf([\n 'primary',\n 'secondary',\n 'success',\n 'danger',\n 'info',\n 'warning',\n 'dark',\n 'light-primary',\n 'light-secondary',\n 'light-success',\n 'light-danger',\n 'light-info',\n 'light-warning',\n 'light-dark',\n ]),\n color: Proptypes.oneOf([\n 'primary',\n 'secondary',\n 'success',\n 'danger',\n 'info',\n 'warning',\n 'dark',\n 'light-primary',\n 'light-secondary',\n 'light-success',\n 'light-danger',\n 'light-info',\n 'light-warning',\n 'light-dark',\n ]),\n initials(props) {\n if (props['initials'] && props['content'] === undefined) {\n return new Error('content prop is required with initials prop.');\n }\n if (props['initials'] && typeof props['content'] !== 'string') {\n return new Error('content prop must be a string.');\n }\n if (typeof props['initials'] !== 'boolean' && props['initials'] !== undefined) {\n return new Error('initials must be a boolean!');\n }\n },\n};\n\n// ** Default Props\nAvatar.defaultProps = {\n tag: 'div',\n};\n","import { toast as toastr } from 'react-toastify';\nimport { Check, Trash } from 'react-feather';\nimport Avatar from '../avatar';\n\nconst ToastComponent = ({ title, icon, color }) => (\n
\n
\n \n
{title}
\n
\n
\n);\n\nconst options = {\n autoClose: 2000,\n hideProgressBar: true,\n closeButton: false,\n};\n\nconst toast = {\n success: title => toastr.success(} />, options),\n error: title => toastr.error(} />, options),\n};\n\nexport default toast;\n","import axios from 'axios';\nimport toast from '@components/toast';\nimport jwtDefaultConfig from './jwtDefaultConfig';\nimport { SpecialErrors, CookieKeys } from '../../../utility/Constant';\nimport { Cookie } from '@utility/Cookie';\n\naxios.defaults.baseURL = process.env.REACT_APP_API_URL;\naxios.defaults.timeout = 60000 * 2; // 2 minutes\n\nlet requestInterceptor;\nlet responseInterceptor;\n\nexport default class JwtService {\n // ** jwtConfig <= Will be used by this service\n jwtConfig = { ...jwtDefaultConfig };\n\n // ** For Refreshing Token\n isAlreadyFetchingAccessToken = false;\n\n // ** For Refreshing Token\n subscribers = [];\n\n constructor(jwtOverrideConfig) {\n this.jwtConfig = { ...this.jwtConfig, ...jwtOverrideConfig };\n\n // ** Request Interceptor\n axios.interceptors.request.eject(requestInterceptor);\n requestInterceptor = axios.interceptors.request.use(\n config => {\n // ** Get token from localStorage\n const accessToken = this.getToken();\n const clientId = this.getClientId();\n if (config.headers?.Authorization === 'No-Need-Authorization') {\n delete config.headers['Authorization'];\n } else {\n if (accessToken && accessToken !== 'undefined') {\n // ** eslint-disable-next-line no-param-reassign\n config.headers.Authorization = `Bearer ${accessToken}`;\n }\n }\n\n if (clientId) {\n // ** eslint-disable-next-line no-param-reassign\n config.headers['X-Client-Id'] = clientId;\n }\n return config;\n },\n error => Promise.reject(error)\n );\n\n // ** Add request/response interceptor\n axios.interceptors.response.eject(responseInterceptor);\n responseInterceptor = axios.interceptors.response.use(\n response => {\n response.data.success === false && toast.error(response?.data?.message || 'An unknown error occurred');\n return response;\n },\n error => {\n if (error && error.response && error.response.status) {\n const { response } = error;\n const { message } = response?.data || {};\n switch (error.response.status) {\n case 500:\n if (message === SpecialErrors.InvalidTenant) {\n this.logout()\n } else {\n this.toastError(\"Oops! Something went wrong. Please try again in a few seconds.\");\n }\n break\n case 401:\n if (message !== SpecialErrors.InvalidCode) {\n this.logout(window.location.href);\n }\n break;\n case 404:\n if (response?.config?.url?.includes('/clients/by_user_id')) {\n this.logout(window.location.href);\n }\n break;\n case 400:\n if (message === SpecialErrors.VerificationMaximumExceeded) {\n // Swallow the error toast - let UI implementation handle it\n break;\n }\n default:\n this.toastError(message);\n break\n }\n } else {\n if (error.message === \"Network Error\") {\n this.logout(window.location.href);\n location.reload();\n }\n }\n\n return Promise.reject(error);\n }\n );\n }\n\n toastError(message) {\n if (!Object.values(SpecialErrors).includes(message)) {\n toast.error(message);\n }\n }\n\n onAccessTokenFetched(accessToken) {\n this.subscribers = this.subscribers.filter(callback => callback(accessToken));\n }\n\n addSubscriber(callback) {\n this.subscribers.push(callback);\n }\n\n getToken() {\n return localStorage.getItem(this.jwtConfig.storageTokenKeyName);\n }\n\n getRefreshToken() {\n return localStorage.getItem(this.jwtConfig.storageRefreshTokenKeyName);\n }\n\n getClientId() {\n const pathUrl = window.location.pathname;\n const pathUrlArray = pathUrl.split('/');\n return pathUrlArray[1] || localStorage.getItem(this.jwtConfig.storageClientIdKeyName);\n }\n\n setClientId(value) {\n localStorage.setItem(this.jwtConfig.storageClientIdKeyName, value);\n }\n\n setToken(value) {\n localStorage.setItem(this.jwtConfig.storageTokenKeyName, value);\n }\n\n setRefreshToken(value) {\n localStorage.setItem(this.jwtConfig.storageRefreshTokenKeyName, value);\n }\n\n login(...args) {\n return axios.post(this.jwtConfig.loginEndpoint, ...args);\n }\n\n logout(destination) {\n Cookie.removeItem(CookieKeys.user);\n Cookie.removeItem(CookieKeys.shop);\n this.setToken('');\n const dest = destination || window.location.href;\n window.location.assign(dest);\n }\n\n register(...args) {\n return axios.post(this.jwtConfig.registerEndpoint, ...args);\n }\n\n refreshToken() {\n return axios.post(this.jwtConfig.refreshEndpoint, {\n refreshToken: this.getRefreshToken(),\n });\n }\n}\n","// ** Auth Endpoints\nexport default {\n loginEndpoint: '/jwt/login',\n registerEndpoint: '/jwt/register',\n refreshEndpoint: '/jwt/refresh-token',\n logoutEndpoint: '/jwt/logout',\n\n // ** This will be prefixed in authorization header with token\n // ? e.g. Authorization: Bearer \n tokenType: 'Bearer',\n\n // ** Value of this property will be used as key to store JWT token in storage\n storageTokenKeyName: 'accessToken',\n storageRefreshTokenKeyName: 'refreshToken',\n storageClientIdKeyName: 'clientId',\n};\n","// ** JWT Service Import\nimport JwtService from './jwtService'\n\n// ** Export Service as useJwt\nexport default function useJwt(jwtOverrideConfig) {\n const jwt = new JwtService(jwtOverrideConfig)\n\n return {\n jwt\n }\n}\n","// ** Handles Layout Content Width (full / boxed)\nexport const handleContentWidth = value => dispatch => dispatch({ type: 'HANDLE_CONTENT_WIDTH', value })\n\n// ** Handles Menu Collapsed State (Bool)\nexport const handleMenuCollapsed = value => dispatch => dispatch({ type: 'HANDLE_MENU_COLLAPSED', value })\n\n// ** Handles Menu Hidden State (Bool)\nexport const handleMenuHidden = value => dispatch => dispatch({ type: 'HANDLE_MENU_HIDDEN', value })\n\n// ** Handles RTL (Bool)\nexport const handleRTL = value => dispatch => dispatch({ type: 'HANDLE_RTL', value })\n","// ** React Imports\nimport { Fragment, useEffect } from 'react';\n\n// ** Third Party Components\nimport classnames from 'classnames';\n\n// ** Store & Actions\nimport { useSelector, useDispatch } from 'react-redux';\nimport { handleContentWidth, handleMenuCollapsed, handleMenuHidden } from '@store/actions/layout';\n\n// ** Styles\nimport 'animate.css/animate.css';\n\nconst onResize = () => {\n document.querySelector('html').style.height = `${window.screen.height}px`;\n};\n\nconst LayoutWrapper = props => {\n // ** Props\n const { layout, children, appLayout, wrapperClass, transition, routeMeta } = props;\n\n // ** Store Vars\n const dispatch = useDispatch();\n const store = useSelector(state => state);\n const navbarStore = store.navbar;\n const contentWidth = store.layout.contentWidth;\n\n //** Vars\n const Tag = layout === 'HorizontalLayout' && !appLayout ? 'div' : Fragment;\n\n // ** Clean Up Function\n const cleanUp = () => {\n if (routeMeta) {\n if (routeMeta.contentWidth) {\n dispatch(handleContentWidth('full'));\n }\n if (routeMeta.menuCollapsed) {\n dispatch(handleMenuCollapsed(!routeMeta.menuCollapsed));\n }\n if (routeMeta.menuHidden) {\n dispatch(handleMenuHidden(!routeMeta.menuHidden));\n }\n }\n };\n\n // ** ComponentDidMount\n useEffect(() => {\n if (routeMeta) {\n if (routeMeta.contentWidth) {\n dispatch(handleContentWidth(routeMeta.contentWidth));\n }\n if (routeMeta.menuCollapsed) {\n dispatch(handleMenuCollapsed(routeMeta.menuCollapsed));\n }\n if (routeMeta.menuHidden) {\n dispatch(handleMenuHidden(routeMeta.menuHidden));\n }\n }\n return () => cleanUp();\n }, []);\n\n useEffect(() => {\n document.addEventListener('resize', onResize);\n return () => {\n document.removeEventListener('resize', onResize);\n };\n }, []);\n\n return (\n \n
\n
\n \n \n {children}\n \n
\n \n );\n};\n\nexport default LayoutWrapper;\n","import axios from 'axios';\n\nexport const getExternalKey = () =>\n axios.post('/user/v1/auth/guest-sign-in', undefined, { headers: { Authorization: 'No-Need-Authorization' } });\nexport const getProviderDetail = id => axios.get(`/appointment/v1/providers/${id}`);\n","import axios from 'axios';\n\nexport const getStaffs = filter => {\n const query = new URLSearchParams(filter).toString();\n return axios.get(`/appointment/v1/providers?${query}`);\n};\n\nexport const getStaffDetail = ({ id = '' }) => axios.get(`/appointment/v1/providers/${id}`);\nexport const getStaffProduct = ({ id = '' }) => axios.get(`/appointment/v1/providers/${id}/products`);\nexport const createStaff = data => axios.post(`/appointment/v1/providers`, data);\nexport const updateStaff = ({ id = '', data }) => axios.put(`/appointment/v1/providers/${id}`, data);\nexport const updateStaffProduct = ({ id = '', data }) => axios.put(`/appointment/v1/providers/${id}/products`, data);\nexport const updateStaffPassword = ({ id = '', data }) => axios.put(`/appointment/v1/providers/${id}/change-password`, data);\nexport const deleteStaff = ({ id = '' }) => axios.delete(`/appointment/v1/providers/${id}`);\nexport const getStaffsWorkingHours = data => axios.post(`/appointment/v1/providers/working-hours`, data);\n","import axios from 'axios';\n\nconst path = '/user/v1';\n\nconst headers = {\n Authorization: 'No-Need-Authorization',\n};\n\nexport const createCustomer = data => axios.post(`${path}/customers`, data);\nexport const updateCustomer = (id, data) => axios.put(`${path}/customers/${id}`, { ...(data || {}), role: 'ROLE_CUSTOMER' });\n\nexport const signUp = data => axios.post(`${path}/auth/sign-up`, data, { headers });\n\nexport const signIn = data => axios.post(`${path}/auth/sign-in`, { ...(data || {}), role: 'ROLE_SHOP_ADMIN' }, { headers });\n\nexport const createVerificationCode = data => axios.post(`${path}/auth/code/init`, { ...(data || {}), role: 'ROLE_CUSTOMER' });\nexport const verifyCode = data => axios.post(`${path}/auth/code/verify`, { ...(data || {}), role: 'ROLE_CUSTOMER' });\n\nexport const customerSignIn = data => axios.post(`${path}/auth/sign-in`, { ...(data || {}), role: 'ROLE_CUSTOMER' }, { headers });\n\nexport const socialSignIn = data => axios.post(`${path}/auth/social`, { ...(data || {}), role: 'ROLE_CUSTOMER' }, { headers });\n\nexport const getProfile = () => axios.get(`${path}/profile`);\nexport const updateProfile = data => axios.put(`${path}/profile`, data);\n\nexport const requestResetPassword = data => axios.post(`${path}/reset-password/init`, data);\nexport const verifyResetPasswordCode = data => axios.post(`${path}/reset-password/verify`, data);\nexport const resetPassword = data => axios.post(`${path}/reset-password/finish`, data);\n\nexport const getListShop = () => axios.get(`tenant/v2/shop-users/my-shops`);\n\nexport const getShopInfo = id => axios.get(`tenant/v2/shops/${id}`);\n","import axios from 'axios';\n\nimport { CORE_API_URL } from '../utility/Constant';\n\nexport const getBookingAppointments = (userId, params) => axios.get(`${CORE_API_URL}/appointments/client_appointments?user_id=${userId}`, { params });\nexport const getAvailableProviders = data => axios.post(`/appointment/v1/appointments/search/providers`, data);\nexport const bookAppointment = data => axios.post(`${CORE_API_URL}/appointments`, data);\n","import axios from 'axios';\nimport { CORE_API_URL } from '../utility/Constant';\n\nconst path = '/appointment/v1';\n\nexport const getAppointments = data => axios.post(`${path}/appointments/search`, data);\nexport const getAppointmentDetail = id => axios.get(`${path}/appointments/${id}`);\nexport const getAppointmentProducts = params => axios.get(`${path}/products`, { params });\nexport const getAppointmentCatalogs = params => axios.get(`${path}/catalogs`, { params: { fetchProducts: true, ...(params || {}) } });\nexport const updateAppointment = data => axios.put(`${CORE_API_URL}/appointments/${data.id}`, data);\nexport const updateAppointmentLabel = (id, data) => axios.put(`${path}/appointments/${id}/labels`, data);\nexport const cancelAppointment = data => axios.delete(`${CORE_API_URL}/appointments`, { data });\nexport const acceptAppointment = (data) => axios.put(`${CORE_API_URL}/appointment_requests/${data.id}/accept?enableReminders=${data.enableReminders}`);\nexport const createAppoinments = data => axios.post(`${path}/appointments`, data);\nexport const searchTimes = data => axios.post(`${path}/appointments/search/times`, data);\nexport const getTimezones = data => axios.get(`${path}/timezones`, data);\nexport const getSpecies = () => axios.get(`/appointment/v1/appointments/species`);\nexport const getBreeds = (data) => axios.get(`${CORE_API_URL}/breeds`, { params: data });\n\nexport const getAvailableDates = data => axios.post(`${CORE_API_URL}/providers/open_times`, data);\nexport const addToWaitlist = data => axios.post(`${CORE_API_URL}/waitlisters`, data);\nexport const removeFromWaitlist = data => axios.put(`${CORE_API_URL}/waitlisters/remove`, data);\n\nexport const createPaymentRequest = data => axios.post(`${CORE_API_URL}/payment_requests`, data);\nexport const startPaymentCollection = data => axios.post(`${CORE_API_URL}/payment_requests/start_payment`, data);\nexport const chargePaymentMethod = data => axios.post(`${CORE_API_URL}/payment_requests/charge_payment_method`, data);\nexport const updatePaymentRequest = data => axios.put(`${CORE_API_URL}/payment_requests/${data.id}`, data);\nexport const findPaymentRequest = ppid => axios.get(`${CORE_API_URL}/payment_requests/ppid/${ppid}`);\nexport const getOfficeLocations = () => axios.get(`${CORE_API_URL}/office_locations`);\n\nexport const getInsuranceClientId = () => axios.get(`${CORE_API_URL}/insurance_quotes/client_id`);\nexport const checkoutInsurance = data => axios.post(`${CORE_API_URL}/insurance_quotes`, data);\nexport const findExistingInsuranceQuote = data => axios.get(`${CORE_API_URL}/insurance_quotes/find/${data.client_id}`, { params: { name: data.name } });\nexport const completeInsurancePayment = data => axios.put(`${CORE_API_URL}/insurance_quotes/complete_payment`, data);\n\nexport const createCalendarBlock = data => axios.post(`${CORE_API_URL}/calendars/blocked_time`, data);\nexport const checkTimeSlotAvailability = data => axios.post(`${CORE_API_URL}/time_slots/check`, data);\n","import axios from 'axios';\n\nimport { CORE_API_URL } from '../utility/Constant';\n\nconst path = '/user/v1';\nconst metaPath = '/tenant/v2';\nconst appointmentPath = '/appointment/v1';\n\nexport const getCustomers = (params = {}) => {\n const { search = '', page = 0, size = 20 } = params;\n return axios.get(`${path}/customers`, { params: { search, page, size } });\n};\n\nexport const getCustomerMetadata = (id, shopId) => axios.get(`${metaPath}/shop-users/${shopId}/customers/${id}`);\n\nexport const getCustomer = (id) => axios.get(`${path}/customers/${id}`);\n\nexport const getCustomerProfile = (id) => axios.get(`${path}/customers/${id}/profile`);\n\nexport const createCustomerAdmin = (data) => axios.post(`${path}/customers`, { ...(data || {}) });\n\nexport const updateCustomerAdmin = (data) => axios.put(`${path}/customers/${data.id}`, { ...(data || {}) });\n\nexport const getClient = (data) => axios.get(`${CORE_API_URL}/clients/by_user_id`, { params: data });\n\nexport const upsertClient = (data) => axios.post(`${CORE_API_URL}/clients/upsert`, { ...(data || {}) });\n\nexport const getPatientVaccinations = (data) => axios.get(`${CORE_API_URL}/vaccinations`, { params: data });\n\nexport const emailVaccinations = (data) => axios.post(`${CORE_API_URL}/vaccinations/email`, { ...(data || {}) });\n\nexport const getPatientMedications = (data) => axios.get(`${CORE_API_URL}/medications`, { params: data });\n\nexport const refillMedication = (data) => axios.post(`${CORE_API_URL}/medications/refill`, { ...(data || {}) });\n\nexport const updateCustomerMetadata = (id, shopId, data) =>\n axios.put(`${metaPath}/shop-users/${shopId}/customers/${id}`, { ...(data || {}) });\n\nexport const customerAppointmentList = (id, params = {}) => {\n const { page = 0, size = 3 } = params;\n return axios.get(`${CORE_API_URL}/clients/${id}/appointments`, { params: { page, size } });\n};\n\nexport const deleteCustomerAdmin = (id) => axios.delete(`${path}/customers/${id}`);\n","import axios from 'axios';\nimport { MESSAGE_API_URL } from '../utility/Constant';\n\nexport const sendSms = data => axios.post(`${MESSAGE_API_URL}/v1/messages/text_us`, data);\n","import { atom } from 'recoil';\n\nconst shop = null;\n\nconst shopState = atom({\n key: 'currentShop',\n default: shop,\n});\n\nexport default shopState;\n","import { atom } from 'recoil';\nimport { CookieKeys } from '../../../utility/Constant';\nimport { Cookie } from '../../../utility/Cookie';\n\nconst externalKey = Cookie.getItem(CookieKeys.user)?.token || localStorage.getItem('accessToken') || '';\n\nconst externalKeyState = atom({\n key: 'externalKey',\n default: externalKey,\n});\n\nexport default externalKeyState;\n","import { atom } from 'recoil';\n\nconst timeZone = [];\n\nconst timeZoneState = atom({\n key: 'timeZone',\n default: timeZone,\n});\n\nexport default timeZoneState;\n","import { atom } from 'recoil';\n\nexport const defaultSelectedProduct = {\n provider: null,\n products: [],\n};\n\nexport const initialBookingState = {\n selectedProducts: [defaultSelectedProduct],\n customer: null,\n dateTime: null,\n dateTimeProviderId: null,\n roomId: null,\n verificationError: false,\n species: null,\n returningClientFlow: false,\n isSaved: false,\n isDropoff: false,\n location: null,\n referralSource: null,\n};\n\nconst bookingState = atom({\n key: 'booking',\n default: initialBookingState,\n});\n\nexport default bookingState;\n","import { atom } from 'recoil';\nimport { AppointmentSteps } from '@utility/Constant';\n\nexport const initialBookingStep = AppointmentSteps.ClientTypeSelection;\n\nconst bookingStepState = atom({\n key: 'bookingStep',\n default: initialBookingStep,\n});\n\nexport const previousStepState = atom({\n key: 'previousStep',\n default: null,\n});\n\nexport default bookingStepState;\n","import { atom } from 'recoil';\nimport { CookieKeys } from '../../../utility/Constant';\nimport { Cookie } from '../../../utility/Cookie';\n\nconst user = Cookie.getItem(CookieKeys.user);\nconst userState = atom({\n key: 'user',\n default: user,\n});\n\nexport default userState;\n","import React, { useState } from 'react';\nimport { Button, UncontrolledButtonDropdown, DropdownMenu, DropdownItem, DropdownToggle, Row, Col, Label } from 'reactstrap';\nimport { RxCaretDown, RxCaretUp } from 'react-icons/rx';\n\nconst OliverDropdown = ({ title, items, selectedItem, onChange, disabled, contentTitle }) => {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n setIsOpen(!isOpen)}\n >\n \n {title}\n {!isOpen ? : }\n \n \n {items.map(item => (\n onChange(item)}\n >\n {contentTitle ? item[contentTitle] : item.name}\n \n ))}\n \n \n );\n};\n\nexport default OliverDropdown;\n","// ** React Imports\nimport { Fragment } from 'react'\n\n// ** Third Party Components\nimport Proptypes from 'prop-types'\nimport classnames from 'classnames'\nimport { UncontrolledTooltip } from 'reactstrap'\n\n// ** Custom Components\nimport Avatar from '@components/avatar'\n\nconst AvatarGroup = props => {\n // ** Props\n const { data, tag, className } = props\n\n // ** Conditional Tag\n const Tag = tag ? tag : 'div'\n\n // ** Render Data\n const renderData = () => {\n return data.map((item, i) => {\n const ItemTag = item.tag ? item.tag : 'div'\n return (\n \n {item.title ? (\n \n {item.title}\n \n ) : null}\n {!item.meta ? (\n \n ) : null}\n {item.meta ? {item.meta} : null}\n \n )\n })\n }\n\n return (\n \n {renderData()}\n \n )\n}\n\nexport default AvatarGroup\n\n// ** PropTypes\nAvatarGroup.propTypes = {\n data: Proptypes.array.isRequired,\n tag: Proptypes.oneOfType([Proptypes.func, Proptypes.string])\n}\n","import cn from 'classnames';\nimport { Button, Media, CustomInput, Row, Col } from 'reactstrap';\nimport { Camera, ChevronRight } from 'react-feather';\nimport Avatar from '@components/avatar';\nimport AvatarGroup from '@components/avatar-group';\n\nconst ProductItem = ({ selected, data, hideProviders, onClick, isShowCost = true, isShowDuration = true }) => (\n <>\n \n

{data.name}

\n
\n
\n {isShowDuration && {data.metadata?.time} min}\n {isShowCost && !!data.metadata?.cost && data.metadata.cost > 0 && (\n \n ${data.metadata?.cost}\n \n )}\n
\n
\n
\n \n
{data.description}
\n
\n \n);\nexport default ProductItem;\n","import React, { useState } from 'react';\nimport { Button, UncontrolledButtonDropdown, DropdownMenu, DropdownItem, DropdownToggle, Row, Col, Label } from 'reactstrap';\nimport { RxCaretDown, RxCaretUp } from 'react-icons/rx';\nimport ProductItem from '../../apps/booking/components/ProductItem';\n\nconst ProductDropdown = ({ title, items, selectedItem, onChange, disabled, shop }) => {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n setIsOpen(!isOpen)}>\n \n {title}\n {!isOpen ? : }\n \n \n {items.map(item => (\n onChange(item)}\n >\n onChange(item)}\n selected={selectedItem}\n isShowCost={shop?.metadata?.isBookingShowProductPrice}\n isShowDuration={shop?.metadata?.isBookingShowProductDuration}\n />\n \n ))}\n \n \n );\n};\n\nexport default ProductDropdown;\n","import { CheckCircle, MessageCircle } from \"react-feather\";\nimport { Button, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader, Spinner } from \"reactstrap\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport shopState from \"../../../../recoil/atoms/current-shop\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport userState from \"../../../../recoil/atoms/auth/user\";\nimport '@styles/react/pages/page-booking.scss';\nimport { useMutation } from \"react-query\";\nimport { sendSms } from \"../../../../apis/messaging.api\";\n\nconst NavbarSms = ({ buttonText, minWidth, fontSize }) => {\n const shop = useRecoilValue(shopState);\n const user = useRecoilValue(userState);\n const [showPopover, setShowPopover] = useState(false);\n const [isEditingPhoneNumber, setIsEditingPhoneNumber] = useState(!user?.phoneNumber);\n const [isLoading, setIsLoading] = useState(false);\n const [isTextSent, setIsTextSent] = useState(false);\n const [phoneNumber, setPhoneNumber] = useState('');\n const [displayPhoneNumber, setDisplayPhoneNumber] = useState('');\n const [errors, setErrors] = useState({\n phoneNumber: null,\n });\n\n useEffect(() => {\n if (isEditingPhoneNumber && user?.phoneNumber) {\n setIsEditingPhoneNumber(false);\n }\n }, [user?.phoneNumber]);\n\n const isTextUsEnabled = useMemo(() => {\n return shop?.feature_settings?.booking_text_us_enabled !== undefined &&\n shop.feature_settings.booking_text_us_enabled.enabled;\n });\n\n const onShowPopover = () => {\n setShowPopover(true);\n };\n\n const phoneRegExp = /^(\\d{3})[- ]?\\)?(\\d{3})[- ]?(\\d{4})$/;\n const validatePhoneNumber = (phoneNumber) => {\n return phoneRegExp.test(phoneNumber) && phoneNumber.length === 10;\n };\n\n const onChangePhoneNumber = (phoneNumber) => {\n const sanitizedPhoneNumber = phoneNumber.replace(/[^0-9]/g, '');\n setPhoneNumber(sanitizedPhoneNumber);\n const displayPhone = sanitizedPhoneNumber.replace(/(\\d{3})(\\d{3})(\\d{4})/, '$1-$2-$3');\n setDisplayPhoneNumber(displayPhone);\n if ((errors.phoneNumber && validatePhoneNumber(sanitizedPhoneNumber)) || sanitizedPhoneNumber.length === 0) {\n setErrors({ ...errors, phoneNumber: null });\n }\n };\n\n const formatPhone = phone => {\n if (!phone) return \"\";\n return phone\n .replace(/[^0-9]/g, \"\")\n .replace(/(\\d{3})(\\d{3})(\\d{4})/, \"($1) $2-$3\");\n };\n\n const reset = () => {\n setShowPopover(false);\n setPhoneNumber('');\n setDisplayPhoneNumber('');\n setErrors({ ...errors, phoneNumber: null });\n setIsLoading(false);\n setIsTextSent(false);\n setIsEditingPhoneNumber(!user?.phoneNumber);\n };\n\n const sendSmsMutation = useMutation(sendSms);\n const onStartConversation = () => {\n if (isLoading) return;\n setIsLoading(true);\n if (isEditingPhoneNumber && !validatePhoneNumber(phoneNumber)) {\n setErrors({ ...errors, phoneNumber: 'Please enter a valid phone number' });\n setIsLoading(false);\n return;\n }\n if (!phoneNumber && !user?.phoneNumber) {\n setIsEditingPhoneNumber(true);\n setErrors({ ...errors, phoneNumber: 'Please enter a phone number' });\n setIsLoading(false);\n return;\n }\n sendSmsMutation.mutate({\n phone_number: phoneNumber || user?.phoneNumber,\n }, {\n onSuccess: () => {\n setTimeout(() => {\n setIsLoading(false);\n setIsTextSent(true);\n setTimeout(() => {\n setIsTextSent(false);\n reset();\n }, 1500);\n }, 3000);\n },\n onError: () => {\n setIsLoading(false);\n }\n });\n };\n\n return (\n <>\n {isTextUsEnabled && (\n <>\n \n {buttonText ? buttonText : 'text with us'}\n \n \n reset()}\n delay={0}\n fade={false}\n target=\"new-client\"\n trigger=\"legacy\"\n >\n \n \n \n text with us\n \n \n \n

\n Need to ask a question about your pet or schedule an appointment?
\n

\n {!isEditingPhoneNumber && (\n <>\n

\n We will text you at
{`${formatPhone(user?.phoneNumber)}`}
to start the conversation.\n

\n

\n We look forward to chatting with you!\n

\n setIsEditingPhoneNumber(true)}\n >\n change phone number\n \n \n )}\n {isEditingPhoneNumber && (\n <>\n \n What is your phone number?\n \n {\n onChangePhoneNumber(e.target.value);\n }}\n autocomplete=\"off\"\n style={{ height: '40px', width: '80%', margin: 'auto' }}\n />\n {(!!errors.phoneNumber) && (\n \n {errors.phoneNumber}\n \n )}\n

\n We will text you to start the conversation.\n

\n

\n We look forward to chatting with you!\n

\n {user?.phoneNumber && (\n setIsEditingPhoneNumber(false)}\n >\n use previous phone number\n \n )}\n \n )}\n \n \n onStartConversation()}\n loading={isLoading}\n\n >\n {!isTextSent ? 'Okay' : 'Text Sent'}\n {isTextSent ? (\n \n ) : (\n <>\n {isLoading && }\n {!isLoading && }\n \n )}\n \n reset()}\n >\n cancel\n \n \n \n \n )}\n \n );\n};\nexport default NavbarSms;\n","import { Button, Col, DropdownItem, DropdownMenu, DropdownToggle, Row, Spinner, UncontrolledButtonDropdown } from \"reactstrap\";\nimport './available-dates.style.scss';\nimport moment from \"moment\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { RxCaretDown, RxCaretUp } from \"react-icons/rx\";\nimport { ChevronRight, DownloadCloud } from \"react-feather\";\n\nconst AvailableDatesPicker = (props) => {\n\n const {\n disabled,\n loadedDates,\n refetchDates,\n selectedDate,\n setSelectedDate,\n setFormattedDate,\n onChange,\n selectedProduct,\n isFetchingDates,\n isLoadingDates,\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const [visibleDatesCount, setVisibleDatesCount] = useState(5);\n const [maxedOut, setMaxedOut] = useState(false);\n\n useEffect(() => {\n setVisibleDatesCount(5);\n setMaxedOut(false);\n }, [selectedProduct]);\n\n const selectOpening = (opening) => {\n setIsOpen(false);\n const formattedValue = opening.date;\n if (opening && !opening.available) {\n setSelectedDate(opening);\n return;\n }\n if (moment(formattedValue).isBefore(moment())) {\n const firstAvailableDate = loadedDates.find(date => date.available);\n setSelectedDate(firstAvailableDate);\n setFormattedDate(moment(firstAvailableDate?.date).format('MM/DD/YYYY'));\n } else {\n setSelectedDate(opening);\n setFormattedDate(formattedValue);\n }\n if (opening) {\n onChange(opening.times);\n } else {\n onChange([[{label: \"9:00 AM\", enabled: false}, {label: \"10:00 AM\", enabled: false}, {label: \"11:00 AM\", enabled: false}], [{label: \"12:00 PM\", enabled: false}, {label: \"1:00 PM\", enabled: false}, {label: \"2:00 PM\", enabled: false}], [{label: \"3:00 PM\", enabled: false}, {label: \"4:00 PM\", enabled: false}, {label: \"5:00 PM\", enabled: false}]]);\n }\n };\n\n const toggle = (e) => {\n // On touch devices when the dropdown is open,\n // a touchstart event is triggered when the user clicks near the bottom of the screen.\n // This causes the dropdown to close because the doc body intercepts the touch start\n // and interprets it as a scroll event, thereby closing the dropdown inadvertently.\n // This prevents the dropdown from closing in that case.\n if (e?.type === 'touchstart' && isOpen) {\n e.preventDefault();\n return;\n }\n setIsOpen(!isOpen);\n };\n\n function isSameDay(date1, date2) {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n };\n\n function isToday(date) {\n const today = new Date();\n return isSameDay(date, today);\n };\n\n function isTomorrow(date) {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return isSameDay(date, tomorrow);\n };\n\n const title = useMemo(() => {\n if (!selectedDate) return \"Date\";\n const date = new Date(selectedDate);\n if (isToday(date)) {\n return disabled ? \"Date\" : \"Today\";\n }\n if (isTomorrow(date)) return \"Tomorrow\";\n return moment(selectedDate).format('MMM. D - dddd');\n }, [selectedDate]);\n\n const displayedDates = loadedDates\n .filter((opening, index) => opening.available)\n .sort((a, b) => new Date(a.date) - new Date(b.date))\n .filter((opening, index) => index < visibleDatesCount)\n .map((opening, index) => {\n return {\n ...opening,\n };\n });\n\n const availableDatesCount = useMemo(() => {\n return loadedDates.filter(opening => opening.available).length;\n }, [loadedDates]);\n\n const loadMore = () => {\n if (maxedOut) {\n return;\n }\n if (availableDatesCount > visibleDatesCount) {\n const newCount = visibleDatesCount + 5;\n setVisibleDatesCount(newCount);\n } else {\n const lastAvailableDate = displayedDates.length > 0 ? displayedDates[displayedDates.length - 1] : null;\n if (moment().add(230, 'days').isAfter(moment(lastAvailableDate?.date))) {\n setMaxedOut(true);\n }\n refetchDates(lastAvailableDate);\n }\n };\n\n const renderOpening = (opening) => {\n return (\n \n
\n

{moment(opening.date).format('MMMM Do - dddd')}

\n

{selectedProduct}

\n
\n
\n <>\n {`${opening.times.length} opening${opening.times.length === 1 ? '' : 's'}`}\n \n \n
\n \n );\n };\n\n return (\n
\n \n \n {title}\n {!isOpen ? : }\n \n \n <>\n {displayedDates.map((opening, index) => (\n selectOpening(opening)}\n >\n {renderOpening(opening)}\n \n ))}\n {(isFetchingDates && visibleDatesCount > availableDatesCount) && (\n \n
\n Loading more dates...\n \n
\n \n )}\n {(!isFetchingDates || visibleDatesCount === displayedDates.length) && (\n \n
\n loadMore()}\n >\n {maxedOut ? 'There are no more available dates.' : 'Load more'}\n \n \n
\n
\n )}\n \n \n \n \n );\n};\n\nexport default AvailableDatesPicker;\n","import { atom } from 'recoil';\nimport { CookieKeys } from '../../../utility/Constant';\nimport { Cookie } from '../../../utility/Cookie';\n\nconst client = null;\nconst clientState = atom({\n key: 'client',\n default: client,\n});\n\nexport default clientState;\n","const CREATION_THRESHOLD = 1000 * 3600 * 12; // 12 hours\n\nexport const isReturningClient = (client) => {\n if (!client || !client.created_at) {\n return false;\n }\n const timeSince = Date.now() - new Date(client.created_at).getTime();\n if (timeSince > CREATION_THRESHOLD) {\n return true;\n }\n return false;\n};\n\nexport const bannedPhoneNumbers = () => {\n return ['9168268707'];\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { Button, Row, Spinner, Popover, PopoverHeader, PopoverBody, CustomInput } from 'reactstrap';\nimport ReactDOM from 'react-dom';\nimport { useRecoilState } from 'recoil';\nimport momentTz from 'moment-timezone';\nimport moment from 'moment';\nimport * as Sentry from \"@sentry/react\";\nimport toast from '@components/toast';\nimport { useInfiniteQuery, useMutation, useQuery } from 'react-query';\nimport { remove, cloneDeep } from 'lodash';\nimport { getAppointmentProducts, getSpecies, getAvailableDates, createCalendarBlock, deleteCalendarBlock, checkTimeSlotAvailability } from '../../../../../apis/appointment.api';\nimport { getStaffs } from '../../../../../apis/new-staff.api';\nimport shopState from '../../../../../recoil/atoms/current-shop';\nimport userState from '../../../../../recoil/atoms/auth/user';\nimport OliverDropdown from '../../../../components/dropdowns/OliverDropdown';\nimport ProductDropdown from '../../../../components/dropdowns/ProductDropdown';\nimport { ChevronLeft } from 'react-feather';\nimport { defaultSelectedProduct } from '../../../../../recoil/atoms/booking/booking';\nimport { getClient } from '../../../../../apis/customer.api';\nimport NavbarSms from '../../../../../@core/layouts/components/navbar/NavbarSms';\nimport AvailableDatesPicker from '../AvailableDatesPicker';\nimport clientState from '../../../../../recoil/atoms/booking/client';\nimport { isReturningClient } from '../returningClientHelper';\nimport { borderRadius } from 'polished';\n\nconst AppointmentSelection = ({ externalKey, step, goNextStep, booking, setBooking, backPreviousStep }) => {\n const [shop] = useRecoilState(shopState);\n const [user, setUser] = useRecoilState(userState);\n const [client, setClient] = useRecoilState(clientState);\n\n const [defaultTimezone, setDefaultTimezone] = useState(null);\n\n const [bookingPolicyOpen, setBookingPolicyOpen] = useState(false);\n\n const [availableSpecies, setAvailableSpecies] = useState([]);\n const [selectedSpecies, setSelectedSpecies] = useState(booking?.species || null);\n\n const [availableAppointmentTypes, setAvailableAppointmentTypes] = useState([]);\n\n const [allProviders, setAllProviders] = useState([]);\n const [availableProviders, setAvailableProviders] = useState([]);\n const [selectedProvider, setSelectedProvider] = useState(booking?.selectedProducts?.length > 0 ? booking?.selectedProducts[0].provider : null);\n\n const [availableDates, setAvailableDates] = useState([]);\n const [hasOpenedDatePicker, setHasOpenedDatePicker] = useState(false);\n const [targetDate, setTargetDate] = useState(moment().format('MM/DD/YYYY'));\n const [selectedDate, setSelectedDate] = useState(null);\n const [formattedDate, setFormattedDate] = useState(null);\n\n const placeholderAvailableTimes = [[{label: \"9:00 AM\", enabled: false}, {label: \"10:00 AM\", enabled: false}, {label: \"11:00 AM\", enabled: false}], [{label: \"12:00 PM\", enabled: false}, {label: \"1:00 PM\", enabled: false}, {label: \"2:00 PM\", enabled: false}], [{label: \"3:00 PM\", enabled: false}, {label: \"4:00 PM\", enabled: false}, {label: \"5:00 PM\", enabled: false}]];\n const [availableTimes, setAvailableTimes] = useState(placeholderAvailableTimes);\n const [showWaitlistHint, setShowWaitlistHint] = useState(false);\n\n const [showDropoffToggle, setShowDropoffToggle] = useState(false);\n const [isSavingBlockedTime, setIsSavingBlockedTime] = useState(false);\n const [skipProviderSelection, setSkipProviderSelection] = useState(false);\n\n const daysToCheck = 100;\n\n const [selectedProduct, setSelectedProduct] = useState((() => {\n if (booking?.selectedProducts?.length > 0) {\n return booking.selectedProducts[0];\n }\n return defaultSelectedProduct;\n }));\n const [selectedProductId, setSelectedProductId] = useState((() => {\n if (booking?.selectedProducts?.length > 0 && booking?.selectedProducts[0]?.products?.length > 0) {\n return booking.selectedProducts[0].products[0].id;\n }\n return null;\n }));\n const [productResetCode, setProductResetCode] = useState(Math.random());\n const [providerResetCode, setProviderResetCode] = useState(Math.random());\n\n const anySelectionsMade = () => {\n return selectedProduct?.products?.length > 0 || selectedProvider !== null ||\n selectedSpecies !== null ||\n hasOpenedDatePicker;\n };\n\n const resetDateOnNewSelectionMade = () => {\n setTargetDate(moment().format('MM/DD/YYYY'));\n setSelectedDate(null);\n setFormattedDate(null);\n setHasOpenedDatePicker(false);\n setAvailableTimes(placeholderAvailableTimes);\n setAvailableDates([]);\n };\n\n useEffect(() => {\n if (user) {\n setBooking({\n ...booking,\n returningClientFlow: true, // Base it off the existence of user here instead of isReturningClient(client) because it determines whether we auth next step or not\n });\n }\n }, [user]);\n\n const isMultiLocationEnabled = () => {\n if (shop?.feature_settings?.multi_location_v1_enabled !== undefined) return shop.feature_settings.multi_location_v1_enabled;\n return false;\n };\n\n const holdTimeSlotsEnabled = () => {\n if (shop?.feature_settings?.hold_time_slots_enabled !== undefined) return shop.feature_settings.hold_time_slots_enabled;\n return false;\n };\n\n const checkRealtimeAvailabilityEnabled = () => {\n if (shop?.feature_settings?.check_vetbridge_time_slot_availability !== undefined) return shop.feature_settings.check_vetbridge_time_slot_availability;\n return false;\n };\n\n const isNewClientBookingDisabled = () => {\n if (shop?.feature_settings?.new_client_booking_enabled === undefined || shop.feature_settings.new_client_booking_enabled === true) return false;\n return true;\n };\n\n useEffect(() => {\n if (shop?.metadata?.bookingPolicy && !anySelectionsMade()) {\n setBookingPolicyOpen(true);\n }\n if (shop) {\n setDefaultTimezone(shop.timezone);\n if (shop?.metadata?.isBookingSkipProvider) {\n setSkipProviderSelection(true);\n }\n }\n }, [shop]);\n\n const { data, isFetching: isFetchingAppointmentTypes, isLoading: isLoadingAppointmentTypes } = useQuery(\n 'products',\n async () => {\n const { data } = await getAppointmentProducts({ size: 100000, showDetail: true });\n return data.data.content.sort((a, b) => a.orderIndex - b.orderIndex) || [];\n },\n {\n enabled: !!externalKey\n }\n );\n\n const { data: _client, isFetching: isFetchingClient, isLoading: isLoadingClient } = useQuery(\n 'client',\n async () => {\n const { data } = await getClient({ user_id: user?.id });\n return data;\n },\n {\n onSuccess: result => {\n if (result) {\n setClient(result);\n setBooking(prev => ({\n ...prev,\n customer: {\n firstName: `${result.first_name} ${result.last_name}`,\n email: result.email,\n phoneNumber: result.phone,\n address1: result.address1,\n address2: result.address2,\n city: result.city,\n state: result.state,\n zip: result.zip,\n created_at: result.created_at,\n patients: result.patients\n }\n }));\n }\n },\n onError: () => {\n },\n enabled: !!user?.id\n }\n );\n\n const { isFetching: isFetchingSpecies, isLoading: isLoadingSpecies } = useQuery(\n 'species',\n async () => {\n const { data: { data } } = await getSpecies({ size: 100000 });\n return data\n },\n {\n enabled: !!externalKey && !!data?.length && data.length > 0,\n onSuccess: result => {\n if (result && result.length > 0) {\n const available = [];\n data?.forEach(appointment_type => {\n if (!appointment_type.hidden_from_clients) {\n appointment_type.metadata.speciesIds.forEach(speciesId => {\n if (!available.includes(speciesId)) {\n available.push(speciesId);\n }\n });\n }\n });\n const species = result.filter(item => available.includes(item.id));\n if (species.length > 0) {\n setAvailableSpecies(species);\n } else {\n setAvailableSpecies(result);\n }\n }\n }\n }\n );\n\n const formatAvailableTimes = (times) => {\n const result = [];\n for (let i = 0; i < times.length; i += 3) {\n result.push(times.slice(i, i + 3));\n }\n setAvailableTimes(result);\n };\n\n const fetchAvailableDates = async (queryKey) => {\n const { providerId, productId, providedDate, is_dropoff, page } = queryKey;\n let formattedDate = null;\n if (page) {\n formattedDate = momentTz.tz(momentTz(page), defaultTimezone).utc().toISOString()\n } else if (providedDate) {\n formattedDate = momentTz.tz(momentTz(providedDate), defaultTimezone).utc().toISOString()\n } else {\n formattedDate = momentTz.tz(momentTz(), defaultTimezone).utc().toISOString()\n }\n const params = { productIds: [productId], date: formattedDate, is_dropoff: !!is_dropoff };\n if (providerId) {\n params.providerIds = [providerId];\n }\n if (isMultiLocationEnabled() && booking?.location?.id) {\n params.location_id = booking.location.id;\n }\n params.days_to_check = 4;\n params.max_attempts = daysToCheck;\n if (page) {\n params.days_to_check = 8;\n }\n if (page || providedDate) {\n params.exact_start_date = formattedDate;\n }\n const { data: { data } } = await getAvailableDates(params);\n return data\n };\n\n const formatDropoffTimes = (times) => {\n if (shop?.feature_settings?.dropoff_time_booking_widget_labels !== undefined) {\n const setting = shop.feature_settings.dropoff_time_booking_widget_labels;\n if (setting.enabled) {\n const dropoffTimes = [];\n if (setting.am_label) {\n const firstTime = !setting.pm_label ? times[0] : times.find(time => time.label.includes('am'));\n if (firstTime) {\n firstTime.label = setting.am_label;\n dropoffTimes.push(firstTime);\n }\n }\n if (setting.pm_label) {\n const pmTime = !setting.am_label ? times[0] : times.find(time => time.label.includes('pm'));\n if (pmTime) {\n pmTime.label = setting.pm_label;\n dropoffTimes.push(pmTime);\n }\n }\n formatAvailableTimes(dropoffTimes);\n return;\n }\n }\n formatAvailableTimes(times);\n };\n\n const makeUniqueArray = (arr, field) => {\n const uniqueValues = {};\n return arr.filter(obj => {\n const value = obj[field];\n if (uniqueValues[value]) {\n return false;\n }\n uniqueValues[value] = true;\n return true;\n });\n };\n\n const {\n _data = { pages: [] },\n isFetching: isFetchingDates,\n isLoading: isLoadingDates,\n hasNextPage,\n fetchNextPage\n } = useInfiniteQuery(\n ['dates', `${selectedProductId}-${productResetCode}`, `${selectedProvider?.id}-${providerResetCode}`, booking?.isDropoff],\n ({ pageParam }) => fetchAvailableDates({\n providerId: selectedProvider?.id === 'any-provider' ? null : selectedProvider?.id,\n productId: selectedProductId,\n providedDate: targetDate,\n is_dropoff: !!booking?.isDropoff,\n page: pageParam\n }),\n {\n initialPageParam: targetDate ? moment(targetDate).format('MM/DD/YYYY') : null,\n getNextPageParam: lastPage => {\n const lastData = lastPage[lastPage.length - 1];\n const useTimeSlots = lastData?.use_time_slots;\n const lastDate = lastData.date;\n const searchFromDate = targetDate ? moment(targetDate) : moment();\n if (useTimeSlots || moment(lastDate).isAfter(searchFromDate.add(daysToCheck + 30, 'days'))) {\n return null;\n }\n const nextPage = moment(lastDate).add(1, 'days').format('MM/DD/YYYY');\n return nextPage;\n },\n enabled: !!externalKey && selectedProvider !== null && selectedProduct !== null && !!selectedProductId,\n onSuccess: data => {\n if (data && data.pages) {\n const dates = makeUniqueArray(data.pages.map(page => page).flat(), 'date');\n setAvailableDates(dates);\n const earliestAvailableDate = dates.find(date => date.available);\n if (earliestAvailableDate) {\n const availableSelectedDate = selectedDate ? dates.find(date => date.available && date.date === moment(selectedDate).format('MM/DD/YYYY')) : null;\n if (availableSelectedDate && hasOpenedDatePicker) {\n if (booking.isDropoff) {\n formatDropoffTimes(availableSelectedDate.times);\n } else {\n formatAvailableTimes(availableSelectedDate.times);\n }\n } else {\n setSelectedDate(moment(earliestAvailableDate.date, 'MM/DD/YYYY').toISOString());\n if (booking.isDropoff) {\n formatDropoffTimes(earliestAvailableDate.times);\n } else {\n formatAvailableTimes(earliestAvailableDate.times);\n }\n }\n const lastAvailableDate = dates.filter(date => date.available).sort((a, b) => new Date(a.date) - new Date(b.date)).reverse()[0];\n if (moment(targetDate, 'MM/DD/YYYY').add(daysToCheck, 'days').isAfter(lastAvailableDate.date) && !lastAvailableDate?.use_time_slots) {\n fetchNextPage();\n }\n } else {\n Sentry.captureException(new Error(`No available dates found for ${shop?.name}, ${selectedProvider?.firstName}, product ${selectedProduct?.products[0]?.id}, date: ${targetDate}, dropoff: ${booking?.isDropoff}`));\n setAvailableTimes([]);\n }\n } else {\n setAvailableDates([]);\n setAvailableTimes([]);\n }\n }\n }\n );\n\n const waitlistEnabled = useMemo(() => {\n if (shop?.feature_settings?.waitlist_ui_v1_enabled !== undefined) {\n return shop.feature_settings.waitlist_ui_v1_enabled === true && booking?.selectedProducts[0]?.products[0]?.metadata?.waitlistEligible;\n } else {\n return false;\n }\n }, [shop, booking?.selectedProducts[0]?.products[0]]);\n\n useEffect(() => {\n if (availableDates.length > 0 && !isLoadingDates) {\n const firstAvailableDate = availableDates.filter(d => d.available).sort((a, b) => new Date(a.date) - new Date(b.date))[0];\n if (waitlistEnabled && firstAvailableDate && moment(firstAvailableDate.date) > moment().add(7, 'days')) {\n setShowWaitlistHint(true);\n } else {\n setShowWaitlistHint(false);\n }\n } else {\n setShowWaitlistHint(false);\n }\n }, [availableDates, isLoadingDates, waitlistEnabled]);\n\n const {\n isFetching: isFetchingProviders,\n isLoading: isLoadingProviders,\n } = useQuery(\n 'providers',\n async () => {\n const result = await getStaffs({ size: 10000, showPrivate: false });\n return result?.data?.data?.content;\n },\n {\n enabled: !!externalKey && !!shop,\n onSuccess: data => {\n let tmp = cloneDeep(data);\n tmp = tmp.filter(provider => provider.metadata);\n tmp = tmp.sort((a, b) => a.metadata.order - b.metadata.order);\n if (shop?.metadata?.isBookingAnyone) {\n tmp.unshift({ id: 'any-provider', firstName: \"Any clinician\"});\n }\n setAllProviders(tmp);\n }\n }\n );\n\n const refetchDates = (opening) => {\n const formattedDate = opening.date;\n setTargetDate(formattedDate);\n const lastAvailableDate = availableDates.filter(date => date.available).sort((a, b) => new Date(a.date) - new Date(b.date)).reverse()[0];\n if (!lastAvailableDate || moment(formattedDate).add(daysToCheck, 'days').isAfter(lastAvailableDate.date)) {\n fetchNextPage();\n }\n };\n\n const createCalendarBlockMutation = useMutation(createCalendarBlock);\n\n const onHoldTimeSlot = (timeSlot) => {\n if (booking.selectedProducts?.length === 0 || !booking.selectedProducts[0]?.products?.length) goNextStep();\n const productLength = booking.selectedProducts[0]?.products[0]?.metadata?.time;\n if (!productLength) goNextStep();\n const toDate = moment(timeSlot.dateTime).add(productLength, 'minutes').toISOString();\n setIsSavingBlockedTime(true);\n const payload = {\n provider_id: timeSlot.provider_id,\n room_id: timeSlot.room_id,\n expire: true,\n last_modified_by: user?.id,\n last_modified_date: moment().toISOString(),\n title: 'Online appointment booking is pending.',\n from_date: timeSlot.dateTime,\n to_date: toDate,\n };\n createCalendarBlockMutation.mutate(payload, {\n onSuccess: (data) => {\n if (data?.data?.id) {\n setBooking(prev => ({ ...prev, time_slot_calendar_id: data.data.id }));\n goNextStep();\n } else {\n toast.error('We\\'re sorry, this time is no longer available. Please choose another time.');\n const tmpTimes = cloneDeep(availableTimes.flat().map((time) => {\n if (time.dateTime === timeSlot.dateTime) time.enabled = false;\n return time;\n }));\n formatAvailableTimes(tmpTimes);\n }\n setIsSavingBlockedTime(false);\n },\n onError: () => {\n setIsSavingBlockedTime(false);\n toast.error('We\\'re sorry, this time is no longer available. Please choose another time.');\n goNextStep();\n }\n });\n };\n\n const checkAvailabilityMutation = useMutation(checkTimeSlotAvailability);\n\n const checkRealtimeAvailability = (timeSlot) => {\n if (booking.selectedProducts?.length === 0 || !booking.selectedProducts[0]?.products?.length) goNextStep();\n const productLength = booking.selectedProducts[0]?.products[0]?.metadata?.time;\n if (!productLength) goNextStep();\n setIsSavingBlockedTime(true);\n const payload = {\n provider_id: timeSlot.provider_id,\n room_id: timeSlot.room_id,\n start_time: timeSlot.dateTime,\n duration: productLength,\n };\n checkAvailabilityMutation.mutate(payload, {\n onSuccess: (data) => {\n if (data?.data?.available) {\n goNextStep();\n } else {\n toast.error('We\\'re sorry, this time is no longer available. Please choose another time.');\n const tmpTimes = cloneDeep(availableTimes.flat().map((time) => {\n if (time.dateTime === timeSlot.dateTime) time.enabled = false;\n return time;\n }));\n formatAvailableTimes(tmpTimes);\n }\n setIsSavingBlockedTime(false);\n },\n onError: () => {\n setIsSavingBlockedTime(false);\n toast.error('We\\'re sorry, this time is no longer available. Please choose another time.');\n goNextStep();\n }\n });\n };\n\n const selectTimeSlot = (timeSlot) => {\n const time = timeSlot.value;\n const tmp = cloneDeep(booking);\n const dateTime = momentTz.tz(`${moment(selectedDate).format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', defaultTimezone).toISOString();\n tmp.dateTime = dateTime;\n tmp.dateTimeProviderId = timeSlot.provider_id;\n tmp.roomId = timeSlot.room_id;\n tmp.dateTimeLabel = timeSlot.label;\n if (timeSlot.secondary_date_time) {\n tmp.compoundSecondaryDateTime = timeSlot.secondary_date_time;\n tmp.compoundSecondaryProviderId = timeSlot.secondary_provider_id;\n tmp.compoundSecondaryRoomId = timeSlot.secondary_room_id;\n }\n if (timeSlot.tertiary_date_time) {\n tmp.compoundTertiaryDateTime = timeSlot.tertiary_date_time;\n tmp.compoundTertiaryRoomId = timeSlot.tertiary_room_id;\n tmp.compoundTertiaryProviderId = timeSlot.tertiary_provider_id;\n }\n // Set required fields if not selected\n if (!tmp.species) tmp.species = { selectedSpecies };\n if (!tmp.returningClientFlow) tmp.returningClientFlow = false;\n setBooking(tmp);\n if (holdTimeSlotsEnabled()) {\n onHoldTimeSlot(timeSlot);\n } else if (checkRealtimeAvailabilityEnabled()) {\n checkRealtimeAvailability(timeSlot);\n } else {\n goNextStep();\n }\n };\n\n const filterAppointmentTypes = (allAppointmentTypes, species) => {\n if (allAppointmentTypes === undefined || !species) return [];\n const filtered = allAppointmentTypes.filter(item => {\n const speciesIds = item.metadata?.speciesIds;\n if (speciesIds) {\n return speciesIds.includes(species.id);\n } else {\n return false;\n }\n }).filter(item => {\n if (!!item.hidden_from_clients) {\n return false;\n }\n if (isReturningClient(client) && !item.metadata?.allowReturningClients) {\n return false;\n }\n if (!isReturningClient(client) && !item.metadata?.allowNewClients) {\n return false;\n }\n return item;\n });\n if (isMultiLocationEnabled() && booking.location) {\n return filtered.filter((item) => {\n return booking.location.product_ids.includes(item.id);\n });\n }\n return filtered;\n };\n\n const disableAvailableTimes = () => {\n const tmp = availableTimes.map(time => {\n return {\n dateTime: time.dateTime,\n label: time.label,\n value: time.value,\n enabled: false\n }\n });\n if (booking.isDropoff) {\n formatDropoffTimes(tmp);\n } else {\n formatAvailableTimes(tmp);\n }\n };\n\n const isItemChecked = (item) => {\n return !!selectedProduct.products.find(product => { return product.id === item.id })\n };\n\n const formatProviderTitle = () => {\n if (selectedProduct?.products?.length === 0) { // button is disabled\n return 'Clinician';\n } else if (selectedProvider) {\n return `${selectedProvider?.firstName}`;\n } else {\n return 'Choose your clinician';\n }\n };\n\n const formatSpeciesTitle = () => {\n if (selectedSpecies) {\n return `${selectedSpecies?.name}`;\n } else {\n return 'Select pet species';\n }\n };\n\n const filterProviders = (providerIds, isDropoff = false) => {\n let filtered = [];\n if (isDropoff) {\n filtered = allProviders.filter(provider => (providerIds.includes(provider.id) && (!!booking?.isDropoff ? provider.maxDropoffs > 0 : true)) || provider.id === 'any-provider');\n } else {\n filtered = allProviders.filter(provider => providerIds.includes(provider.id) || provider.id === 'any-provider');\n }\n if (isMultiLocationEnabled() && booking.location) {\n return filtered.filter((item) => {\n return booking.location.provider_user_ids.includes(item.id) || item.id === 'any-provider';\n });\n }\n return filtered;\n };\n\n const chooseProduct = (product) => {\n const products = [product];\n setSelectedProduct({ ...selectedProduct, products });\n setSelectedProductId(product.id);\n setProductResetCode(Math.random());\n\n const tmp = cloneDeep(booking);\n tmp.selectedProducts[tmp.selectedProducts.length - 1] = {\n ...selectedProduct,\n products\n };\n if (product.dropoffEnabled && !product.dropoffRequired) {\n setShowDropoffToggle(true);\n } else {\n setShowDropoffToggle(false);\n }\n if (product.dropoffEnabled && product.dropoffRequired) {\n tmp.isDropoff = true;\n } else {\n tmp.isDropoff = false;\n }\n\n const providerIds = product.providerIds;\n let skip = false;\n if (providerIds && providerIds?.length === 1) {\n setSkipProviderSelection(true);\n skip = true;\n } else {\n setSkipProviderSelection(shop?.metadata?.isBookingSkipProvider);\n }\n if (!shop?.metadata?.isBookingSkipProvider) {\n if (skip) {\n const provider = { id: 'any-provider', firstName: \"Any clinician\"};\n setSelectedProvider(provider);\n disableAvailableTimes();\n tmp.selectedProducts[tmp.selectedProducts.length - 1] = {\n ...selectedProduct,\n products,\n provider\n };\n } else {\n if (providerIds && providerIds.length > 0) {\n setAvailableProviders(filterProviders(providerIds));\n if (selectedProvider && !providerIds.includes(selectedProvider.id)) {\n setSelectedProvider(null);\n disableAvailableTimes();\n }\n } else {\n setSelectedProvider(null);\n disableAvailableTimes();\n }\n }\n } else {\n const provider = { id: 'any-provider', firstName: \"Any clinician\"};\n setSelectedProvider(provider);\n disableAvailableTimes();\n tmp.selectedProducts[tmp.selectedProducts.length - 1] = {\n ...selectedProduct,\n products,\n provider\n };\n }\n resetDateOnNewSelectionMade();\n setBooking(tmp);\n };\n\n const uncheckProduct = (product) => {\n const products = remove([...selectedProduct.products], item => item.id !== product.id);\n setSelectedProduct({ ...selectedProduct, products });\n setSelectedProductId(null);\n\n const tmp = cloneDeep(booking);\n tmp.selectedProducts[tmp.selectedProducts.length - 1] = {\n ...selectedProduct,\n products\n };\n setShowDropoffToggle(false);\n tmp.isDropoff = false;\n setBooking(tmp);\n\n if (products.length === 0 && selectedProvider) {\n setSelectedProvider(null);\n disableAvailableTimes();\n }\n resetDateOnNewSelectionMade();\n };\n\n const selectSpecies = (species) => {\n if (selectedSpecies) {\n const product = [];\n setSelectedProduct({ ...selectedProduct, products: product });\n setSelectedProductId(null);\n if (selectedProvider) {\n setSelectedProvider(null);\n disableAvailableTimes();\n }\n }\n resetDateOnNewSelectionMade();\n setSelectedSpecies(species);\n const availableApptTypes = filterAppointmentTypes(data, species);\n setAvailableAppointmentTypes(availableApptTypes);\n // if (availableApptTypes.length === 1) {\n // chooseProduct(availableApptTypes[0]);\n // }\n setBooking({\n ...booking,\n species\n });\n }\n\n const chooseProvider = (provider) => {\n if (provider.id === selectedProvider?.id) {\n return;\n }\n setAvailableDates([]);\n const tmp = cloneDeep(booking);\n tmp.selectedProducts[tmp.selectedProducts.length - 1] = {\n ...selectedProduct,\n provider\n };\n disableAvailableTimes();\n resetDateOnNewSelectionMade();\n setSelectedProvider(provider);\n setProviderResetCode(Math.random());\n setBooking(tmp);\n };\n\n const timeSlotLabelText = () => {\n if (isLoadingDates) {\n return 'Please wait while we find openings. This may take a minute.';\n } else {\n if (hasOpenedDatePicker) {\n return 'Appointment Times';\n } else {\n return 'Next Available Appointments';\n }\n }\n };\n\n const onSelectDate = (opening) => {\n setHasOpenedDatePicker(true);\n if (!opening || !opening.available) {\n const firstAvailableDate = availableDates.find(d => d.available);\n if (!firstAvailableDate || !firstAvailableDate.available) {\n toast.error('No appointments available. Please select a different date.');\n return;\n }\n const formattedValue = firstAvailableDate;\n setSelectedDate(moment(formattedValue).tz(defaultTimezone).toISOString());\n } else {\n const formattedValue = opening.date;\n setSelectedDate(moment(formattedValue).tz(defaultTimezone).toISOString());\n }\n };\n\n const formatProductName = (products) => {\n if (availableAppointmentTypes.length === 0 && selectedSpecies === null) { // disabled\n return 'Appointment Type';\n }\n if (products?.length === 1) {\n return `${products[0].name}`;\n } else {\n return \"Choose the appointment type\";\n }\n };\n\n useEffect(() => {\n if (client && client.created_at) {\n const isReturning = isReturningClient(client);\n if (!isReturning && isNewClientBookingDisabled()) {\n goNextStep();\n }\n }\n const species = selectedSpecies || booking?.species;\n const availableApptTypes = filterAppointmentTypes(data, species);\n setAvailableAppointmentTypes(availableApptTypes);\n }, [client?.created_at, booking?.location?.id]);\n\n useEffect(() => {\n if (booking?.location?.id && selectedProduct?.products?.length > 0) {\n uncheckProduct(selectedProduct?.products[0]);\n }\n }, [booking?.location?.id]);\n\n useEffect(() => {\n if ((selectedSpecies || booking?.species) && availableAppointmentTypes?.length === 0) {\n const species = selectedSpecies || booking?.species;\n const availableApptTypes = filterAppointmentTypes(data, species);\n setAvailableAppointmentTypes(availableApptTypes);\n // if (availableApptTypes.length === 1) {\n // chooseProduct(availableApptTypes[0]);\n // }\n }\n\n if ((selectedProduct?.products?.length > 0 || booking?.selectedProduct?.products.length > 0) && availableProviders?.length === 0) {\n const product = selectedProduct.products[0] || booking?.selectedProduct.products[0];\n const providerIds = product.providerIds;\n if (providerIds && providerIds.length > 0) {\n setAvailableProviders(filterProviders(providerIds));\n }\n }\n });\n\n useEffect(() => {\n if (selectedProduct?.products?.length > 0 || booking?.selectedProduct?.products.length > 0) {\n const product = selectedProduct.products[0] || booking?.selectedProduct.products[0];\n const providerIds = product.providerIds;\n if (providerIds && providerIds.length > 0) {\n setAvailableProviders(filterProviders(providerIds, booking?.isDropoff));\n }\n }\n }, [booking?.isDropoff]);\n\n const toggleBookingPolicy = () => {\n setBookingPolicyOpen(!bookingPolicyOpen);\n };\n\n const contentStyle = () => {\n if (isFetchingAppointmentTypes || isLoadingAppointmentTypes || isFetchingSpecies || isLoadingSpecies) {\n return { display: 'none' };\n }\n return {};\n };\n\n const waitToShow = () => {\n return (isFetchingAppointmentTypes || isLoadingAppointmentTypes || isFetchingSpecies || isLoadingSpecies);\n };\n\n return (\n <>\n {waitToShow() && (\n
\n \n
\n )}\n
\n {((!isMultiLocationEnabled() && !user) || isMultiLocationEnabled()) ? (\n
\n \n
\n ) :
}\n {bookingPolicyOpen &&\n shop?.metadata?.bookingPolicy && !anySelectionsMade() &&\n document.getElementById('wrapper') &&\n ReactDOM.createPortal(\n
,\n document.getElementById('wrapper')\n )}\n
\n
\n {!waitToShow() && shop?.metadata?.bookingPolicy && !anySelectionsMade() && (\n <>\n
\n \n \n Our Appointment Policy\n \n {/* */}\n
\n \n
\n \n

{shop?.metadata?.bookingPolicy}

\n
\n \n
\n
\n \n \n )}\n
\n \n Appointment Information\n \n \n \n \n \n \n \n {showDropoffToggle && (\n \n setBooking({ ...booking, isDropoff: e.target.checked })}\n checked={booking.isDropoff}\n disabled={selectedProduct?.products?.length === 0}\n />\n \n )}\n {(!shop?.metadata?.isBookingSkipProvider && !skipProviderSelection) && (\n \n \n \n )}\n \n 0 ? selectedProduct.products[0].name : null}\n isLoadingDates={isLoadingDates}\n isFetchingDates={isFetchingDates}\n onChange={booking?.isDropoff ? formatDropoffTimes : formatAvailableTimes}\n />\n \n \n \n {timeSlotLabelText()}\n {showWaitlistHint && (\n \n

Available times too far out? After you schedule an appointment you can join our waitlist and be notified if something opens up earlier!

\n
\n )}\n {(isLoadingDates || isSavingBlockedTime) && }\n
\n
\n \n
\n {availableTimes.map((row, rowIndex) => (\n row.map((item, colIndex) => (\n selectTimeSlot(item)}\n >\n {item.label}\n \n ))\n ))}\n {availableTimes.length === 0 && (\n <>\n

We're sorry, there are currently no available times online for this appointment type

\n \n \n )}\n
\n {availableTimes.length > 0 && (\n \n

All times are in {defaultTimezone}

\n
\n )}\n
\n
\n \n );\n};\n\n\nexport default React.memo(AppointmentSelection);\n","import { useEffect, useMemo, useState } from 'react';\nimport { Button, FormGroup, Input, Label, Spinner, Col, Row, UncontrolledButtonDropdown, DropdownMenu, DropdownItem, DropdownToggle, Alert, CustomInput } from 'reactstrap';\nimport { useForm, Controller } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\nimport { CookieKeys } from '../../../../../utility/Constant';\nimport { Calendar } from 'react-feather';\nimport { Cookie } from '../../../../../utility/Cookie';\nimport Select from 'react-select';\nimport moment from 'moment';\nimport { border, borderColor } from 'polished';\nimport { isReturningClient } from '../returningClientHelper';\n\nconst sanitizePhoneNumber = (phoneNumber) => {\n return phoneNumber?.replace(/[-()\\s]/g, '');\n};\n\nconst phoneRegExp = /^(\\d{3})[- ]?\\)?(\\d{3})[- ]?(\\d{4})$/;\nconst validatePhoneNumber = (phoneNumber) => {\n return phoneRegExp.test(phoneNumber) && phoneNumber.length === 10;\n};\n\nconst schema = yup.object().shape({\n firstName: yup.string().nullable().trim(),\n email: yup.string().nullable().email('Please enter a valid email').max(255, 'Please enter within 255 characters'),\n phoneNumber: yup\n .string()\n .nullable()\n .test('min-phone', 'Please enter a valid 10-digit phone number', (value, context) => {\n const tmp = sanitizePhoneNumber(value);\n return !tmp || tmp.length < 10 || (validatePhoneNumber(tmp) && tmp.length === 10);\n })\n .trim()\n .max(14, 'Phone number should be a maximum of 12 characters'),\n phoneCode: yup.string().nullable().trim(),\n petName: yup.string().nullable().trim(),\n // Address validation\n address1: yup.string().nullable().trim(),\n address2: yup.string().nullable().trim(),\n city: yup.string().nullable().trim(),\n state: yup.string().nullable().trim(),\n zip: yup.string().nullable().trim(),\n});\n\nconst CustomerForm = ({ allowRemind, setAllowRemind, onSubmit: onSubmitProp, isLoading, user, breeds, shop, booking }) => {\n const defaultValues = {\n firstName: user?.firstName,\n phoneNumber: `${user?.phoneNumber || ''}`,\n phoneCode: user?.phoneCode || '1',\n email: user?.email,\n address1: booking?.customer?.address1,\n address2: booking?.customer?.address2,\n city: booking?.customer?.city,\n state: booking?.customer?.state,\n zip: booking?.customer?.zip,\n petName: '',\n sex: '',\n birthdate: null,\n clientDob: null,\n breed: '',\n breed_id: '',\n note: '',\n };\n\n const {\n handleSubmit,\n watch,\n control,\n reset,\n setValue,\n setError,\n formState: { errors, isDirty, dirtyFields },\n getValues,\n } = useForm({\n mode: 'all',\n shouldFocusError: true,\n defaultValues,\n resolver: yupResolver(schema),\n });\n const watchForm = watch();\n const [addNewPet, setAddNewPet] = useState(false);\n const [petNameErrorType, setPetNameErrorType] = useState(null);\n const [overridePetNameError, setOverridePetNameError] = useState(false);\n const [hasWellnessPlan, setHasWellnessPlan] = useState(false);\n const [hasValidationError, setHasValidationError] = useState(false);\n const [sexes, setSexes] = useState([\n {\n label: 'Please select your pet\\'s sex...',\n value: 'none',\n },\n {\n label: 'Male',\n value: 'male',\n },\n {\n label: 'Female',\n value: 'female',\n },\n ]);\n\n useEffect(() => {\n const prevValues = Cookie.getItem(CookieKeys.confirmationForm);\n if (prevValues) {\n Object.keys(prevValues).forEach(key => {\n setValue(key, prevValues[key], { shouldDirty: true });\n });\n Cookie.removeItem(CookieKeys.confirmationForm);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n }\n\n return () => {\n Cookie.setItem(CookieKeys.confirmationForm, JSON.stringify(getValues()));\n sessionStorage.setItem(CookieKeys.confirmationForm, JSON.stringify(getValues()));\n };\n }, []);\n\n const isTelemedicine = useMemo(() => {\n const product = booking.selectedProducts[0]?.products[0];\n if (product && product.isTelemedicine) return true;\n return false;\n }, [booking.selectedProducts]);\n\n const availablePatientNames = useMemo(() => {\n const result = booking?.customer?.patients?.filter(patient => {\n return !patient.deceased_at;\n }) || [];\n return result;\n }, [booking?.customer?.patients, booking?.species?.id]);\n\n useEffect(() => {\n if (availablePatientNames.length === 0) {\n setAddNewPet(true);\n }\n }, [availablePatientNames]);\n\n useEffect(() => {\n if (availablePatientNames.length === 1) {\n setValue('petName', availablePatientNames[0].name, { shouldDirty: true });\n setValue('sex', availablePatientNames[0].sex, { shouldDirty: true });\n setValue('birthdate', availablePatientNames[0].birthdate, { shouldDirty: true });\n }\n }, []);\n\n const choosePetName = (name) => {\n setValue('petName', name, { shouldDirty: true });\n const tmp = availablePatientNames.find(patient => patient.name === name);\n if (tmp) {\n setValue('sex', tmp.sex || 'none', { shouldDirty: true });\n setValue('birthdate', tmp.birthdate || null, { shouldDirty: true });\n setValue('breed', tmp.breed || '', { shouldDirty: true });\n setValue('breed_id', tmp.breed_id || '', { shouldDirty: true });\n }\n };\n\n const onStartAddNewPet = () => {\n setAddNewPet(true);\n setValue('petName', '', { shouldDirty: true });\n setValue('sex', 'none', { shouldDirty: true });\n setValue('birthdate', null, { shouldDirty: true });\n setValue('breed', '', { shouldDirty: true });\n setValue('breed_id', '', { shouldDirty: true });\n };\n\n const isInsuranceOfferEnabled = () => {\n if (shop?.feature_settings?.vertical_insure_enabled !== undefined && shop?.feature_settings?.vertical_insure_enabled?.enabled === true) {\n return true;\n }\n return false;\n };\n\n const askForWellnessPlanEnabled = () => {\n if (shop?.feature_settings?.ask_returning_clients_for_wellness_plan !== undefined && shop?.feature_settings?.ask_returning_clients_for_wellness_plan === true) {\n if (isReturningClient(booking?.customer) && !isLoading) {\n return true;\n }\n }\n return false;\n };\n\n const isClientDobRequired = () => {\n if (shop?.feature_settings?.booking_client_date_of_birth_collection_enabled !== undefined &&\n shop?.feature_settings?.booking_client_date_of_birth_collection_enabled === true) {\n if (!isReturningClient(booking?.customer) && !isLoading) {\n return true;\n }\n }\n return false;\n };\n\n const patientDetailsRequired = () => {\n if (shop?.feature_settings?.booking_patient_demographic_collection_enabled !== undefined &&\n shop?.feature_settings?.booking_patient_demographic_collection_enabled === true) {\n if (addNewPet || (availablePatientNames.length === 0 && !isReturningClient(booking?.customer) && !isLoading)) {\n return true;\n }\n }\n if (isInsuranceOfferEnabled()) {\n return true;\n }\n return false;\n };\n\n useEffect(() => {\n if (shop && patientDetailsRequired()) {\n setValue('sex', 'none', { shouldDirty: true });\n }\n }, [shop]);\n\n const emailAndPhoneRequired = () => {\n if (isTelemedicine) return true;\n if (shop?.feature_settings?.require_phone_and_email_for_client_booking !== undefined &&\n shop?.feature_settings?.require_phone_and_email_for_client_booking === true) {\n return true;\n } else {\n return false;\n }\n };\n\n const phoneAlwaysRequired = () => {\n if (isTelemedicine) return true;\n if (shop?.feature_settings?.require_phone_for_client_booking !== undefined &&\n shop?.feature_settings?.require_phone_for_client_booking === true) {\n return true;\n } else {\n return false;\n }\n };\n\n const addressRequired = () => {\n const settingRequires = shop?.feature_settings?.collect_address_from_new_clients_enabled;\n if (settingRequires !== undefined && settingRequires === true) {\n if (!isReturningClient(booking?.customer) && !isLoading) {\n return true;\n }\n }\n\n return false;\n };\n\n const states = useMemo(() => {\n return [\n { label: 'AL', value: 'AL' },\n { label: 'AK', value: 'AK' },\n { label: 'AZ', value: 'AZ' },\n { label: 'AR', value: 'AR' },\n { label: 'CA', value: 'CA' },\n { label: 'CO', value: 'CO' },\n { label: 'CT', value: 'CT' },\n { label: 'DE', value: 'DE' },\n { label: 'FL', value: 'FL' },\n { label: 'GA', value: 'GA' },\n { label: 'HI', value: 'HI' },\n { label: 'ID', value: 'ID' },\n { label: 'IL', value: 'IL' },\n { label: 'IN', value: 'IN' },\n { label: 'IA', value: 'IA' },\n { label: 'KS', value: 'KS' },\n { label: 'KY', value: 'KY' },\n { label: 'LA', value: 'LA' },\n { label: 'ME', value: 'ME' },\n { label: 'MD', value: 'MD' },\n { label: 'MA', value: 'MA' },\n { label: 'MI', value: 'MI' },\n { label: 'MN', value: 'MN' },\n { label: 'MS', value: 'MS' },\n { label: 'MO', value: 'MO' },\n { label: 'MT', value: 'MT' },\n { label: 'NE', value: 'NE' },\n { label: 'NV', value: 'NV' },\n { label: 'NH', value: 'NH' },\n { label: 'NJ', value: 'NJ' },\n { label: 'NM', value: 'NM' },\n { label: 'NY', value: 'NY' },\n { label: 'NC', value: 'NC' },\n { label: 'ND', value: 'ND' },\n { label: 'OH', value: 'OH' },\n { label: 'OK', value: 'OK' },\n { label: 'OR', value: 'OR' },\n { label: 'PA', value: 'PA' },\n { label: 'RI', value: 'RI' },\n { label: 'SC', value: 'SC' },\n { label: 'SD', value: 'SD' },\n { label: 'TN', value: 'TN' },\n { label: 'TX', value: 'TX' },\n { label: 'UT', value: 'UT' },\n { label: 'VT', value: 'VT' },\n { label: 'VA', value: 'VA' },\n { label: 'WA', value: 'WA' },\n { label: 'WV', value: 'WV' },\n { label: 'WI', value: 'WI' },\n { label: 'WY', value: 'WY' }\n ];\n });\n\n const notesPlaceholderText = () => {\n // notes_placeholder_text_for_client_booking\n if (shop?.feature_settings?.notes_placeholder_text_for_client_booking !== undefined &&\n shop?.feature_settings?.notes_placeholder_text_for_client_booking.length > 0) {\n return `${shop?.feature_settings?.notes_placeholder_text_for_client_booking}`;\n } else {\n return \"Anything else you'd like to tell us about your pet?\";\n }\n };\n\n const notesRequired = () => {\n if (shop?.feature_settings?.require_notes_for_client_booking !== undefined &&\n shop?.feature_settings?.require_notes_for_client_booking === true) {\n return true;\n } else {\n return false;\n }\n };\n\n const hideEmail = () => {\n return !emailAndPhoneRequired() && !!getValues()?.phoneNumber && getValues().phoneNumber.length !== 0;\n };\n\n const hidePhone = () => {\n return !emailAndPhoneRequired() && !phoneAlwaysRequired() && user && !!getValues()?.email && getValues().email.length !== 0;\n };\n\n const onSubmit = data => {\n let hasError = false;\n\n const clientName = data?.firstName;\n if (!clientName) {\n setError('firstName', { message: 'Please enter your full first and last name' });\n hasError = true;\n } else {\n if (clientName.length > 255) {\n setError('firstName', { message: 'Please keep your name less than 255 characters' });\n hasError = true;\n } else if (!clientName.includes(' ')) {\n setError('firstName', { message: 'Please enter your full first and last name' });\n hasError = true;\n } else {\n let namePass = false;\n if (clientName.replace(' ', ' ').split(' ').every(v => !!v && (v.length > 1 || v === '&'))) {\n namePass = true;\n } else if (clientName.replace(' ', ' ').split(' ').filter(v => !!v && v.length > 1).length >= 2) {\n namePass = true;\n }\n if (!namePass) {\n setError('firstName', { message: 'Please enter your full first and last name' });\n hasError = true;\n }\n }\n }\n\n const phoneNumber = sanitizePhoneNumber(data?.phoneNumber);\n const email = data?.email;\n if (!phoneNumber && !email) {\n setError('phoneNumber', { message: `A mobile phone number ${emailAndPhoneRequired() ? 'and' : 'or'} email is required` });\n hasError = true;\n if (emailAndPhoneRequired()) {\n setError('email', { message: 'A valid email address is required' });\n }\n }\n if (emailAndPhoneRequired() && (!email || !phoneNumber)) {\n if (!phoneNumber) {\n setError('phoneNumber', { message: 'A phone number is required' });\n } else {\n setError('email', { message: 'A valid email address is required' });\n }\n hasError = true;\n }\n if (phoneAlwaysRequired() && !phoneNumber) {\n setError('phoneNumber', { message: 'A phone number is required' });\n hasError = true;\n }\n if (phoneNumber && !validatePhoneNumber(phoneNumber)) {\n setError('phoneNumber', { message: 'Please enter a valid 10-digit phone number' });\n hasError = true;\n }\n if (!data.petName) {\n setError('petName', { message: 'Pet name is required' });\n hasError = true;\n }\n if (addNewPet && !overridePetNameError && data.petName && (data.petName.length > 30 || data.petName.split(' ').length >= 3)) {\n let petNameMsg = '';\n if (data.petName.length > 30) {\n petNameMsg += 'Please limit your pet\\'s name to 30 characters. ';\n setPetNameErrorType('too_long');\n } else if (data.petName.split(' ').length >= 3) {\n petNameMsg += 'Is this one pet\\'s name? If you have more than one pet, please schedule separate appointments.';\n setPetNameErrorType('too_many_words');\n }\n setError('petName', { message: petNameMsg });\n hasError = true;\n } else {\n setPetNameErrorType(null);\n }\n if (!data.note && notesRequired()) {\n setError('note', { message: 'Please provide detail about the visit' });\n hasError = true;\n } else if (data.note && data.note.length > 500) {\n setError('note', { message: 'Please limit your note to 500 characters' });\n hasError = true;\n } else if (notesRequired() && data.note && data.note.length < 5) {\n setError('note', { message: 'Please provide a little more detail - even just a few words about the visit' });\n hasError = true;\n }\n if (addressRequired()) {\n if (!data.address1) setError('address1', { message: 'Address is required' });\n if (!data.city) setError('city', { message: 'City is required' });\n if (!data.state) setError('state', { message: 'State is required' });\n if (!data.zip) setError('zip', { message: 'Zip is required' });\n if (!data.address1 || !data.city || !data.state || !data.zip) {\n hasError = true;\n }\n }\n if (isClientDobRequired()) {\n if (!data.clientDob) {\n setError('clientDob', { message: 'Your date of birth is required' });\n hasError = true;\n }\n if (new Date(data.clientDob) > new Date()) {\n setError('clientDob', { message: 'Your date of birth must be in the past' });\n hasError = true;\n }\n if (new Date(data.clientDob) < new Date('1776-01-01')) {\n setError('clientDob', { message: 'Are you a time traveler? Please pick a date after 1776 :)' });\n hasError = true;\n }\n }\n if (patientDetailsRequired()) {\n if (!data.sex || data.sex === 'none') {\n setError('sex', { message: 'Please select an option' });\n hasError = true;\n }\n if (!data.birthdate) {\n setError('birthdate', { message: 'Pet\\'s date of birth is required' });\n hasError = true;\n } else if (new Date(data.birthdate) > new Date()) {\n setError('birthdate', { message: 'Pet\\'s date of birth must be in the past' });\n hasError = true;\n } else if (new Date(data.birthdate) < new Date('1776-01-01')) {\n setError('birthdate', { message: 'Is your pet a time traveler? Please pick a birthdate after 1776 :)' });\n hasError = true;\n }\n if (breeds && breeds.length > 0 && (!data.breed || data.breed === '')) {\n setError('breed_id', { message: 'Pet\\'s breed is required' });\n hasError = true;\n } else {\n if (!data.breed || data.breed === '') {\n setError('breed', { message: 'Pet\\'s breed is required' });\n hasError = true;\n }\n }\n }\n if (hasError) {\n setHasValidationError(true);\n return;\n } else {\n setHasValidationError(false);\n }\n Cookie.setItem(CookieKeys.confirmationForm, JSON.stringify(data));\n sessionStorage.setItem(CookieKeys.confirmationForm, JSON.stringify(data));\n onSubmitProp(\n {\n ...data,\n phoneNumber,\n petName: data?.petName,\n breed_id: data?.breed_id?.value,\n hasWellnessPlan,\n },\n isDirty,\n dirtyFields\n );\n };\n\n useEffect(() => {\n if (errors) {\n const errorCount = Object.keys(errors).length;\n if (errorCount === 0) {\n setHasValidationError(false);\n }\n }\n }, [errors, Object.keys(errors)]);\n\n const onChangeBreedId = (value) => {\n if (value) {\n setValue('breed_id', value);\n const b = breeds.find(b => b.value === value.value);\n setValue('breed', b?.label);\n } else {\n setValue('breed_id', '');\n setValue('breed', '');\n }\n };\n\n return (\n
\n (\n \n \n 0}\n className=\"form-input\"\n placeholder=\"Full Name\"\n {...field}\n />\n {!!errors.firstName && (\n \n {errors.firstName.message}\n \n )}\n \n )}\n />\n {(!hidePhone() || hideEmail()) && (\n (\n \n 0}\n maxLength={14}\n className=\"form-input\"\n id=\"phoneNumber\"\n placeholder=\"Mobile Phone\"\n type=\"tel\"\n { ...field }\n />\n {(!!errors.phoneCode || !!errors.phoneNumber) && (\n \n {errors.phoneCode?.message || errors.phoneNumber?.message}\n \n )}\n \n )}\n />\n )}\n {((!hideEmail() && !hidePhone()) || (hideEmail() && hidePhone())) && (\n
\n {!addressRequired() && !emailAndPhoneRequired() && !phoneAlwaysRequired() && (\n \n )}\n
\n )}\n {(!hideEmail() || hidePhone()) && (\n <>\n (\n \n 0}\n className=\"form-input\"\n id=\"email\"\n placeholder=\"Email Address\"\n {...field}\n />\n {!!errors.email && (\n \n {errors.email.message}\n \n )}\n \n )}\n />\n \n )}\n\n {addressRequired() && (\n <>\n (\n \n 0}\n className=\"form-input\"\n id=\"address1\"\n placeholder=\"Street Address\"\n type=\"text\"\n { ...field }\n />\n {!!errors.address1 && (\n \n {errors.address1?.message}\n \n )}\n \n )}\n />\n (\n \n 0}\n className=\"form-input\"\n id=\"address2\"\n placeholder=\"Apartment, Suite, etc.\"\n type=\"text\"\n { ...field }\n />\n {!!errors.address1 && (\n \n {errors.address2?.message}\n \n )}\n \n )}\n />\n \n )}\n {(addressRequired() || isInsuranceOfferEnabled()) && (\n \n {addressRequired() && (\n \n (\n \n 0}\n className=\"form-input\"\n id=\"city\"\n placeholder=\"City\"\n type=\"text\"\n { ...field }\n />\n {!!errors.city && (\n \n {errors.city?.message}\n \n )}\n \n )}\n />\n \n )}\n \n (\n \n 0}\n style={{\n height: '50px',\n }}\n id=\"state\"\n type=\"select\"\n { ...field }\n >\n {states.map(state => (\n \n {state.label}\n \n ))}\n \n {!!errors.state && (\n \n {errors.state?.message}\n \n )}\n \n )}\n />\n \n \n (\n \n 0}\n className=\"form-input\"\n id=\"zip\"\n placeholder=\"Zip\"\n type=\"text\"\n { ...field }\n />\n {!!errors.zip && (\n \n {errors.zip?.message}\n \n )}\n \n )}\n />\n \n \n )}\n {isClientDobRequired() && (\n (\n \n \n \n {!!errors.clientDob && (\n \n {errors.clientDob.message}\n \n )}\n \n )}\n />\n )}\n {(availablePatientNames?.length > 0 && !addNewPet) && (\n (\n \n
\n \n
\n
\n \n \n {`${field.value || 'Select pet name'}`}\n \n \n {availablePatientNames?.map(patient => (\n {\n choosePetName(e.target.value);\n }}\n >\n {patient.name}\n \n ))}\n \n \n {\n setValue('petName', '');\n onStartAddNewPet();\n }}\n style={{ width: '25%', fontSize: '12px', padding: '5px 10px' }}\n >\n New pet +\n \n {!!errors.petName && (\n \n {errors.petName.message}\n \n )}\n
\n \n )}\n />\n )}\n {(addNewPet || (patientDetailsRequired() && !!getValues('petName'))) && (\n <>\n {addNewPet && (\n <>\n (\n \n \n \n {!!errors.petName && (\n \n {errors.petName.message}\n \n )}\n \n )}\n />\n {petNameErrorType && petNameErrorType === 'too_many_words' && (\n \n setOverridePetNameError(!overridePetNameError)}\n />\n \n \n )}\n \n )}\n {patientDetailsRequired() && (\n <>\n (\n \n \n {sexes.map(sex => (\n \n {sex.label}\n \n ))}\n \n {!!errors.sex && (\n \n {errors.sex.message}\n \n )}\n \n )}\n />\n (\n \n \n \n {!!errors.birthdate && (\n \n {errors.birthdate.message}\n \n )}\n \n )}\n />\n {breeds && breeds.length > 0 ? (\n (\n \n ({\n ...provided,\n minHeight: 28,\n border: '1px solid #dddddd',\n borderRadius: '0.357rem',\n borderColor: isSelected ? '#03464C' : '#dddddd',\n boxShadow: 'none',\n '&:hover': {\n borderColor: '#03464C',\n }\n }),\n dropdownIndicator: provided => ({\n ...provided,\n padding: '8px 4px',\n }),\n placeholder: provided => ({\n ...provided,\n fontSize: 14,\n }),\n singleValue: provided => ({\n ...provided,\n fontSize: 14,\n }),\n option: (provided, { isDisabled, isFocused, isSelected }) => ({\n ...provided,\n fontSize: 14,\n color: '#03464C',\n padding: '8px 12px',\n backgroundColor: isFocused ? '#dae1e7' : 'white',\n }),\n valueContainer: (provided, { isSelected, isFocused }) => ({\n ...provided,\n paddingTop: 8,\n paddingBottom: 8,\n paddingLeft: 12,\n }),\n menu: provided => ({ ...provided, zIndex: 10 }),\n ...({}),\n }}\n isDisabled={isLoading}\n options={breeds}\n { ...field }\n onChange={(value) => {\n onChangeBreedId(value);\n }}\n />\n {!!errors.breed_id && (\n \n {errors.breed_id.message}\n \n )}\n \n )}\n />\n ) : (\n (\n \n \n {!!errors.breed && (\n \n {errors.breed.message}\n \n )}\n \n )}\n />\n )}\n \n )}\n \n )}\n\n {askForWellnessPlanEnabled() && (\n setHasWellnessPlan(!hasWellnessPlan)}\n >\n \n \n
\n )}\n (\n \n \n {!!errors.note && (\n \n {errors.note.message}\n \n )}\n \n )}\n />\n {hasValidationError && (\n \n
\n Please correct the errors above before submitting\n
\n
\n )}\n \n {isLoading && }\n {!isLoading &&\n <>\n \n
\n {`${!shop?.metadata?.isAutoAccept ? 'REQUEST' : 'CONFIRM'} APPOINTMENT`}\n
\n \n }\n \n {isTelemedicine && (\n \n )}\n {!isTelemedicine && (\n \n setAllowRemind(!allowRemind)}\n />\n \n \n )}\n \n );\n};\n\nexport default CustomerForm;\n","export const isDepositRequired = (shop, product, isReturningClient) => {\n if (shop?.feature_settings?.deposit_collection_v1_enabled !== undefined && shop?.feature_settings?.deposit_collection_v1_enabled === true) {\n if (!product) return true;\n const metadata = product.metadata;\n if (!metadata.depositRequiredBeforeBooking) return false;\n if (isReturningClient && metadata.collectDepositFromReturningClients) {\n return true;\n } else if (!isReturningClient && metadata.collectDepositFromNewClients) {\n return true;\n } else if (metadata.collectDepositFromNewClients && metadata.collectDepositFromReturningClients) {\n return true;\n }\n }\n return false;\n};\n\nexport const saveAppointmentBeforeDeposit = (product) => {\n return product?.metadata?.appointmentRequestWithoutDeposit;\n};\n","import { ChevronRight, Phone } from \"react-feather\";\nimport { Button } from \"reactstrap\";\nimport NavbarSms from \"../../../../../@core/layouts/components/navbar/NavbarSms\";\n\nconst KeywordAction = (props) => {\n const {\n keywordAction,\n onContinue,\n onCancel,\n shop,\n } = props;\n\n const formatPhoneNumber = (phoneNumber) => {\n if (!phoneNumber) return '';\n return [\n phoneNumber.slice(0, 3),\n phoneNumber.slice(3, 6),\n phoneNumber.slice(6)\n ].join('-');\n };\n\n return (\n
\n
\n

{keywordAction?.info_message}

\n
\n
\n {!keywordAction?.allow_bypass && (\n <>\n \n

Call us:

\n \n \n {formatPhoneNumber(shop?.phoneNumber)}\n \n \n
\n \n )}\n {keywordAction?.action_type === 'prompt' && (\n \n Go back\n \n )}\n {keywordAction?.allow_bypass && (\n \n <>\n {keywordAction?.action_type === 'prompt' ? (\n <>\n {keywordAction?.prompt_message}\n \n ) : (\n <>\n Continue\n \n )}\n \n \n \n )}\n
\n
\n );\n};\n\nexport default KeywordAction;\n","import { useState, useEffect, useMemo } from 'react';\nimport { Alert, Button, Row, Col, Label } from 'reactstrap';\nimport { useRecoilState } from 'recoil';\nimport { useMutation, useQuery } from 'react-query';\nimport * as Sentry from \"@sentry/react\";\nimport momentTz from 'moment-timezone';\nimport { Calendar, Check, ChevronLeft } from 'react-feather';\nimport { chain, uniqBy, mapValues, isEmpty, omit, cloneDeep } from 'lodash';\nimport { bookAppointment, updateCustomer, createVerificationCode } from '@apis';\nimport userState from '../../../../../recoil/atoms/auth/user';\nimport { AppointmentSteps, CookieKeys, DAY_MONTH_DATE_FORMAT, DAY_MONTH_DATE_TIME_FORMAT } from '../../../../../utility/Constant';\nimport { Cookie } from '../../../../../utility/Cookie';\nimport shopState from '../../../../../recoil/atoms/current-shop';\nimport CustomerForm from './CustomerForm';\nimport { defaultSelectedProduct } from '../../../../../recoil/atoms/booking/booking';\nimport { upsertClient } from '../../../../../apis/customer.api';\nimport { isDepositRequired, saveAppointmentBeforeDeposit } from '../depositHelper';\nimport { checkTimeSlotAvailability, getBreeds, getKeywordActions } from '../../../../../apis';\nimport KeywordAction from './KeywordAction';\nimport clientState from '../../../../../recoil/atoms/booking/client';\nimport { bannedPhoneNumbers, isReturningClient } from '../returningClientHelper';\nimport toast from '@components/toast';\n\nconst ClientInfoCollection = ({ goNextStep, booking, setStep, setBooking, backPreviousStep, setBookingStep }) => {\n const [user, setUser] = useRecoilState(userState);\n const [client, setClient] = useRecoilState(clientState);\n const [shop] = useRecoilState(shopState);\n const defaultTimezone = shop?.timezone;\n const [allowRemind, setAllowRemind] = useState(true);\n const [isLoading, setIsLoading] = useState(false);\n const [keywordActions, setKeywordActions] = useState([]);\n const [showKeywordAction, setShowKeywordAction] = useState(false);\n const [activeKeywordAction, setActiveKeywordAction] = useState(null);\n const [confirmedKeywordAction, setConfirmedKeywordAction] = useState(false);\n const [breeds, setBreeds] = useState([]);\n\n const {\n data: data,\n isFetching: isFetchingKeywordActions,\n refetch: refetchKeywordActions,\n isLoading: isLoadingKeywordActions } = useQuery(\n ['keywordActions'], () => getKeywordActions({}),\n {\n onSuccess: (data) => {\n setKeywordActions(data?.data || []);\n setIsLoading(false);\n },\n onError: (error) => {\n setIsLoading(false);\n },\n enabled: true\n }\n );\n\n const {\n data: _breeds,\n isFetching: isFetchingBreeds,\n refetch: refetchBreeds,\n isLoading: isLoadingBreeds,\n } = useQuery(['breeds', booking?.species?.id], () => getBreeds({ species_id: booking?.species?.id }), {\n onSuccess: (data) => {\n const tmp = data?.data?.map(breed => ({ label: breed.display_name, value: breed.id }));\n setBreeds(tmp || []);\n },\n onError: (error) => {\n },\n enabled: !!booking?.species?.id\n });\n\n useEffect(() => {\n refetchKeywordActions();\n window.history.pushState(null, null, window.location.pathname);\n window.addEventListener('popstate', backPreviousStep);\n return () => {\n window.removeEventListener('popstate', backPreviousStep);\n };\n }, []);\n\n const selectedProviders = chain(booking.selectedProducts)\n .groupBy('provider.id')\n .mapValues(arr => {\n const result = arr.reduce(\n (res, item) => {\n res.provider = item.provider;\n res.products = uniqBy([...res.products, ...item.products], 'id');\n return res;\n },\n { ...defaultSelectedProduct }\n );\n return result;\n })\n .value();\n\n const updateCustomerMutation = useMutation(\n async obj => {\n try {\n if (!!user) {\n const { data } = await updateCustomer(user?.id, { avatar: user.avatar, ...obj });\n Cookie.setItem(CookieKeys.user, { ...user, ...data.data });\n setUser({ ...user, ...data.data });\n }\n } catch (e) {\n throw e.response.data;\n }\n },\n {\n onMutate: () => {\n setIsLoading(true);\n },\n onError: () => {\n setIsLoading(false);\n },\n }\n );\n\n const skipProviderAvailabilityCheck = useMemo(() => {\n return shop?.feature_settings?.skip_provider_availability_check !== undefined &&\n shop.feature_settings.skip_provider_availability_check;\n }, [shop]);\n\n const isAppointmentLimitEnabled = useMemo(() => {\n return shop?.feature_settings?.booking_limit_per_time_slot_enabled !== undefined &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.enabled &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.apply_to_providers &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.limit > 1;\n }, [shop]);\n\n const isRequestedProviderInNoteEnabled = useMemo(() => {\n return shop?.feature_settings?.include_requested_provider_in_appointment_note !== undefined &&\n shop.feature_settings.include_requested_provider_in_appointment_note;\n }, [shop]);\n\n const getSource = () => {\n const source = new URLSearchParams(location.search).get(\"utm_source\");\n if (source) return source;\n if (booking?.referralSource) return booking?.referralSource;\n return null;\n };\n\n const addBookingMutation = useMutation(bookAppointment);\n\n const saveAppointment = (user, clientInfo, note, saveAsRequest = false) => {\n const products = Object.values(selectedProviders).reduce((res, item) => {\n const arr = item.products.map(product => ({\n id: product.id,\n anyone: item.provider.id === 'any-provider' ? !booking?.dateTimeProviderId : !item.provider,\n providerId: item.provider.id === 'any-provider' ? (booking?.dateTimeProviderId || null) : item.provider?.id,\n ...(!item.provider && { label: 'Anyone' }),\n }));\n res.push(...arr);\n return res;\n }, []);\n let specificDoctorRequested = false;\n if (isRequestedProviderInNoteEnabled && Object.keys(selectedProviders).length > 0) {\n specificDoctorRequested = Object.keys(selectedProviders)[0] !== 'any-provider';\n }\n\n const sendReminder = allowRemind && !saveAsRequest;\n addBookingMutation.mutate(\n {\n source: 'CUSTOMER_SITE',\n products,\n userId: user?.id,\n isReminderSMS: sendReminder,\n isReminderEmail: sendReminder,\n isSendConfirmation: sendReminder,\n isReturningClient: booking.returningClientFlow,\n roomId: booking?.roomId,\n compound_secondary_date_time: booking?.compoundSecondaryDateTime,\n compound_secondary_room_id: booking?.compoundSecondaryRoomId,\n compound_secondary_provider_id: booking?.compoundSecondaryProviderId,\n compound_tertiary_date_time: booking?.compoundTertiaryDateTime,\n compound_tertiary_room_id: booking?.compoundTertiaryRoomId,\n compound_tertiary_provider_id: booking?.compoundTertiaryProviderId,\n date: booking.dateTime,\n note: booking.note || note,\n isDropoff: booking.isDropoff,\n speciesId: booking?.species?.id || clientInfo?.species?.id,\n speciesName: booking?.species?.name || clientInfo?.species?.name,\n patientName: booking?.customer?.petName || clientInfo?.petName,\n sex: booking?.customer?.sex || clientInfo?.sex,\n birthdate: booking?.customer?.birthdate || clientInfo?.birthdate,\n client_dob: booking?.customer?.clientDob || clientInfo?.clientDob,\n breed: booking?.customer?.breed || clientInfo?.breed,\n breed_id: booking?.customer?.breed_id || clientInfo?.breed_id,\n ignoreOverlap: isAppointmentLimitEnabled,\n confirmed_keyword_action: clientInfo?.confirmedKeywordAction || booking?.confirmed_keyword_action || confirmedKeywordAction,\n time_slot_calendar_id: booking?.time_slot_calendar_id,\n specific_doctor_requested: specificDoctorRequested,\n saveAsRequest,\n ignoreOverlap: skipProviderAvailabilityCheck || !!booking?.compoundSecondaryDateTime || false,\n referral_source: getSource(),\n has_wellness_plan: booking?.customer?.hasWellnessPlan || clientInfo?.hasWellnessPlan\n },\n {\n onSuccess: ({ data }) => {\n setBooking({\n ...booking,\n appointmentId: data.data.id,\n clientId: data.data.items[0].clientId,\n customer: {\n ...booking.customer,\n ...clientInfo\n },\n isSaved: true,\n allowRemind\n });\n setIsLoading(false);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n Cookie.removeItem(CookieKeys.confirmationForm);\n goNextStep();\n },\n onError: (error) => {\n Sentry.captureException(error);\n setIsLoading(false);\n },\n }\n );\n };\n\n const upsertClientMutation = useMutation(upsertClient);\n\n const findOrCreateClient = (user, clientInfo, note) => {\n const fullName = user?.firstName || clientInfo?.firstName;\n const nameParts = fullName?.split(' ') || [];\n let firstName = '';\n let lastName = '';\n if (nameParts?.length > 1) {\n lastName = nameParts[nameParts.length - 1];\n firstName = nameParts.slice(0, -1).join(' ');\n } else {\n firstName = nameParts[0] || '';\n lastName = '';\n }\n const clientParams = {\n user_id: user?.id,\n email: user?.email || clientInfo?.email,\n phone: user?.phoneNumber || clientInfo?.phoneNumber,\n first_name: firstName,\n last_name: lastName,\n address1: clientInfo?.address1,\n address2: clientInfo?.address2,\n city: clientInfo?.city,\n state: clientInfo?.state,\n country: clientInfo?.country,\n zip: clientInfo?.zip,\n source: 'client_info_collection',\n };\n upsertClientMutation.mutate(\n clientParams,\n {\n onSuccess: (data) => {\n let localClient = null;\n if (data?.data?.id) {\n localClient = data?.data;\n setBooking({ ...booking, allowRemind, clientId: localClient.id, customer: clientInfo, note, confirmed_keyword_action: confirmedKeywordAction || clientInfo?.confirmedKeywordAction });\n setClient(localClient);\n }\n const product = booking.selectedProducts[0].products[0];\n if (product && isDepositRequired(shop, product, isReturningClient(localClient))) {\n if (saveAppointmentBeforeDeposit(product)) {\n const saveAsRequest = true;\n saveAppointment(user, clientInfo, note, saveAsRequest);\n } else {\n setIsLoading(false);\n goNextStep();\n }\n } else {\n saveAppointment(user, clientInfo, note);\n }\n },\n onError: (data) => {\n setIsLoading(false);\n },\n }\n );\n };\n\n const verificationCodeMutation = useMutation(createVerificationCode);\n\n const beginVerification = ({ clientInfo, note }) => {\n if (shop?.is_demo && !!shop?.feature_settings?.skip_demo_shop_booking_otp_enabled) {\n setIsLoading(false);\n setBooking(prev => ({ ...prev, verificationError: false, allowRemind, note, customer: { ...clientInfo }, confirmed_keyword_action: confirmedKeywordAction || clientInfo?.confirmedKeywordAction }));\n goNextStep();\n return;\n }\n\n const body = {\n email: clientInfo.email,\n phoneNumber: clientInfo.phoneNumber,\n phoneCode: clientInfo.phoneCode\n };\n verificationCodeMutation.mutate(body,\n {\n onSuccess: () => {\n setIsLoading(false);\n setBooking(prev => ({ ...prev, verificationError: false, allowRemind, note, customer: { ...clientInfo }, confirmed_keyword_action: confirmedKeywordAction || clientInfo?.confirmedKeywordAction }));\n goNextStep();\n },\n onError: (data) => {\n setIsLoading(false);\n if (data?.response?.data?.message === 'VerificationMaximumExceeded') {\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n Cookie.removeItem(CookieKeys.confirmationForm);\n setBooking(prev => ({ ...prev, verificationError: true, allowRemind, note, customer: { ...clientInfo }, confirmed_keyword_action: confirmedKeywordAction || clientInfo?.confirmedKeywordAction }));\n goNextStep();\n }\n },\n }\n );\n };\n\n const triggerKeywordActions = (note) => {\n const actionsForProduct = keywordActions\n .filter(action => action.product_ids.includes(booking.selectedProducts[0].products[0]?.id) && !action.all_products)\n .sort((a, b) => {\n if (a.action_type === 'prompt' && b.action_type !== 'prompt') {\n return -1;\n }\n if (a.action_type !== 'prompt' && b.action_type === 'prompt') {\n return 1;\n }\n return 0;\n });\n if (actionsForProduct.length > 0) {\n const withKeywords = actionsForProduct.filter(action => action.keywords.length > 0);\n if (withKeywords.length > 0) {\n const bestMatch = withKeywords.find(action => {\n const { keywords } = action;\n const keyword = keywords.find(keyword => note.toLowerCase().includes(keyword.toLowerCase()));\n return !!keyword;\n });\n if (bestMatch) {\n setShowKeywordAction(true);\n setActiveKeywordAction(bestMatch);\n return true;\n }\n }\n }\n const genericActions = keywordActions.filter(action => action.all_products)\n .sort((a, b) => {\n if (a.action_type === 'prompt' && b.action_type !== 'prompt') {\n return -1;\n }\n if (a.action_type !== 'prompt' && b.action_type === 'prompt') {\n return 1;\n }\n return 0;\n });\n if (genericActions.length > 0) {\n const withKeywords = genericActions.filter(action => action.keywords.length > 0);\n if (withKeywords.length > 0) {\n const bestMatch = withKeywords.find(action => {\n const { keywords } = action;\n const keyword = keywords.find(keyword => note.toLowerCase().includes(keyword.toLowerCase()));\n return !!keyword;\n });\n if (bestMatch) {\n setShowKeywordAction(true);\n setActiveKeywordAction(bestMatch);\n return true;\n }\n }\n }\n if (actionsForProduct.length > 0) {\n const withoutKeywords = actionsForProduct.filter(action => action.keywords.length === 0);\n if (withoutKeywords.length > 0) {\n const bestMatch = withoutKeywords[0];\n setShowKeywordAction(true);\n setActiveKeywordAction(bestMatch);\n return true;\n }\n }\n if (genericActions.length > 0) {\n const withoutKeywords = genericActions.filter(action => action.keywords.length === 0);\n if (withoutKeywords.length > 0) {\n const bestMatch = withoutKeywords[0];\n setShowKeywordAction(true);\n setActiveKeywordAction(bestMatch);\n return true;\n }\n }\n return false;\n };\n\n const onKeywordActionCancel = () => {\n setShowKeywordAction(false);\n setActiveKeywordAction(null);\n };\n\n const sanitizeNote = (note) => {\n if (!note) return note;\n let tmp = cloneDeep(note);\n try {\n tmp = tmp.replace(/[!@#$%^&*\\(\\)\\\\_+`\\-=\\[\\]\\{\\}\\|;':\",.<>?\\/]/g, ''); // Remove special characters\n tmp = tmp.replace(/[‘’“”]/g, \"'\"); // Replace apostrophes/curly quotes\n tmp = tmp.replace(/[\\p{Emoji}\\p{Emoji_Modifier}\\p{Emoji_Component}\\p{Emoji_Modifier_Base}\\p{Emoji_Presentation}]/gu, ''); // Remove emojis\n return tmp.trim();\n } catch (error) {\n Sentry.captureException(error);\n return note;\n }\n };\n\n const holdTimeSlotsEnabled = () => {\n if (shop?.feature_settings?.hold_time_slots_enabled !== undefined) return shop.feature_settings.hold_time_slots_enabled;\n return false;\n };\n\n const checkRealtimeAvailabilityEnabled = () => {\n if (shop?.feature_settings?.check_vetbridge_time_slot_availability !== undefined) return shop.feature_settings.check_vetbridge_time_slot_availability;\n return false;\n };\n\n const checkAvailabilityMutation = useMutation(checkTimeSlotAvailability);\n\n const onContinue = async (values, isDirty, dirtyFields) => {\n if (bannedPhoneNumbers().includes(values?.phoneNumber?.replace(/[^0-9]/g, ''))) {\n setBookingStep(AppointmentSteps.NoAvailability);\n setIsLoading(true);\n return;\n }\n const noteChanged = !!dirtyFields?.note;\n const customerChanged = !isEmpty(omit(dirtyFields, ['note']));\n let clientInfo = cloneDeep(values);\n let note = sanitizeNote(values?.note);\n setIsLoading(true);\n\n if (!holdTimeSlotsEnabled() && checkRealtimeAvailabilityEnabled()) {\n if (booking.selectedProducts?.length === 0 || !booking.selectedProducts[0]?.products?.length) goNextStep();\n const productLength = booking.selectedProducts[0]?.products[0]?.metadata?.time;\n if (!productLength) return;\n const payload = {\n provider_id: booking.dateTimeProviderId,\n room_id: booking.roomId,\n start_time: booking.dateTime,\n duration: productLength,\n };\n\n const { data } = await checkTimeSlotAvailability(payload);\n if (!data?.available) {\n toast.error('We\\'re sorry, this time is no longer available. Please choose another time.');\n backPreviousStep();\n return;\n }\n }\n\n if (showKeywordAction) {\n setShowKeywordAction(false);\n setActiveKeywordAction(null);\n setConfirmedKeywordAction(true);\n clientInfo = {\n ...booking.customer,\n confirmedKeywordAction: true\n }\n note = booking.note;\n } else if (keywordActions && keywordActions.length > 0) {\n setBooking(prev => ({ ...prev, note, allowRemind, customer: { ...clientInfo } }));\n const keywordsTriggered = triggerKeywordActions(note);\n if (keywordsTriggered) {\n setIsLoading(false);\n return;\n }\n }\n\n if (!customerChanged) {\n if (!user) {\n beginVerification({ clientInfo, note });\n } else {\n findOrCreateClient(user, clientInfo, note);\n }\n return;\n }\n\n updateCustomerMutation.mutate(clientInfo, {\n onSuccess: () => {\n if (!user) {\n beginVerification({ clientInfo, note });\n } else {\n findOrCreateClient(user, clientInfo, note);\n }\n },\n });\n };\n\n return (\n <>\n
\n \n
\n \n {Object.values(selectedProviders).map(item => (\n \n
\n \n \n {!booking?.dateTimeLabel && momentTz.tz(booking?.dateTime, defaultTimezone).format(DAY_MONTH_DATE_TIME_FORMAT)}\n {booking?.dateTimeLabel && `${momentTz.tz(booking?.dateTime, defaultTimezone).format(DAY_MONTH_DATE_FORMAT)}, ${booking?.dateTimeLabel}`}\n \n
\n

\n \n {booking?.returningClientFlow || !!user ? 'Returning client' : 'New client'}\n

\n {booking?.species &&\n

\n \n {booking.species?.name}\n

\n }\n

\n \n {item.products.map(product => product.name).join(' | ')}{' '}\n

\n

\n \n {item.provider?.id === 'any-provider' ? 'First available clinician' : item.provider?.firstName}\n

\n {booking?.isDropoff && (\n

\n \n {`Your pet will be dropped off for this appointment`}\n

\n )}\n
\n
\n
\n ))}\n
\n \n \n {!showKeywordAction && (\n \n )}\n {showKeywordAction && (\n <>\n \n \n )}\n \n \n
\n \n );\n};\n\nexport default ClientInfoCollection;\n","import axios from 'axios';\nimport { CORE_API_URL } from '../utility/Constant';\n\nexport const getKeywordActions = () => axios.get(`${CORE_API_URL}/keyword_actions`);\n","import React, { useEffect, useRef } from 'react';\nimport { Input } from 'reactstrap';\n\nconst VerificationCodeInput = ({ codeLength, doClearCode, setDoClearCode, setCode, isLoading }) => {\n const inputsRef = useRef([]);\n\n // Clear out Input boxes when value is empty\n useEffect(() => {\n if (doClearCode) {\n inputsRef.current.forEach((input) => {\n input.value = '';\n })\n setDoClearCode(false);\n }\n }, [doClearCode]);\n\n const handleInput = (e, inputIndex) => {\n const input = e.target;\n let code = input.value;\n\n // If a new character is typed, only keep the new one\n if (code.replace(/-/g, '').length === 6) {\n handleMobileCodeUtility(code);\n return;\n }\n if (code.length > 1) {\n code = code.slice(-1);\n input.value = code;\n }\n\n // Move focus to next input box if current input has a value\n if (code && code.length === 1 && inputIndex < codeLength - 1) {\n inputsRef.current[inputIndex + 1].focus();\n }\n\n // Call setCode if last input is filled\n if (inputIndex === codeLength - 1 && code) {\n const codeValue = Array.from(inputsRef.current, (input) => input.value).join('');\n if (codeValue.length === codeLength) {\n setCode(codeValue);\n }\n }\n };\n\n function handleMobileCodeUtility(code) {\n if (code.replace(/-/g, '').length !== 6) {\n return;\n }\n\n code = code.replace(/-/g, '');\n inputsRef.current[0].focus();\n inputsRef.current.forEach((input, i) => {\n input.value = code[i] || '';\n handleInput({ target: input }, i);\n });\n };\n\n const handleBack = (e, inputIndex) => {\n const input = e.target;\n const code = input.value;\n\n // Move focus to previous input box\n if (e.key === 'Backspace' && !code && inputIndex > 0) {\n inputsRef.current[inputIndex - 1].focus();\n }\n };\n\n const handlePaste = (e) => {\n // Prevent pasting more than the expected code length\n const pasteData = e.clipboardData.getData('text/plain');\n const pasteLength = pasteData.length;\n\n if (pasteLength !== codeLength && pasteLength !== (codeLength + 1)) {\n e.preventDefault();\n } else {\n const sanitizedPasteData = pasteData.replace('-', '');\n\n // Move focus to first input box\n inputsRef.current[0].focus();\n\n // Split pasted value into each input box\n inputsRef.current.forEach((input, i) => {\n input.value = sanitizedPasteData[i] || '';\n handleInput({ target: input }, i);\n });\n }\n };\n\n const inputs = Array.from({ length: codeLength }, (_, i) => (\n \n (inputsRef.current[i] = ref)}\n onChange={(e) => handleInput(e, i)}\n onKeyDown={(e) => handleBack(e, i)}\n onPaste={handlePaste}\n autoComplete=\"new-password\" // disable password suggestions\n />\n {(i === (codeLength / 2) - 1) &&
}\n \n ));\n\n return
{inputs}
;\n};\n\nexport default VerificationCodeInput;\n","import { useEffect, useMemo, useState } from 'react';\nimport { ChevronLeft, Lock } from \"react-feather\";\nimport { Button, Row, Col, Spinner } from 'reactstrap';\nimport { useRecoilState } from 'recoil';\nimport * as Sentry from \"@sentry/react\";\nimport userState from '../../../../../recoil/atoms/auth/user';\nimport shopState from '../../../../../recoil/atoms/current-shop';\nimport themeConfig from '@configs/themeConfig'\nimport VerificationCodeInput from '../../../../components/inputs/VerificationCodeInput';\nimport { createVerificationCode, verifyCode, bookAppointment } from '@apis';\nimport { useMutation } from 'react-query';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\nimport { AppointmentSteps, CookieKeys, SpecialErrors } from '../../../../../utility/Constant';\nimport { defaultSelectedProduct } from '../../../../../recoil/atoms/booking/booking';\nimport moment from 'moment';\nimport { chain, uniqBy } from 'lodash';\nimport { Cookie } from '../../../../../utility/Cookie';\nimport { updateCustomerAdmin, upsertClient } from '../../../../../apis/customer.api';\nimport { isDepositRequired, saveAppointmentBeforeDeposit } from '../depositHelper';\nimport { previousStepState } from '../../../../../recoil/atoms/booking/bookingStep';\nimport clientState from '../../../../../recoil/atoms/booking/client';\nimport { isReturningClient } from '../returningClientHelper';\n\nconst Verification = ({ goNextStep, booking, setStep, setBooking, backPreviousStep }) => {\n const [user, setUser] = useRecoilState(userState);\n const [client, setClient] = useRecoilState(clientState);\n const [shop] = useRecoilState(shopState);\n const [isLoading, setIsLoading] = useState(false);\n const [isResendDisabled, setIsResendDisabled] = useState(true);\n const [doClearCode, setDoClearCode] = useState(false);\n const [showVerificationError, setShowVerificationError] = useState(false);\n const [previousStep, _setPreviousStep] = useRecoilState(previousStepState);\n const { jwt } = useJwt();\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setIsResendDisabled(false);\n }, 5000);\n\n return () => {\n clearTimeout(timer);\n };\n }, [isResendDisabled]);\n\n useEffect(() => {\n const redirect = new URLSearchParams(window.location.search).get(\"redirect\");\n if (redirect) {\n const path = `${window.location.pathname}?redirect=${redirect}`;\n window.history.pushState(null, null, path);\n } else {\n window.history.pushState(null, null, window.location.pathname);\n }\n window.addEventListener('popstate', backPreviousStep);\n return () => {\n window.removeEventListener('popstate', backPreviousStep);\n };\n }, []);\n\n const isMobile = () => {\n return booking?.customer?.phoneNumber || !booking?.customer?.email\n };\n\n const formatPhoneNumber = (phoneNumber) => {\n return [\n phoneNumber.slice(0, 3),\n phoneNumber.slice(3, 6),\n phoneNumber.slice(6)\n ].join('-');\n };\n\n const codeDestination = () => {\n if (!!booking?.customer?.phoneNumber) {\n return formatPhoneNumber(booking.customer.phoneNumber);\n } else if (!!booking?.customer?.email) {\n return booking.customer.email;\n } else {\n return 'your email or phone number';\n }\n };\n\n const selectedProviders = chain(booking.selectedProducts)\n .groupBy('provider.id')\n .mapValues(arr => {\n const result = arr.reduce(\n (res, item) => {\n res.provider = item.provider;\n res.products = uniqBy([...res.products, ...item.products], 'id');\n return res;\n },\n { ...defaultSelectedProduct }\n );\n return result;\n })\n .value();\n\n const skipProviderAvailabilityCheck = useMemo(() => {\n return shop?.feature_settings?.skip_provider_availability_check !== undefined &&\n shop.feature_settings.skip_provider_availability_check;\n }, [shop]);\n\n const isAppointmentLimitEnabled = useMemo(() => {\n return shop?.feature_settings?.booking_limit_per_time_slot_enabled !== undefined &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.enabled &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.apply_to_providers &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.limit > 1;\n }, [shop]);\n\n const isRequestedProviderInNoteEnabled = useMemo(() => {\n return shop?.feature_settings?.include_requested_provider_in_appointment_note !== undefined &&\n shop.feature_settings.include_requested_provider_in_appointment_note;\n }, [shop]);\n\n const getSource = () => {\n const source = new URLSearchParams(location.search).get(\"utm_source\");\n if (source) return source;\n if (booking?.referralSource) return booking?.referralSource;\n return null;\n };\n\n const addBookingMutation = useMutation(bookAppointment);\n\n const saveAppointment = (user, clientInfo, saveAsRequest = false) => {\n const products = Object.values(selectedProviders).reduce((res, item) => {\n const arr = item.products.map(product => ({\n id: product.id,\n anyone: item.provider.id === 'any-provider' ? !booking?.dateTimeProviderId : !item.provider,\n providerId: item.provider.id === 'any-provider' ? (booking?.dateTimeProviderId || null) : item.provider?.id,\n ...(!item.provider && { label: 'Anyone' }),\n }));\n res.push(...arr);\n return res;\n }, []);\n let specificDoctorRequested = false;\n if (isRequestedProviderInNoteEnabled && Object.keys(selectedProviders).length > 0) {\n specificDoctorRequested = Object.keys(selectedProviders)[0] !== 'any-provider';\n }\n\n const sendReminder = booking.allowRemind && !saveAsRequest;\n addBookingMutation.mutate(\n {\n source: 'CUSTOMER_SITE',\n products,\n userId: user?.id,\n isReminderSMS: sendReminder,\n isReminderEmail: sendReminder,\n isSendConfirmation: sendReminder,\n isReturningClient: booking.returningClientFlow,\n roomId: booking?.roomId,\n compound_secondary_date_time: booking?.compoundSecondaryDateTime,\n compound_secondary_room_id: booking?.compoundSecondaryRoomId,\n compound_secondary_provider_id: booking?.compoundSecondaryProviderId,\n compound_tertiary_date_time: booking?.compoundTertiaryDateTime,\n compound_tertiary_room_id: booking?.compoundTertiaryRoomId,\n compound_tertiary_provider_id: booking?.compoundTertiaryProviderId,\n date: booking.dateTime,\n note: booking.note,\n isDropoff: booking.isDropoff,\n speciesId: booking?.species?.id || clientInfo?.species?.id,\n speciesName: booking?.species?.name || clientInfo?.species?.name,\n patientName: booking?.customer?.petName || clientInfo?.petName,\n sex: booking?.customer?.sex || clientInfo?.sex,\n birthdate: booking?.customer?.birthdate || clientInfo?.birthdate,\n breed: booking?.customer?.breed || clientInfo?.breed,\n breed_id: booking?.customer?.breed_id || clientInfo?.breed_id,\n ignoreOverlap: isAppointmentLimitEnabled,\n confirmed_keyword_action: booking?.confirmed_keyword_action || clientInfo?.confirmedKeywordAction,\n specific_doctor_requested: specificDoctorRequested,\n time_slot_calendar_id: booking?.time_slot_calendar_id,\n saveAsRequest,\n ignoreOverlap: skipProviderAvailabilityCheck || !!booking?.compoundSecondaryDateTime || false,\n referral_source: getSource(),\n has_wellness_plan: booking?.customer?.hasWellnessPlan || clientInfo?.hasWellnessPlan\n },\n {\n onSuccess: ({ data }) => {\n setBooking({\n ...booking,\n appointmentId: data.data.id,\n customer: {\n ...booking.customer,\n ...clientInfo\n },\n clientId: data.data.items[0].clientId,\n isSaved: true\n });\n setIsLoading(false);\n Cookie.removeItem(CookieKeys.confirmationForm);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n goNextStep();\n },\n onError: (error) => {\n Sentry.captureException(error);\n setIsLoading(false);\n },\n }\n );\n };\n\n const updateUserMutation = useMutation(updateCustomerAdmin);\n\n const updateUserRecordWithExistingClient = (user, client) => {\n const fullName = `${client?.first_name || ''} ${client?.last_name || ''}`.trim();\n updateUserMutation.mutate({\n id: user?.id,\n firstName: fullName,\n email: client?.email,\n },\n {\n onSuccess: (data) => {\n const tmpUser = { ...data.data.data };\n setUser(tmpUser);\n Cookie.setItem(CookieKeys.user, tmpUser);\n goNextStep();\n },\n onError: () => {\n goNextStep();\n }\n }\n );\n };\n\n const upsertClientMutation = useMutation(upsertClient);\n\n const findOrCreateClient = (user, clientInfo) => {\n const fullName = user?.firstName || clientInfo?.firstName;\n const nameParts = fullName?.split(' ') || [];\n let firstName = '';\n let lastName = '';\n if (nameParts?.length > 1) {\n lastName = nameParts[nameParts.length - 1];\n firstName = nameParts.slice(0, -1).join(' ');\n } else {\n firstName = nameParts[0] || '';\n lastName = '';\n }\n const clientParams = {\n user_id: user?.id,\n email: user?.email || clientInfo?.email,\n phone: user?.phoneNumber || clientInfo?.phoneNumber,\n first_name: firstName,\n last_name: lastName,\n address1: clientInfo?.address1,\n address2: clientInfo?.address2,\n city: clientInfo?.city,\n state: clientInfo?.state,\n country: clientInfo?.country,\n zip: clientInfo?.zip,\n source: 'verification',\n };\n upsertClientMutation.mutate(\n clientParams,\n {\n onSuccess: (data) => {\n let localClient = null;\n if (data?.data?.id) {\n localClient = data?.data;\n setBooking(prev => ({\n ...prev,\n clientId: localClient.id,\n customer: {\n ...prev.customer,\n firstName: `${localClient.first_name} ${localClient.last_name}`,\n email: localClient.email,\n phoneNumber: localClient.phone,\n address1: localClient.address1,\n address2: localClient.address2,\n city: localClient.city,\n state: localClient.state,\n zip: localClient.zip,\n created_at: localClient.created_at,\n patients: localClient.patients\n }\n }));\n setClient(localClient);\n }\n if (previousStep === AppointmentSteps.ReturningClientInfo) {\n if (!fullName && (data?.data?.first_name || data?.data?.last_name)) {\n // Update user record now with client name and email before going to next step\n updateUserRecordWithExistingClient(user, localClient);\n } else { // Go to AppointmentSelection and fill out name info later.\n goNextStep();\n }\n } else {\n const product = booking.selectedProducts[0].products[0];\n const isReturning = isReturningClient(localClient);\n if (product && isDepositRequired(shop, product, isReturning)) {\n if (saveAppointmentBeforeDeposit(product)) {\n const saveAsRequest = true;\n saveAppointment(user, clientInfo, saveAsRequest);\n } else {\n goNextStep();\n }\n } else {\n saveAppointment(user, clientInfo);\n }\n }\n },\n onError: (data) => {\n setIsLoading(false);\n },\n }\n );\n };\n\n const verifyCodeMutation = useMutation(verifyCode);\n\n const onSetCode = (code) => {\n setIsLoading(true);\n setIsResendDisabled(true);\n verifyCodeMutation.mutate(\n {\n ...booking?.customer,\n code\n },\n {\n onSuccess: (data) => {\n const tmpUser = { ...data.data.data };\n setUser(tmpUser);\n jwt.setToken(tmpUser.token);\n Cookie.setItem(CookieKeys.user, tmpUser);\n findOrCreateClient(tmpUser, booking?.customer);\n },\n onError: (data) => {\n setIsLoading(false);\n if (data?.response?.data?.message === 'VerificationMaximumExceeded') {\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n Cookie.removeItem(CookieKeys.confirmationForm);\n setBooking(prev => ({ ...prev, verificationError: true }));\n } else if (data?.response?.data?.message === SpecialErrors.InvalidCode) {\n setShowVerificationError(true);\n }\n },\n }\n );\n };\n\n const createCodeMutation = useMutation(createVerificationCode);\n\n const resendCode = () => {\n setIsResendDisabled(true);\n setIsLoading(true);\n setDoClearCode(true);\n setShowVerificationError(false);\n const body = {\n email: booking?.customer?.email,\n phoneNumber: booking?.customer?.phoneNumber,\n phoneCode: booking?.customer?.phoneCode\n };\n createCodeMutation.mutate(body,\n {\n onSuccess: () => {\n setIsLoading(false);\n },\n onError: (data) => {\n setIsLoading(false);\n if (data?.response?.data?.message === 'VerificationMaximumExceeded') {\n Cookie.removeItem(CookieKeys.confirmationForm);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n setBooking(prev => ({ ...prev, verificationError: true }));\n }\n },\n }\n )\n };\n\n return (\n <>\n \n \n \n \n \n
\n logo\n \n
\n \n
\n \n {!booking?.verificationError && (\n <>\n

Check your {isMobile() ? \"phone\" : \"email\"}!

\n

We sent a 6-digit confirmation code to {codeDestination()}. It expires shortly, so enter it soon to confirm your appointment.

\n \n \n )}\n\n
\n \n {!booking?.verificationError && (\n
\n {showVerificationError && (\n

Oops, that didn't work. Please enter the code that was sent to you.

\n )}\n \n {isLoading && }\n Resend Code?\n \n
\n )}\n {booking?.verificationError && (\n

We're sorry, we cannot verify your information at this time. Please try again later{shop && shop.phoneNumber ? ` or contact us at ${formatPhoneNumber(shop.phoneNumber)}.` : '.'}

\n )}\n
\n \n );\n};\n\nexport default Verification;\n","export default __webpack_public_path__ + \"static/media/google.b22b8a66.png\";","export default \"data:image/png;base64,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\"","// ** React Imports\nimport { forwardRef, Fragment, useState } from 'react';\n\n// ** Third Party Components\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { Eye, EyeOff } from 'react-feather';\nimport { InputGroup, InputGroupAddon, Input, InputGroupText, Label, inputClassName } from 'reactstrap';\n\nconst InputPasswordToggle = forwardRef((props, ref) => {\n // ** Props\n const { label, hideIcon, showIcon, visible, className, htmlFor, placeholder, iconSize, inputClassName, ...rest } = props;\n\n // ** State\n const [inputVisibility, setInputVisibility] = useState(visible);\n\n // ** Renders Icon Based On Visibility\n const renderIcon = () => {\n const size = iconSize ? iconSize : 14;\n\n if (inputVisibility === false) {\n return hideIcon ? hideIcon : ;\n } else {\n return showIcon ? showIcon : ;\n }\n };\n\n return (\n \n {label ? : null}\n \n \n setInputVisibility(!inputVisibility)}>\n {renderIcon()}\n \n \n \n );\n});\n\nexport default InputPasswordToggle;\n\n// ** PropTypes\nInputPasswordToggle.propTypes = {\n hideIcon: PropTypes.node,\n showIcon: PropTypes.node,\n visible: PropTypes.bool,\n className: PropTypes.string,\n placeholder: PropTypes.string,\n iconSize: PropTypes.number,\n inputClassName: PropTypes.string,\n label(props, propName, componentName) {\n // ** If label is defined and htmlFor is undefined throw error\n if (props[propName] && props['htmlFor'] === 'undefined') {\n throw new Error('htmlFor prop is required when label prop is present');\n }\n },\n htmlFor(props, propName, componentName) {\n // ** If htmlFor is defined and label is undefined throw error\n if (props[propName] && props['label'] === 'undefined') {\n throw new Error('label prop is required when htmlFor prop is present');\n }\n },\n};\n\n// ** Default Props\nInputPasswordToggle.defaultProps = {\n visible: false,\n};\n","import { useRecoilState } from 'recoil';\nimport confirmBoxState from '@recoil/atoms/common/confirm-box';\n\nlet resolve;\nconst useConfirm = () => {\n const [confirmBox, setConfirmBox] = useRecoilState(confirmBoxState);\n\n const confirm = args => {\n const { title, message, confirmButtonColor } = args || {};\n return new Promise(res => {\n setConfirmBox({\n show: true,\n title,\n message,\n confirmButtonColor,\n });\n resolve = res;\n });\n };\n\n const onConfirm = () => {\n setConfirmBox({\n show: false,\n title: '',\n message: '',\n });\n resolve(true);\n };\n\n const onCancel = () => {\n setConfirmBox({\n show: false,\n title: '',\n message: '',\n });\n resolve(false);\n };\n\n return { confirm, confirmBox, onCancel, onConfirm };\n};\n\nexport default useConfirm;\n","import { useRecoilState } from 'recoil';\nimport shopState from '@recoil/atoms/current-shop';\n\nconst useShop = () => {\n const [shop] = useRecoilState(shopState);\n\n return shop;\n};\n\nexport default useShop;\n","import { useRecoilState } from 'recoil';\nimport userState from '../../recoil/atoms/auth/user';\nimport { getUserData } from '../Utils';\n\nconst useUserState = () => useRecoilState(userState);\n\nexport default useUserState;\n","import { useMutation, useInfiniteQuery, useQuery } from 'react-query';\nimport firebase from 'firebase/app';\nimport { getProfile, socialSignIn, customerSignIn, signUp, updateProfile } from '@apis';\n\nimport useJwt from '@src/@core/auth/jwt/useJwt';\nimport useShop from '@hooks/useShop';\nimport useUserState from '@hooks/useUserState';\nimport { CookieKeys } from '@utility/Constant';\nimport { Cookie } from '@utility/Cookie';\n\nexport const useCurrentUserProfile = (options = {}) => {\n const [, setUser] = useUserState();\n return useQuery(\n ['useCurrentUserProfile'],\n async () => {\n try {\n const { data } = await getProfile();\n setUser(data.data);\n return data.data;\n } catch (e) {\n throw e;\n }\n },\n { ...options }\n );\n};\n\nexport const useUpdateProfileMutation = options => {\n const [, setUser] = useUserState();\n return useMutation(async values => {\n try {\n const { data } = await updateProfile(values);\n setUser(data.data);\n\n return data.data;\n } catch (e) {\n console.log(e);\n throw e?.response?.data;\n }\n }, options);\n};\n\nexport const useSignUpMutation = options => {\n const { jwt } = useJwt();\n const [, setUser] = useUserState();\n\n return useMutation(async values => {\n try {\n const { data } = await signUp({\n // firstName: values.name,\n email: values.email,\n username: values.email || values.phoneNumber.slice(values.phoneCode?.length || 0),\n password: values.password,\n phoneCode: values.phoneCode,\n phoneNumber: values.phoneNumber.slice(values.phoneCode?.length || 0),\n rememberMe: true,\n role: 'ROLE_CUSTOMER',\n });\n setUser(data.data);\n jwt.setToken(data.data.token);\n Cookie.setItem(CookieKeys.user, data.data);\n\n return data.data;\n } catch (e) {\n console.log(e);\n throw e?.response?.data;\n }\n }, options);\n};\n\nexport const useLoginMutation = options => {\n const { jwt } = useJwt();\n const [, setUser] = useUserState();\n\n return useMutation(async values => {\n try {\n const { data } = await customerSignIn({\n username: values.username,\n password: values.password,\n rememberMe: true,\n });\n setUser(data.data);\n jwt.setToken(data.data.token);\n Cookie.setItem(CookieKeys.user, data.data);\n\n return data.data;\n } catch (e) {\n console.log(e);\n throw e?.response?.data;\n }\n }, options);\n};\n\nexport const useSocialSignInMutation = options => {\n const { jwt } = useJwt();\n const [, setUser] = useUserState();\n\n return useMutation(async values => {\n try {\n const { data } = await socialSignIn({\n avatar: values.avatar,\n email: values.email,\n firstName: values.firstName,\n oAuthType: values.oAuthType,\n idToken: values.idToken,\n phoneCode: values.phoneCode,\n phoneNumber: values.phoneNumber?.slice?.(values.phoneCode.length),\n });\n setUser(data.data);\n jwt.setToken(data.data.token);\n Cookie.setItem(CookieKeys.user, data.data);\n\n return data.data;\n } catch (e) {\n console.log(e);\n throw e?.response?.data;\n }\n }, options);\n};\n\nexport const useGoogleLogin = ({ onError, onSuccess }) => {\n const socialSignInMutation = useSocialSignInMutation({ onSuccess, onError });\n\n return {\n ...socialSignInMutation,\n mutate: () => {\n const googleAuthProvider = new firebase.auth.GoogleAuthProvider();\n firebase\n .auth()\n .signInWithPopup(googleAuthProvider)\n .then(async ({ user, credential, ...other }) => {\n socialSignInMutation.mutate({\n idToken: await user.getIdToken(),\n email: user.email,\n avatar: user.photoURL,\n firstName: user.displayName,\n oAuthType: 'GOOGLE',\n });\n })\n .catch(onError);\n },\n };\n};\n\nexport const useFacebookLogin = ({ onError, onSuccess }) => {\n const socialSignInMutation = useSocialSignInMutation({ onSuccess, onError });\n\n return {\n ...socialSignInMutation,\n mutate: () => {\n const facebookProvider = new firebase.auth.FacebookAuthProvider();\n firebase\n .auth()\n .signInWithPopup(facebookProvider)\n .then(async ({ user, credential, ...other }) => {\n socialSignInMutation.mutate({\n idToken: await user.getIdToken(),\n email: user.email,\n avatar: user.photoURL,\n firstName: user.displayName,\n oAuthType: 'FACEBOOK',\n });\n })\n .catch(onError);\n },\n };\n};\n","import { useQuery } from 'react-query';\nimport { getStaffsWorkingHours, getStaffDetail } from '../apis/new-staff.api';\n\nexport const useStaffDetailQuery = (id, options) => {\n return useQuery(['getStaffDetail', id], () => getStaffDetail({ id }), options);\n};\nexport const useWorkingHoursQuery = (data, options) => {\n return useQuery(['getStaffsWorkingHours', data], () => getStaffsWorkingHours(data), options);\n};\n","import { useState } from 'react';\nimport { Alert, Row, Col, Button, Form, FormGroup, Label, Input, FormText } from 'reactstrap';\nimport * as yup from 'yup';\nimport { Controller, useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport GoogleIcon from '@src/assets/images/icons/google.png';\nimport FacebookIcon from '@src/assets/images/icons/facebook.png';\nimport InputPasswordToggle from '@components/input-password-toggle';\nimport { AppointmentSteps, regexEmail } from '@utility/Constant';\nimport { useFacebookLogin, useGoogleLogin, useLoginMutation } from '@queries';\nimport { useHistory } from 'react-router';\n\nconst schema = yup.object().shape({\n username: yup.string().trim().required('Please enter your phone or email').max(255, 'Please enter within 255 characters'),\n password: yup.string().trim().required('Password is required').max(255, 'Please enter within 255 characters'),\n});\n\nconst Login = ({ setStep, goNextStep, booking, setBooking }) => {\n const [socialError, setSocialError] = useState();\n const history = useHistory();\n\n const {\n handleSubmit,\n control,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(schema),\n defaultValues: {\n username: '',\n password: '',\n },\n });\n\n const onContinue = customer => {\n setBooking({ ...booking, customer });\n history.replace(history.location.pathname, { loggedIn: true });\n goNextStep();\n };\n\n const signInMutation = useLoginMutation({\n onSuccess: data => onContinue(data),\n onSettle: () => history.replace(history.location.pathname, { loggedIn: true })\n });\n\n const onSubmit = values => {\n const reqUsername = regexEmail.test(values.username) ? values.username : `1;${values.username}`;\n signInMutation.mutate({ username: reqUsername, password: values.password });\n };\n\n const signInGoogle = useGoogleLogin({\n onSuccess: data => {\n setSocialError('');\n onContinue(data);\n },\n onError: e => {\n setSocialError(e?.message);\n },\n });\n\n const signInFacebook = useFacebookLogin({\n onSuccess: data => {\n setSocialError('');\n onContinue(data);\n },\n onError: e => setSocialError(e?.message),\n });\n\n return (\n
\n \n \n

Sign in to access your profile

\n {socialError && (\n \n
{socialError}
\n
\n )}\n {signInMutation.isError && (\n \n
Wrong email or password
\n
\n )}\n\n
\n \n \n } />\n {errors?.username && {errors?.username?.message}}\n \n \n (\n \n )}\n />\n {errors?.password && {errors?.password?.message}}\n \n setStep(AppointmentSteps.ForgotPassword)}\n >\n Forgot your password?\n \n \n
\n Don’t have an account?{' '}\n \n
\n \n\n
\n
OR
\n
\n\n \n \n \n
\n
\n );\n};\n\nexport default Login;\n","import { useState } from 'react';\nimport { Alert, Row, Col, Button, Card, CardBody, FormGroup, Label, Input, Form, FormText } from 'reactstrap';\nimport PhoneInput from 'react-phone-input-2';\nimport { Controller, useForm } from 'react-hook-form';\nimport * as yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport InputPasswordToggle from '@components/input-password-toggle';\nimport { useSignUpMutation, useGoogleLogin, useFacebookLogin } from '@queries';\nimport GoogleIcon from '@src/assets/images/icons/google.png';\nimport FacebookIcon from '@src/assets/images/icons/facebook.png';\nimport { AppointmentSteps } from '@utility/Constant';\n\nconst schema = yup.object().shape({\n // name: yup.string().trim().required('Name is required').max(255, 'Please enter within 255 characters'),\n phoneNumber: yup\n .string()\n .trim()\n .required('Phone is required')\n .test('min-phone', 'Please enter at least 10 digits', (value, context) => {\n return value.slice(context.parent.phoneCode.length).length >= 10;\n })\n .max(15, 'Max 15 characters')\n .test('missing-phone', 'Please enter your phone number', (value, context) => {\n return !!value.slice(context.parent.phoneCode.length);\n }),\n email: yup\n .string()\n .trim()\n .nullable()\n // .required('Please enter your email')\n .email('Please enter correct email format')\n .max(255, 'Please enter within 255 characters'),\n password: yup\n .string()\n .trim()\n .required('Password is required')\n .min(8, 'Please enter at least 8 characters')\n .max(255, 'Please enter within 255 characters'),\n confirmPassword: yup\n .string()\n .trim()\n .required('Confirm password is required')\n .oneOf([yup.ref('password')], 'Passwords mismatch'),\n});\n\nconst Login = ({ step, setStep, backPreviousStep, goNextStep, booking, setBooking }) => {\n const [socialError, setSocialError] = useState();\n\n const onContinue = customer => {\n setBooking({ ...booking, customer });\n goNextStep();\n };\n\n const signUpMutation = useSignUpMutation({\n onSuccess: data => onContinue(data),\n });\n\n const signInGoogle = useGoogleLogin({\n onSuccess: data => {\n setSocialError('');\n onContinue(data);\n },\n onError: e => {\n setSocialError(e?.message);\n },\n });\n\n const signInFacebook = useFacebookLogin({\n onSuccess: data => {\n setSocialError('');\n onContinue(data);\n },\n onError: e => setSocialError(e?.message),\n });\n\n const {\n handleSubmit,\n control,\n formState: { errors },\n setValue,\n } = useForm({\n resolver: yupResolver(schema),\n defaultValues: {\n name: '',\n phoneCode: '1',\n phoneNumber: '',\n email: '',\n password: '',\n confirmPassword: '',\n },\n });\n\n const onSubmit = values => {\n signUpMutation.mutate(values);\n };\n\n return (\n
\n \n \n

Create your account

\n {signUpMutation.isError && (\n \n
{signUpMutation?.error?.message || 'Error'}
\n
\n )}\n {socialError && (\n \n
{socialError}
\n
\n )}\n
\n \n \n } />\n {errors?.email && {errors?.email?.message || 'Error'}}\n \n (\n \n \n {\n if (value.slice(data.dialCode?.length || 0).length === 0) {\n field.onChange(data.dialCode);\n } else {\n field.onChange(value);\n }\n setValue('phoneCode', data.dialCode);\n }}\n buttonClass=\"border-none\"\n inputClass=\"w-100\"\n />\n {!!errors.phoneNumber && {errors?.phoneNumber?.message || 'Error'}}\n \n )}\n />\n \n (\n \n )}\n />\n {errors?.password && {errors?.password?.message || 'Error'}}\n \n \n (\n \n )}\n />\n {errors?.confirmPassword && {errors?.confirmPassword?.message || 'Error'}}\n \n \n
\n Already have an account?{' '}\n \n
\n \n
\n
OR
\n
\n\n \n \n \n
\n
\n );\n};\n\nexport default Login;\n","import { useEffect, useMemo, useState } from 'react';\nimport { Button, Row, Col, Alert, FormGroup, Input, Label } from 'reactstrap';\nimport { useRecoilState } from 'recoil';\nimport { initialBookingState } from '@recoil/atoms/booking/booking';\nimport userState from '../../../../../recoil/atoms/auth/user';\nimport shopState from '../../../../../recoil/atoms/current-shop';\nimport { AppointmentSteps, DAY_MONTH_DATE_FORMAT, DAY_MONTH_DATE_TIME_FORMAT, HOUR_FORMAT } from '../../../../../utility/Constant';\nimport { chain, uniqBy, get } from 'lodash';\nimport momentTz from 'moment-timezone';\nimport { ArrowRight, Calendar, Check } from 'react-feather';\nimport { defaultSelectedProduct } from '../../../../../recoil/atoms/booking/booking';\nimport { useMutation } from 'react-query';\nimport { addToWaitlist, removeFromWaitlist } from '../../../../../apis/appointment.api';\nimport toast from '@components/toast';\nimport ReactGA from \"react-ga4\";\n\nconst BookSuccessAccept = ({ userName, booking, staff, bookingDateTime, shop, address, isTelemedicine }) => {\n return (\n <>\n

\n Thank you{userName ? `, ${userName}` : ''}!
\n {`Your ${isTelemedicine ? 'virtual ' : ''}appointment is scheduled${isTelemedicine ? '. We will text you a virtual meeting link prior to your appointment.' : ':'}`}\n

\n \n {Object.values(staff).map(item => (\n
\n \n \n {!booking?.dateTimeLabel && momentTz.tz(bookingDateTime, shop.timezone).format(DAY_MONTH_DATE_TIME_FORMAT)}\n {booking?.dateTimeLabel && `${momentTz.tz(bookingDateTime, shop.timezone).format(DAY_MONTH_DATE_FORMAT)}, ${booking?.dateTimeLabel}`}\n \n
\n

\n \n {booking?.returningClientFlow ? 'Returning client' : 'New client'}\n

\n {booking?.species &&\n

\n \n {booking.species?.name}\n

\n }\n

\n \n {item.products.map(product => product.name).join(' | ')}{' '}\n

\n

\n \n {item.provider?.id === 'any-provider' ? 'First available clinician' : item.provider?.firstName}\n

\n {booking?.isDropoff && (\n

\n \n {`Your pet will be dropped off for this appointment`}\n

\n )}\n
\n
\n ))}\n
\n \n );\n};\n\nconst BookSuccessWaiting = ({ userName, address, staff, bookingDateTime, shop, booking, isTelemedicine }) => {\n return (\n <>\n

\n Thank you{userName ? `, ${userName}` : ''}!
\n {`Your ${isTelemedicine ? 'virtual ' : ''}appointment has been requested!`}\n

\n
\n We'll let you know when your
appointment has been accepted.\n
\n \n {Object.values(staff).map(item => (\n
\n \n \n {!booking?.dateTimeLabel && momentTz.tz(bookingDateTime, shop.timezone).format(DAY_MONTH_DATE_TIME_FORMAT)}\n {booking?.dateTimeLabel && `${momentTz.tz(bookingDateTime, shop.timezone).format(DAY_MONTH_DATE_FORMAT)}, ${booking?.dateTimeLabel}`}\n \n
\n

\n \n {booking?.returningClientFlow ? 'Returning client' : 'New client'}\n

\n {booking?.species &&\n

\n \n {booking.species?.name}\n

\n }\n

\n \n {item.products.map(product => product.name).join(' | ')}{' '}\n

\n

\n \n {item.provider?.id === 'any-provider' ? 'First available clinician' : item.provider?.firstName}\n

\n {booking?.isDropoff && (\n

\n \n {`Drop-off appointment`}\n

\n )}\n
\n
\n ))}\n
\n \n );\n};\n\nconst BookSuccess = ({ step, backPreviousStep, setStep, booking, setBooking }) => {\n const [user] = useRecoilState(userState);\n const [shop] = useRecoilState(shopState);\n const [addedToWaitlist, setAddedToWaitlist] = useState(false);\n\n const logCustomGoogleAnalyticsEvent = () => {\n if (shop?.id === '621dd61c-b5a0-4486-a79a-4229ecc9ff03') { // Emeryville Veterinary Clinic\n // gtag('event', 'conversion', { 'send_to': 'AW-936959782/d9DHCMfmt-gZEKa-474D', 'value': 1.0, 'currency': 'USD' });\n ReactGA.initialize(\"AW-936959782\");\n ReactGA.ga('event', 'conversion', {\n send_to: 'AW-936959782/d9DHCMfmt-gZEKa-474D',\n value: 1.0,\n currency: 'USD'\n });\n } else {\n ReactGA.initialize(\"G-XTG110JDKS\");\n ReactGA.event({\n category: \"conversion\",\n action: \"appointment_booked\",\n label: shop?.name, // optional\n // value: 1.0, // optional, must be a number\n // nonInteraction: true, // optional, true/false\n // transport: \"xhr\", // optional, beacon/xhr/image\n });\n }\n };\n\n useEffect(() => {\n let timer = null;\n const {\n metadata: { thankYouPage = '', isBookingShowThankYouPage },\n } = shop;\n\n logCustomGoogleAnalyticsEvent();\n\n if (step === AppointmentSteps.BookSuccess && thankYouPage && isBookingShowThankYouPage) {\n timer = setTimeout(() => {\n window.location.href = thankYouPage;\n }, 3000);\n }\n return () => {\n clearTimeout(timer);\n };\n }, [step]);\n\n const onReset = () => {\n setBooking(initialBookingState);\n setStep(1);\n };\n\n const isTelemedicine = useMemo(() => {\n const product = booking.selectedProducts[0]?.products[0];\n if (product && product.isTelemedicine) return true;\n return false;\n }, [booking.selectedProducts]);\n\n const waitlistEnabled = () => {\n if (shop?.feature_settings?.waitlist_ui_v1_enabled !== undefined) {\n return shop.feature_settings.waitlist_ui_v1_enabled === true && booking?.selectedProducts[0]?.products[0]?.metadata?.waitlistEligible;\n } else {\n return false;\n }\n };\n\n const addToWaitlistMutation = useMutation(addToWaitlist);\n const removeFromWaitlistMutation = useMutation(removeFromWaitlist);\n\n const modifyWaitlist = (val) => {\n setAddedToWaitlist(val);\n if (val) {\n addToWaitlistMutation.mutate(\n {\n client_id: booking.clientId,\n appointment_id: booking.appointmentId\n },\n {\n onSuccess: (data) => {\n toast.success('You\\'ve been added to the waitlist!');\n },\n onError: () => {\n },\n }\n );\n } else {\n removeFromWaitlistMutation.mutate(\n {\n client_id: booking.clientId,\n appointment_id: booking.appointmentId\n },\n {\n onSuccess: (data) => {\n toast.success('You\\'ve been removed from the waitlist.');\n },\n onError: () => {\n },\n }\n );\n }\n };\n\n let selectedStaff = chain(booking.selectedProducts)\n .groupBy('provider.id')\n .mapValues(arr => {\n const result = arr.reduce(\n (res, item) => {\n res.provider = item.provider;\n res.products = uniqBy([...res.products, ...item.products], 'id');\n return res;\n },\n { ...defaultSelectedProduct }\n );\n return result;\n })\n .value();\n if (Object.keys(selectedStaff).length > 1 || Object.keys(selectedStaff)[0] === 'undefined') {\n selectedStaff = undefined;\n }\n\n return (\n
\n
\n {shop?.metadata?.isAutoAccept && (\n \n )}\n {!shop?.metadata?.isAutoAccept && (\n \n )}\n
\n {waitlistEnabled() && (\n \n \n \n modifyWaitlist(!addedToWaitlist)}\n />\n modifyWaitlist(!addedToWaitlist)}\n color=\"primary\"\n >\n <>\n {shop?.metadata?.isAutoAccept && (\n <>Add me to the waitlist! If any cancellations open up an earlier appointment time, I will be notified.\n )}\n {!shop?.metadata?.isAutoAccept && (\n <>Once my appointment is accepted, add me to the waitlist! If any cancellations open up an earlier appointment time, I will be notified.\n )}\n \n \n \n \n \n )}\n \n \n \n\n {/* */}\n \n \n
\n );\n};\n\nexport default BookSuccess;\n","import { Alert, Row, Col, Button, FormGroup, Label, Input, Form, FormText } from 'reactstrap';\nimport { Controller, useForm } from 'react-hook-form';\nimport PhoneInput from 'react-phone-input-2';\nimport * as yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs';\nimport 'react-tabs/style/react-tabs.css';\n\nconst schema = yup.object().shape({\n username: yup.string().trim().required('Please enter your phone number or email').max(255, 'Please enter within 255 characters'),\n});\n\nconst ForgotPasswordForm = ({ isLoading, onSubmit }) => {\n const {\n handleSubmit,\n control,\n formState: { errors },\n setValue\n } = useForm({\n resolver: yupResolver(schema),\n defaultValues: {\n username: '',\n phoneCode: '1',\n },\n });\n\n return (\n
\n \n \n

Forgot password?

\n

\n Enter your email or phone number and we'll send you instructions to reset your password\n

\n
\n
\n \n \n Email\n Phone number\n \n\n \n \n } />\n {errors?.username && {errors?.username?.message}}\n \n \n \n (\n \n {\n if (value.slice(data.dialCode?.length || 0).length === 0) {\n field.onChange(data.dialCode);\n } else {\n field.onChange(value);\n }\n setValue('phoneCode', data.dialCode);\n }}\n buttonClass=\"border-none\"\n inputClass=\"w-100\"\n />\n {!!errors.username && {errors?.username?.message || 'Error'}}\n \n )}\n />\n \n \n\n \n
\n
\n \n
\n
\n );\n};\n\nexport default ForgotPasswordForm;\n","import { Alert, Row, Col, Button, FormGroup, Label, Input, Form, FormText } from 'reactstrap';\nimport { Controller, useForm } from 'react-hook-form';\nimport * as yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport InputPasswordToggle from '@components/input-password-toggle';\n\nconst schema = yup.object().shape({\n password: yup\n .string()\n .trim()\n .required('Password is required')\n .min(8, 'Please enter at least 8 characters')\n .max(255, 'Please enter within 255 characters'),\n confirmPassword: yup\n .string()\n .trim()\n .required('Confirm password is required')\n .oneOf([yup.ref('password')], 'Passwords mismatch'),\n});\n\nconst ResetPasswordForm = ({ isLoading, onSubmit }) => {\n const {\n handleSubmit,\n control,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(schema),\n defaultValues: {\n password: '',\n confirmPassword: '',\n },\n });\n\n return (\n
\n \n \n {/*

Forgot password?

*/}\n {/*

Enter your email or phone number and we'll send you instructions to reset your password

*/}\n
\n
\n \n (\n \n )}\n />\n {errors?.password && {errors?.password?.message}}\n \n \n (\n \n )}\n />\n {errors?.confirmPassword && {errors?.confirmPassword?.message}}\n \n\n \n
\n
\n \n
\n
\n );\n};\n\nexport default ResetPasswordForm;\n","import { useState, useEffect, useRef } from 'react';\nimport { Row, Col, Button, Form } from 'reactstrap';\nimport ReactCodeInput from 'react-code-input';\n\nconst COUNT_START_POINT = 59;\nconst VerifyResetPasswordForm = ({ isLoading, username, onSubmit, onResend }) => {\n const [count, setCount] = useState(COUNT_START_POINT);\n const timer = useRef();\n\n const startCount = newCount => {\n clearTimeout(timer.current);\n if (newCount >= 0) {\n setCount(newCount);\n timer.current = setTimeout(() => {\n startCount(newCount - 1);\n }, 1000);\n }\n };\n\n useEffect(() => {\n if (count === COUNT_START_POINT) {\n startCount(COUNT_START_POINT);\n }\n }, [count]);\n\n const onResendCode = () => {\n setCount(COUNT_START_POINT);\n onResend();\n };\n\n const onChangeCode = value => {\n if (value.length === 6) {\n onSubmit(value);\n }\n };\n\n return (\n
\n \n \n

Enter 6-digits code

\n

Your code was sent to {username}

\n \n
\n \n \n \n \n \n \n \n
\n

\n A message with a verification code has been sent. Enter the code to continue.\n

\n\n
\n

Resend code

\n
\n {count > 0 ? (\n

{count}s

\n ) : (\n \n )}\n
\n
\n
\n \n
\n
\n );\n};\n\nexport default VerifyResetPasswordForm;\n","import { useEffect, useState } from 'react';\nimport { useRequestResetPasswordMutation, useVerifyResetPasswordMutation, useResetPasswordMutation, useLoginMutation } from '@queries';\nimport toast from '@components/toast';\nimport { regexEmail } from '@utility/Constant';\nimport ForgotPasswordForm from './ForgotPasswordForm';\nimport ResetPasswordForm from './ResetPasswordForm';\nimport VerifyResetPasswordForm from './VerifyResetPasswordForm';\n\nconst _step = {\n request: 0,\n verify: 1,\n reset: 2,\n};\n\nconst ForgotPassword = ({ goNextStep, booking, setBooking }) => {\n const [step, setStep] = useState(_step.request);\n const [username, setUsername] = useState();\n const [reqUsername, setReqUsername] = useState();\n const [token, setToken] = useState();\n\n const getReqUsername = (value, phoneCode) => (regexEmail.test(value) ? value : `${phoneCode};${value.replace(phoneCode, '')}`);\n\n const requestResetPasswordMutation = useRequestResetPasswordMutation();\n const verifyResetPasswordMutation = useVerifyResetPasswordMutation();\n const resetPasswordMutation = useResetPasswordMutation();\n\n const loginMutation = useLoginMutation({\n onSuccess: data => {\n goNextStep();\n },\n });\n\n const onSubmitRequestReset = values => {\n requestResetPasswordMutation.mutate(\n { username: getReqUsername(values.username, values.phoneCode) },\n {\n onSuccess: () => {\n setUsername(values.username);\n setReqUsername(getReqUsername(values.username, values.phoneCode));\n setStep(_step.verify);\n },\n }\n );\n };\n\n const onSubmitVerifyReset = code => {\n verifyResetPasswordMutation.mutate(\n { username: reqUsername, code },\n {\n onSuccess: res => {\n if (res.data.success) {\n setToken(res.data.data);\n setStep(_step.reset);\n return;\n }\n setToken('');\n },\n }\n );\n };\n\n const onSubmitResetPassword = values => {\n resetPasswordMutation.mutate(\n { token, password: values.password },\n {\n onSuccess: res => {\n if (res.data.success) {\n toast.success('Reset password successfully!');\n loginMutation.mutate({ username: reqUsername, password: values.password, rememberMe: true });\n }\n },\n }\n );\n };\n\n return {\n [_step.request]: ,\n [_step.verify]: (\n onSubmitRequestReset({ username })}\n />\n ),\n [_step.reset]: ,\n }[step];\n};\n\nexport default ForgotPassword;\n","import { useMutation } from 'react-query';\nimport { requestResetPassword, verifyResetPasswordCode, resetPassword } from '@apis/auth.api';\n\nexport const useRequestResetPasswordMutation = () => {\n return useMutation(requestResetPassword);\n};\n\nexport const useVerifyResetPasswordMutation = () => {\n return useMutation(verifyResetPasswordCode);\n};\n\nexport const useResetPasswordMutation = () => {\n return useMutation(resetPassword);\n};\n","import { useLocation } from 'react-router';\n\nconst useQuerySearch = () => {\n const { search } = useLocation();\n const query = new URLSearchParams(search);\n\n return query;\n}\n\nexport default useQuerySearch;","import React, { useEffect, useState } from \"react\";\nimport { PaymentElement, useStripe, useElements } from \"@stripe/react-stripe-js\";\nimport { Button, Input, Label, Spinner } from \"reactstrap\";\nimport { AlertCircle, ChevronRight } from \"react-feather\";\nimport * as Sentry from \"@sentry/react\";\nimport { borderRadius } from \"polished\";\n\nconst DepositCheckoutForm = (props) => {\n const stripe = useStripe();\n const elements = useElements();\n\n const {\n booking,\n setBooking,\n receiptEmail,\n setReceiptEmail,\n setIsComplete,\n setIsPaymentMethodSaved,\n isPaymentIntent,\n message,\n setMessage,\n } = props;\n\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (!stripe) {\n return;\n }\n\n const clientSecret = new URLSearchParams(window.location.search).get(\n \"payment_intent_client_secret\"\n );\n\n if (!clientSecret) {\n return;\n }\n\n stripe.retrievePaymentIntent(clientSecret).then(({ paymentIntent }) => {\n switch (paymentIntent.status) {\n case \"succeeded\":\n setMessage(\"Payment succeeded!\");\n break;\n case \"processing\":\n setMessage(\"Your payment is processing.\");\n break;\n case \"requires_payment_method\":\n setMessage(\"Your payment was not successful, please try again.\");\n break;\n default:\n setMessage(\"Something went wrong.\");\n break;\n }\n });\n }, [stripe]);\n\n const handleSubmit = async (e) => {\n setMessage(null);\n e.preventDefault();\n\n if (!stripe || !elements) {\n // Stripe.js hasn't yet loaded.\n // Make sure to disable form submission until Stripe.js has loaded.\n return;\n }\n\n setIsLoading(true);\n\n let result;\n if (isPaymentIntent) {\n result = await stripe.confirmPayment({\n elements,\n confirmParams: {\n receipt_email: receiptEmail,\n },\n redirect: \"if_required\",\n });\n if (!result.error) {\n setIsLoading(false);\n setIsComplete(true);\n setBooking(prev => ({ ...prev, deposit: { ...prev.deposit, completed_at: new Date(), amount: (result.paymentIntent?.amount / 100.0) } }));\n setIsPaymentMethodSaved(true);\n return;\n }\n } else {\n result = await stripe.confirmSetup({\n elements,\n confirmParams: {\n },\n redirect: \"if_required\",\n });\n if (!result.error) {\n setIsLoading(false);\n setIsPaymentMethodSaved(true);\n return;\n }\n }\n const { error } = result;\n\n // This point will only be reached if there is an immediate error when\n // confirming the payment. Otherwise, your customer will be redirected to\n // your `return_url`. For some payment methods like iDEAL, your customer will\n // be redirected to an intermediate site first to authorize the payment, then\n // redirected to the `return_url`.\n if (error.type === \"card_error\" || error.type === \"validation_error\") {\n setMessage(error.message);\n } else if (error.code === \"payment_intent_unexpected_state\" && error.payment_intent?.status === \"succeeded\") {\n setMessage(\"This payment has already been paid. You have not been double-charged.\");\n } else {\n setMessage(\"An unexpected error occurred.\");\n Sentry.captureMessage(error.message);\n }\n\n setIsLoading(false);\n };\n\n const paymentElementOptions = {\n layout: {\n type: 'tabs',\n }\n }\n\n return (\n
\n \n {(stripe && elements) && (\n <>\n \n setReceiptEmail(e.target.value)}\n />\n
\n \n
\n \n )}\n {/* Show any error or success messages */}\n {message &&
{message}
}\n \n );\n};\n\nexport default DepositCheckoutForm;\n","import moment from 'moment-timezone';\nimport useShop from './useShop';\n\nconst useMomentTimezone = () => {\n const shop = useShop();\n\n const momentTimezone = (...args) => {\n const res = moment(...args);\n return res.tz(shop?.timezone);\n };\n\n return momentTimezone;\n};\n\nexport default useMomentTimezone;\n","import { Button, Col, Row, Spinner } from \"reactstrap\";\nimport styles from './DepositCollection.module.scss';\nimport * as Sentry from \"@sentry/react\";\nimport { Elements } from \"@stripe/react-stripe-js\";\nimport { loadStripe } from \"@stripe/stripe-js\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport DepositCheckoutForm from \"./DepositCheckoutForm\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { acceptAppointment, startPaymentCollection, findPaymentRequest, updatePaymentRequest, chargePaymentMethod } from \"../../../../../apis/appointment.api\";\nimport { CheckCircle, ChevronRight } from \"react-feather\";\nimport useMomentTimezone from \"../../../../../utility/hooks/useMomentTimezone\";\nimport { CookieKeys, MONTH_DATE_HOUR_FORMAT, YEAR_MONTH_DATE_FORMAT } from \"../../../../../utility/Constant\";\nimport { defaultSelectedProduct } from '../../../../../recoil/atoms/booking/booking';\nimport { useRecoilState } from \"recoil\";\nimport userState from \"../../../../../recoil/atoms/auth/user\";\nimport useShop from '@hooks/useShop';\nimport { chain, uniqBy } from \"lodash\";\nimport { bookAppointment } from \"../../../../../apis/booking.api\";\nimport { Cookie } from \"../../../../../utility/Cookie\";\nimport useJwt from '@src/@core/auth/jwt/useJwt';\nimport moment from \"moment\";\n\nconst DepositCollection = (props) => {\n const {\n goNextStep,\n backPreviousStep,\n booking,\n setBooking,\n params\n } = props;\n\n const momentTimezone = useMomentTimezone();\n const [clientSecret, setClientSecret] = useState(\"\");\n const [isPaymentIntent, setIsPaymentIntent] = useState(false);\n const [isPaymentMethodSaved, setIsPaymentMethodSaved] = useState(false);\n const [isComplete, setIsComplete] = useState(false);\n const [paymentRequestId, setPaymentRequestId] = useState(null);\n const [user, setUser] = useRecoilState(userState);\n const [receiptEmail, setReceiptEmail] = useState(booking?.customer?.email || user?.email);\n const [stripePromise, setStripePromise] = useState(null);\n const [platformCustomerId, setPlatformCustomerId] = useState(null);\n const [hasUpdatedPaymentWithAppointmentId, setHasUpdatedPaymentWithAppointmentId] = useState(false);\n const shop = useShop();\n const [message, setMessage] = useState(null);\n const { jwt } = useJwt();\n\n const startPaymentCollectionMutation = useMutation(startPaymentCollection);\n\n const onStartPaymentCollection = () => {\n const params = {\n payment_type: \"DEPOSIT\",\n product_id: booking?.selectedProducts[0]?.products[0]?.id,\n client_id: booking?.clientId,\n appointment_id: booking?.appointmentId,\n created_by: user?.id,\n source: 'client_booking',\n };\n if (isComplete) {\n return;\n }\n startPaymentCollectionMutation.mutate(params, {\n onSuccess: (data) => {\n if (data?.data) {\n setPaymentRequestId(data.data.id);\n setClientSecret(data?.data?.client_secret);\n setPlatformCustomerId(data?.data?.platform_customer_id);\n setBooking(prev => ({ ...prev, customer: { ...prev.customer, firstName: data?.data?.client_name }, deposit: { ...prev.deposit, completed_at: data?.data?.completed_at, amount: data?.data?.amount, confirmation_number: data?.data?.confirmation_number } }));\n setStripePromise(loadStripe(data?.data?.stripe_public_key));\n if (data.data.status === 'complete') {\n setIsComplete(true);\n }\n }\n },\n onError: (error) => {\n },\n });\n };\n\n const {\n data: paymentRequest,\n refetch: refetchPaymentRequest\n } = useQuery(\n ['findPaymentRequest', params.paymentId],\n () => findPaymentRequest(params.paymentId),\n {\n onSuccess: (data) => {\n if (data?.data) {\n setPaymentRequestId(data.data.id);\n setClientSecret(data?.data?.client_secret);\n setIsPaymentIntent(true);\n setBooking(prev => ({ ...prev, customer: { ...prev.customer, firstName: data?.data?.client_name }, deposit: { ...prev.deposit, completed_at: data?.data?.completed_at, amount: data?.data?.amount, confirmation_number: data?.data?.confirmation_number } }));\n if (data?.data?.stripe_account && data.data.stripe_account.length > 0) {\n setStripePromise(loadStripe(data?.data?.stripe_public_key, { stripeAccount: data?.data?.stripe_account }));\n } else {\n setStripePromise(loadStripe(data?.data?.stripe_public_key));\n }\n if (data.data.status === 'complete') {\n setIsPaymentMethodSaved(true);\n setIsComplete(true);\n setHasUpdatedPaymentWithAppointmentId(true);\n }\n }\n },\n enabled: params.paymentId !== null && params.paymentId !== undefined && !!jwt.getToken()\n }\n );\n\n const selectedProviders = chain(booking.selectedProducts)\n .groupBy('provider.id')\n .mapValues(arr => {\n const result = arr.reduce(\n (res, item) => {\n res.provider = item.provider;\n res.products = uniqBy([...res.products, ...item.products], 'id');\n return res;\n },\n { ...defaultSelectedProduct }\n );\n return result;\n })\n .value();\n\n const updatePaymentRequestMutation = useMutation(updatePaymentRequest);\n\n const updatePaymentRequestAppointmentId = (appointmentId) => {\n updatePaymentRequestMutation.mutate({ id: paymentRequestId, appointment_id: appointmentId }, {\n onSuccess: (data) => {\n setHasUpdatedPaymentWithAppointmentId(true);\n },\n onError: (error) => {\n },\n })\n };\n\n const isInsuranceOfferEnabled = () => {\n if (shop?.feature_settings?.vertical_insure_enabled !== undefined && shop?.feature_settings?.vertical_insure_enabled?.enabled === true) {\n return true;\n }\n return false;\n };\n\n const skipProviderAvailabilityCheck = useMemo(() => {\n return shop?.feature_settings?.skip_provider_availability_check !== undefined &&\n shop.feature_settings.skip_provider_availability_check;\n }, [shop]);\n\n const isRequestedProviderInNoteEnabled = useMemo(() => {\n return shop?.feature_settings?.include_requested_provider_in_appointment_note !== undefined &&\n shop.feature_settings.include_requested_provider_in_appointment_note;\n }, [shop]);\n\n const nextButtonText = () => {\n if (isInsuranceOfferEnabled()) {\n return 'Next step';\n }\n if (booking?.isSaved && !shop?.metadata?.isAutoAccept) {\n return 'Appointment Request Details';\n }\n return 'Appointment Confirmation';\n };\n\n const isAppointmentLimitEnabled = useMemo(() => {\n return shop?.feature_settings?.booking_limit_per_time_slot_enabled !== undefined &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.enabled &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.apply_to_providers &&\n shop.feature_settings.booking_limit_per_time_slot_enabled.limit > 1;\n }, [shop]);\n\n const getSource = () => {\n const source = new URLSearchParams(location.search)?.get(\"utm_source\");\n if (source) return source;\n if (booking?.referralSource) return booking?.referralSource;\n return null;\n };\n\n const addBookingMutation = useMutation(bookAppointment);\n\n const saveAppointment = (user, clientInfo, note, saveAsRequest = false) => {\n const products = Object.values(selectedProviders).reduce((res, item) => {\n const arr = item.products.map(product => ({\n id: product?.id,\n anyone: item.provider?.id === 'any-provider' ? !booking?.dateTimeProviderId : (!!booking?.dateTimeProviderId ? !booking.dateTimeProviderId : !item.provider),\n providerId: item.provider?.id === 'any-provider' ? (booking?.dateTimeProviderId || null) : (!!booking?.dateTimeProviderId ? booking.dateTimeProviderId : item.provider?.id),\n ...(!item.provider && { label: 'Anyone' }),\n }));\n res.push(...arr);\n return res;\n }, []);\n let specificDoctorRequested = false;\n if (isRequestedProviderInNoteEnabled && selectedProviders && Object.keys(selectedProviders).length > 0) {\n specificDoctorRequested = Object.keys(selectedProviders)[0] !== 'any-provider';\n }\n\n addBookingMutation.mutate(\n {\n source: 'CUSTOMER_SITE',\n products,\n userId: user?.id,\n isReminderSMS: booking.allowRemind,\n isReminderEmail: booking.allowRemind,\n isSendConfirmation: booking.allowRemind,\n isReturningClient: booking.returningClientFlow,\n roomId: booking?.roomId,\n compound_secondary_date_time: booking?.compoundSecondaryDateTime,\n compound_secondary_room_id: booking?.compoundSecondaryRoomId,\n compound_secondary_provider_id: booking?.compoundSecondaryProviderId,\n compound_tertiary_date_time: booking?.compoundTertiaryDateTime,\n compound_tertiary_room_id: booking?.compoundTertiaryRoomId,\n compound_tertiary_provider_id: booking?.compoundTertiaryProviderId,\n date: booking.dateTime,\n note: booking.note || note,\n isDropoff: booking.isDropoff,\n speciesId: booking?.species?.id || clientInfo?.species?.id,\n speciesName: booking?.species?.name || clientInfo?.species?.name,\n patientName: booking?.customer?.petName || clientInfo?.petName,\n sex: booking?.customer?.sex || clientInfo?.sex,\n birthdate: booking?.customer?.birthdate || clientInfo?.birthdate,\n breed: booking?.customer?.breed || clientInfo?.breed,\n breed_id: booking?.customer?.breed_id || clientInfo?.breed_id,\n deposit_paid: true,\n ignoreOverlap: isAppointmentLimitEnabled,\n confirmed_keyword_action: booking?.confirmed_keyword_action || clientInfo?.confirmedKeywordAction,\n specific_doctor_requested: specificDoctorRequested,\n time_slot_calendar_id: booking?.time_slot_calendar_id,\n saveAsRequest,\n ignoreOverlap: skipProviderAvailabilityCheck || !!booking?.compoundSecondaryDateTime || false,\n referral_source: getSource(),\n has_wellness_plan: booking?.customer?.hasWellnessPlan || clientInfo?.hasWellnessPlan\n },\n {\n onSuccess: ({ data }) => {\n updatePaymentRequestAppointmentId(data.data.id);\n const cId = data.data.items?.length > 0 ? data.data.items[0].clientId : null;\n setBooking({\n ...booking,\n appointmentId: data.data.id,\n customer: {\n ...booking.customer,\n ...clientInfo\n },\n clientId: cId,\n isSaved: true,\n deposit_paid: true,\n });\n try {\n Cookie.removeItem(CookieKeys.confirmationForm);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n } catch (e) {\n }\n },\n onError: (error) => {\n Sentry.captureException(error);\n },\n }\n );\n };\n\n const chargePaymentMutation = useMutation(chargePaymentMethod);\n const acceptAppointmentMutation = useMutation(acceptAppointment);\n\n const onChargePayment = () => {\n const body = {\n payment_request_id: paymentRequestId,\n client_id: booking?.clientId,\n platform_customer_id: platformCustomerId,\n };\n chargePaymentMutation.mutate(body, {\n onSuccess: (data) => {\n setBooking(prev => ({ ...prev, deposit: { ...prev.deposit, completed_at: new Date(), amount: data?.data?.amount } }));\n const hasProduct = booking?.selectedProducts[0]?.products?.length > 0; // Move this stuff to onChargePayment success\n if (hasProduct && booking?.isSaved && shop?.metadata?.isAutoAccept) {\n acceptAppointmentMutation.mutate({ id: booking?.appointmentId, enableReminders: !!booking?.allowRemind }, {\n onSuccess: (data) => {\n setHasUpdatedPaymentWithAppointmentId(true);\n setIsComplete(true);\n },\n onError: () => {\n },\n });\n } else if (hasProduct && booking?.isSaved) {\n if (data.data?.status === 'pending') {\n if (data.data.next_action?.type === 'redirect_to_url' && data.data.next_action?.redirect_to_url?.url) {\n const url = data.data.next_action.redirect_to_url.url;\n window.location = url;\n }\n } else {\n setIsComplete(true);\n }\n setHasUpdatedPaymentWithAppointmentId(true);\n if (params.paymentId) refetchPaymentRequest();\n } else if (hasProduct && !booking.isSaved) {\n let saveAsRequest;\n if (shop?.metadata?.isAutoAccept) {\n saveAsRequest = false;\n } else {\n saveAsRequest = true;\n }\n if (data.data?.status === 'pending') {\n if (data.data.next_action?.type === 'redirect_to_url' && data.data.next_action?.redirect_to_url?.url) {\n const url = data.data.next_action.redirect_to_url.url;\n window.location = url;\n }\n } else {\n setIsComplete(true);\n saveAppointment(user, null, booking?.note, saveAsRequest);\n }\n } else {\n if (data.data?.status === 'pending') {\n if (data.data.next_action?.type === 'redirect_to_url' && data.data.next_action?.redirect_to_url?.url) {\n const url = data.data.next_action.redirect_to_url.url;\n window.location = url;\n }\n } else {\n setIsComplete(true);\n }\n if (params.paymentId) refetchPaymentRequest();\n }\n },\n onError: (error) => {\n setClientSecret('');\n setStripePromise(null);\n setIsPaymentMethodSaved(false);\n // onStartPaymentCollection();\n setMessage(error?.response?.data?.data?.message);\n },\n });\n };\n\n useEffect(() => {\n if (isPaymentMethodSaved) {\n if (!isPaymentIntent) {\n onChargePayment();\n } else {\n const hasProduct = booking?.selectedProducts[0]?.products?.length > 0;\n if (hasProduct && booking?.isSaved && shop?.metadata?.isAutoAccept) {\n acceptAppointmentMutation.mutate({ id: booking?.appointmentId, enableReminders: !!booking?.allowRemind }, {\n onSuccess: ({ data }) => {\n setHasUpdatedPaymentWithAppointmentId(true);\n },\n onError: () => {\n },\n });\n } else if (hasProduct && booking?.isSaved) {\n setHasUpdatedPaymentWithAppointmentId(true);\n if (params.paymentId) refetchPaymentRequest();\n } else if (hasProduct && !booking?.isSaved) {\n let saveAsRequest;\n if (shop?.metadata?.isAutoAccept) {\n saveAsRequest = false;\n } else {\n saveAsRequest = true;\n }\n saveAppointment(user, null, booking?.note, saveAsRequest);\n } else {\n if (params.paymentId) refetchPaymentRequest();\n }\n }\n }\n }, [isPaymentMethodSaved]);\n\n useEffect(() => {\n if (booking) {\n if (!params?.paymentId && !isComplete) {\n onStartPaymentCollection();\n }\n }\n }, []);\n\n const appearance = {\n theme: 'stripe',\n variables: {\n colorPrimary: '#03464C',\n }\n };\n\n const options = {\n clientSecret,\n appearance,\n };\n\n return (\n
\n {!isPaymentMethodSaved ? (\n <>\n \n Deposit Amount\n \n
\n
\n {!!booking?.deposit?.amount ? (\n
\n {`$${booking?.deposit?.amount.toFixed(2)}`}\n
\n ) : (\n
\n \n
\n )}\n \n one-time\n \n
\n
\n
\n Deposit will be applied to the total amount of your visit. Payment is collected by {shop?.name} using Oliver Software, Inc.\n
\n
\n Payment information\n <>\n {clientSecret && (\n \n \n \n )}\n {!clientSecret && (\n
\n Just a moment...\n \n
\n )}\n \n
\n \n ) : (\n <>\n {!isComplete ? (\n <>\n
\n Just a moment...\n \n
\n \n ) : (\n <>\n
\n
\n \n \n

\n Payment Successful\n

\n \n
\n
\n
\n Your payment has been processed! Details of the payment are included below.\n
\n
\n
\n {`Confirmation #: ${booking?.deposit?.confirmation_number || ''}`}\n
\n
\n
\n
TOTAL AMOUNT PAID
\n
${booking?.deposit?.amount.toFixed(2)}
\n
\n
\n {booking?.customer && (\n <>\n
\n
PAID BY
\n
{booking?.customer?.firstName}
\n
\n
\n \n )}\n
\n
PAYMENT DATE
\n {booking?.deposit?.completed_at && (\n
{`${momentTimezone(booking?.deposit?.completed_at).format(MONTH_DATE_HOUR_FORMAT)}`}
\n )}\n {!booking?.deposit?.completed_at && (\n
{`${moment().format(YEAR_MONTH_DATE_FORMAT)}`}
\n )}\n
\n
\n {(!!booking?.selectedProducts?.length && !!booking?.selectedProducts[0]?.products?.length) && (\n
\n \n
\n )}\n \n )}\n \n )}\n
\n );\n};\n\nexport default DepositCollection;\n","import React, { useEffect, useState } from \"react\";\nimport { PaymentElement, useStripe, useElements } from \"@stripe/react-stripe-js\";\nimport { Button, Input, Label, Spinner } from \"reactstrap\";\nimport { AlertCircle, ChevronRight } from \"react-feather\";\nimport { borderRadius } from \"polished\";\n\nconst InsuranceCheckoutForm = (props) => {\n const stripe = useStripe();\n const elements = useElements();\n\n const {\n onCompletePayment,\n } = props;\n\n const [message, setMessage] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (!stripe) {\n return;\n }\n\n const clientSecret = new URLSearchParams(window.location.search).get(\n \"payment_intent_client_secret\"\n );\n\n if (!clientSecret) {\n return;\n }\n\n stripe.retrievePaymentIntent(clientSecret).then(({ paymentIntent }) => {\n switch (paymentIntent.status) {\n case \"succeeded\":\n setMessage(\"Payment succeeded!\");\n break;\n case \"processing\":\n setMessage(\"Your payment is processing.\");\n break;\n case \"requires_payment_method\":\n setMessage(\"Your payment was not successful, please try again.\");\n break;\n default:\n setMessage(\"Something went wrong.\");\n break;\n }\n });\n }, [stripe]);\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n if (!stripe || !elements) {\n // Stripe.js hasn't yet loaded.\n // Make sure to disable form submission until Stripe.js has loaded.\n return;\n }\n\n setIsLoading(true);\n\n const result = await stripe.confirmPayment({\n elements,\n confirmParams: {\n },\n redirect: \"if_required\",\n });\n if (!result.error) {\n // setIsLoading(false);\n onCompletePayment();\n return;\n }\n const { error } = result;\n\n // This point will only be reached if there is an immediate error when\n // confirming the payment. Otherwise, your customer will be redirected to\n // your `return_url`. For some payment methods like iDEAL, your customer will\n // be redirected to an intermediate site first to authorize the payment, then\n // redirected to the `return_url`.\n if (error.type === \"card_error\" || error.type === \"validation_error\") {\n setMessage(error.message);\n } else if (error.code === \"payment_intent_unexpected_state\" && error.payment_intent?.status === \"succeeded\") {\n setMessage(\"This payment has already been paid. You have not been double-charged.\");\n } else {\n setMessage(\"An unexpected error occurred.\");\n }\n\n setIsLoading(false);\n };\n\n const paymentElementOptions = {\n layout: {\n type: 'tabs',\n }\n }\n\n return (\n
\n \n {(stripe && elements) && (\n <>\n
\n \n
\n \n )}\n {/* Show any error or success messages */}\n {message &&
{message}
}\n \n );\n};\n\nexport default InsuranceCheckoutForm;\n","import { Button, Label, Spinner } from \"reactstrap\";\n\nimport { PetInsuranceComponent } from '@vertical-insure/web-components/react';\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { checkoutInsurance, completeInsurancePayment, findExistingInsuranceQuote, getInsuranceClientId } from \"../../../../../apis\";\nimport { ChevronLeft } from \"react-feather\";\nimport { cloneDeep } from \"lodash\";\nimport toast from \"@components/toast\";\nimport './insurance.style.scss';\nimport InsuranceCheckoutForm from \"./InsuranceCheckoutForm\";\nimport { Elements } from \"@stripe/react-stripe-js\";\nimport styles from './DepositCollection.module.scss';\nimport { loadStripe } from \"@stripe/stripe-js\";\n\nconst InsuranceOffer = (props) => {\n const {\n goNextStep,\n backPreviousStep,\n booking,\n setBooking,\n params\n } = props;\n\n const [isLoading, setIsLoading] = useState(true);\n const [isLoadingCheckout, setIsLoadingCheckout] = useState(false);\n const [viClientId, setViClientId] = useState(null);\n const [clientFirstName, setClientFirstName] = useState(null);\n const [clientLastName, setClientLastName] = useState(null);\n const [clientEmail, setClientEmail] = useState(null);\n const [clientState, setClientState] = useState(null);\n const [clientCity, setClientCity] = useState(null);\n const [clientZip, setClientZip] = useState(null);\n const [species, setSpecies] = useState(null);\n const [declaredBreed, setDeclaredBreed] = useState(null);\n const [plan, setPlan] = useState('INJURY_AND_ILLNESS');\n const [age, setAge] = useState(3);\n const [petName, setPetName] = useState(null);\n const [skipOffer, setSkipOffer] = useState(false);\n const [gender, setGender] = useState(null);\n const InsuranceStates = {\n Presented: 0,\n Declined: 1,\n Accepted: 2\n };\n const [insuranceState, setInsuranceState] = useState(InsuranceStates.Presented);\n const [selectedQuote, setSelectedQuote] = useState(null);\n const [makingIndependentPayment, setMakingIndependentPayment] = useState(false);\n const [clientSecret, setClientSecret] = useState(\"\");\n const [stripePromise, setStripePromise] = useState(null);\n const [isComplete, setIsComplete] = useState(false);\n const [isSuccess, setIsSuccess] = useState(false);\n const elementRef = useRef(null);\n\n const {\n data: _existingQuote,\n refetch: existingQuoteRefetch\n } = useQuery(\n ['getExistingQuote', booking?.clientId, booking?.customer?.petName], () => findExistingInsuranceQuote({ client_id: booking?.clientId, name: booking?.customer?.petName }), {\n onSuccess: (data) => {\n if (data?.data?.id) {\n setSkipOffer(true);\n }\n setIsLoading(false);\n },\n onError: (err) => {\n setIsLoading(false);\n },\n refetchOnWindowFocus: false,\n });\n\n const {\n data: _viClientId,\n refetch: viClientIdRefetch\n } = useQuery(\n ['getViClientId'], () => getInsuranceClientId(), {\n onSuccess: (data) => {\n setViClientId(data?.data?.client_id);\n },\n onError: (err) => {\n setIsLoading(false);\n },\n refetchOnWindowFocus: false,\n });\n\n useEffect(() => {\n if (booking.species?.name === 'Dog' || booking.species?.name === 'Cat') {\n setSpecies(booking.species?.name.toUpperCase());\n } else {\n goNextStep();\n return;\n }\n if (booking.customer?.firstName) {\n const fullName = booking.customer.firstName;\n const nameArray = fullName.split(\" \");\n if (nameArray.length > 1) {\n setClientFirstName(nameArray[0]);\n setClientLastName(nameArray[1]);\n } else {\n setClientFirstName(nameArray[0]);\n }\n }\n if (booking.customer?.state) {\n setClientState(booking.customer?.state);\n } else {\n setSkipOffer(true);\n }\n if (booking.customer?.city) {\n setClientCity(booking.customer?.city);\n } else {\n setSkipOffer(true);\n }\n if (booking.customer?.zip) {\n setClientZip(booking.customer?.zip);\n } else {\n setSkipOffer(true);\n }\n if (booking.customer?.email) {\n setClientEmail(booking.customer?.email);\n } else {\n setSkipOffer(true);\n }\n if (booking.customer?.petName) {\n setPetName(booking.customer?.petName);\n } else {\n setSkipOffer(true);\n }\n if (booking.customer?.sex) {\n setGender(booking.customer?.sex.toUpperCase());\n } else {\n setSkipOffer(true);\n }\n if (booking.customer?.birthdate) {\n // convert birthdate to age\n const today = new Date();\n const birthDate = new Date(booking.customer?.birthdate);\n let age = today.getFullYear() - birthDate.getFullYear();\n const m = today.getMonth() - birthDate.getMonth();\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n age--;\n }\n setAge(age);\n } else {\n setSkipOffer(true);\n }\n if (booking.customer?.breed) {\n setDeclaredBreed(booking.customer?.breed);\n } else {\n setSkipOffer(true);\n }\n viClientIdRefetch();\n existingQuoteRefetch();\n }, []);\n\n useEffect(() => {\n if (skipOffer) {\n goNextStep();\n }\n }, [skipOffer]);\n\n const onStateChange = (e) => {\n let quotes;\n if (e.detail && Array.isArray(e.detail)) {\n quotes = cloneDeep(e.detail);\n } else if (e.detail && typeof e.detail === 'object') {\n quotes = [cloneDeep(e.detail)];\n }\n setIsLoadingCheckout(false);\n if (!quotes) {\n setSelectedQuote(null);\n return;\n }\n if (quotes.some((q) => q.selectedState === 'DECLINED')) {\n setInsuranceState(InsuranceStates.Declined);\n setSelectedQuote(null);\n setClientSecret(null);\n setMakingIndependentPayment(false);\n } else if (quotes.some((q) => q.selectedState === 'ACCEPTED')) {\n setInsuranceState(InsuranceStates.Accepted);\n const quote = cloneDeep(quotes.find((q) => q.selectedState === 'ACCEPTED')?.quote);\n setSelectedQuote(quote);\n setClientSecret(null);\n setStripePromise(null);\n setMakingIndependentPayment(false);\n } else {\n setInsuranceState(InsuranceStates.Presented);\n setSelectedQuote(null);\n setClientSecret(null);\n setMakingIndependentPayment(false);\n }\n };\n\n const checkoutInsuranceMutation = useMutation(checkoutInsurance);\n\n const onCheckout = () => {\n setIsLoadingCheckout(true);\n checkoutInsuranceMutation.mutate({\n amount: selectedQuote.subscription_premium.payment_amount,\n quote_id: selectedQuote.quote_id,\n client_id: booking.clientId,\n appointment_id: booking.appointmentId,\n is_deposit_paid: booking.deposit_paid,\n },\n {\n onSuccess: (data) => {\n if (data?.data) {\n if (data.data.complete) {\n setIsLoadingCheckout(false);\n setIsComplete(true);\n setIsSuccess(true);\n setMakingIndependentPayment(false);\n } else {\n setMakingIndependentPayment(true);\n setTimeout(() => {\n elementRef.current?.scrollIntoView({ behavior: 'smooth' });\n }, 1500);\n setClientSecret(data?.data?.client_secret);\n setStripePromise(loadStripe(data?.data?.stripe_public_key, { stripeAccount: data?.data?.stripe_account }));\n }\n }\n },\n onError: () => {\n setIsLoadingCheckout(false);\n setMakingIndependentPayment(false);\n setIsComplete(true);\n setIsSuccess(false);\n },\n });\n };\n\n const onNextStep = () => {\n if (insuranceState === InsuranceStates.Declined || isComplete) {\n goNextStep();\n } else if (insuranceState === InsuranceStates.Accepted) {\n onCheckout();\n } else {\n toast.error('Please select or decline an insurance offer.');\n }\n };\n\n const petInsuranceComponent = useMemo(() => {\n return onStateChange(e)}\n />\n }, [viClientId, clientFirstName, clientLastName, clientEmail, clientState, clientCity, clientZip, species, declaredBreed, plan, age, petName, gender]);\n\n const completeInsurancePaymentMutation = useMutation(completeInsurancePayment);\n\n const onCompletePayment = () => {\n const params = {\n quote_id: selectedQuote?.quote_id\n };\n completeInsurancePaymentMutation.mutate(params, {\n onSuccess: (data) => {\n if (data?.data) {\n if (data.data.complete) {\n setIsComplete(true);\n setIsLoadingCheckout(false);\n setIsSuccess(true);\n setMakingIndependentPayment(false);\n } else {\n toast.error('Something went wrong, but your appointment has still been booked. (1)');\n setIsLoadingCheckout(false);\n setIsSuccess(false);\n setMakingIndependentPayment(false);\n }\n }\n },\n onError: (error) => {\n toast.error('Something went wrong, but your appointment has still been booked. (2)');\n setIsSuccess(false);\n setIsComplete(true);\n setIsLoadingCheckout(false);\n setMakingIndependentPayment(false);\n },\n });\n };\n\n const appearance = {\n theme: 'stripe',\n variables: {\n colorPrimary: '#03464C',\n }\n };\n\n const options = {\n clientSecret,\n appearance,\n };\n\n return (\n <>\n
\n \n
\n {!isComplete && (\n <>\n {!!viClientId && !isLoading && (\n <>\n

Add insurance for your pet

\n {!makingIndependentPayment && (\n \n Continue\n {isLoadingCheckout && }\n \n )}\n <>\n {petInsuranceComponent}\n \n \n )}\n {isLoading && (\n \n )}\n {!makingIndependentPayment && (\n \n Continue\n {isLoadingCheckout && }\n \n )}\n \n )}\n {makingIndependentPayment && (\n <>\n
\n {clientSecret && (\n \n \n \n )}\n {!clientSecret && (\n
\n Just a moment...\n \n
\n )}\n
\n \n
\n \n )}\n {isComplete && (\n <>\n {isSuccess ? (\n <>\n

Your pet insurance has been purchased and you have been charged ${selectedQuote.subscription_premium.payment_amount / 100}. You will receive an email with the details of your insurance.

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

There was a problem purchasing your pet insurance, but your appointment has still been booked.

\n \n )}\n \n Continue\n \n \n )}\n \n );\n};\n\nexport default InsuranceOffer;\n","import { useRecoilState } from \"recoil\";\nimport shopState from \"../../../../../recoil/atoms/current-shop\";\nimport userState from \"../../../../../recoil/atoms/auth/user\";\nimport { Button } from \"reactstrap\";\nimport { useEffect, useState } from \"react\";\nimport * as Sentry from \"@sentry/react\";\n\nconst ClientTypeSelection = ({ externalKey, step, goNextStep, booking, setBooking }) => {\n const [shop] = useRecoilState(shopState);\n const [user, setUser] = useRecoilState(userState);\n const [proceed, setProceed] = useState(false);\n\n useEffect(() => {\n if (proceed && shop?.feature_settings) {\n goNextStep();\n }\n }, [proceed, shop]);\n\n useEffect(() => {\n if (user) {\n setBooking({\n ...booking,\n returningClientFlow: true,\n });\n setProceed(true);\n }\n }, []);\n\n useEffect(() => {\n if (booking?.returningClientFlow || user) {\n setProceed(true);\n }\n }, [booking?.returningClientFlow]);\n\n const onSelectClientType = (clientType) => {\n if (clientType === \"new\") {\n setBooking({\n ...booking,\n returningClientFlow: false,\n });\n setProceed(true);\n } else if (clientType === \"returning\") {\n setBooking({\n ...booking,\n returningClientFlow: true,\n });\n }\n };\n\n useEffect(() => { // If a redirect is set, jump to returning client login\n const redirect = new URLSearchParams(window.location.search).get(\"redirect\");\n if (redirect) {\n setBooking({\n ...booking,\n returningClientFlow: true,\n });\n }\n }, [shop]);\n\n return (\n
\n {!!shop && (\n
\n \n Hello! 👋 Have you visited\n \n \n {shop?.name} before?\n \n
\n {\n onSelectClientType(\"new\");\n }}\n >\n New client\n \n {\n onSelectClientType(\"returning\");\n }}\n >\n Returning client\n \n
\n
\n )}\n
\n );\n};\n\nexport default ClientTypeSelection;\n","import { useEffect, useState } from \"react\";\nimport { Button, Col, FormGroup, Input, Label, Row } from \"reactstrap\";\nimport themeConfig from '@configs/themeConfig';\nimport { ChevronLeft, Lock } from \"react-feather\";\nimport { useMutation } from \"react-query\";\nimport { useRecoilState } from \"recoil\";\nimport shopState from \"@recoil/atoms/current-shop\";\nimport { createVerificationCode } from \"@apis\";\nimport * as Sentry from \"@sentry/react\";\nimport { bannedPhoneNumbers } from \"../returningClientHelper\";\nimport { AppointmentSteps } from \"../../../../../utility/Constant\";\n\nconst ReturningClientInfo = ({ goNextStep, booking, setStep, setBooking, backPreviousStep, setBookingStep }) => {\n const [shop] = useRecoilState(shopState);\n const [phoneNumber, setPhoneNumber] = useState('');\n const [displayPhoneNumber, setDisplayPhoneNumber] = useState('');\n const [email, setEmail] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [isLoginRedirect, setIsLoginRedirect] = useState(false);\n const [errors, setErrors] = useState({\n phoneNumber: null,\n email: null,\n });\n\n useEffect(() => {\n const redirect = new URLSearchParams(window.location.search).get(\"redirect\");\n if (redirect) {\n setIsLoginRedirect(true);\n }\n }, [shop]);\n\n const phoneRegExp = /^(\\d{3})[- ]?\\)?(\\d{3})[- ]?(\\d{4})$/;\n const validatePhoneNumber = (phoneNumber) => {\n return phoneRegExp.test(phoneNumber) && phoneNumber.length === 10;\n };\n\n const emailRegExp = /^[\\w.]+[\\+]*[\\w.]+@([\\w-]+\\.)+[\\w-]{2,4}$/;\n const validateEmail = (email) => {\n if (email.endsWith('.oliver')) {\n return true;\n }\n return emailRegExp.test(email);\n };\n\n const hideEmail = () => {\n return phoneNumber.length > 0;\n };\n\n const hidePhoneNumber = () => {\n return email.length > 0;\n };\n\n const onChangePhoneNumber = (phoneNumber) => {\n const sanitizedPhoneNumber = phoneNumber.replace(/[^0-9]/g, '');\n setPhoneNumber(sanitizedPhoneNumber);\n const displayPhone = sanitizedPhoneNumber.replace(/(\\d{3})(\\d{3})(\\d{4})/, '$1-$2-$3');\n setDisplayPhoneNumber(displayPhone);\n if ((errors.phoneNumber && validatePhoneNumber(sanitizedPhoneNumber)) || sanitizedPhoneNumber.length === 0) {\n setErrors({ ...errors, phoneNumber: null });\n }\n };\n\n const onChangeEmail = (email) => {\n setEmail(email);\n if ((errors.email && validateEmail(email)) || email.length === 0) {\n setErrors({ ...errors, email: null });\n }\n };\n\n const verificationCodeMutation = useMutation(createVerificationCode);\n\n const beginVerification = ({ clientInfo }) => {\n if (shop?.is_demo && !!shop?.feature_settings?.skip_demo_shop_booking_otp_enabled) {\n setIsLoading(false);\n setBooking(prev => ({ ...prev, verificationError: false, customer: { ...clientInfo } }));\n goNextStep();\n return;\n }\n\n const body = {\n email: clientInfo.email,\n phoneNumber: clientInfo.phoneNumber,\n phoneCode: clientInfo.phoneCode\n };\n verificationCodeMutation.mutate(body,\n {\n onSuccess: (data) => {\n setIsLoading(false);\n setBooking(prev => ({ ...prev, verificationError: false, customer: { ...clientInfo } }));\n goNextStep();\n },\n onError: (data) => {\n setIsLoading(false);\n if (data?.response?.data?.message === 'VerificationMaximumExceeded') {\n setBooking(prev => ({ ...prev, verificationError: true, customer: { ...clientInfo } }));\n goNextStep();\n }\n },\n }\n );\n };\n\n const onContinue = () => {\n setIsLoading(true);\n if (phoneNumber.length > 0) {\n if (!validatePhoneNumber(phoneNumber) || phoneNumber.length !== 10) {\n setErrors({\n ...errors,\n phoneNumber: 'Please enter a valid 10-digit phone number',\n });\n setIsLoading(false);\n return;\n }\n if (bannedPhoneNumbers().includes(phoneNumber.replace(/[^0-9]/g, ''))) {\n setBookingStep(AppointmentSteps.NoAvailability)\n return;\n }\n } else if (email.length > 0) {\n if (!validateEmail(email)) {\n setErrors({ ...errors, email: 'Please enter a valid email' });\n setIsLoading(false);\n return;\n }\n } else {\n setIsLoading(false);\n return;\n }\n beginVerification({ clientInfo: { phoneNumber, email, phoneCode: '1' } });\n };\n\n const canContinue = () => {\n return phoneNumber.length > 0 || email.length > 0;\n };\n\n return (\n
\n
\n
\n \n \n
\n logo\n \n
\n
\n
\n \n Let's {isLoginRedirect ? 'find' : 'verify'} your account using your mobile phone or email.\n \n
\n {!hidePhoneNumber() && (\n <>\n {\n onChangePhoneNumber(e.target.value);\n }}\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n onContinue();\n }\n }}\n autocomplete=\"off\"\n />\n {(!!errors.phoneNumber) && (\n \n {errors.phoneNumber}\n \n )}\n \n )}\n {!hideEmail() && !hidePhoneNumber() && (\n
\n \n
\n )}\n {!hideEmail() && (\n <>\n {\n onChangeEmail(e.target.value);\n }}\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n onContinue();\n }\n }}\n autocomplete=\"off\"\n style={{ marginBottom: `${errors.email ? '0' : '12px'}` }}\n />\n {!!errors.email && (\n \n {errors.email}\n \n )}\n \n )}\n {\n onContinue();\n }}\n >\n Send verification code\n \n
\n
\n
\n );\n};\n\nexport default ReturningClientInfo;\n","import themeConfig from '@configs/themeConfig';\nimport { ChevronLeft, Lock } from 'react-feather';\nimport { Button, Row, Spinner } from 'reactstrap';\nimport { getOfficeLocations } from '../../../../../apis/appointment.api';\nimport { useQuery } from 'react-query';\nimport { useEffect, useState } from 'react';\nimport useShop from '../../../../../utility/hooks/useShop';\nimport { useRecoilState } from 'recoil';\nimport userState from '../../../../../recoil/atoms/auth/user';\n\nconst LocationSelection = ({ goNextStep, booking, setStep, setBooking, backPreviousStep }) => {\n const [isLoading, setIsLoading] = useState(true);\n const [locations, setLocations] = useState([]);\n const shop = useShop();\n const [user, setUser] = useRecoilState(userState);\n\n const {\n data,\n refetch,\n } = useQuery(['getLocations'], () => getOfficeLocations(), {\n onSuccess: (data) => {\n if (data?.data) {\n setLocations(data.data);\n }\n setIsLoading(false);\n },\n staleTime: 10000,\n refetchOnWindowFocus: true,\n });\n\n useEffect(() => {\n refetch();\n }, []);\n\n return (\n
\n
\n
\n {!user ? (\n \n \n \n ) : (\n
\n )}\n
\n \n At which location do you want to schedule your pet's appointment?\n \n
\n
\n {isLoading ? (\n \n \n
\n ) : (\n <>\n {locations?.length === 0 && (\n <>\n {`No locations found. Please contact ${shop?.name} to book an appointment.`}\n \n )}\n {locations?.length > 0 && (\n <>\n {(locations?.map(\n (location) => (\n {\n setStep(2);\n setBooking(prev => ({ ...prev, location: { ...location } }));\n goNextStep();\n }}\n >\n {location.name}\n \n ),\n )\n )}\n \n )}\n \n )}\n
\n
\n
\n );\n};\n\nexport default LocationSelection;\n","import { useRecoilState } from \"recoil\";\nimport NavbarSms from \"../../../../../@core/layouts/components/navbar/NavbarSms\";\nimport shopState from \"../../../../../recoil/atoms/current-shop\";\n\nconst NoAvailability = (props) => {\n const {\n goNextStep,\n backPreviousStep,\n booking,\n setBooking\n } = props;\n\n const [shop] = useRecoilState(shopState);\n\n const formatPhoneNumber = (phoneNumber) => {\n return [\n phoneNumber.slice(0, 3),\n phoneNumber.slice(3, 6),\n phoneNumber.slice(6)\n ].join('-');\n };\n\n return (\n
\n \n No appointments available\n \n \n We're sorry, we are currently not accepting appointments online.
\n Feel free to text us or call us at {formatPhoneNumber(shop?.phoneNumber)}.\n

\n
\n \n
\n
\n );\n};\n\nexport default NoAvailability;\n","import { useEffect, useMemo } from 'react';\nimport { useLocation, useParams } from 'react-router-dom'\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport { useRecoilState } from 'recoil';\nimport bookingState, { initialBookingState, defaultSelectedProduct } from '@recoil/atoms/booking/booking';\nimport bookingStepState, { initialBookingStep, previousStepState } from '@recoil/atoms/booking/bookingStep';\nimport externalKeyState from '@recoil/atoms/auth/externalKey';\nimport shopState from '@recoil/atoms/current-shop';\nimport AppointmentSelection from './AppointmentSelection';\nimport ClientInfoCollection from './ClientInfoCollection';\nimport Verification from './Verification';\nimport Login from './Login';\nimport SignUp from './SignUp';\nimport { AppointmentSteps, CookieKeys } from '../../../../../utility/Constant';\nimport userState from '../../../../../recoil/atoms/auth/user';\nimport BookSuccess from './BookSuccess';\nimport ForgotPassword from './ForgotPassword';\nimport useQuerySearch from '../../../../../utility/hooks/useQuerySearch';\nimport { isEmpty } from 'lodash';\nimport { useMediaQuery } from 'react-responsive';\nimport DepositCollection from './DepositCollection';\nimport InsuranceOffer from './InsuranceOffer';\nimport ClientTypeSelection from './ClientTypeSelection';\nimport { isDepositRequired } from '../depositHelper';\nimport ReturningClientInfo from './ReturningClientInfo';\nimport LocationSelection from './LocationSelection';\nimport { Cookie } from '../../../../../utility/Cookie';\nimport NoAvailability from './NoAvailability';\nimport clientState from '../../../../../recoil/atoms/booking/client';\nimport { isReturningClient } from '../returningClientHelper';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\n\nconst BookAppointment = () => {\n const location = useLocation();\n const querySearch = useQuerySearch();\n const [externalKey, setExternalKey] = useRecoilState(externalKeyState);\n const { jwt } = useJwt();\n const [booking, setBooking] = useRecoilState(bookingState);\n const [appointmentStep, setBookingStep] = useRecoilState(bookingStepState);\n const [previousStep, setPreviousStep] = useRecoilState(previousStepState);\n const [shop] = useRecoilState(shopState);\n const [user] = useRecoilState(userState);\n const [client, setClient] = useRecoilState(clientState);\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 991px)' });\n const params = useParams();\n\n const isBookStaffMode =\n location.pathname === '/clinician' &&\n (booking.selectedProducts.length <= 1 ||\n isEqual(booking.selectedProducts?.[0], defaultSelectedProduct) ||\n isEmpty(booking.selectedProducts?.[0]?.products) ||\n !booking.dateTime);\n\n const isDepositCollectionRequired = () => {\n if (booking.selectedProducts?.length === 0) return true;\n return isDepositRequired(shop, booking.selectedProducts[0]?.products[0], isReturningClient(client));\n };\n\n const isInsuranceOfferEnabled = () => {\n if (shop?.feature_settings?.vertical_insure_enabled !== undefined && shop?.feature_settings?.vertical_insure_enabled?.enabled === true) {\n return true;\n }\n return false;\n };\n\n const isMultiLocationEnabled = () => {\n if (shop?.feature_settings?.multi_location_v1_enabled !== undefined) return shop.feature_settings.multi_location_v1_enabled;\n return false;\n };\n\n const isNewClientBookingDisabled = () => {\n if (shop?.feature_settings?.new_client_booking_enabled === undefined || shop.feature_settings.new_client_booking_enabled === true) return false;\n return true;\n };\n\n const isReturningClientBookingDisabled = () => {\n if (shop?.feature_settings?.returning_client_booking_enabled === undefined || shop.feature_settings.returning_client_booking_enabled === true) return false;\n return true;\n };\n\n const getRedirect = () => {\n const redirect = new URLSearchParams(location.search).get(\"redirect\");\n return redirect;\n };\n\n const getSource = () => {\n const source = new URLSearchParams(location.search).get(\"utm_source\");\n if (source) return source;\n return null;\n };\n\n useEffect(() => {\n const bookingState = cloneDeep(initialBookingState);\n if (!params?.paymentId) {\n const source = getSource();\n if (source) {\n bookingState.referralSource = source;\n }\n setBooking(bookingState);\n setBookingStep(initialBookingStep);\n } else {\n setBooking(bookingState);\n setBookingStep(AppointmentSteps.DepositCollection);\n }\n }, [location.pathname]);\n\n useEffect(() => {\n if (appointmentStep === AppointmentSteps.AppointmentSelection && shop?.metadata?.bookingPolicy) {\n Cookie.removeItem(CookieKeys.confirmationForm);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n }\n }, [shop]);\n\n useEffect(() => {\n window.history.pushState(null, null, `${window.location.pathname}${location.search}`);\n switch (appointmentStep) {\n case AppointmentSteps.Login:\n case AppointmentSteps.SignUp:\n case AppointmentSteps.ForgotPassword:\n case AppointmentSteps.BookSuccess:\n case AppointmentSteps.ReturningClientInfo:\n case AppointmentSteps.ClientTypeSelection:\n case AppointmentSteps.NoAvailability:\n Cookie.removeItem(CookieKeys.confirmationForm);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n break;\n default:\n break;\n }\n }, [appointmentStep]);\n\n const StepComponent = useMemo(() => {\n switch (appointmentStep) {\n case AppointmentSteps.ClientTypeSelection:\n return ClientTypeSelection;\n case AppointmentSteps.ReturningClientInfo:\n return ReturningClientInfo;\n case AppointmentSteps.LocationSelection:\n return LocationSelection;\n case AppointmentSteps.AppointmentSelection:\n return AppointmentSelection;\n case AppointmentSteps.Login:\n return Login;\n case AppointmentSteps.SignUp:\n return SignUp;\n case AppointmentSteps.ForgotPassword:\n return ForgotPassword;\n case AppointmentSteps.ClientInfoCollection:\n return ClientInfoCollection;\n case AppointmentSteps.Verification:\n return Verification;\n case AppointmentSteps.DepositCollection:\n return DepositCollection;\n case AppointmentSteps.InsuranceOffer:\n return InsuranceOffer;\n case AppointmentSteps.BookSuccess:\n return BookSuccess;\n case AppointmentSteps.NoAvailability:\n return NoAvailability;\n default:\n return AppointmentSelection;\n }\n }, [appointmentStep, isBookStaffMode]);\n\n const goNextStep = () => {\n setPreviousStep(appointmentStep);\n switch (appointmentStep) {\n case AppointmentSteps.ClientTypeSelection:\n if (booking.returningClientFlow) {\n if (isReturningClientBookingDisabled()) {\n return setBookingStep(AppointmentSteps.NoAvailability);\n }\n return setBookingStep(AppointmentSteps.ReturningClientInfo);\n } else {\n if (isMultiLocationEnabled()) {\n if ((!user && isNewClientBookingDisabled()) || isReturningClientBookingDisabled()) {\n return setBookingStep(AppointmentSteps.NoAvailability);\n }\n return setBookingStep(AppointmentSteps.LocationSelection);\n } else {\n if ((!user && isNewClientBookingDisabled()) || isReturningClientBookingDisabled()) {\n return setBookingStep(AppointmentSteps.NoAvailability);\n } else {\n return setBookingStep(AppointmentSteps.AppointmentSelection);\n }\n }\n }\n case AppointmentSteps.ReturningClientInfo:\n return setBookingStep(AppointmentSteps.Verification);\n case AppointmentSteps.LocationSelection:\n return setBookingStep(AppointmentSteps.AppointmentSelection);\n case AppointmentSteps.AppointmentSelection:\n if ((isNewClientBookingDisabled() && !isReturningClient(client)) || isReturningClientBookingDisabled()) {\n return setBookingStep(AppointmentSteps.NoAvailability);\n } else {\n return setBookingStep(AppointmentSteps.ClientInfoCollection);\n }\n case AppointmentSteps.ClientInfoCollection:\n if (user) {\n if (isDepositCollectionRequired()) {\n return setBookingStep(AppointmentSteps.DepositCollection);\n } else {\n if (isInsuranceOfferEnabled()) {\n return setBookingStep(AppointmentSteps.InsuranceOffer);\n } else {\n return setBookingStep(AppointmentSteps.BookSuccess);\n }\n }\n } else {\n return setBookingStep(AppointmentSteps.Verification);\n }\n case AppointmentSteps.Verification:\n if (previousStep === AppointmentSteps.ReturningClientInfo) {\n if (getRedirect()) {\n const clientId = jwt.getClientId();\n const redirect = getRedirect();\n window.location.href = `/${clientId}/${redirect}`;\n return;\n } else if (isMultiLocationEnabled()) {\n return setBookingStep(AppointmentSteps.LocationSelection);\n } else {\n return setBookingStep(AppointmentSteps.AppointmentSelection);\n }\n } else {\n if (isDepositCollectionRequired()) {\n return setBookingStep(AppointmentSteps.DepositCollection);\n } else {\n if (isInsuranceOfferEnabled()) {\n return setBookingStep(AppointmentSteps.InsuranceOffer);\n } else {\n return setBookingStep(AppointmentSteps.BookSuccess);\n }\n }\n }\n case AppointmentSteps.DepositCollection:\n if (isInsuranceOfferEnabled()) {\n return setBookingStep(AppointmentSteps.InsuranceOffer);\n } else {\n return setBookingStep(AppointmentSteps.BookSuccess);\n }\n case AppointmentSteps.InsuranceOffer:\n return setBookingStep(AppointmentSteps.BookSuccess);\n default:\n }\n };\n\n const backPreviousStep = () => {\n switch (appointmentStep) {\n case AppointmentSteps.ClientInfoCollection:\n return setBookingStep(AppointmentSteps.AppointmentSelection);\n case AppointmentSteps.ReturningClientInfo:\n const tmp0 = cloneDeep(booking);\n tmp0.returningClientFlow = false;\n setBooking(tmp0);\n return setBookingStep(AppointmentSteps.ClientTypeSelection);\n case AppointmentSteps.LocationSelection:\n const tmp1 = cloneDeep(booking);\n tmp1.returningClientFlow = false;\n setBooking(tmp1);\n return setBookingStep(AppointmentSteps.ClientTypeSelection);\n case AppointmentSteps.AppointmentSelection:\n if (isMultiLocationEnabled()) {\n return setBookingStep(AppointmentSteps.LocationSelection);\n } else {\n return setBookingStep(AppointmentSteps.ClientTypeSelection);\n }\n case AppointmentSteps.InsuranceOffer:\n return setBookingStep(AppointmentSteps.BookSuccess);\n case AppointmentSteps.Verification:\n if (previousStep === AppointmentSteps.ReturningClientInfo) {\n return setBookingStep(AppointmentSteps.ReturningClientInfo);\n } else {\n return setBookingStep(AppointmentSteps.ClientInfoCollection);\n }\n default:\n return setBookingStep(AppointmentSteps.ClientTypeSelection);\n }\n };\n\n return (\n
\n
\n \n
\n
\n );\n};\n\nexport default BookAppointment;\n","import { Calendar, Edit, Info, Users } from 'react-feather';\nimport { lazy } from 'react';\nimport { lazyRetry } from '../../../App';\nimport BookAppointment from './components/BookAppointment';\n\nexport const bookingRoutes = [\n {\n path: '/',\n exact: true,\n className: '',\n component: BookAppointment,\n id: 'booking-menu-appointment',\n sideBar: {\n label: 'Book Appointment',\n icon: ,\n },\n button: {\n label: 'Appointment Type',\n },\n mode: 'appointment',\n },\n {\n path: '/:paymentId',\n exact: true,\n className: '',\n component: BookAppointment,\n id: 'booking-menu-appointment',\n sideBar: {\n label: 'Book Appointment',\n icon: ,\n },\n button: {\n label: 'Appointment Type',\n },\n mode: 'clinician',\n }\n];\n","import { Nav, NavItem } from 'reactstrap';\nimport { NavLink, withRouter, useRouteMatch, useLocation } from 'react-router-dom';\nimport { bookingRoutes } from '../routes';\nimport { useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport shopState from '../../../../recoil/atoms/current-shop';\nimport { useRecoilState } from 'recoil';\nimport ShopDefaultAvatar from '@src/assets/images/logo/OLI_APP_4C_LTBG.png';\n\nconst BookingLeftSide = () => {\n const [shop] = useRecoilState(shopState);\n const location = useLocation();\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 991px)' });\n\n useEffect(() => {}, []);\n\n return isTabletOrMobile && document.getElementById('wrapper') ? (\n ReactDOM.createPortal(\n
\n
\n
\n
\n \n
\n

{shop?.name}

\n
\n
\n
,\n document.getElementById('wrapper')\n )\n ) : (\n <>\n
\n
\n \n
\n

{shop?.name}

\n
\n
\n
\n
\n
\n \n );\n};\n\nexport default BookingLeftSide;\n","import { useEffect, useState } from 'react';\nimport { Globe, MapPin, MessageSquare } from 'react-feather';\nimport { useRecoilState } from 'recoil';\nimport cn from 'classnames';\nimport shopState from '../../../../recoil/atoms/current-shop';\nimport moment from 'moment';\nimport { urlPattern } from '../../../../utility/Constant';\n\nconst daysOfWeek = {\n 1: 'Mon',\n 2: 'Tue',\n 3: 'Wed',\n 4: 'Thu',\n 5: 'Fri',\n 6: 'Sat',\n 7: 'Sun',\n};\n\nconst contactInfo = shop => [\n shop?.url && {\n key: 'contact-info-web',\n href: shop?.url,\n icon: ,\n label: 'Website',\n },\n shop?.phone && {\n key: 'contact-info-phone',\n href: `sms:${shop?.phone}`,\n icon: ,\n label: shop?.phone,\n },\n // shop?.email && {\n // key: 'contact-info-email',\n // href: `mailto:${shop?.email}`,\n // icon: ,\n // label: shop?.email,\n // },\n // shop?.metadata?.facebookUrl && {\n // key: 'contact-info-facebook',\n // href: shop?.metadata?.facebookUrl,\n // icon: ,\n // label: 'Facebook',\n // },\n // shop?.metadata?.yelpUrl && {\n // key: 'contact-info-yeld',\n // href: shop?.metadata?.yelpUrl,\n // icon: ,\n // label: 'Yelp',\n // },\n // shop?.metadata?.instagramUrl && {\n // key: 'contact-info-insta',\n // href: shop?.metadata?.instagramUrl,\n // icon: ,\n // label: 'Instagram',\n // },\n shop?.address && {\n key: 'contact-info-address',\n href: urlPattern.test(shop?.metadata?.googleMapUrl) ? shop?.metadata?.googleMapUrl : `https://www.google.com/maps/search/?api=1&${shop?.address}`,\n icon: ,\n label: shop?.address,\n },\n];\n\nconst BookingRightSide = () => {\n const [shop] = useRecoilState(shopState);\n const [shopCoordinates, setShopCoordinates] = useState(null);\n\n useEffect(() => {\n const { metadata } = shop || {};\n const { mapCoordinates, isBookingShowMap } = metadata || {};\n if (!mapCoordinates || !isBookingShowMap) return;\n setShopCoordinates(mapCoordinates.split(',').map(Number));\n }, [shop]);\n\n const hideBookingHours = () => {\n if (shop?.feature_settings?.hide_client_booking_hours_enabled !== undefined &&\n shop.feature_settings?.hide_client_booking_hours_enabled === true) {\n return true;\n } else {\n return false;\n }\n };\n\n return (\n <>\n
\n
Contact Info
\n \n {/* {shop?.metadata?.mapCoordinates && shop?.metadata?.isBookingShowMap && (\n \n )} */}\n
\n {!hideBookingHours() && (\n <>\n
Business hours
\n
    \n {shop?.metadata?.businessHours?.map(item => (\n
  • \n {daysOfWeek[item.day]}\n {!item.offline ? (\n \n {item.startHour}:{item.startMinute === 0 ? '00' : item.startMinute} - {item.endHour > 12 ? item.endHour - 12 : item.endHour}:\n {item.endMinute === 0 ? '00' : item.endMinute}\n \n ) : (\n Closed\n )}\n
  • \n ))}\n
\n \n )}\n \n );\n};\n\nexport default BookingRightSide;\n","// ** React Imports\nimport { Suspense, useEffect, useState } from 'react';\n\n// ** Third Party Components\nimport { BrowserRouter as Router, Switch, Route, useParams, useLocation } from 'react-router-dom';\nimport { Row, Col, Card, Container, Spinner } from 'reactstrap';\nimport { useQuery } from 'react-query';\nimport { useRecoilState } from 'recoil';\nimport isEmpty from 'lodash/isEmpty';\nimport { useMediaQuery } from 'react-responsive';\n\nimport useJwt from '@src/@core/auth/jwt/useJwt';\nimport { getShopInfo, getExternalKey, getTimezones } from '@apis';\nimport shopState from '@recoil/atoms/current-shop';\nimport externalKeyState from '@recoil/atoms/auth/externalKey';\nimport timeZoneState from '@recoil/atoms/booking/timeZone';\nimport bookingState, { initialBookingState } from '@recoil/atoms/booking/booking';\nimport bookingStepState, { initialBookingStep } from '@recoil/atoms/booking/bookingStep';\nimport '@styles/react/pages/page-booking.scss';\n\nimport BookingLeftSide from './components/BookingLeftSide';\nimport BookingRightSide from './components/BookingRightSide';\nimport { bookingRoutes } from './routes';\nimport useUserState from '../../../utility/hooks/useUserState';\n\nconst BookingWizard = () => {\n const { jwt } = useJwt();\n const location = useLocation();\n const params = useParams();\n const [user] = useUserState();\n const [externalKey, setExternalKey] = useRecoilState(externalKeyState);\n const [shop, setShop] = useRecoilState(shopState);\n const [timeZones, setTimeZones] = useRecoilState(timeZoneState);\n const [, setBooking] = useRecoilState(bookingState);\n const [, setBookingStep] = useRecoilState(bookingStepState);\n\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 991px)' });\n\n useEffect(() => {\n jwt.setClientId(params?.clientId);\n\n return () => {\n setBooking(initialBookingState);\n setBookingStep(initialBookingStep);\n };\n }, []);\n\n useQuery(\n 'externalKey',\n async () => {\n const { data } = await getExternalKey();\n setExternalKey(data.data?.jwtToken);\n jwt.setToken(data.data?.jwtToken);\n return data.data?.jwtToken;\n },\n {\n enabled: !user && !externalKey && !!jwt.getClientId(),\n }\n );\n useQuery(\n 'shopInfo',\n async () => {\n const { data } = await getShopInfo(params?.clientId);\n const { phoneNumber, phoneCode } = data.data;\n const shopInfo = { ...data.data, ...(phoneNumber && phoneCode && { phone: `+${phoneCode}${phoneNumber}` }) };\n setShop(shopInfo);\n return shopInfo;\n },\n {\n enabled: (!!externalKey || !!user) && isEmpty(shop),\n }\n );\n useQuery(\n 'timeZones',\n async () => {\n const { data } = await getTimezones();\n setTimeZones(data.data);\n return data.data;\n },\n {\n enabled: (!!externalKey || !!user) && isEmpty(timeZones),\n }\n );\n\n return (\n \n \n \n \n \n \n \n \n {bookingRoutes.map(route => (\n // Render more s with the same paths as\n // above, but different components this time.\n {\n return (\n }>\n \n \n );\n }}\n />\n ))}\n \n \n\n {!isTabletOrMobile && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default BookingWizard;\n","import { NavItem } from 'reactstrap';\nimport { NavLink, useParams } from 'react-router-dom';\nimport { User, Mail, CheckSquare, Heart } from 'react-feather';\nimport Avatar from '@components/avatar';\nimport ReactDOM from 'react-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport themeConfig from '@configs/themeConfig';\nimport useShop from '@hooks/useShop';\nimport useUserState from '@hooks/useUserState';\nimport ShopDefaultAvatar from '@src/assets/images/logo/OLI_APP_4C_LTBG.png';\n\nconst AppointmentsLeftSide = () => {\n const [user] = useUserState();\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 991px)' });\n const params = useParams();\n const shop = useShop();\n\n return isTabletOrMobile && document.getElementById('wrapper') ? (\n ReactDOM.createPortal(\n <>\n
\n
\n
\n
\n \n
\n

{shop?.name}

\n
\n
    \n \n \n
    \n \n My Account\n
    \n
    \n
    \n \n \n
    \n \n My Pets\n
    \n
    \n
    \n \n \n
    \n \n My Appointments\n
    \n
    \n
    \n \n \n
    \n \n Book New Appointment\n
    \n
    \n
    \n
\n
\n\n \n \"logo\"\n \n
\n ,\n document.getElementById('wrapper')\n )\n ) : (\n <>\n
\n } src={user?.avatar} className=\"mb-1\" color=\"primary\" />\n

{user?.name}

\n
\n
\n
\n
    \n \n \n
    \n \n My Account\n
    \n
    \n
    \n \n \n
    \n \n My Pets\n
    \n
    \n
    \n \n \n
    \n \n My Appointments\n
    \n
    \n
    \n \n \n
    \n \n Book New Appointment\n
    \n
    \n
    \n
\n
\n
\n \n );\n};\n\nexport default AppointmentsLeftSide;\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport cn from 'classnames';\nimport { Media } from 'reactstrap';\nimport AvatarGroup from '@components/avatar-group';\nimport moment from 'moment-timezone';\nimport isEmpty from 'lodash/isEmpty';\nimport { useMediaQuery } from 'react-responsive';\nimport { ChevronRight } from 'react-feather';\nimport { HOUR_FORMAT } from '@utility/Constant';\nimport { getEffectiveAppointmentStatus } from '../../../../../utility/Utils';\nimport useShop from '../../../../../utility/hooks/useShop';\nimport { borderRadius } from 'polished';\n\nconst AppointmentItem = ({ selected, data, hideProviders, onClick, rightIcon, timezone, tab }) => {\n const servicesRef = useRef();\n const shop = useShop();\n const isMobile = useMediaQuery({ query: '(max-width: 576px)' });\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [collapsible, setCollapsible] = useState(false);\n const date = moment(data?.fromDate).tz(timezone || moment.tz.guess());\n const tz = useMemo(() => shop?.timezone || moment.tz.guess(), [shop]);\n const providers = useMemo(\n () => data?.items?.map(item => ({ title: item.metadata.providerName, img: item.metadata.providerAvatar })),\n [data?.item]\n );\n const heightServices = useMemo(() => (isMobile ? 75 : 25), [isMobile]);\n const isAppointmentPast = useMemo(\n () => data?.fromDate && moment(data?.fromDate).tz(tz).isBefore(moment(new Date()).tz(tz)),\n [data?.fromDate]\n );\n\n useEffect(() => {\n if (servicesRef?.current?.scrollHeight > heightServices) {\n setCollapsible(true);\n setIsCollapsed(true);\n }\n }, [servicesRef, heightServices]);\n\n const toggleCollapsed = e => {\n e.stopPropagation();\n setIsCollapsed(!isCollapsed);\n };\n\n return (\n \n \n {date.format('MMM')}\n {date.format('DD')}\n {date.format(HOUR_FORMAT)}\n \n
\n \n
\n {!isEmpty(data?.items) && (\n \n {getEffectiveAppointmentStatus({ isPast: isAppointmentPast, status: data.status })}\n \n )}\n \n \n {data?.items?.map((item, index) => (\n \n

{item.metadata?.productName}

\n
\n {item.metadata?.providerName}\n \n {item.metadata?.productTime}\n mins\n \n {/* ${item.metadata?.productCost} */}\n
\n
\n ))}\n
\n
\n
\n \n {!hideProviders && data?.providers && }\n \n \n );\n};\nexport default AppointmentItem;\n","import { useState } from 'react';\nimport { Card, CardBody, TabContent, TabPane, Nav, NavItem, NavLink, Spinner } from 'reactstrap';\nimport { useQuery } from 'react-query';\nimport { getBookingAppointments } from '@apis/booking.api';\nimport useUserState from '@hooks/useUserState';\nimport AppointmentItem from './AppointmentItem';\nimport qs from 'query-string';\nimport useShop from '../../../../../utility/hooks/useShop';\nimport { borderRadius } from 'polished';\n\nconst Appointments = ({ history }) => {\n const shop = useShop();\n const params = qs.parse(history.location.search);\n const [tab, setTab] = useState(params.tab || 'upcoming');\n const [user] = useUserState();\n const { data, isLoading } = useQuery(\n ['getAppointments', tab],\n async () => {\n const { data } = await getBookingAppointments(user?.id, { type: tab, size: 1000 });\n return data.data;\n },\n {\n enabled: !!user?.id,\n }\n );\n\n const { content: appointments } = data || {};\n\n const onItemClick = id => {\n history.push(`/${id}`);\n };\n\n return (\n \n \n

My Appointments

\n
\n \n \n \n {isLoading && (\n
\n \n
\n )}\n {!isLoading && appointments?.length === 0 &&
Nothing to see here yet!
}\n {appointments?.map(item => {\n return (\n onItemClick(item.id)} timezone={shop?.timezone} />\n );\n })}\n
\n \n {isLoading && (\n
\n \n
\n )}\n {!isLoading && appointments?.length === 0 &&
Nothing to see here yet!
}\n {appointments?.map(item => (\n onItemClick(item.id)} timezone={shop?.timezone} />\n ))}\n
\n
\n
\n
\n
\n );\n};\n\nexport default Appointments;\n","import { atom } from 'recoil';\n\nconst confirmBox = {\n show: false,\n title: '',\n message: '',\n isConfirm: false,\n};\n\nconst confirmBoxState = atom({\n key: 'confirmBox',\n default: confirmBox,\n});\n\nexport default confirmBoxState;\n","// ** Third Party Components\nimport { Fragment } from 'react'\nimport Proptypes from 'prop-types'\nimport classnames from 'classnames'\nimport { Spinner } from 'reactstrap'\n\nimport './ui-loader.scss'\n\nconst UILoader = props => {\n const { children, blocking, loader, className, tag, overlayColor } = props\n\n const Tag = tag\n\n return (\n \n {children}\n {blocking ? (\n \n
\n
{loader}
\n \n ) : null}\n \n )\n}\n\nexport default UILoader\n\nUILoader.defaultProps = {\n tag: 'div',\n blocking: false,\n loader: \n}\n\nUILoader.propTypes = {\n tag: Proptypes.string,\n loader: Proptypes.any,\n className: Proptypes.string,\n overlayColor: Proptypes.string,\n blocking: Proptypes.bool.isRequired\n}\n","import { useState } from 'react';\nimport { Card, CardBody, Spinner, Row, Col, Button, FormGroup, Label, Input, Form, FormText } from 'reactstrap';\nimport Select from '@components/select';\nimport toast from '@components/toast';\nimport PhoneInput from 'react-phone-input-2';\nimport { Controller, useForm } from 'react-hook-form';\nimport * as yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport useUserState from '@hooks/useUserState';\nimport { useQuery } from 'react-query';\nimport { getCustomerMetadata } from '@apis';\nimport { useParams } from 'react-router';\nimport { useUpdateProfileMutation } from '../../../../../queries';\nimport { CookieKeys } from '../../../../../utility/Constant';\nimport { Cookie } from '../../../../../utility/Cookie';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\n\nconst schema = yup.object().shape({\n name: yup.string().trim().required('Name is required').max(255, 'Please enter within 255 characters'),\n phoneNumber: yup\n .string()\n .trim()\n .required('Phone is required')\n .max(15, 'Max 15 characters')\n .test('min-phone', 'Please enter at least 10 digits', (value, context) => {\n return value.slice(context.parent.phoneCode.length).length >= 10;\n })\n .test('missing-phone', 'Please enter your phone number', (value, context) => {\n return !!value.slice(context.parent.phoneCode.length);\n }),\n email: yup\n .string()\n .trim()\n .required('Please enter your email')\n .email('Please enter correct email format')\n .max(255, 'Please enter within 255 characters'),\n});\n\n// ** Create month and date list\nconst dob = [];\nconst mob = [];\nconst months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nfor (let i = 1; i <= 31; i++) {\n dob.push({ value: i, label: i });\n}\n\nfor (let i = 1; i <= 12; i++) {\n mob.push({ value: i, label: months[i - 1] });\n}\n\nconst MyAccount = ({ shopId }) => {\n const [user, setUser] = useUserState();\n const { data: metadataResult } = useQuery(['customerMetadata', shopId, user?.id], () => getCustomerMetadata(user?.id, shopId), {\n enabled: !!user?.id && !!shopId,\n });\n const metadata = metadataResult?.data?.data;\n\n const updateProfileMutation = useUpdateProfileMutation({\n onSuccess: data => {\n setUser(data);\n const cookieUser = Cookie.getItem(CookieKeys.user);\n Cookie.setItem(CookieKeys.user, { ...cookieUser, ...data });\n toast.success('Update profile successfully!');\n },\n });\n\n const defaultValues = {\n name: user.firstName || '',\n phoneCode: user.phoneCode || '1',\n phoneNumber: `${user.phoneCode || '1'}${user.phoneNumber}` || '',\n email: user.email || '',\n dateOfBirth: user?.metadata?.dateOfBirth ? dob.find(item => item.value === +user?.metadata?.dateOfBirth) : null,\n monthOfBirth: user?.metadata?.monthOfBirth ? mob.find(item => item.value === +user?.metadata?.monthOfBirth) : null,\n };\n const { jwt } = useJwt();\n\n const logout = () => {\n if (user.isAdmin) {\n setUser(null);\n Cookie.removeItem(CookieKeys.user);\n Cookie.removeItem(CookieKeys.shop);\n window.location.assign('/login');\n return;\n }\n setUser(null);\n const clientId = window?.location?.pathname?.split('/')[1];\n Cookie.removeItem(CookieKeys.user);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n Cookie.removeItem(CookieKeys.confirmationForm);\n jwt.logout(`/${clientId}`);\n };\n\n const {\n handleSubmit,\n control,\n formState: { errors, isDirty },\n setValue,\n } = useForm({\n resolver: yupResolver(schema),\n defaultValues,\n });\n\n const onSubmit = values => {\n updateProfileMutation.mutate({\n avatar: user.avatar,\n firstName: values.name,\n email: values.email || undefined,\n phoneCode: values.phoneCode,\n phoneNumber: values.phoneNumber.slice(values.phoneCode?.length || 0),\n metadata: {\n dateOfBirth: values.dateOfBirth ? values.dateOfBirth.value : undefined,\n monthOfBirth: values.monthOfBirth ? values.monthOfBirth.value : undefined,\n },\n });\n };\n\n return (\n \n \n

My Account

\n
\n
\n \n \n } />\n {errors?.name && {errors?.name?.message || 'Error'}}\n \n (\n \n \n {\n if (value.slice(data.dialCode?.length || 0).length === 0) {\n field.onChange(data.dialCode);\n } else {\n field.onChange(value);\n }\n setValue('phoneCode', data.dialCode);\n }}\n buttonClass=\"border-none\"\n inputClass=\"w-100\"\n />\n {!!errors.phoneNumber && {errors?.phoneNumber?.message || 'Error'}}\n \n )}\n />\n \n \n } />\n {errors?.email && {errors?.email?.message || 'Error'}}\n \n {/* \n \n \n \n }\n />\n \n \n */}\n \n \n
\n
\n
\n );\n};\n\nexport default MyAccount;\n","import { useMemo, useState } from 'react';\nimport { Button, Card, CardBody, CardHeader, Spinner } from 'reactstrap';\nimport { useQuery, useMutation } from 'react-query';\nimport { getAppointmentDetail, cancelAppointment } from '@apis';\nimport useConfirm from '@hooks/useConfirm';\nimport { useParams } from 'react-router';\nimport momentTz from 'moment-timezone';\nimport UILoader from '@components/ui-loader';\nimport toast from '@components/toast';\nimport { ChevronLeft, Phone } from 'react-feather';\nimport { chain, uniqBy } from 'lodash';\nimport useShop from '../../../../../utility/hooks/useShop';\nimport cn from 'classnames';\nimport { getEffectiveAppointmentStatus } from '../../../../../utility/Utils';\nimport NavbarSms from '../../../../../@core/layouts/components/navbar/NavbarSms';\n\nconst AppointmentDetail = ({ history }) => {\n const params = useParams();\n const { confirm } = useConfirm();\n const shop = useShop();\n const tz = useMemo(() => shop?.timezone || momentTz.tz.guess(), [shop]);\n const clientId = window.location.pathname.split('/')[1];\n const [isLoadingCancellation, setIsLoadingCancellation] = useState(false);\n\n const { data, isLoading } = useQuery(\n ['getAppointmentDetail'],\n async () => {\n const { data } = await getAppointmentDetail(params.appointmentId);\n return data.data;\n },\n {\n enabled: !!params.appointmentId,\n cacheTime: 0,\n }\n );\n\n const isClientOnlineCancellationEnabled = useMemo(() => {\n return shop?.feature_settings?.client_online_cancellation_enabled !== undefined &&\n shop.feature_settings.client_online_cancellation_enabled === true;\n });\n\n const formatPhoneNumber = (phoneNumber) => {\n if (!phoneNumber) return '';\n return [\n phoneNumber.slice(0, 3),\n phoneNumber.slice(3, 6),\n phoneNumber.slice(6)\n ].join('-');\n };\n\n const productId = useMemo(() => data?.items?.map(item => item?.metadata?.productId), [data]);\n const isAppointmentPast = useMemo(\n () => data?.fromDate && momentTz(data?.fromDate).tz(tz).isBefore(momentTz(new Date()).tz(tz)),\n [data?.fromDate]\n );\n\n const cancelAppointmentMutation = useMutation(cancelAppointment);\n\n const isDeclineOrCancel = useMemo(() => ['DECLINED', 'DELETED'].includes(data?.status), [data?.status]);\n\n const groupByStaff = chain(data?.items)\n .groupBy('providerId')\n .mapValues(arr => {\n const result = arr.reduce(\n (res, item) => {\n res.provider = { providerId: item.metadata?.providerId, providerName: item.metadata?.providerName };\n res.products = uniqBy([...res.products, item], 'metadata.productId');\n return res;\n },\n { staff: null, products: [] }\n );\n return result;\n })\n .value();\n\n const handleDeleteEvent = async () => {\n const isConfirm = await confirm({ confirmButtonColor: 'danger', title: 'Are you sure you want to cancel this appointment?' });\n if (isConfirm) {\n setIsLoadingCancellation(true);\n cancelAppointmentMutation.mutate({ id: data.id, source: 'CUSTOMER_SITE' },\n {\n onSuccess: (...args) => {\n toast.success('Appointment canceled');\n history.push('/');\n setIsLoadingCancellation(false);\n },\n onError: (...args) => {\n setIsLoadingCancellation(false);\n }\n }\n );\n }\n };\n\n return (\n \n \n \n
\n \n

{momentTz(data?.fromDate).tz(tz).format('DD, MMM YYYY - hh:mma')}

\n
\n
\n \n <>\n {Object.values(groupByStaff).map((item, index) => {\n return (\n
\n
\n

Clinician:

\n

\n {item.provider?.providerName}\n

\n
\n
\n

Appointment Type:

\n
\n {item.products.map((product, index) => (\n
\n

\n {product.metadata.productName}\n

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

Status:

\n
\n \n {getEffectiveAppointmentStatus({ isPast: isAppointmentPast, status: data?.status })}\n \n
\n
\n
\n );\n })}\n \n\n
\n {isDeclineOrCancel || isAppointmentPast ? (\n {\n window.location.replace(`/${clientId}?appointment=${productId.join(',')}`);\n }}\n >\n Book again\n \n ) : (\n <>\n {isClientOnlineCancellationEnabled ? (\n \n ) : (\n \n

If you need to cancel your appointment, please call us at:

\n \n \n {formatPhoneNumber(shop?.phoneNumber)}\n \n {/* */}\n
\n )}\n \n )}\n
\n \n \n \n );\n};\n\nexport default AppointmentDetail;\n","import { forwardRef } from 'react';\n\n// ** React select\nimport ReactSelect from 'react-select';\nimport CreatableSelect from 'react-select/creatable';\n\n// ** APIs\n\nconst Select = forwardRef(({ onChange = () => {}, minHeight, styles, isCreatable, ...rest }, ref) => {\n const Tag = isCreatable ? CreatableSelect : ReactSelect;\n\n return (\n ({\n ...provided,\n minHeight: minHeight || 28,\n border: '1px solid #dddddd',\n borderRadius: '0.357rem',\n }),\n dropdownIndicator: provided => ({\n ...provided,\n padding: '2px 4px',\n }),\n placeholder: provided => ({\n ...provided,\n fontSize: 12,\n }),\n singleValue: provided => ({\n ...provided,\n fontSize: 12,\n }),\n option: provided => ({\n ...provided,\n fontSize: 12,\n color: '#433B54',\n }),\n valueContainer: provided => ({\n ...provided,\n paddingTop: 0,\n paddingBottom: 0,\n }),\n menu: provided => ({ ...provided, zIndex: 10 }),\n ...(styles || {}),\n }}\n onChange={onChange}\n {...rest}\n />\n );\n});\n\nexport default Select;\n","import { useState, useEffect, forwardRef } from 'react';\nimport { FormText, Row, Col } from 'reactstrap';\nimport { get, isEqual } from 'lodash';\nimport Flatpickr from 'react-flatpickr';\nimport { DATE_FORMAT_FRIENDLY, MOMENT_DATE_FORMAT_FRIENDLY } from '@utils';\nimport Select from '../select';\nimport './input-date-time.scss';\nimport momentTz from 'moment-timezone';\n\nconst InputDateTime = forwardRef(({ timeOptions, onChange, errorMessage, onDateChange, value, minDate, disable }, ref) => {\n const [date, setDate] = useState(value?.date);\n const [time, setTime] = useState(value?.time);\n\n useEffect(() => {\n const equal = isEqual(\n {\n date,\n time,\n },\n value\n );\n\n if (equal) return;\n\n if (!!date && !!time && !equal) {\n onChange({\n date,\n time,\n });\n\n return;\n }\n\n onChange(null);\n }, [date, time]);\n\n const handleChange = (field, value) => {\n switch (field) {\n case 'date':\n setDate(value);\n onDateChange(value);\n if (!value) {\n setTime(null);\n }\n case 'time':\n setTime(value);\n default:\n }\n };\n\n return (\n <>\n \n \n {\n handleChange('date', get(value, '0'));\n }}\n value={date}\n ref={ref}\n />\n \n \n ({\n ...provided,\n minHeight: 42,\n border: '1px solid #dddddd',\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n }),\n }}\n onChange={newValue => handleChange('time', newValue)}\n value={time}\n />\n \n \n {errorMessage && (\n \n \n \n {errorMessage}\n \n \n \n )}\n \n );\n});\n\nexport default InputDateTime;\n","import { Controller } from 'react-hook-form';\nimport InputDateTime from './input-date-time';\n\nconst FormDateTime = ({ name, control, onChange, ...props }) => {\n return (\n {\n return (\n {\n onChange?.(value);\n field.onChange(value);\n }}\n />\n );\n }}\n />\n );\n};\n\nexport default FormDateTime;\n","import { getTimeoffs, searchTimes } from '@apis';\nimport FormDateTime from '@components/form-date-time';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { chain, filter, findLast, flattenDeep, isEmpty, uniq, uniqBy } from 'lodash';\nimport momentTz from 'moment-timezone';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { useQuery } from 'react-query';\nimport { Button, Form, FormGroup, Input, Label, Spinner } from 'reactstrap';\nimport * as yup from 'yup';\nimport { useStaffDetailQuery } from '../../../../../queries/staff.query';\nimport { MOMENT_DATE_FORMAT_FRIENDLY, YEAR_MONTH_DATE_HOUR_FORMAT, YEAR_MONTH_DATE_FORMAT } from '../../../../../utility/Constant';\nimport useShop from '../../../../../utility/hooks/useShop';\nimport { numberToString } from '../../../../../utility/Utils';\n\nconst detailSchema = yup.object().shape({\n date: yup\n .mixed()\n .test(\n 'is-date',\n 'Please select a valid date and time',\n value => !!value?.date && !!value?.time && momentTz(`${momentTz(value.date).format('YYYY-MM-DD')} ${value.time.value}`).isValid()\n ),\n note: yup.string().max(255, 'Please enter within 255 characters').nullable(),\n});\n\nconst RescheduleForm = ({ appointment, onSubmit, isUpdatingAppointment }) => {\n const [startDate, setStartDate] = useState(appointment?.fromDate ? momentTz(appointment?.fromDate).toDate() : null);\n const shop = useShop();\n\n const bookingLeadTime = useMemo(() => shop?.metadata?.bookingLeadTime || 0, [shop]);\n\n useEffect(() => {\n if (shop?.timezone) {\n momentTz.tz.setDefault(shop?.timezone);\n }\n }, [shop]);\n\n const diffOffset = useMemo(() => {\n const currentOffset = momentTz().tz(momentTz.tz.guess()).utcOffset();\n const defaultOffset = momentTz().tz(shop?.timezone).utcOffset();\n return currentOffset - defaultOffset || 0;\n }, [shop]);\n\n const groupByStaff = useMemo(\n () =>\n chain(appointment?.items)\n .groupBy('providerId')\n .mapValues(arr => {\n const result = arr.reduce(\n (res, item) => {\n res.provider = { providerId: item.metadata?.providerId, providerName: item.metadata?.providerName };\n res.products = uniqBy([...res.products, item], 'metadata.productId');\n return res;\n },\n { staff: null, products: [] }\n );\n return result;\n })\n .value(),\n [appointment]\n );\n\n const {\n control,\n formState: { errors, isDirty },\n handleSubmit,\n } = useForm({\n resolver: yupResolver(detailSchema),\n defaultValues: {\n date: appointment?.fromDate\n ? {\n date: momentTz(appointment?.fromDate).toDate(),\n time: {\n label: momentTz(appointment?.fromDate).format('HH:mm'),\n value: momentTz(appointment?.fromDate).format('HH:mm'),\n },\n }\n : {\n date: null,\n time: null,\n },\n note: appointment?.note || '',\n },\n });\n\n const { data: timeData } = useQuery(\n ['getTime', startDate],\n async () => {\n const res = await searchTimes({\n date: momentTz(startDate).tz(momentTz.tz.guess()).add(diffOffset, 'minutes').toISOString(),\n providerIds: uniq(appointment?.items.map(service => service.providerId)),\n productIds: uniq(\n flattenDeep(\n Object.values(groupByStaff).map(item =>\n item.products.map(product => [\n product?.metadata?.productId,\n ...(product?.metadata?.includedItems?.map(p => p?.metadata?.productId) || []),\n ])\n )\n )\n ).filter(item => !!item),\n });\n return res.data.data;\n },\n {\n enabled: !!startDate,\n }\n );\n const timesOptions = useMemo(\n () =>\n timeData\n ?.filter(item => item.enabled && momentTz(item.dateTime).isSameOrAfter(momentTz().add(bookingLeadTime, 'minutes')))\n .map(item => ({ ...item, label: item.value, value: item.value })),\n [timeData, appointment, bookingLeadTime]\n );\n\n const { data: timeOffs, isFetching: isFetchingTimeOffs } = useQuery(\n ['timeOffs', appointment?.items?.[0]?.providerId],\n async () => {\n const { data } = await getTimeoffs(appointment?.items?.[0]?.providerId, 0, 1000);\n return data.data.content;\n },\n {\n enabled: !!appointment?.items?.[0]?.providerId,\n }\n );\n\n const { data: providerMetadata, isFetching: isFetchingProvider } = useStaffDetailQuery(appointment?.items?.[0]?.providerId, {\n enabled: !!appointment?.items?.[0]?.providerId,\n select: res => res.data?.data?.metadata,\n });\n\n const staffWorkingHours = useMemo(() => {\n const { businessHours: staffBusinessHours = [] } = providerMetadata || {};\n if (isEmpty(staffBusinessHours)) return {};\n const dateTime = momentTz(startDate).tz(momentTz.tz.guess());\n const day = dateTime.weekday() || 7;\n const date = dateTime.format('YYYY-MM-DD');\n const { startHour, endHour, startMinute, endMinute } = findLast(staffBusinessHours, { day });\n const startTime = momentTz(`${date} ${numberToString(startHour)}:${numberToString(startMinute)}`);\n const endTime = momentTz(`${date} ${numberToString(endHour)}:${numberToString(endMinute)}`);\n return { startTime, endTime };\n }, [providerMetadata, startDate]);\n\n const invalidTimes = useMemo(() => {\n const { startTime, endTime } = staffWorkingHours;\n return filter(\n timesOptions,\n time => momentTz(time.dateTime).isSameOrAfter(startTime) && momentTz(time.dateTime).isSameOrBefore(endTime)\n );\n }, [timesOptions, staffWorkingHours]);\n\n const isOfflineDate = useCallback(\n dateItem => {\n const { bookingHours = [], holidayHours = [] } = shop?.metadata || {};\n const { businessHours: staffBusinessHours = [] } = providerMetadata || {};\n const day = momentTz(dateItem).tz(momentTz.tz.guess()).weekday();\n const isOffline =\n bookingHours?.some(item => {\n if (item.day === 7 && day === 0) {\n return item.offline;\n }\n\n return item.day === day && item.offline;\n }) ||\n staffBusinessHours?.some(item => {\n if (item.day === 7 && day === 0) {\n return item.offline;\n }\n\n return item.day === day && item.offline;\n }) ||\n holidayHours?.some(item => momentTz(dateItem).isSame(item?.date, 'day') && item?.offline) ||\n (timeOffs || []).some(\n item => momentTz(dateItem).isSameOrAfter(item.fromDate, 'day') && momentTz(dateItem).isSameOrBefore(item.toDate, 'day')\n );\n\n return isOffline;\n },\n [shop, providerMetadata, timeOffs, momentTz]\n );\n\n return (\n
\n \n \n {!isFetchingTimeOffs && (\n setStartDate(date)}\n timeOptions={invalidTimes}\n disable={[isOfflineDate]}\n minDate={momentTz().add(bookingLeadTime, 'minutes').format(MOMENT_DATE_FORMAT_FRIENDLY)}\n />\n )}\n \n\n \n \n\n (\n \n )}\n />\n {errors.note && (\n \n {errors.note.message}\n \n )}\n \n\n
\n \n {isUpdatingAppointment ? (\n <>\n \n Rescheduling\n \n ) : (\n 'Reschedule'\n )}\n \n
\n
\n );\n};\n\nexport default RescheduleForm;\n","import axios from 'axios';\n\nexport const getTimeoffs = (id, page, size) => {\n return axios.get(`/appointment/v1/providers/${id}/time-off?page=${page}&size=${size}`);\n};\nexport const createTimeoffs = (data, id) => {\n return axios.post(`/appointment/v1/providers/${id}/time-off`, data);\n};\nexport const updateTimeoffs = (data, id, idTimeOff) => {\n return axios.put(`/appointment/v1/providers/${id}/time-off/${idTimeOff}`, data);\n};\nexport const deleteTimeoff = (idStaff, idTimeOff) => {\n return axios.delete(`/appointment/v1/providers/${idStaff}/time-off/${idTimeOff}`);\n};\n// export const getProvider = id => axios.get(`${API_TENANT_PUBLIC_URL}/providers/${id}`);\n","import { lazy } from 'react';\nimport { lazyRetry } from '../../../App';\nimport Appointments from './components/Appointments';\nimport AppointmentDetail from './components/AppointmentDetail';\nimport AppointmentReschedule from './components/AppointmentReschedule';\n\nexport const appointmentsRoutes = [\n {\n path: '/',\n exact: true,\n className: '',\n component: Appointments,\n id: 'appointment-list',\n },\n {\n path: '/:appointmentId',\n exact: true,\n className: '',\n component: AppointmentDetail,\n id: 'appointment-detail',\n },\n {\n path: '/:appointmentId/reschedule',\n exact: true,\n className: '',\n component: AppointmentReschedule,\n id: 'appointment-reschedule',\n },\n];\n","import { Button, Card, CardBody, CardHeader } from 'reactstrap';\nimport { useQuery, useMutation } from 'react-query';\nimport { getAppointmentDetail, cancelAppointment, updateAppointment, getShopInfo } from '@apis';\nimport { useParams } from 'react-router';\nimport momentTz from 'moment-timezone';\nimport { ChevronLeft } from 'react-feather';\nimport { useRecoilState, useSetRecoilState } from 'recoil';\nimport UILoader from '@components/ui-loader';\nimport toast from '@components/toast';\nimport useUserState from '@hooks/useUserState';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\nimport externalKeyState from '@recoil/atoms/auth/externalKey';\nimport '@styles/react/libs/react-select/_react-select.scss';\nimport '@styles/react/libs/flatpickr/flatpickr.scss';\nimport RescheduleForm from './RescheduleForm';\nimport shopState from '../../../../../recoil/atoms/current-shop';\nimport useMomentTimezone from '../../../../../utility/hooks/useMomentTimezone';\n\nconst AppointmentReschedule = ({ history, clientId }) => {\n const { jwt } = useJwt();\n const params = useParams();\n const [user] = useUserState();\n const setShop = useSetRecoilState(shopState);\n jwt.setClientId(clientId);\n const momentTimezone = useMomentTimezone();\n\n const { data, isLoading, refetch } = useQuery(['getAppointmentDetail', params.appointmentId], async () => {\n const { data } = await getAppointmentDetail(params.appointmentId);\n return data.data;\n });\n\n const [externalKey] = useRecoilState(externalKeyState);\n\n useQuery(\n ['shopInfo', user, externalKey],\n async () => {\n const { data } = await getShopInfo(clientId);\n const { phoneNumber, phoneCode } = data.data;\n const shopInfo = { ...data.data, ...(phoneNumber && phoneCode && { phone: `+${phoneCode}${phoneNumber}` }) };\n setShop(shopInfo);\n return shopInfo;\n },\n {\n enabled: !!externalKey || !!user,\n }\n );\n\n const upsertAppointmentMutation = useMutation(\n obj => {\n const { date, note } = obj;\n const { id, label, reminderSMS, reminderEmail } = data;\n return updateAppointment({\n id,\n label,\n note,\n isReminderSMS: reminderSMS,\n isReminderEmail: reminderEmail,\n userId: user?.id,\n note,\n date: momentTimezone(`${momentTimezone(date?.date).tz(momentTz.tz.guess()).format('YYYY-MM-DD')} ${date?.time?.value}`)\n .utc()\n .toISOString(),\n items: data.items.map(item => ({\n id: item.id,\n productId: item.metadata.productId,\n productTime: item.metadata.productTime,\n anyone: !item.providerId,\n providerId: item.providerId,\n })),\n source: 'BOOKING_SITE',\n });\n },\n {\n onSuccess: (res, variables) => {\n toast.success('Appointment Updated');\n refetch();\n history.push('/');\n },\n }\n );\n\n const onSubmit = values => {\n upsertAppointmentMutation.mutate(values);\n // history.push(`/${data?.id}`);\n };\n\n return (\n \n \n \n \n

Reschedule appointment

\n
\n \n {!isLoading && (\n \n )}\n \n
\n
\n );\n};\n\nexport default AppointmentReschedule;\n","import { Suspense } from 'react';\n// ** Third Party Components\nimport { Row, Col, Container } from 'reactstrap';\nimport { BrowserRouter as Router, Switch, Route, useParams } from 'react-router-dom';\nimport useShop from '@hooks/useShop';\nimport '@styles/react/pages/page-booking.scss';\nimport ShopDefaultAvatar from '@src/assets/images/logo/OLI_APP_4C_LTBG.png';\nimport AppointmentsLeftSide from './components/AppointmentsLeftSide';\nimport { appointmentsRoutes } from './routes';\nimport { useQuery } from 'react-query';\nimport { getShopInfo } from '@apis';\nimport { useSetRecoilState } from 'recoil';\nimport shopState from '../../../recoil/atoms/current-shop';\n\nconst AppointmentsApp = () => {\n const shop = useShop();\n const params = useParams();\n const clientId = window.location.pathname.split('/')[1];\n const setShop = useSetRecoilState(shopState);\n\n useQuery('shopInfo', () => getShopInfo(clientId), {\n enabled: !!clientId,\n select: res => res.data?.data,\n onSuccess: res => {\n setShop(res);\n },\n });\n\n return (\n <>\n
\n \n

{shop?.name}

\n
\n \n \n \n \n \n \n \n \n {appointmentsRoutes.map(route => (\n // Render more s with the same paths as\n // above, but different components this time.\n {\n return (\n \n \n \n );\n }}\n />\n ))}\n \n \n \n \n \n \n );\n};\n\nexport default AppointmentsApp;\n","import { NavItem } from 'reactstrap';\nimport { NavLink, useParams } from 'react-router-dom';\nimport { User, Mail, CheckSquare, Heart } from 'react-feather';\nimport Avatar from '@components/avatar';\nimport ReactDOM from 'react-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport themeConfig from '@configs/themeConfig';\nimport useShop from '@hooks/useShop';\nimport useUserState from '@hooks/useUserState';\nimport ShopDefaultAvatar from '@src/assets/images/logo/OLI_APP_4C_LTBG.png';\n\nconst MyAccountLeftSide = () => {\n const [user] = useUserState();\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 991px)' });\n const params = useParams();\n const shop = useShop();\n\n return isTabletOrMobile && document.getElementById('wrapper') ? (\n ReactDOM.createPortal(\n <>\n
\n
\n
\n
\n \n
\n

{shop?.name}

\n
\n
    \n \n \n
    \n \n My Account\n
    \n
    \n
    \n \n \n
    \n \n My Pets\n
    \n
    \n
    \n \n \n
    \n \n My Appointments\n
    \n
    \n
    \n \n \n
    \n \n Book New Appointment\n
    \n
    \n
    \n
\n
\n\n \n \"logo\"\n \n
\n ,\n document.getElementById('wrapper')\n )\n ) : (\n <>\n
\n } src={user?.avatar} className=\"mb-1\" color=\"primary\" />\n

{user?.name}

\n
\n
\n
\n
    \n \n \n
    \n \n My Account\n
    \n
    \n
    \n \n \n
    \n \n My Pets\n
    \n
    \n
    \n \n \n
    \n \n My Appointments\n
    \n
    \n
    \n \n \n
    \n \n Book New Appointment\n
    \n
    \n
    \n
\n
\n
\n \n );\n};\n\nexport default MyAccountLeftSide;\n","import MyAccount from './components/MyAccount';\n\nexport const accountRoutes = [\n {\n path: '/',\n exact: true,\n className: '',\n component: MyAccount,\n id: 'my-account',\n },\n];\n","import { Suspense } from 'react';\n// ** Third Party Components\nimport { Row, Col, Container } from 'reactstrap';\nimport { BrowserRouter as Router, Switch, Route, useParams } from 'react-router-dom';\nimport useShop from '@hooks/useShop';\nimport '@styles/react/pages/page-booking.scss';\nimport ShopDefaultAvatar from '@src/assets/images/logo/OLI_APP_4C_LTBG.png';\nimport MyAccountLeftSide from './components/MyAccountLeftSide';\nimport { accountRoutes } from './routes';\n\nconst AccountApp = () => {\n const shop = useShop();\n const params = useParams();\n\n return (\n <>\n
\n \n

{shop?.name}

\n
\n \n \n \n \n \n \n \n \n {accountRoutes.map(route => (\n // Render more s with the same paths as\n // above, but different components this time.\n {\n return (\n \n \n \n );\n }}\n />\n ))}\n \n \n \n \n \n \n );\n};\n\nexport default AccountApp;\n","import { NavItem } from 'reactstrap';\nimport { NavLink, useParams } from 'react-router-dom';\nimport { User, Mail, CheckSquare, Heart } from 'react-feather';\nimport ReactDOM from 'react-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport themeConfig from '@configs/themeConfig';\nimport useShop from '@hooks/useShop';\nimport useUserState from '@hooks/useUserState';\nimport ShopDefaultAvatar from '@src/assets/images/logo/OLI_APP_4C_LTBG.png';\n\nconst MyPetsLeftSide = () => {\n const [user] = useUserState();\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 991px)' });\n const params = useParams();\n const shop = useShop();\n\n return isTabletOrMobile && document.getElementById('wrapper') ? (\n ReactDOM.createPortal(\n <>\n
\n
\n
\n
\n \n
\n

{shop?.name}

\n
\n
    \n \n \n
    \n \n My Account\n
    \n
    \n
    \n \n \n
    \n \n My Pets\n
    \n
    \n
    \n \n \n
    \n \n My Appointments\n
    \n
    \n
    \n \n \n
    \n \n Book New Appointment\n
    \n
    \n
    \n
\n
\n\n \n \"logo\"\n \n
\n ,\n document.getElementById('wrapper')\n )\n ) : (\n <>\n
\n \n

{user?.name}

\n
\n
\n
\n
    \n \n \n
    \n \n My Account\n
    \n
    \n
    \n \n \n
    \n \n My Pets\n
    \n
    \n
    \n \n \n
    \n \n My Appointments\n
    \n
    \n
    \n \n \n
    \n \n Book New Appointment\n
    \n
    \n
    \n
\n
\n
\n \n );\n};\n\nexport default MyPetsLeftSide;\n","import MyPets from './components/MyPets';\n\nexport const petsRoutes = [\n {\n path: '/',\n exact: true,\n className: '',\n component: MyPets,\n id: 'my-pets',\n },\n];\n","import { Button, Card, CardBody, Col, Input, Modal, ModalBody, ModalHeader, Nav, NavItem, NavLink, Spinner, TabContent, TabPane } from 'reactstrap';\nimport { AlertCircle, Calendar, Check, CheckCircle, Heart, Send, X, XCircle } from 'react-feather';\nimport { useMutation, useQuery } from 'react-query';\nimport { emailVaccinations, getClient, getPatientMedications, getPatientVaccinations, refillMedication } from '../../../../../apis/customer.api';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useRecoilState } from 'recoil';\nimport userState from '../../../../../recoil/atoms/auth/user';\nimport shopState from '../../../../../recoil/atoms/current-shop';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\nimport NavbarSms from '../../../../../@core/layouts/components/navbar/NavbarSms';\nimport { getSpecies } from '../../../../../apis';\nimport '@src/@core/scss/react/pages/page-profile.scss';\nimport toast from '@components/toast';\n\nconst MyPets = () => {\n const [shop] = useRecoilState(shopState);\n const [user] = useRecoilState(userState);\n const { jwt } = useJwt();\n const [client, setClient] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n const [patients, setPatients] = useState([]);\n const [activePatientId, setActivePatientId] = useState(null);\n const [vaccinations, setVaccinations] = useState([]);\n const [medications, setMedications] = useState([]);\n const [species, setSpecies] = useState([]);\n const [tab, setTab] = useState('vaccinations');\n const [emailModalOpen, setEmailModalOpen] = useState(false);\n const [errors, setErrors] = useState({\n email: null,\n });\n const [email, setEmail] = useState('');\n const [refillModalOpen, setRefillModalOpen] = useState(false);\n const [selectedMedication, setSelectedMedication] = useState(null);\n const [refillMessage, setRefillMessage] = useState('');\n const [loadingSendEmail, setLoadingSendEmail] = useState(false);\n\n const bookAppointment = () => {\n const clientId = jwt.getClientId();\n window.location.href = `/${clientId}`;\n };\n\n const { data: _client, isFetchingClient, refetch: refetchClient, isLoading: isLoadingClient } = useQuery(\n ['client', user?.id], () => getClient({ user_id: user?.id }),\n {\n onSuccess: (data) => {\n setClient(data?.data);\n const tmp = data?.data?.patients?.sort((a, b) => {\n return a.name.localeCompare(b.name);\n });\n setPatients(tmp || []);\n if (tmp?.length === 1) {\n setActivePatientId(tmp[0].id);\n }\n setIsLoading(false);\n },\n onError: (error) => {\n setIsLoading(false);\n },\n enabled: !!user?.id,\n refetchOnWindowFocus: true\n }\n );\n\n useEffect(() => {\n if (!activePatientId) {\n setVaccinations([]);\n setMedications([]);\n }\n }, [activePatientId]);\n\n const { data: _vaccinations, isFetchingVaccinations, refetch: refetchVaccinations, isLoading: isLoadingVaccinations } = useQuery(\n ['patientVaccinations', activePatientId], () => getPatientVaccinations({ patient_id: activePatientId }),\n {\n onSuccess: (data) => {\n const tmp = data?.data;\n setVaccinations(tmp || []);\n if (tmp?.length === 0) {\n setTab('medications');\n }\n setIsLoading(false);\n },\n onError: (error) => {\n setIsLoading(false);\n },\n enabled: !!activePatientId\n }\n );\n\n const { data: _medications, isFetchingMedications, refetch: refetchMedications, isLoading: isLoadingMedications } = useQuery(\n ['patientMedications', activePatientId], () => getPatientMedications({ patient_id: activePatientId }),\n {\n onSuccess: (data) => {\n setMedications(data?.data || []);\n setIsLoading(false);\n },\n onError: (error) => {\n setIsLoading(false);\n },\n enabled: !!activePatientId\n }\n );\n\n useQuery(['getSpecies'], () => {\n return getSpecies({ page: 0, size: 1000 })\n }, {\n onSuccess: ({ data }) => {\n if (data?.data) {\n setSpecies(data.data);\n }\n }\n });\n\n const speciesFromId = id => {\n return species?.find(item => item.id === id)?.name;\n };\n\n const getSpeciesEmoji = speciesId => {\n const species = speciesFromId(speciesId);\n if (species) {\n if (species === 'Bird') {\n return '🐦';\n }\n if (species === 'Cat') {\n return '🐈';\n }\n if (species === 'Dog') {\n return '🐶';\n }\n if (species === 'Equine') {\n return '🐴';\n }\n if (species === 'Ferret') {\n return '🐨';\n }\n if (species === 'Fish') {\n return '🐟';\n }\n if (species === 'Guinea Pig') {\n return '🐷';\n }\n if (species === 'Rabbit') {\n return '🐰';\n }\n if (species === 'Reptile') {\n return '🦎';\n }\n }\n return '❤️';\n };\n\n const scheduleNow = () => {\n const clientId = jwt.getClientId();\n window.location.href = `/${clientId}`;\n };\n\n const isMedicationRefillEnabled = useMemo(() => {\n return shop?.feature_settings?.pet_portal_medication_refills_enabled !== undefined &&\n shop.feature_settings.pet_portal_medication_refills_enabled;\n });\n\n const displayHeader = () => {\n if (client?.first_name) {\n return `Hello, ${client?.first_name}!`\n } else {\n return `Hello! Schedule an appointment${shop?.name ? ` with ${shop?.name}` : ''} to get started.`\n }\n };\n\n const onClickSendEmail = () => {\n setEmailModalOpen(true);\n };\n\n const onClickRequestRefill = (medication) => {\n setRefillModalOpen(true);\n setSelectedMedication(medication);\n };\n\n const emailRegExp = /^[\\w.]+[\\+]*[\\w.]+@([\\w-]+\\.)+[\\w-]{2,4}$/;\n const validateEmail = (email) => {\n if (email.endsWith('.oliver')) {\n return true;\n }\n return emailRegExp.test(email);\n };\n\n const onChangeEmail = (email) => {\n setEmail(email);\n setErrors({ ...errors, email: null });\n };\n\n const emailVaccinationsMutation = useMutation(emailVaccinations);\n\n const onSendEmail = () => {\n if (!validateEmail(email)) {\n setErrors({ ...errors, email: 'Please enter a valid email' });\n return;\n }\n setLoadingSendEmail(true);\n setErrors({ ...errors, email: null });\n emailVaccinationsMutation.mutate({ email, patient_id: activePatientId }, {\n onSuccess: () => {\n setEmailModalOpen(false);\n toast.success('Email sent');\n setEmail('');\n setLoadingSendEmail(false);\n },\n onError: () => {\n setEmailModalOpen(false);\n toast.error('Unable to send email');\n setEmail('');\n setLoadingSendEmail(false);\n }\n });\n };\n\n const requestRefillMutation = useMutation(refillMedication);\n\n const onRequestRefill = () => {\n setLoadingSendEmail(true);\n requestRefillMutation.mutate({ patient_id: activePatientId, medication_id: selectedMedication?.id, note: refillMessage }, {\n onSuccess: () => {\n setRefillModalOpen(false);\n toast.success('Refill request sent!');\n setRefillMessage('');\n setSelectedMedication(null);\n setLoadingSendEmail(false);\n },\n onError: () => {\n setRefillModalOpen(false);\n // toast.error('Unable to request refill');\n setRefillMessage('');\n setSelectedMedication(null);\n setLoadingSendEmail(false);\n }\n });\n };\n\n const formatExpireLabel = (date) => {\n if (!date) return 'Expiration:';\n\n const today = new Date();\n const expireDate = new Date(date);\n if (expireDate < today) {\n return 'Expired:';\n } else {\n return 'Expires:';\n }\n };\n\n const formatDate = (date) => {\n if (!date) return '-';\n return new Date(date).toLocaleDateString();\n };\n\n const formatPhoneNumber = (phoneNumber) => {\n if (!phoneNumber) return '';\n return [\n phoneNumber.slice(0, 3),\n phoneNumber.slice(3, 6),\n phoneNumber.slice(6)\n ].join('-');\n };\n\n const formatMedicationDetail = (medication) => {\n if (!medication) return '-';\n let result = '';\n result += `${medication.quantity} | `;\n if (medication.refills > 0) {\n result += `${medication.refills} refill${medication.refills > 1 ? 's' : ''}`;\n } else {\n result += 'no refills';\n }\n return result;\n };\n\n return (\n \n \n

My Pets at {shop?.name}

\n
\n {!isLoading && !isLoadingClient ? (\n <>\n
\n {displayHeader()}\n
\n {!!client && patients.length > 0 && (\n <>\n
\n {patients.map((patient, index) => (\n
\n setActivePatientId(patient.id)}\n >\n

{getSpeciesEmoji(patient?.species_id)}

\n
\n

{patient?.name}

\n
\n ))}\n
\n
\n \n \n \n
\n {activePatientId && !!vaccinations.length && (\n \n Email Vaccination History\n \n )}\n {activePatientId && (\n \n Book Appointment\n \n )}\n
\n
\n {vaccinations?.map((vaccination, index) => (\n \n \n

{vaccination?.description}

\n \n

Issued:

\n

{formatDate(vaccination?.issue_date)}

\n
\n \n

{formatExpireLabel(vaccination?.expiration_date)}

\n

{formatDate(vaccination?.expiration_date)}

\n
\n \n \n {vaccination?.expired && (\n

\n )}\n {!vaccination?.expired && vaccination?.expires_soon && (\n

\n )}\n {!vaccination?.expired && !vaccination?.expires_soon && (\n

\n )}\n \n
\n ))}\n {isLoadingVaccinations && (\n
\n \n
\n )}\n {!isLoadingVaccinations && vaccinations?.length === 0 && !!activePatientId && (\n

Nothing to see here yet!

\n )}\n {!activePatientId && (\n

Select a pet above to see details!

\n )}\n
\n \n \n
\n {isMedicationRefillEnabled && !isLoadingMedications && medications?.length === 0 && !!activePatientId && (\n \n onClickRequestRefill(null)}\n >\n Request Refill\n \n \n )}\n {medications?.map((medication, index) => (\n \n \n

{medication?.description}

\n \n

Issued:

\n

{formatDate(medication?.issue_date)}

\n
\n \n Instructions: {medication?.instructions}\n \n \n \n {isMedicationRefillEnabled && (\n onClickRequestRefill(medication)}\n >\n Request Refill\n \n )}\n \n
\n ))}\n {isLoadingMedications && (\n
\n \n
\n )}\n {!isMedicationRefillEnabled && !isLoadingMedications && medications?.length === 0 && !!activePatientId && (\n

Nothing to see here yet!

\n )}\n {!activePatientId && (\n

Select a pet above to see details!

\n )}\n \n
\n \n setEmailModalOpen(!emailModalOpen)}\n >\n \n Email Vaccination History\n \n \n

Enter an email address to send {patients.find(p => p.id === activePatientId)?.name}'s vaccination history.

\n onChangeEmail(e.target.value)}\n style={{ borderRadius: '25px' }}\n />\n {errors.email && (\n

{errors.email}

\n )}\n
\n setEmailModalOpen(false)}\n style={{ borderRadius: '25px', fontFamily: 'Spartan', fontWeight: 'bold' }}\n >\n Close\n \n \n Send\n \n
\n
\n \n setRefillModalOpen(!refillModalOpen)}\n >\n \n Request a Refill\n \n \n {selectedMedication?.description ? (\n

Press send below to notify us that you'd like to refill {patients.find(p => p.id === activePatientId)?.name}'s {selectedMedication?.description}.
Is there anything else you'd like to tell us?

\n ) : (\n

Please let us know below which medication you need refilled for {patients.find(p => p.id === activePatientId)?.name}, as well as anything else you'd like to tell us:

\n )}\n setRefillMessage(e.target.value)}\n style={{ borderRadius: '25px' }}\n />\n
\n setRefillModalOpen(false)}\n style={{ borderRadius: '25px', fontFamily: 'Spartan', fontWeight: 'bold' }}\n >\n Close\n \n \n Send\n \n
\n
\n \n \n \n )}\n {(!client || patients.length === 0) && (\n <>\n {!!client && patients.length === 0 && (\n

You currently have no active pets at {shop?.name}. Please give us a call at {formatPhoneNumber(shop?.phoneNumber)}, or schedule an appointment using the button below.

\n )}\n
\n \n schedule now \n \n \n
\n \n )}\n \n ) : (\n \n )}\n \n
\n
\n );\n};\n\nexport default MyPets;\n","import BookingWizard from '../../views/apps/booking';\nimport AppointmentsApp from '../../views/apps/appointments';\nimport AccountApp from '../../views/apps/account';\nimport PetsApp from '../../views/apps/pets';\n\nconst AppRoutes = [\n {\n path: '/:clientId/account',\n component: AccountApp,\n exact: true,\n meta: {\n menuHidden: true,\n },\n },\n {\n path: '/:clientId/pets',\n component: PetsApp,\n exact: true,\n meta: {\n menuHidden: true,\n publicRoute: true,\n },\n },\n {\n path: ['/:clientId/appointments', '/:clientId/appointments/:appointmentId', '/:clientId/appointments/:appointmentId/reschedule'],\n component: AppointmentsApp,\n exact: true,\n meta: {\n menuHidden: true,\n },\n },\n {\n path: ['/:clientId', '/:clientId/:paymentId'],\n component: BookingWizard,\n exact: true,\n meta: {\n menuHidden: true,\n publicRoute: true,\n },\n },\n];\n\nexport default AppRoutes;\n","import { Suspense, useEffect } from 'react';\n// ** Third Party Components\nimport { Row, Col, Container } from 'reactstrap';\nimport { BrowserRouter as Router, Switch, Route, useParams } from 'react-router-dom';\nimport '@styles/react/pages/page-booking.scss';\nimport ShopDefaultAvatar from '@src/assets/images/logo/OLI_APP_4C_LTBG.png';\nimport MyPetsLeftSide from './components/MyPetsLeftSide';\nimport { petsRoutes } from './routes';\nimport { useQuery } from 'react-query';\nimport { getExternalKey, getShopInfo } from '../../../apis';\nimport { useRecoilState } from 'recoil';\nimport shopState from '../../../recoil/atoms/current-shop';\nimport externalKeyState from '../../../recoil/atoms/auth/externalKey';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\nimport useUserState from '../../../utility/hooks/useUserState';\nimport isEmpty from 'lodash/isEmpty';\n\nconst PetsApp = () => {\n const params = useParams();\n const { jwt } = useJwt();\n const [user] = useUserState();\n const [externalKey, setExternalKey] = useRecoilState(externalKeyState);\n const [shop, setShop] = useRecoilState(shopState);\n\n const beginLogin = () => {\n const clientId = jwt.getClientId();\n window.location.href = `/${clientId}?redirect=pets`;\n };\n\n useEffect(() => {\n if (!user) {\n beginLogin();\n }\n }, [user]);\n\n useQuery(\n 'externalKey',\n async () => {\n const { data } = await getExternalKey();\n setExternalKey(data.data?.jwtToken);\n jwt.setToken(data.data?.jwtToken);\n return data.data?.jwtToken;\n },\n {\n enabled: !user && !externalKey && !!jwt.getClientId(),\n }\n );\n useQuery(\n 'shopInfo',\n async () => {\n const { data } = await getShopInfo(params?.clientId);\n const { phoneNumber, phoneCode } = data.data;\n const shopInfo = { ...data.data, ...(phoneNumber && phoneCode && { phone: `+${phoneCode}${phoneNumber}` }) };\n setShop(shopInfo);\n return shopInfo;\n },\n {\n enabled: (!!externalKey || !!user) && isEmpty(shop),\n }\n );\n\n return (\n <>\n
\n \n

{shop?.name}

\n
\n \n \n \n \n \n \n \n \n {petsRoutes.map(route => (\n // Render more s with the same paths as\n // above, but different components this time.\n {\n return (\n \n \n \n );\n }}\n />\n ))}\n \n \n \n \n \n \n );\n};\n\nexport default PetsApp;\n","// ** Routes Imports\nimport AppRoutes from './Apps';\n\n// ** Document title\nconst TemplateTitle = '%s - Vet';\n\n// ** Default Route\nconst DefaultRoute = '/';\n\n// ** Merge Routes\nconst Routes = [...AppRoutes];\n\nexport { DefaultRoute, TemplateTitle, Routes };\n","//** React Imports\nimport { useState, useEffect } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useSkin = () => {\n // ** State\n const [skin, setSkin] = useState(() => {\n try {\n // ** Get from local storage by key\n const item = window.localStorage.getItem('skin')\n // ** Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : themeConfig.layout.skin\n } catch (error) {\n // ** If error also return initialValue\n console.log(error)\n return themeConfig.layout.skin\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(skin) : value\n // ** Set state\n setSkin(valueToStore)\n // ** Save to local storage\n window.localStorage.setItem('skin', JSON.stringify(valueToStore))\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n useEffect(() => {\n // ** Get Body Tag\n const element = window.document.body\n\n // ** Define classnames for skins\n const classNames = {\n dark: 'dark-layout',\n bordered: 'bordered-layout',\n 'semi-dark': 'semi-dark-layout'\n }\n\n // ** Remove all classes from Body on mount\n element.classList.remove(...element.classList)\n\n // ** If skin is not light add skin class\n if (skin !== 'light') {\n element.classList.add(classNames[skin])\n }\n }, [skin])\n\n return [skin, setValue]\n}\n","// ** React Imports\nimport { useEffect, useState } from 'react'\n\n// ** Custom Hooks\nimport { useSkin } from '@hooks/useSkin'\n\nconst BlankLayout = ({ children, ...rest }) => {\n // ** Hooks\n const [skin, setSkin] = useSkin()\n\n // ** States\n const [isMounted, setIsMounted] = useState(false)\n\n //** ComponentDidMount\n useEffect(() => {\n setIsMounted(true)\n return () => setIsMounted(false)\n }, [])\n\n if (!isMounted) {\n return null\n }\n\n return (\n
\n
\n
\n
{children}
\n
\n
\n
\n )\n}\n\nexport default BlankLayout\n","// ** React Imports\nimport { useState } from 'react'\n\n// ** Third Party Components\nimport Select from 'react-select'\nimport classnames from 'classnames'\nimport { Settings, X } from 'react-feather'\nimport { CustomInput, FormGroup } from 'reactstrap'\nimport PerfectScrollbar from 'react-perfect-scrollbar'\nimport { selectThemeColors } from '@utils'\n\n// ** Styles\nimport '@styles/react/libs/react-select/_react-select.scss'\n\nconst Customizer = props => {\n // ** Props\n const {\n skin,\n setSkin,\n isRtl,\n setIsRtl,\n layout,\n setLayout,\n navbarType,\n setNavbarType,\n footerType,\n setFooterType,\n navbarColor,\n setNavbarColor,\n isHidden,\n setIsHidden,\n contentWidth,\n setContentWidth,\n menuCollapsed,\n setMenuCollapsed,\n transition,\n setTransition\n } = props\n\n // ** State\n const [openCustomizer, setOpenCustomizer] = useState(false)\n\n // ** Toggles Customizer\n const handleToggle = e => {\n e.preventDefault()\n setOpenCustomizer(!openCustomizer)\n }\n\n // ** Render Layout Skin Options\n const renderSkinsRadio = () => {\n const skinsArr = [\n {\n name: 'light',\n label: 'Light',\n checked: skin === 'light'\n },\n {\n name: 'bordered',\n label: 'Bordered',\n checked: skin === 'bordered'\n },\n {\n name: 'dark',\n label: 'Dark',\n checked: skin === 'dark'\n },\n {\n name: 'semi-dark',\n label: 'Semi Dark',\n checked: skin === 'semi-dark'\n }\n ]\n\n return skinsArr.map((radio, index) => {\n const marginCondition = index !== skinsArr.length - 1\n\n if (layout === 'HorizontalLayout' && radio.name === 'semi-dark') {\n return null\n }\n\n return (\n setSkin(radio.name)}\n className={classnames({ 'mr-1': marginCondition })}\n />\n )\n })\n }\n\n // ** Render Navbar Colors Options\n const renderNavbarColors = () => {\n const colorsArr = ['white', 'primary', 'secondary', 'success', 'danger', 'info', 'warning', 'dark']\n\n return colorsArr.map(color => (\n setNavbarColor(color)}\n >\n ))\n }\n\n // ** Render Navbar Type Options\n const renderNavbarTypeRadio = () => {\n const navbarTypeArr = [\n {\n name: 'floating',\n label: 'Floating',\n checked: navbarType === 'floating'\n },\n {\n name: 'sticky',\n label: 'Sticky',\n checked: navbarType === 'sticky'\n },\n {\n name: 'static',\n label: 'Static',\n checked: navbarType === 'static'\n },\n {\n name: 'hidden',\n label: 'Hidden',\n checked: navbarType === 'hidden'\n }\n ]\n\n return navbarTypeArr.map((radio, index) => {\n const marginCondition = index !== navbarTypeArr.length - 1\n\n if (layout === 'HorizontalLayout' && radio.name === 'hidden') {\n return null\n }\n\n return (\n setNavbarType(radio.name)}\n className={classnames({ 'mr-1': marginCondition })}\n />\n )\n })\n }\n\n // ** Render Footer Type Options\n const renderFooterTypeRadio = () => {\n const footerTypeArr = [\n {\n name: 'sticky',\n label: 'Sticky',\n checked: footerType === 'sticky'\n },\n {\n name: 'static',\n label: 'Static',\n checked: footerType === 'static'\n },\n {\n name: 'hidden',\n label: 'Hidden',\n checked: footerType === 'hidden'\n }\n ]\n\n return footerTypeArr.map((radio, index) => {\n const marginCondition = index !== footerTypeArr.length - 1\n\n return (\n setFooterType(radio.name)}\n className={classnames({ 'mr-1': marginCondition })}\n />\n )\n })\n }\n\n // ** Router Transition Options\n const transitionOptions = [\n { value: 'fadeIn', label: 'Fade' },\n { value: 'fadeInLeft', label: 'Fade In Left' },\n { value: 'zoomIn', label: 'Zoom In' },\n { value: 'none', label: 'None' }\n ]\n\n // ** Get Current Transition\n const transitionValue = transitionOptions.find(i => i.value === transition)\n\n return (\n \n \n \n \n \n
\n

Theme Customizer

\n

Customize & Preview in Real Time

\n \n \n \n
\n\n
\n\n
\n \n

Skin

\n
{renderSkinsRadio()}
\n
\n\n \n

Content Width

\n
\n setContentWidth('full')}\n />\n setContentWidth('boxed')}\n />\n
\n
\n\n \n
\n

RTL

\n setIsRtl(!isRtl)} />\n
\n
\n\n \n
\n

Router Transition

\n setTransition(value)}\n />\n
\n
\n
\n\n
\n\n
\n

Menu Layout

\n \n
\n setLayout('vertical')}\n className='mr-1'\n />\n setLayout('horizontal')}\n />\n
\n
\n {layout !== 'HorizontalLayout' ? (\n \n
\n

Menu Collapsed

\n setMenuCollapsed(!menuCollapsed)}\n />\n
\n
\n ) : null}\n\n \n
\n

Menu Hidden

\n setIsHidden(!isHidden)}\n />\n
\n
\n
\n\n
\n\n
\n {layout !== 'HorizontalLayout' ? (\n \n

Navbar Color

\n
    {renderNavbarColors()}
\n
\n ) : null}\n\n \n

{layout === 'HorizontalLayout' ? 'Menu' : 'Navbar'} Type

\n
{renderNavbarTypeRadio()}
\n
\n
\n\n
\n\n
\n \n

Footer Type

\n
{renderFooterTypeRadio()}
\n
\n
\n
\n \n )\n}\n\nexport default Customizer\n","// ** Icons Import\nimport { Heart } from 'react-feather'\n\nconst Footer = () => {\n return (\n

\n \n COPYRIGHT © {new Date().getFullYear()}{' '}\n \n Oliver Software, Inc.\n \n , All rights Reserved\n \n

\n )\n}\n\nexport default Footer\n","// ** React Imports\nimport { Fragment, useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\n// ** Third Party Components\nimport * as Icon from 'react-feather';\nimport { NavItem, NavLink, UncontrolledTooltip, UncontrolledDropdown, DropdownToggle, DropdownMenu, DropdownItem, Button } from 'reactstrap';\n\n// ** Store & Actions\nimport { useDispatch, useSelector } from 'react-redux';\nimport useShop from '@hooks/useShop';\n\nconst NavbarBookmarks = props => {\n const shop = useShop();\n\n // ** Props\n const { setMenuVisibility, showNavbarMenu } = props;\n\n // ** State\n const [value, setValue] = useState('');\n const [openSearch, setOpenSearch] = useState(false);\n\n // ** Store Vars\n const dispatch = useDispatch();\n const store = useSelector(state => state.navbar);\n\n // ** Loops through Bookmarks Array to return Bookmarks\n const renderBookmarks = () => {\n if (store.bookmarks.length) {\n return store.bookmarks\n .map(item => {\n const IconTag = Icon[item.icon];\n return (\n \n \n \n {item.title}\n \n \n );\n })\n .slice(0, 10);\n } else {\n return null;\n }\n };\n\n // ** If user has more than 10 bookmarks then add the extra Bookmarks to a dropdown\n const renderExtraBookmarksDropdown = () => {\n if (store.bookmarks.length && store.bookmarks.length >= 11) {\n return (\n \n \n \n \n \n \n \n {store.bookmarks\n .map(item => {\n const IconTag = Icon[item.icon];\n return (\n \n \n {item.title}\n \n );\n })\n .slice(10)}\n \n \n \n \n );\n } else {\n return null;\n }\n };\n\n return (\n \n
    \n \n\n (showNavbarMenu ? setMenuVisibility(true) : null)}>\n {!!showNavbarMenu && }\n {shop?.name}\n \n \n
\n
\n );\n};\n\nexport default NavbarBookmarks;\n","// ** React Imports\nimport { useEffect, useState } from 'react';\nimport { Link, useHistory, useParams } from 'react-router-dom';\nimport firebase from 'firebase/app';\n\n// ** Custom Components\nimport Avatar from '@components/avatar';\n\n// ** Utils\nimport { isUserLoggedIn } from '@utils';\n\n// ** Store & Actions\nimport { useDispatch } from 'react-redux';\n\n// ** Third Party Components\nimport { UncontrolledDropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';\nimport { User, Mail, CheckSquare, MessageSquare, Settings, CreditCard, HelpCircle, Power, Repeat, Calendar, PlusCircle, Heart } from 'react-feather';\n\n// ** Default Avatar Image\nimport defaultAvatar from '@src/assets/images/portrait/small/avatar-s-11.jpg';\nimport userState from '../../../../recoil/atoms/auth/user';\nimport bookingState, { initialBookingState } from '../../../../recoil/atoms/booking/booking';\nimport bookingStepState from '../../../../recoil/atoms/booking/bookingStep';\nimport { useRecoilState } from 'recoil';\nimport { Cookie } from '../../../../utility/Cookie';\nimport { AppointmentSteps, CookieKeys } from '../../../../utility/Constant';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\n\nconst UserDropdown = () => {\n // ** Store Vars\n const dispatch = useDispatch();\n const { jwt } = useJwt();\n const history = useHistory();\n const params = useParams();\n const { pathname } = history.location;\n const clientId = pathname.split('/')[1];\n // ** State\n const [user, setUser] = useRecoilState(userState);\n const [booking, setBooking] = useRecoilState(bookingState);\n const [bookingStep, setBookingStep] = useRecoilState(bookingStepState);\n\n //** Vars\n const userAvatar = user?.avatar;\n\n const logout = () => {\n if (user.isAdmin) {\n setUser(null);\n Cookie.removeItem(CookieKeys.user);\n Cookie.removeItem(CookieKeys.shop);\n window.location.assign('/login');\n return;\n }\n setUser(null);\n Cookie.removeItem(CookieKeys.user);\n sessionStorage.removeItem(CookieKeys.confirmationForm);\n Cookie.removeItem(CookieKeys.confirmationForm);\n firebase.auth().signOut();\n window.location.href = `/${clientId}`;\n setBooking(initialBookingState);\n setBookingStep(AppointmentSteps.AppointmentSelection);\n };\n\n const getSource = () => {\n const source = new URLSearchParams(location.search).get(\"utm_source\");\n if (source) return source;\n return null;\n };\n\n const restartBooking = () => {\n const clientId = jwt.getClientId();\n if (getSource()) {\n window.location.href = `/${clientId}?utm_source=${getSource()}`;\n } else {\n window.location.href = `/${clientId}`;\n }\n };\n\n return (\n !!user && (\n \n e.preventDefault()}>\n } img={userAvatar} color=\"light-primary\" imgHeight=\"40\" imgWidth=\"40\" status=\"online\" />\n \n \n \n \n My Account\n \n \n \n My Pets\n \n \n \n My Appointments\n \n \n \n Schedule Now\n \n \n \n Sign Out\n \n \n \n )\n );\n};\n\nexport default UserDropdown;\n","export default __webpack_public_path__ + \"static/media/avatar-s-11.1d46cc62.jpg\";","// ** Dropdowns Imports\nimport UserDropdown from './UserDropdown';\n\n// ** Third Party Components\nimport { Button } from 'reactstrap';\nimport userState from '../../../../recoil/atoms/auth/user';\nimport { useRecoilState } from 'recoil';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\n\nconst NavbarUser = props => {\n const [user] = useRecoilState(userState);\n const { jwt } = useJwt();\n\n const getSource = () => {\n const source = new URLSearchParams(location.search).get(\"utm_source\");\n if (source) return source;\n return null;\n };\n\n const beginLogin = () => {\n const clientId = jwt.getClientId();\n let path = `/${clientId}?redirect=pets`;\n if (getSource()) {\n path += `&utm_source=${getSource()}`\n }\n window.location.href = path\n };\n\n return (\n
    \n
    \n {!user && (\n \n )}\n
    \n \n
\n );\n};\nexport default NavbarUser;\n","// ** React Imports\nimport { Fragment } from 'react';\n\n// ** Custom Components\nimport themeConfig from '@configs/themeConfig';\nimport { NavLink } from 'react-router-dom';\nimport { useParams, useHistory } from 'react-router';\nimport { useMediaQuery } from 'react-responsive';\nimport NavbarBookmarks from './NavbarBookmarks';\nimport NavbarUser from './NavbarUser';\nimport { Button } from 'reactstrap';\nimport { MessageCircle } from 'react-feather';\nimport NavbarSms from './NavbarSms';\n\nconst ThemeNavbar = props => {\n // ** Props\n const { skin, setSkin, isHidden, setIsHidden, setMenuVisibility, showNavbarMenu } = props;\n const history = useHistory();\n const params = useParams();\n const { pathname } = history.location;\n const clientId = pathname.split('/')[1];\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 991px)' });\n\n return (\n \n {!isTabletOrMobile && (\n \n \"logo\"\n \n )}\n
\n \n
\n
\n \n
\n \n
\n );\n};\n\nexport default ThemeNavbar;\n","import { Calendar, Users, Settings } from 'react-feather';\n\nexport default [\n {\n id: 'calendar',\n title: 'Calendar',\n icon: ,\n navLink: '/admin/calendar',\n action: 'read',\n resource: 'calendar'\n }, {\n id: 'clients',\n title: 'Client',\n icon: ,\n navLink: '/admin/clients',\n action: 'read',\n resource: 'calendar'\n }, {\n id: 'clinicians',\n title: 'Clinician',\n icon: ,\n navLink: '/admin/clinicians',\n action: 'read',\n resource: 'calendar'\n },{\n id: 'settings',\n title: 'Setting',\n icon: ,\n navLink: '/admin/settings',\n action: 'read',\n resource: 'calendar'\n },\n];\n","// ** Navigation sections imports\nimport apps from './apps'\n\n// ** Merge & Export\nexport default [...apps]\n","// ** React Imports\nimport { useEffect } from 'react'\nimport { NavLink } from 'react-router-dom'\n\n// ** Third Party Components\nimport { Disc, X, Circle } from 'react-feather'\n\n// ** Config\nimport themeConfig from '@configs/themeConfig'\n\nconst VerticalMenuHeader = props => {\n // ** Props\n const { menuCollapsed, setMenuCollapsed, setMenuVisibility, setGroupOpen, menuHover } = props\n\n // ** Reset open group\n useEffect(() => {\n if (!menuHover && menuCollapsed) setGroupOpen([])\n }, [menuHover, menuCollapsed])\n\n // ** Menu toggler component\n const Toggler = () => {\n if (!menuCollapsed) {\n return (\n setMenuCollapsed(true)}\n />\n )\n } else {\n return (\n setMenuCollapsed(false)}\n />\n )\n }\n }\n\n return (\n
\n
    \n
  • \n \n \n logo\n \n

    {themeConfig.app.appName}

    \n
    \n
  • \n
  • \n
    \n \n setMenuVisibility(false)} className='toggle-icon icon-x d-block d-xl-none' size={20} />\n
    \n
  • \n
\n
\n )\n}\n\nexport default VerticalMenuHeader\n","// ** React Imports\nimport { useContext } from 'react'\nimport { AbilityContext } from '@src/utility/context/Can'\n\n/**\n * Return which component to render based on it's data/context\n * @param {Object} item nav menu item\n */\nexport const resolveVerticalNavMenuItemComponent = item => {\n if (item.header) return 'VerticalNavMenuSectionHeader'\n if (item.children) return 'VerticalNavMenuGroup'\n return 'VerticalNavMenuLink'\n}\n\n/**\n * Return which component to render based on it's data/context\n * @param {Object} item nav menu item\n */\nexport const resolveHorizontalNavMenuItemComponent = item => {\n if (item.children) return 'HorizontalNavMenuGroup'\n return 'HorizontalNavMenuLink'\n}\n\n/**\n * Check if nav-link is active\n * @param {Object} link nav-link object\n */\n// export const isNavLinkActive = (link, currentURL, match) => {\n// // return currentURL === link || (URLParams && Object.keys(URLParams).length && currentURLFilter === item.navLink)\n// const getFirstObjProp = obj => obj[Object.keys(obj)[0]]\n// return (\n// currentURL === link ||\n// (match !== null && match !== undefined && match.url === `${link}/${getFirstObjProp(match.params)}`)\n// )\n// }\n\nexport const isNavLinkActive = (link, currentURL, routerProps) => {\n return (\n currentURL === link ||\n (routerProps && routerProps.meta && routerProps.meta.navLink && routerProps.meta.navLink === link)\n )\n // return currentURL === link\n}\n\n/**\n * Check if nav group is\n * @param {Array} children Group children\n */\n// export const isNavGroupActive = (children, currentURL, match) => {\n// return children.some(child => {\n// // If child have children => It's group => Go deeper(recursive)\n// if (child.children) {\n// return isNavGroupActive(child.children, currentURL, match)\n// }\n// // else it's link => Check for matched Route\n// return isNavLinkActive(child.navLink, currentURL, match)\n// })\n// }\nexport const isNavGroupActive = (children, currentURL, routerProps) => {\n return children.some(child => {\n // If child have children => It's group => Go deeper(recursive)\n if (child.children) {\n return isNavGroupActive(child.children, currentURL, routerProps)\n }\n // else it's link => Check for matched Route\n return isNavLinkActive(child.navLink, currentURL, routerProps)\n })\n}\n\n/**\n * Search for parent object\n * @param {Array} navigation Group children\n * @param {string} currentURL current URL\n */\n// export const search = (navigation, currentURL, match) => {\n// let result\n// navigation.some(child => {\n// let children\n// // If child have children => It's group => Go deeper(recursive)\n// if (child.children && (children = search(child.children, currentURL, match))) {\n// return (result = {\n// id: child.id,\n// children\n// })\n// }\n\n// // else it's link => Check for matched Route\n// if (isNavLinkActive(child.navLink, currentURL, match)) {\n// return (result = {\n// id: child.id\n// })\n// }\n// })\n// return result\n// }\n\nexport const search = (navigation, currentURL, routerProps) => {\n let result\n navigation.some(child => {\n let children\n // If child have children => It's group => Go deeper(recursive)\n if (child.children && (children = search(child.children, currentURL, routerProps))) {\n return (result = {\n id: child.id,\n children\n })\n }\n\n // else it's link => Check for matched Route\n if (isNavLinkActive(child.navLink, currentURL, routerProps)) {\n return (result = {\n id: child.id\n })\n }\n })\n return result\n}\n\n/**\n * Loop through nested object\n * @param {object} obj nested object\n */\nexport const getAllParents = (obj, match) => {\n const res = []\n const recurse = (obj, current) => {\n for (const key in obj) {\n const value = obj[key]\n if (value !== undefined) {\n if (value && typeof value === 'object') {\n recurse(value, key)\n } else {\n if (key === match) {\n res.push(value)\n }\n }\n }\n }\n }\n recurse(obj)\n return res\n}\n\nexport const canViewMenuGroup = item => {\n const ability = useContext(AbilityContext)\n // ! This same logic is used in canViewHorizontalNavMenuGroup and canViewHorizontalNavMenuHeaderGroup. So make sure to update logic in them as well\n const hasAnyVisibleChild = item.children && item.children.some(i => ability.can(i.action, i.resource))\n\n // ** If resource and action is defined in item => Return based on children visibility (Hide group if no child is visible)\n // ** Else check for ability using provided resource and action along with checking if has any visible child\n if (!(item.action && item.resource)) {\n return hasAnyVisibleChild\n }\n return ability.can(item.action, item.resource) && hasAnyVisibleChild\n}\n\nexport const canViewMenuItem = item => {\n const ability = useContext(AbilityContext)\n return ability.can(item.action, item.resource)\n}\n","// ** React Imports\nimport { useEffect } from 'react'\nimport { NavLink, useLocation, matchPath, useParams } from 'react-router-dom'\n\n// ** Third Party Components\nimport { Badge } from 'reactstrap'\nimport classnames from 'classnames'\nimport { FormattedMessage } from 'react-intl'\n\n// ** Vertical Menu Array Of Items\nimport navigation from '@src/navigation/vertical'\n\n// ** Utils\nimport { isNavLinkActive, search, getAllParents } from '@layouts/utils'\n\nconst VerticalNavMenuLink = ({\n item,\n groupActive,\n setGroupActive,\n activeItem,\n setActiveItem,\n groupOpen,\n setGroupOpen,\n toggleActiveGroup,\n parentItem,\n routerProps,\n currentActiveItem\n}) => {\n // ** Conditional Link Tag, if item has newTab or externalLink props use tag else use NavLink\n const LinkTag = item.externalLink ? 'a' : NavLink\n\n // ** URL Vars\n const location = useLocation()\n const currentURL = location.pathname\n\n // ** To match path\n const match = matchPath(currentURL, {\n path: `${item.navLink}/:param`,\n exact: true,\n strict: false\n })\n\n // ** Search for current item parents\n const searchParents = (navigation, currentURL) => {\n const parents = search(navigation, currentURL, routerProps) // Search for parent object\n const allParents = getAllParents(parents, 'id') // Parents Object to Parents Array\n return allParents\n }\n\n // ** URL Vars\n const resetActiveGroup = navLink => {\n const parents = search(navigation, navLink, match)\n toggleActiveGroup(item.id, parents)\n }\n\n // ** Reset Active & Open Group Arrays\n const resetActiveAndOpenGroups = () => {\n setGroupActive([])\n setGroupOpen([])\n }\n\n // ** Checks url & updates active item\n useEffect(() => {\n if (currentActiveItem !== null) {\n setActiveItem(currentActiveItem)\n const arr = searchParents(navigation, currentURL)\n setGroupActive([...arr])\n }\n }, [location])\n\n return (\n \n {\n if (!match) {\n return false\n }\n\n if (match.url && match.url !== '' && match.url === item.navLink) {\n currentActiveItem = item.navLink\n }\n }\n })}\n /*eslint-enable */\n onClick={e => {\n if (!item.navLink.length) {\n e.preventDefault()\n }\n parentItem ? resetActiveGroup(item.navLink) : resetActiveAndOpenGroups()\n }}\n >\n {item.icon}\n \n \n \n\n {item.badge && item.badgeText ? (\n \n {item.badgeText}\n \n ) : null}\n \n \n )\n}\n\nexport default VerticalNavMenuLink\n","// ** React Imports\nimport { Link, useLocation } from 'react-router-dom'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport { Collapse, Badge } from 'reactstrap'\nimport { FormattedMessage } from 'react-intl'\n\n// ** Vertical Menu Items Component\nimport VerticalNavMenuItems from './VerticalNavMenuItems'\n\n// ** Utils\nimport { isNavGroupActive, getAllParents } from '@layouts/utils'\n\nconst VerticalNavMenuGroup = ({\n item,\n groupActive,\n setGroupActive,\n activeItem,\n setActiveItem,\n groupOpen,\n setGroupOpen,\n parentItem,\n menuCollapsed,\n menuHover,\n routerProps,\n currentActiveItem\n}) => {\n // ** Current Val\n const currentURL = useLocation().pathname\n\n // ** Toggles Open Group\n const toggleOpenGroup = (item, parentItem) => {\n let openArr = groupOpen\n let allParents\n\n if (parentItem) {\n allParents = getAllParents(parentItem, 'id')\n allParents.pop()\n }\n\n // ** If user clicked on menu group inside already opened group i.g. when user click on blog group inside pages group\n if (groupOpen && allParents && groupOpen[0] === allParents[0]) {\n groupOpen.includes(item) ? openArr.splice(openArr.indexOf(item), 1) : openArr.push(item)\n } else {\n openArr = []\n if (!groupOpen.includes(item)) {\n openArr.push(item)\n }\n }\n\n // ** Set Open Group\n setGroupOpen([...openArr])\n }\n\n // ** Toggle Active Group\n const toggleActiveGroup = (item, parentItem) => {\n let activeArr = groupActive\n let allParents\n\n if (parentItem) {\n allParents = getAllParents(parentItem, 'id')\n activeArr = allParents\n } else {\n activeArr.includes(item) ? activeArr.splice(activeArr.indexOf(item), 1) : activeArr.push(item)\n }\n\n // ** Set open group removing any activegroup item present in opengroup state\n const openArr = groupOpen.filter(val => !activeArr.includes(val))\n setGroupOpen([...openArr])\n\n // ** Set Active Group\n setGroupActive([...activeArr])\n }\n\n // ** On Group Item Click\n const onCollapseClick = (e, item) => {\n if ((groupActive && groupActive.includes(item.id)) || isNavGroupActive(item.children, currentURL, routerProps)) {\n toggleActiveGroup(item.id)\n } else {\n toggleOpenGroup(item.id, parentItem)\n }\n\n e.preventDefault()\n }\n\n // ** Returns condition to add open class\n const openClassCondition = id => {\n if ((menuCollapsed && menuHover) || menuCollapsed === false) {\n if (groupActive.includes(id) || groupOpen.includes(item.id)) {\n return true\n }\n } else if (groupActive.includes(id) && menuCollapsed && menuHover === false) {\n return false\n } else {\n return null\n }\n }\n\n return (\n \n onCollapseClick(e, item)}>\n {item.icon}\n \n \n \n\n {item.badge && item.badgeText ? (\n \n {item.badgeText}\n \n ) : null}\n \n\n {/* Render Child Recursively Through VerticalNavMenuItems Component */}\n
    \n \n \n \n
\n \n )\n}\n\nexport default VerticalNavMenuGroup\n","// ** Third Party Components\nimport { FormattedMessage } from 'react-intl'\nimport { MoreHorizontal } from 'react-feather'\n\nconst VerticalNavMenuSectionHeader = ({ item, index }) => {\n return (\n
  • \n \n \n \n \n
  • \n )\n}\n\nexport default VerticalNavMenuSectionHeader\n","// ** React Imports\nimport { useContext } from 'react'\n\n// ** Vertical Menu Components\nimport VerticalNavMenuLink from './VerticalNavMenuLink'\nimport VerticalNavMenuGroup from './VerticalNavMenuGroup'\nimport VerticalNavMenuSectionHeader from './VerticalNavMenuSectionHeader'\n\n// ** Ability Context\nimport { AbilityContext } from '@src/utility/context/Can'\n\n// ** Utils\nimport {\n resolveVerticalNavMenuItemComponent as resolveNavItemComponent,\n canViewMenuGroup,\n canViewMenuItem\n} from '@layouts/utils'\n\nconst VerticalMenuNavItems = props => {\n // ** Context\n const ability = useContext(AbilityContext)\n\n // ** Components Object\n const Components = {\n VerticalNavMenuSectionHeader,\n VerticalNavMenuGroup,\n VerticalNavMenuLink\n }\n\n // ** Render Nav Menu Items\n const RenderNavItems = props.items.map((item, index) => {\n const TagName = Components[resolveNavItemComponent(item)]\n if (item.children) {\n return canViewMenuGroup(item) && \n }\n return canViewMenuItem(item) && \n })\n\n return RenderNavItems\n}\n\nexport default VerticalMenuNavItems\n","// ** React Imports\nimport { Fragment, useState, useRef } from 'react'\n\n// ** Vertical Menu Items Array\nimport navigation from '@src/navigation/vertical'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport PerfectScrollbar from 'react-perfect-scrollbar'\n\n// ** Vertical Menu Components\nimport VerticalMenuHeader from './VerticalMenuHeader'\nimport VerticalNavMenuItems from './VerticalNavMenuItems'\n\nconst Sidebar = props => {\n // ** Props\n const { menuCollapsed, routerProps, menu, currentActiveItem, skin } = props\n\n // ** States\n const [groupOpen, setGroupOpen] = useState([])\n const [groupActive, setGroupActive] = useState([])\n const [activeItem, setActiveItem] = useState(null)\n\n // ** Menu Hover State\n const [menuHover, setMenuHover] = useState(false)\n\n // ** Ref\n const shadowRef = useRef(null)\n\n // ** Function to handle Mouse Enter\n const onMouseEnter = () => {\n if (menuCollapsed) {\n setMenuHover(true)\n }\n }\n\n // ** Scroll Menu\n const scrollMenu = container => {\n if (shadowRef && container.scrollTop > 0) {\n if (!shadowRef.current.classList.contains('d-block')) {\n shadowRef.current.classList.add('d-block')\n }\n } else {\n if (shadowRef.current.classList.contains('d-block')) {\n shadowRef.current.classList.remove('d-block')\n }\n }\n }\n\n return (\n \n setMenuHover(false)}\n >\n {menu ? (\n menu\n ) : (\n \n {/* Vertical Menu Header */}\n \n {/* Vertical Menu Header Shadow */}\n
    \n {/* Perfect Scrollbar */}\n scrollMenu(container)}\n >\n
      \n \n
    \n \n
    \n )}\n \n
    \n )\n}\n\nexport default Sidebar\n","//** React Imports\nimport { useEffect } from 'react'\n\n// ** Store & Actions\nimport { handleRTL } from '@store/actions/layout'\nimport { useDispatch, useSelector } from 'react-redux'\n\nexport const useRTL = () => {\n // ** Store Vars\n const dispatch = useDispatch()\n const isRtl = useSelector(state => state.layout.isRTL)\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(isRtl) : value\n dispatch(handleRTL(valueToStore))\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n useEffect(() => {\n // ** Get HTML Tag\n const element = document.getElementsByTagName('html')[0]\n\n // ** If isRTL then add attr dir='rtl' with HTML else attr dir='ltr'\n if (isRtl) {\n element.setAttribute('dir', 'rtl')\n } else {\n element.setAttribute('dir', 'ltr')\n }\n }, [isRtl])\n\n return [isRtl, setValue]\n}\n","//** React Imports\nimport { useState } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useNavbarType = () => {\n // ** State\n const [navbarType, setNavbarType] = useState(() => {\n try {\n return themeConfig.layout.navbar.type\n } catch (error) {\n // ** If error return initialValue\n console.log(error)\n return themeConfig.layout.navbar.type\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(navbarType) : value\n\n // ** Set state\n setNavbarType(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n return [navbarType, setValue]\n}\n","// ** React Imports\nimport { useState } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useFooterType = () => {\n // ** State\n const [footerType, setFooterType] = useState(() => {\n try {\n return themeConfig.layout.footer.type\n } catch (error) {\n // ** If error also initialValue\n console.log(error)\n return themeConfig.layout.footer.type\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(footerType) : value\n\n // ** Set state\n setFooterType(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n return [footerType, setValue]\n}\n","//** React Imports\nimport { useState } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useNavbarColor = () => {\n // ** State\n const [navbarColor, setNavbarColor] = useState(() => {\n try {\n return themeConfig.layout.navbar.backgroundColor\n } catch (error) {\n // ** If error return initialValue\n console.log(error)\n return themeConfig.layout.navbar.backgroundColor\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(navbarColor) : value\n\n // ** Set state\n setNavbarColor(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n return [navbarColor, setValue]\n}\n","// ** React Imports\nimport { useState, useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// ** Store & Actions\nimport { useSelector, useDispatch } from 'react-redux';\nimport { handleMenuCollapsed, handleContentWidth, handleMenuHidden } from '@store/actions/layout';\n\n// ** Third Party Components\nimport classnames from 'classnames';\nimport { ArrowUp } from 'react-feather';\nimport ScrollToTop from 'react-scroll-up';\nimport { Navbar, Button } from 'reactstrap';\nimport { useMediaQuery } from 'react-responsive';\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig';\n\n// ** Custom Components\nimport Customizer from '@components/customizer';\nimport FooterComponent from './components/footer';\nimport NavbarComponent from './components/navbar';\nimport SidebarComponent from './components/menu/vertical-menu';\n\n// ** Custom Hooks\nimport { useRTL } from '@hooks/useRTL';\nimport { useSkin } from '@hooks/useSkin';\nimport { useNavbarType } from '@hooks/useNavbarType';\nimport { useFooterType } from '@hooks/useFooterType';\nimport { useNavbarColor } from '@hooks/useNavbarColor';\n\n// ** Styles\nimport '@styles/base/core/menu/menu-types/vertical-menu.scss';\nimport '@styles/base/core/menu/menu-types/vertical-overlay-menu.scss';\n\nconst VerticalLayout = props => {\n // ** Props\n const { children, navbar, footer, menu, routerProps, currentActiveItem } = props;\n\n // ** Hooks\n const [skin, setSkin] = useSkin();\n const [isRtl, setIsRtl] = useRTL();\n const [navbarType, setNavbarType] = useNavbarType();\n const [footerType, setFooterType] = useFooterType();\n const [navbarColor, setNavbarColor] = useNavbarColor();\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 991px)' });\n\n // ** States\n const [isMounted, setIsMounted] = useState(false);\n const [menuVisibility, setMenuVisibility] = useState(false);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n // ** Store Vars\n const dispatch = useDispatch();\n const layoutStore = useSelector(state => state.layout);\n\n // ** Update Window Width\n const handleWindowWidth = () => {\n setWindowWidth(window.innerWidth);\n };\n\n // ** Vars\n const location = useLocation();\n const contentWidth = layoutStore.contentWidth;\n const menuCollapsed = layoutStore.menuCollapsed;\n const isHidden = layoutStore.menuHidden;\n\n // ** Toggles Menu Collapsed\n const setMenuCollapsed = val => dispatch(handleMenuCollapsed(val));\n\n // ** Handles Content Width\n const setContentWidth = val => dispatch(handleContentWidth(val));\n\n // ** Handles Content Width\n const setIsHidden = val => dispatch(handleMenuHidden(val));\n\n //** This function will detect the Route Change and will hide the menu on menu item click\n useEffect(() => {\n if (menuVisibility && windowWidth < 1200) {\n setMenuVisibility(false);\n }\n }, [location]);\n\n //** Sets Window Size & Layout Props\n useEffect(() => {\n if (window !== undefined) {\n window.addEventListener('resize', handleWindowWidth);\n }\n }, [windowWidth]);\n\n //** ComponentDidMount\n useEffect(() => {\n setIsMounted(true);\n return () => setIsMounted(false);\n }, []);\n\n // ** Vars\n const footerClasses = {\n static: 'footer-static',\n sticky: 'footer-fixed',\n hidden: 'footer-hidden',\n };\n\n const navbarWrapperClasses = {\n floating: 'navbar-floating',\n sticky: 'navbar-sticky',\n static: 'navbar-static',\n hidden: 'navbar-hidden',\n };\n\n const navbarClasses = {\n floating: 'floating-nav',\n sticky: 'fixed-top',\n static: 'navbar-static-top',\n hidden: 'd-none',\n };\n\n const showNavbarMenu = () => {\n return window.location.href.includes(\"account\") ||\n window.location.href.includes(\"pets\") ||\n window.location.href.includes(\"appointments\");\n };\n\n const bgColorCondition = navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white';\n\n if (!isMounted) {\n return null;\n }\n return (\n = 1200,\n 'menu-collapsed': menuCollapsed && windowWidth >= 1200,\n 'menu-expanded': !menuCollapsed && windowWidth > 1200,\n\n // Overlay Menu\n 'vertical-overlay-menu': windowWidth < 1200,\n 'menu-hide': !menuVisibility && windowWidth < 1200,\n 'menu-open': menuVisibility && windowWidth < 1200,\n }\n )}\n {...(isHidden ? { 'data-col': '1-column' } : {})}\n >\n {!isHidden ? (\n \n ) : null}\n\n \n
    \n {navbar ? (\n navbar\n ) : (\n \n )}\n
    \n \n {children}\n\n {/* Vertical Nav Menu Overlay */}\n setMenuVisibility(false)}\n >\n {/* Vertical Nav Menu Overlay */}\n\n {themeConfig.layout.customizer === true ? (\n \n ) : null}\n \n {footer ? footer : }\n \n\n {themeConfig.layout.scrollTop === true ? (\n
    \n \n \n \n
    \n ) : null}\n \n );\n};\n\nexport default VerticalLayout;\n","// !Do not remove the Layout import\nimport Layout from '@layouts/VerticalLayout'\n\nconst VerticalLayout = props => {props.children}\n\nexport default VerticalLayout\n","import { Box, Mail, MessageSquare, CheckSquare, Calendar, FileText, Circle, ShoppingCart, User } from 'react-feather'\n\nexport default [\n {\n id: 'apps',\n title: 'Apps',\n icon: ,\n children: [\n {\n id: 'email',\n title: 'Email',\n icon: ,\n navLink: '/apps/email'\n },\n {\n id: 'chat',\n title: 'Chat',\n icon: ,\n navLink: '/apps/chat'\n },\n {\n id: 'todo',\n title: 'Todo',\n icon: ,\n navLink: '/apps/todo'\n },\n {\n id: 'calendar',\n title: 'Calendar',\n icon: ,\n navLink: '/apps/calendar'\n },\n {\n id: 'invoiceApp',\n title: 'Invoice',\n icon: ,\n children: [\n {\n id: 'invoiceList',\n title: 'List',\n icon: ,\n navLink: '/apps/invoice/list'\n },\n {\n id: 'invoicePreview',\n title: 'Preview',\n icon: ,\n navLink: '/apps/invoice/preview'\n },\n {\n id: 'invoiceEdit',\n title: 'Edit',\n icon: ,\n navLink: '/apps/invoice/edit'\n },\n {\n id: 'invoiceAdd',\n title: 'Add',\n icon: ,\n navLink: '/apps/invoice/add'\n }\n ]\n },\n {\n id: 'eCommerce',\n title: 'eCommerce',\n icon: ,\n children: [\n {\n id: 'shop',\n title: 'Shop',\n icon: ,\n navLink: '/apps/ecommerce/shop'\n },\n {\n id: 'detail',\n title: 'Details',\n icon: ,\n navLink: '/apps/ecommerce/product-detail'\n },\n {\n id: 'wishList',\n title: 'Wish List',\n icon: ,\n navLink: '/apps/ecommerce/wishlist'\n },\n {\n id: 'checkout',\n title: 'Checkout',\n icon: ,\n navLink: '/apps/ecommerce/checkout'\n }\n ]\n },\n {\n id: 'users',\n title: 'User',\n icon: ,\n children: [\n {\n id: 'list',\n title: 'List',\n icon: ,\n navLink: '/apps/user/list'\n },\n {\n id: 'view',\n title: 'View',\n icon: ,\n navLink: '/apps/user/view'\n },\n {\n id: 'edit',\n title: 'Edit',\n icon: ,\n navLink: '/apps/user/edit'\n }\n ]\n }\n ]\n }\n]\n","import {\n FileText,\n Unlock,\n Circle,\n Settings,\n User,\n HelpCircle,\n Info,\n DollarSign,\n Clipboard,\n Mail,\n File\n} from 'react-feather'\nexport default [\n {\n id: 'pages',\n title: 'Pages',\n icon: ,\n children: [\n {\n id: 'authentication',\n title: 'Authentication',\n icon: ,\n children: [\n {\n id: 'login-v1',\n title: 'Login v1',\n icon: ,\n navLink: '/pages/login-v1',\n newTab: true\n },\n {\n id: 'login-v2',\n title: 'Login v2',\n icon: ,\n navLink: '/pages/login-v2',\n newTab: true\n },\n {\n id: 'register-v1',\n title: 'Register v1',\n icon: ,\n navLink: '/pages/register-v1',\n newTab: true\n },\n {\n id: 'register-v2',\n title: 'Register v2',\n icon: ,\n navLink: '/pages/register-v2',\n newTab: true\n },\n {\n id: 'forgotPassword-v1',\n title: 'Forgot Password v1',\n icon: ,\n navLink: '/pages/forgot-password-v1',\n newTab: true\n },\n {\n id: 'forgotPassword-v2',\n title: 'Forgot Password v2',\n icon: ,\n navLink: '/pages/forgot-password-v2',\n newTab: true\n },\n {\n id: 'resetPassword-v1',\n title: 'Reset Password v1',\n icon: ,\n navLink: '/pages/reset-password-v1',\n newTab: true\n },\n {\n id: 'resetPassword-v2',\n title: 'Reset Password v2',\n icon: ,\n navLink: '/pages/reset-password-v2',\n newTab: true\n }\n ]\n },\n {\n id: 'accountSettings',\n title: 'Account Settings',\n icon: ,\n navLink: '/pages/account-settings'\n },\n {\n id: 'profile',\n title: 'Profile',\n icon: ,\n navLink: '/pages/account',\n collapsed: true\n },\n {\n id: 'faq',\n title: 'FAQ',\n icon: ,\n navLink: '/pages/faq'\n },\n {\n id: 'knowledgeBase',\n title: 'Knowledge Base',\n icon: ,\n navLink: '/pages/knowledge-base',\n parentOf: ['/pages/knowledge-base/category/questions', '/pages/knowledge-base/category']\n },\n\n {\n id: 'pricing',\n title: 'Pricing',\n icon: ,\n navLink: '/pages/pricing'\n },\n\n {\n id: 'blog',\n title: 'Blog',\n icon: ,\n children: [\n {\n id: 'blogList',\n title: 'List',\n icon: ,\n navLink: '/pages/blog/list'\n },\n {\n id: 'blogDetail',\n title: 'Detail',\n icon: ,\n navLink: '/pages/blog/detail'\n },\n {\n id: 'blogEdit',\n title: 'Edit',\n icon: ,\n navLink: '/pages/blog/edit'\n }\n ]\n },\n\n {\n id: 'mailTemplate',\n title: 'Mail Template',\n icon: ,\n children: [\n {\n id: 'welcomeTemp',\n title: 'Welcome',\n navLink: 'https://pixinvent.com/demo/oappoint-mail-template/mail-welcome.html',\n externalLink: true\n },\n {\n id: 'resetPassTemp',\n title: 'Reset Password',\n navLink: 'https://pixinvent.com/demo/oappoint-mail-template/mail-reset-password.html',\n externalLink: true\n },\n {\n id: 'verifyEmailTemp',\n title: 'Verify Email',\n navLink: 'https://pixinvent.com/demo/oappoint-mail-template/mail-verify-email.html',\n externalLink: true\n },\n {\n id: 'deactivateAccountTemp',\n title: 'Deactivate Account',\n navLink: 'https://pixinvent.com/demo/oappoint-mail-template/mail-deactivate-account.html',\n externalLink: true\n },\n {\n id: 'invoiceMailTemp',\n title: 'Invoice',\n navLink: 'https://pixinvent.com/demo/oappoint-mail-template/mail-invoice.html',\n externalLink: true\n },\n {\n id: 'promotionalMailTemp',\n title: 'Promotional',\n navLink: 'https://pixinvent.com/demo/oappoint-mail-template/mail-promotional.html',\n externalLink: true\n }\n ]\n },\n\n {\n id: 'miscellaneous',\n title: 'Miscellaneous',\n icon: ,\n children: [\n {\n id: 'comingSoon',\n title: 'Coming Soon',\n icon: ,\n navLink: '/misc/coming-soon',\n newTab: true\n },\n\n {\n id: 'notAuthorized',\n title: 'Not Authorized',\n icon: ,\n navLink: '/misc/not-authorized',\n newTab: true\n },\n {\n id: 'maintenance',\n title: 'Maintenance',\n icon: ,\n navLink: '/misc/maintenance',\n newTab: true\n },\n {\n id: 'error',\n title: 'Error',\n icon: ,\n navLink: '/misc/error',\n newTab: true\n }\n ]\n }\n ]\n }\n]\n","import { Box, Menu, Circle, EyeOff, Folder, LifeBuoy, Shield } from 'react-feather'\nexport default [\n {\n id: 'misc',\n title: 'Misc',\n icon: ,\n children: [\n {\n id: 'access-control',\n title: 'Access Control',\n icon: ,\n action: 'read',\n resource: 'ACL',\n navLink: '/access-control'\n },\n {\n id: 'menuLevels',\n title: 'Menu Levels',\n icon:
    ,\n children: [\n {\n id: 'secondLevel',\n title: 'Second Level 2.1',\n icon: ,\n navLink: '#'\n },\n {\n id: 'secondLevel1',\n title: 'Second Level 2.2',\n icon: ,\n children: [\n {\n id: 'ThirdLevel',\n title: 'Third Level 3.1',\n icon: ,\n navLink: '#'\n },\n {\n id: 'ThirdLevel1',\n title: 'Third Level 3.2',\n icon: ,\n navLink: '#'\n }\n ]\n }\n ]\n },\n {\n id: 'disabledMenu',\n title: 'Disabled Menu',\n icon: ,\n navLink: '#',\n disabled: true\n },\n {\n id: 'documentation',\n title: 'Documentation',\n icon: ,\n externalLink: true,\n newTab: true,\n navLink: 'https://pixinvent.com/demo/oappoint-react-admin-dashboard-template/documentation'\n },\n {\n id: 'raiseSupport',\n title: 'Raise Support',\n icon: ,\n externalLink: true,\n newTab: true,\n navLink: 'https://pixinvent.ticksy.com/'\n }\n ]\n }\n]\n","import { Home, Activity, ShoppingCart } from 'react-feather'\n\nexport default [\n {\n id: 'dashboards',\n title: 'Dashboards',\n icon: ,\n children: [\n {\n id: 'analyticsDash',\n title: 'Analytics',\n icon: ,\n navLink: '/dashboard/analytics'\n },\n {\n id: 'eCommerceDash',\n title: 'eCommerce',\n icon: ,\n navLink: '/dashboard/ecommerce'\n }\n ]\n }\n]\n","import { Layers, Type, Droplet, Eye, CreditCard, Circle, Briefcase, Box, Layout } from 'react-feather'\n\nexport default [\n {\n id: 'uiElements',\n title: 'User Interface',\n icon: ,\n children: [\n {\n id: 'typography',\n title: 'Typography',\n icon: ,\n navLink: '/ui-element/typography'\n },\n {\n id: 'colors',\n title: 'Colors',\n icon: ,\n navLink: '/colors/colors'\n },\n {\n id: 'feather',\n title: 'Feather',\n icon: ,\n navLink: '/icons/reactfeather'\n },\n {\n id: 'cards',\n title: 'Card',\n icon: ,\n badge: 'success',\n badgeText: 'New',\n children: [\n {\n id: 'basic',\n title: 'Basic',\n icon: ,\n navLink: '/cards/basic'\n },\n {\n id: 'cardAdvance',\n title: 'Advance',\n icon: ,\n navLink: '/cards/advance'\n },\n {\n id: 'cardStatistics',\n title: 'Statistics',\n icon: ,\n navLink: '/cards/statistics'\n },\n {\n id: 'CardAnalytics',\n title: 'Analytics',\n icon: ,\n navLink: '/cards/analytics'\n },\n {\n id: 'cardActions',\n title: 'Actions',\n icon: ,\n navLink: '/cards/action'\n }\n ]\n },\n {\n id: 'components',\n title: 'Components',\n icon: ,\n children: [\n {\n id: 'alerts',\n title: 'Alerts',\n icon: ,\n navLink: '/components/alerts'\n },\n {\n id: 'autoComplete',\n title: 'Auto Complete',\n icon: ,\n navLink: '/components/auto-complete'\n },\n {\n id: 'avatar',\n title: 'Avatar',\n icon: ,\n navLink: '/components/avatar'\n },\n {\n id: 'badges',\n title: 'Badges',\n icon: ,\n navLink: '/components/badges'\n },\n {\n id: 'blockui',\n title: 'BlockUI',\n icon: ,\n navLink: '/components/blockui'\n },\n {\n id: 'breadCrumbs',\n title: 'Breadcrumbs',\n icon: ,\n navLink: '/components/breadcrumbs'\n },\n {\n id: 'buttons',\n title: 'Buttons',\n icon: ,\n navLink: '/components/buttons'\n },\n {\n id: 'carousel',\n title: 'Carousel',\n icon: ,\n navLink: '/components/carousel'\n },\n {\n id: 'collapse',\n title: 'Collapse',\n icon: ,\n navLink: '/components/collapse'\n },\n {\n id: 'divider',\n title: 'Divider',\n icon: ,\n navLink: '/components/divider'\n },\n {\n id: 'dropDowns',\n title: 'Dropdowns',\n icon: ,\n navLink: '/components/dropdowns'\n },\n {\n id: 'listGroup',\n title: 'List Group',\n icon: ,\n navLink: '/components/list-group'\n },\n {\n id: 'mediaObjects',\n title: 'Media Objects',\n icon: ,\n navLink: '/components/media-objects'\n },\n {\n id: 'modals',\n title: 'Modals',\n icon: ,\n navLink: '/components/modals'\n },\n {\n id: 'navsComponent',\n title: 'Navs Component',\n icon: ,\n navLink: '/components/nav-component'\n },\n {\n id: 'pagination',\n title: 'Pagination',\n icon: ,\n navLink: '/components/pagination'\n },\n {\n id: 'pillBadges',\n title: 'Pill Badges',\n icon: ,\n navLink: '/components/pill-badges'\n },\n {\n id: 'pillsComponent',\n title: 'Pills Component',\n icon: ,\n navLink: '/components/pills-component'\n },\n {\n id: 'popovers',\n title: 'Popovers',\n icon: ,\n navLink: '/components/popovers'\n },\n {\n id: 'progress',\n title: 'Progress',\n icon: ,\n navLink: '/components/progress'\n },\n {\n id: 'spinners',\n title: 'Spinner',\n icon: ,\n navLink: '/components/spinners'\n },\n {\n id: 'tabsComponent',\n title: 'Tabs Component',\n icon: ,\n navLink: '/components/tabs-component'\n },\n {\n id: 'timeline',\n title: 'Timeline',\n icon: ,\n navLink: '/components/timeline'\n },\n {\n id: 'toasts',\n title: 'Toasts',\n icon: ,\n navLink: '/components/toasts'\n },\n {\n id: 'tooltips',\n title: 'Tooltips',\n icon: ,\n navLink: '/components/tooltips'\n }\n ]\n },\n {\n id: 'extensions',\n title: 'Extensions',\n icon: ,\n children: [\n {\n id: 'sweetAlert',\n title: 'Sweet Alert',\n icon: ,\n navLink: '/extensions/sweet-alert'\n },\n\n {\n id: 'toastr',\n title: 'Toastr',\n icon: ,\n navLink: '/extensions/toastr'\n },\n {\n id: 'slider',\n title: 'Sliders',\n icon: ,\n navLink: '/extensions/slider'\n },\n {\n id: 'drag_&_drop',\n title: 'Drag & Drop',\n icon: ,\n navLink: '/extensions/drag-and-drop'\n },\n {\n id: 'tour',\n title: 'Tour',\n icon: ,\n navLink: '/extensions/tour'\n },\n {\n id: 'clipBoard',\n title: 'Clipboard',\n icon: ,\n navLink: '/extensions/clipboard'\n },\n {\n id: 'reactPlayer',\n title: 'React Player',\n icon: ,\n navLink: '/extensions/react-player'\n },\n {\n id: 'contentMenu',\n title: 'Context Menu',\n icon: ,\n navLink: '/extensions/context-menu'\n },\n {\n id: 'swiper',\n title: 'Swiper',\n icon: ,\n navLink: '/extensions/swiper'\n },\n {\n id: 'ratings',\n title: 'Ratings',\n icon: ,\n navLink: '/extensions/ratings'\n },\n {\n id: 'i18n',\n title: 'I18n',\n icon: ,\n navLink: '/extensions/i18n'\n },\n {\n id: 'extPagination',\n title: 'React Paginate',\n icon: ,\n navLink: '/extensions/pagination'\n },\n {\n id: 'extImport',\n title: 'Import',\n icon: ,\n navLink: '/extensions/import'\n },\n {\n id: 'extExport',\n title: 'Export',\n icon: ,\n navLink: '/extensions/export'\n },\n {\n id: 'extExportSelected',\n title: 'Export Selected',\n icon: ,\n navLink: '/extensions/export-selected'\n }\n ]\n },\n {\n id: 'pageLayouts',\n title: 'Page Layouts',\n icon: ,\n children: [\n {\n id: 'layoutBoxed',\n title: 'Layout Boxed',\n icon: ,\n navLink: '/page-layout/layout-boxed'\n },\n {\n id: 'withoutMenu',\n title: 'Without Menu',\n icon: ,\n navLink: '/page-layout/without-menu'\n },\n {\n id: 'layoutEmpty',\n title: 'Layout Empty',\n icon: ,\n navLink: '/page-layout/layout-empty'\n },\n {\n id: 'layoutBlank',\n title: 'Layout Blank',\n icon: ,\n navLink: '/page-layout/layout-blank'\n }\n ]\n }\n ]\n }\n]\n","import { Edit, Copy, Circle, Box, Package, CheckCircle, RotateCw, Server, Grid } from 'react-feather'\n\nexport default [\n {\n id: 'formsAndTable',\n title: 'Forms & Tables',\n icon: ,\n children: [\n {\n id: 'formElements',\n title: 'Form Elements',\n icon: ,\n children: [\n {\n id: 'input',\n title: 'Input',\n icon: ,\n navLink: '/forms/elements/input'\n },\n {\n id: 'inputGroup',\n title: 'Input Groups',\n icon: ,\n navLink: '/forms/elements/input-group'\n },\n {\n id: 'inputMask',\n title: 'Input Mask',\n icon: ,\n navLink: '/forms/elements/input-mask'\n },\n {\n id: 'textarea',\n title: 'Textarea',\n icon: ,\n navLink: '/forms/elements/textarea'\n },\n {\n id: 'checkbox',\n title: 'Checkbox',\n icon: ,\n navLink: '/forms/elements/checkbox'\n },\n {\n id: 'radio',\n title: 'Radio',\n icon: ,\n navLink: '/forms/elements/radio'\n },\n {\n id: 'switch',\n title: 'Switch',\n icon: ,\n navLink: '/forms/elements/switch'\n },\n {\n id: 'select',\n title: 'Select',\n icon: ,\n navLink: '/forms/elements/select'\n },\n {\n id: 'numberInput',\n title: 'Number Input',\n icon: ,\n navLink: '/forms/elements/number-input'\n },\n {\n id: 'fileUploader',\n title: 'File Uploader',\n icon: ,\n navLink: '/forms/elements/file-uploader'\n },\n {\n id: 'quillEditor',\n title: 'Editor',\n icon: ,\n navLink: '/forms/elements/editor'\n },\n {\n id: 'date_&_timePicker',\n title: 'Date & Time Picker',\n icon: ,\n navLink: '/forms/elements/pickers'\n }\n ]\n },\n {\n id: 'formLayouts',\n title: 'Form Layout',\n icon: ,\n navLink: '/forms/layout/form-layout'\n },\n {\n id: 'wizard',\n title: 'Form Wizard',\n icon: ,\n navLink: '/forms/wizard'\n },\n {\n id: 'formValidation',\n title: 'Form Validation',\n icon: ,\n children: [\n {\n id: 'reactHookForm',\n title: 'React Hook Form',\n icon: ,\n navLink: '/forms/react-hook-form'\n },\n {\n id: 'reactstrapVal',\n title: 'Reactstrap',\n icon: ,\n navLink: '/forms/reactstrap-validation'\n }\n ]\n },\n {\n id: 'formRepeater',\n title: 'Form Repeater',\n icon: ,\n navLink: '/forms/form-repeater'\n },\n {\n id: 'tablesReactstrap',\n title: 'Table',\n icon: ,\n navLink: '/tables/reactstrap'\n },\n {\n id: 'dataTable',\n title: 'DataTable',\n icon: ,\n children: [\n {\n id: 'dtBasic',\n title: 'Basic',\n icon: ,\n navLink: '/datatables/basic'\n },\n {\n id: 'dtAdvance',\n title: 'Advanced',\n icon: ,\n navLink: '/datatables/advance'\n }\n ]\n }\n ]\n }\n]\n","import { BarChart2, PieChart, Circle, Map } from 'react-feather'\nexport default [\n {\n id: 'chartsAndMaps',\n title: 'Charts & Maps',\n icon: ,\n children: [\n {\n id: 'charts',\n title: 'Charts',\n icon: ,\n children: [\n {\n id: 'apex',\n title: 'Apex',\n icon: ,\n navLink: '/charts/apex'\n },\n {\n id: 'chartJs',\n title: 'ChartJS',\n icon: ,\n navLink: '/charts/chartjs'\n },\n {\n id: 'recharts',\n title: 'Recharts',\n icon: ,\n navLink: '/charts/recharts'\n }\n ]\n },\n {\n id: 'leafletMaps',\n title: 'Leaflet Maps',\n icon: ,\n navLink: '/maps/leaflet'\n }\n ]\n }\n]\n","// ** Navigation sections imports\nimport apps from './apps'\nimport pages from './pages'\nimport others from './others'\nimport dashboards from './dashboards'\nimport uiElements from './ui-elements'\nimport formsAndTables from './forms-tables'\nimport chartsAndMaps from './charts-maps'\n\n// ** Merge & Export\nexport default [...dashboards, ...apps, ...uiElements, ...formsAndTables, ...pages, ...chartsAndMaps, ...others]\n","// ** React Imports\nimport { useEffect } from 'react'\nimport { NavLink, useLocation } from 'react-router-dom'\n\n// ** Horizontal menu items array\nimport navigation from '@src/navigation/horizontal'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport { DropdownItem } from 'reactstrap'\nimport { FormattedMessage } from 'react-intl'\n\n// ** Utils\nimport { isNavLinkActive, search, getAllParents } from '@layouts/utils'\n\nconst HorizontalNavMenuLink = ({\n item,\n setOpenDropdown,\n setGroupActive,\n activeItem,\n setActiveItem,\n routerProps,\n currentActiveItem,\n isChild\n}) => {\n // ** Conditional Link Tag, if item has newTab or externalLink props use tag else use NavLink\n const LinkTag = item.externalLink ? 'a' : NavLink\n\n // ** URL Vars\n const location = useLocation()\n const currentURL = location.pathname\n\n const navLinkActive = isNavLinkActive(item.navLink, currentURL, routerProps)\n\n // ** Get parents of current items\n const searchParents = (navigation, currentURL) => {\n const parents = search(navigation, currentURL, routerProps) // Search for parent object\n const allParents = getAllParents(parents, 'id') // Parents Object to Parents Array\n allParents.pop()\n return allParents\n }\n\n // ** Remove all items from OpenDropdown array\n const resetOpenDropdowns = () => setOpenDropdown([])\n\n // ** On mount update active group array\n useEffect(() => {\n if (currentActiveItem !== null) {\n setActiveItem(currentActiveItem)\n const arr = searchParents(navigation, currentURL)\n setGroupActive([...arr])\n }\n }, [location])\n\n return (\n \n {\n if (!match) {\n return false\n }\n\n if (match.url && match.url !== '' && match.url === item.navLink) {\n currentActiveItem = item.navLink\n }\n }\n })}\n /*eslint-enable */\n >\n {item.icon}\n \n \n \n \n \n )\n}\n\nexport default HorizontalNavMenuLink\n","// ** React Imports\nimport { Link, useLocation } from 'react-router-dom'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport { FormattedMessage } from 'react-intl'\nimport { Dropdown, DropdownMenu, DropdownToggle } from 'reactstrap'\n\n// ** Utils\nimport { isNavGroupActive } from '@layouts/utils'\n\n// ** Horizontal Menu Items Component\nimport HorizontalNavMenuItems from './HorizontalNavMenuItems'\n\nconst HorizontalNavMenuGroup = props => {\n // ** Props\n const {\n item,\n submenu,\n groupActive,\n onMouseEnter,\n onMouseLeave,\n openDropdown,\n setGroupActive,\n activeItem,\n setActiveItem,\n routerProps,\n setOpenDropdown,\n currentActiveItem\n } = props\n\n // ** URL Var\n const currentURL = useLocation().pathname\n\n // ** Dropdown menu modifiers\n const menuModifiers = {\n setMaxHeight: {\n enabled: true,\n fn: data => {\n const pageHeight = window.innerHeight,\n ddTop = data.instance.reference.getBoundingClientRect().top,\n ddHeight = data.popper.height\n let maxHeight, stylesObj\n\n // ** Calculate and set height\n if (pageHeight - ddTop - ddHeight - 28 < 1) {\n maxHeight = pageHeight - ddTop - 25\n stylesObj = {\n maxHeight,\n overflowY: 'auto'\n }\n }\n\n const ddRef = data.instance.popper.getBoundingClientRect()\n\n // ** If there is not space left to open sub menu open it to the right\n if (ddRef.left + ddRef.width - (window.innerWidth - 16) >= 0) {\n data.instance.popper.closest('.dropdown').classList.add('openLeft')\n }\n\n return {\n ...data,\n styles: {\n ...stylesObj\n }\n }\n }\n }\n }\n return (\n onMouseEnter(item.id)}\n onMouseEnter={() => onMouseEnter(item.id)}\n onMouseLeave={() => onMouseLeave(item.id)}\n >\n e.preventDefault()}\n >\n {item.icon}\n \n \n \n \n \n \n \n \n )\n}\n\nexport default HorizontalNavMenuGroup\n","// ** React Imports\nimport { useContext } from 'react'\n\n// ** Ability Context\nimport { AbilityContext } from '@src/utility/context/Can'\n\n// ** Menu Components Imports\nimport HorizontalNavMenuLink from './HorizontalNavMenuLink'\nimport HorizontalNavMenuGroup from './HorizontalNavMenuGroup'\nimport {\n resolveHorizontalNavMenuItemComponent as resolveNavItemComponent,\n canViewMenuGroup,\n canViewMenuItem\n} from '@layouts/utils'\n\nconst HorizontalNavMenuItems = props => {\n // ** Context\n const ability = useContext(AbilityContext)\n\n // ** Components Object\n const Components = {\n HorizontalNavMenuGroup,\n HorizontalNavMenuLink\n }\n\n // ** Render Nav Items\n const RenderNavItems = props.items.map((item, index) => {\n const TagName = Components[resolveNavItemComponent(item)]\n if (item.children) {\n return canViewMenuGroup(item) && \n }\n return canViewMenuItem(item) && \n })\n\n return RenderNavItems\n}\n\nexport default HorizontalNavMenuItems\n","// ** React Imports\nimport { useState } from 'react'\n\n// ** Horizontal Menu Array\nimport navigation from '@src/navigation/horizontal'\n\n// ** Horizontal Menu Components\nimport HorizontalNavMenuItems from './HorizontalNavMenuItems'\n\nconst HorizontalMenu = ({ currentActiveItem, routerProps }) => {\n // ** States\n const [activeItem, setActiveItem] = useState(null)\n const [groupActive, setGroupActive] = useState([])\n const [openDropdown, setOpenDropdown] = useState([])\n\n // ** On mouse enter push the ID to openDropdown array\n const onMouseEnter = id => {\n const arr = openDropdown\n arr.push(id)\n setOpenDropdown([...arr])\n }\n\n // ** On mouse leave remove the ID to openDropdown array\n const onMouseLeave = id => {\n const arr = openDropdown\n arr.splice(arr.indexOf(id), 1)\n setOpenDropdown([...arr])\n }\n\n return (\n
    \n \n
    \n )\n}\n\nexport default HorizontalMenu\n","// ** React Imports\nimport { useState, useEffect } from 'react'\nimport { Link } from 'react-router-dom'\n\n// ** Store & Actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { handleMenuHidden, handleContentWidth } from '@store/actions/layout'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport { ArrowUp } from 'react-feather'\nimport ScrollToTop from 'react-scroll-up'\nimport { Navbar, NavItem, Button } from 'reactstrap'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\n// ** Custom Components\nimport Customizer from '@components/customizer'\nimport NavbarComponent from './components/navbar'\nimport FooterComponent from './components/footer'\nimport MenuComponent from './components/menu/horizontal-menu'\n\n// ** Custom Hooks\nimport { useRTL } from '@hooks/useRTL'\nimport { useSkin } from '@hooks/useSkin'\nimport { useNavbarType } from '@hooks/useNavbarType'\nimport { useFooterType } from '@hooks/useFooterType'\nimport { useNavbarColor } from '@hooks/useNavbarColor'\n\n// ** Styles\nimport '@styles/base/core/menu/menu-types/horizontal-menu.scss'\n\nconst HorizontalLayout = props => {\n // ** Props\n const { children, navbar, footer, menu, currentActiveItem, routerProps } = props\n\n // ** Hooks\n const [skin, setSkin] = useSkin()\n const [isRtl, setIsRtl] = useRTL()\n const [navbarType, setNavbarType] = useNavbarType()\n const [footerType, setFooterType] = useFooterType()\n const [navbarColor, setNavbarColor] = useNavbarColor()\n\n // ** States\n const [isMounted, setIsMounted] = useState(false)\n const [navbarScrolled, setNavbarScrolled] = useState(false)\n\n // ** Store Vars\n const dispatch = useDispatch()\n const layoutStore = useSelector(state => state.layout)\n\n // ** Vars\n const contentWidth = layoutStore.contentWidth\n const isHidden = layoutStore.menuHidden\n\n // ** Handles Content Width\n const setContentWidth = val => dispatch(handleContentWidth(val))\n\n // ** Handles Content Width\n const setIsHidden = val => dispatch(handleMenuHidden(val))\n\n // ** UseEffect Cleanup\n const cleanup = () => {\n setIsMounted(false)\n setNavbarScrolled(false)\n }\n\n //** ComponentDidMount\n useEffect(() => {\n setIsMounted(true)\n window.addEventListener('scroll', function () {\n if (window.pageYOffset > 65 && navbarScrolled === false) {\n setNavbarScrolled(true)\n }\n if (window.pageYOffset < 65) {\n setNavbarScrolled(false)\n }\n })\n return () => cleanup()\n }, [])\n\n // ** Vars\n const footerClasses = {\n static: 'footer-static',\n sticky: 'footer-fixed',\n hidden: 'footer-hidden'\n }\n\n const navbarWrapperClasses = {\n floating: 'navbar-floating',\n sticky: 'navbar-sticky',\n static: 'navbar-static'\n }\n\n const navbarClasses = {\n floating: 'floating-nav',\n sticky: 'fixed-top'\n }\n\n const bgColorCondition = navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white'\n\n if (!isMounted) {\n return null\n }\n\n return (\n \n \n {!navbar && (\n
    \n
      \n \n \n \n logo\n \n

      {themeConfig.app.appName}

      \n \n
      \n
    \n
    \n )}\n\n
    \n {navbar ? navbar : }\n
    \n \n {!isHidden ? (\n
    \n \n {menu ? menu : }\n \n
    \n ) : null}\n\n {children}\n {themeConfig.layout.customizer === true ? (\n \n ) : null}\n \n {footer ? footer : }\n \n\n {themeConfig.layout.scrollTop === true ? (\n
    \n \n \n \n
    \n ) : null}\n \n )\n}\nexport default HorizontalLayout\n","// !Do not remove the Layout import\nimport Layout from '@layouts/HorizontalLayout'\n\nconst HorizontalLayout = props => {props.children}\n\nexport default HorizontalLayout\n","// ** React Imports\nimport { Suspense, useContext, lazy, useEffect, useMemo } from 'react';\n\n// ** Utils\nimport { isUserLoggedIn } from '@utils';\nimport { useLayout } from '@hooks/useLayout';\nimport { AbilityContext } from '@src/utility/context/Can';\nimport { useRouterTransition } from '@hooks/useRouterTransition';\nimport useJwt from '@src/@core/auth/jwt/useJwt';\n\n// ** Custom Components\n// import Spinner from '@components/spinner/Loading-spinner' // Uncomment if your require content fallback\nimport LayoutWrapper from '@layouts/components/layout-wrapper';\n\n// ** Router Components\nimport { useParams } from 'react-router';\nimport { BrowserRouter as AppRouter, Route, Switch, Redirect } from 'react-router-dom';\n\n// ** Routes & Default Routes\nimport { DefaultRoute, Routes } from './routes';\n\n// ** Layouts\nimport BlankLayout from '@layouts/BlankLayout';\nimport VerticalLayout from '@src/layouts/VerticalLayout';\nimport HorizontalLayout from '@src/layouts/HorizontalLayout';\nimport { getUserData } from '../utility/Utils';\nimport { useCurrentUserProfile } from '../queries';\nimport { Spinner } from 'reactstrap';\n\n/**\n ** Final Route Component Checks for Login & User Role and then redirects to the route\n */\nconst FinalRoute = props => {\n const params = useParams();\n const route = props.route;\n let action, resource;\n\n // ** Assign vars based on route meta\n if (route.meta) {\n action = route.meta.action ? route.meta.action : null;\n resource = route.meta.resource ? route.meta.resource : null;\n }\n\n if (\n (!isUserLoggedIn() && route.meta === undefined) ||\n (!isUserLoggedIn() && route.meta && !route.meta.authRoute && !route.meta.publicRoute)\n ) {\n /**\n ** If user is not Logged in & route meta is undefined\n ** OR\n ** If user is not Logged in & route.meta.authRoute, !route.meta.publicRoute are undefined\n ** Then redirect user to login\n */\n return ;\n } else if (route.meta && route.meta.authRoute && isUserLoggedIn()) {\n // ** If route has meta and authRole and user is Logged in then redirect user to home page (DefaultRoute)\n return ;\n // } else if (isUserLoggedIn() && !ability.can(action || 'read', resource)) {\n // // ** If user is Logged in and doesn't have ability to visit the page redirect the user to Not Authorized\n // return ;\n // } else {\n } else {\n // ** If none of the above render component\n return ;\n }\n};\n\nconst Router = () => {\n const { jwt } = useJwt();\n const cookieUser = getUserData();\n\n const { refetch: refetchUser } = useCurrentUserProfile({\n enabled: false,\n });\n\n useEffect(() => {\n if (isUserLoggedIn()) {\n if (!!cookieUser?.token && cookieUser.token !== undefined && cookieUser.token !== 'undefined') {\n jwt.setToken(cookieUser?.token);\n }\n refetchUser();\n }\n }, []);\n\n // ** Hooks\n const [layout, setLayout] = useLayout();\n const [transition, setTransition] = useRouterTransition();\n\n // ** ACL Ability Context\n const ability = useContext(AbilityContext);\n\n // ** Default Layout\n const DefaultLayout = layout === 'horizontal' ? 'HorizontalLayout' : 'VerticalLayout';\n\n // ** All of the available layouts\n const Layouts = { BlankLayout, VerticalLayout, HorizontalLayout };\n\n // ** Current Active Item\n const currentActiveItem = null;\n\n // ** Return Filtered Array of Routes & Paths\n const LayoutRoutesAndPaths = layout => {\n const LayoutRoutes = [];\n const LayoutPaths = [];\n\n if (Routes) {\n Routes.filter(route => {\n // ** Checks if Route layout or Default layout matches current layout\n if (route.layout === layout || (route.layout === undefined && DefaultLayout === layout)) {\n LayoutRoutes.push(route);\n LayoutPaths.push(route.path);\n }\n });\n }\n\n return { LayoutRoutes, LayoutPaths };\n };\n\n const NotAuthorized = lazy(() => import('@src/views/pages/misc/NotAuthorized'));\n\n // ** Init Error Component\n const Error = lazy(() => import('@src/views/pages/misc/Error'));\n\n // ** Return Route to Render\n const ResolveRoutes = useMemo(() => {\n return Object.keys(Layouts).map((layout, index) => {\n // ** Convert Layout parameter to Layout Component\n // ? Note: make sure to keep layout and component name equal\n\n const LayoutTag = Layouts[layout];\n\n // ** Get Routes and Paths of the Layout\n const { LayoutRoutes, LayoutPaths } = LayoutRoutesAndPaths(layout);\n\n // ** We have freedom to display different layout for different route\n // ** We have made LayoutTag dynamic based on layout, we can also replace it with the only layout component,\n // ** that we want to implement like VerticalLayout or HorizontalLayout\n // ** We segregated all the routes based on the layouts and Resolved all those routes inside layouts\n\n // ** RouterProps to pass them to Layouts\n const routerProps = {};\n\n return (\n \n \n \n {LayoutRoutes.map(route => {\n return (\n {\n // ** Assign props to routerProps\n Object.assign(routerProps, {\n ...props,\n meta: route.meta,\n });\n\n return (\n }>\n {/* Layout Wrapper to add classes based on route's layout, appLayout and className */}\n \n \n \n \n );\n }}\n />\n );\n })}\n \n \n \n );\n });\n }, []);\n\n return (\n \n \n {/* If user is logged in Redirect user to DefaultRoute else to login */}\n {\n return ;\n }}\n />\n {/* Not Auth Route */}\n (\n \n \n \n )}\n />\n {ResolveRoutes}\n\n {/* NotFound Error page */}\n \n \n \n );\n};\n\nexport default Router;\n","//** React Imports\nimport { useState, useEffect } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useLayout = () => {\n // ** States\n const [lastLayout, setLastLayout] = useState(null)\n const [layout, setLayout] = useState(() => {\n try {\n return themeConfig.layout.type\n } catch (error) {\n // ** If error return initialValue\n console.log(error)\n return themeConfig.layout.type\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(layout) : value\n\n // ** Set state\n setLayout(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n const handleLayout = () => {\n // ** If layout is horizontal & screen size is equals to or below 1200\n if (layout === 'horizontal' && window.innerWidth <= 1200) {\n setLayout('vertical')\n setLastLayout('horizontal')\n }\n // ** If lastLayout is horizontal & screen size is equals to or above 1200\n if (lastLayout === 'horizontal' && window.innerWidth >= 1200) {\n setLayout('horizontal')\n }\n }\n\n // ** ComponentDidMount\n useEffect(() => {\n handleLayout()\n }, [])\n\n useEffect(() => {\n // ** Window Resize Event\n window.addEventListener('resize', handleLayout)\n }, [layout, lastLayout])\n\n return [layout, setValue]\n}\n","//** React Imports\nimport { useState } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useRouterTransition = () => {\n // ** State\n const [transition, setTransition] = useState(() => {\n try {\n return themeConfig.layout.routerTransition\n } catch (error) {\n // ** If error return initialValue\n console.log(error)\n return themeConfig.layout.routerTransition\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(transition) : value\n\n // ** Set state\n setTransition(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n return [transition, setValue]\n}\n","// Firebase Config\nexport const firebaseConfig = {\n apiKey: process.env.REACT_APP_FIREBASE_API_KEY,\n authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,\n databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,\n projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,\n storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,\n messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,\n appId: process.env.REACT_APP_FIREBASE_APP_ID,\n measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID,\n vapid: process.env.REACT_APP_FIREBASE_VAPID,\n};\n","import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport useConfirm from '../../../utility/hooks/useConfirm';\n\nconst ConfirmBox = () => {\n const { confirmBox, onConfirm, onCancel } = useConfirm();\n\n return (\n \n {confirmBox.title || 'Are you sure?'}\n {confirmBox.message || \"This can't be undone!\"}\n \n \n \n \n \n );\n};\n\nexport default ConfirmBox;\n","// ** Router Import\nimport Router from './router/Router';\nimport { RecoilRoot } from 'recoil';\nimport firebase from 'firebase/app';\nimport 'firebase/auth';\nimport { FirebaseAuthProvider } from '@react-firebase/auth';\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { firebaseConfig } from './configs/firebase';\nimport '@styles/react/libs/tables/react-dataTable-component.scss';\nimport ConfirmBox from '@components/confirm-box';\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\nexport const lazyRetry = (componentImport) =>\n new Promise((resolve, reject) => {\n const storageKey = `retry-lazy-refreshed${btoa(componentImport.toString())}`;\n const hasRefreshed = JSON.parse(window.sessionStorage.getItem(storageKey) || 'false');\n componentImport()\n .then((component) => {\n window.sessionStorage.setItem(storageKey, 'false');\n if (component === undefined) {\n window.sessionStorage.setItem(storageKey, 'true');\n return window.location.reload(); // refresh the page\n }\n resolve(component);\n })\n .catch((error) => {\n if (!hasRefreshed) {\n // not been refreshed yet\n window.sessionStorage.setItem(storageKey, 'true');\n window.location.reload();\n }\n reject(error); // Default error behavior as already tried refresh\n });\n });\n\nconst App = props => (\n \n \n \n \n \n \n \n \n);\n\nexport default App;\n","// ** React Imports\nimport { Suspense, lazy } from 'react'\nimport { createRoot } from 'react-dom/client'\n\n// ** Redux Imports\nimport { Provider } from 'react-redux'\nimport { store } from './redux/storeConfig/store'\n\n// ** Sentry Imports\nimport * as Sentry from \"@sentry/react\";\nimport { createBrowserHistory } from 'history';\n\n// ** Intl, CASL & ThemeColors Context\nimport ability from './configs/acl/ability'\nimport { ToastContainer } from 'react-toastify'\nimport { AbilityContext } from './utility/context/Can'\nimport { ThemeContext } from './utility/context/ThemeColors'\nimport { IntlProviderWrapper } from './utility/context/Internationalization'\n\n// ** Spinner (Splash Screen)\nimport Spinner from './@core/components/spinner/Fallback-spinner'\n\n// ** PrismJS\nimport 'prismjs'\nimport 'prismjs/themes/prism-tomorrow.css'\nimport 'prismjs/components/prism-jsx.min'\n\n// ** React Perfect Scrollbar\nimport 'react-perfect-scrollbar/dist/css/styles.css'\n\n// ** React Toastify\nimport '@styles/react/libs/toastify/toastify.scss'\n\n// ** Core styles\nimport './@core/assets/fonts/feather/iconfont.css'\nimport './@core/scss/core.scss'\nimport '@fontsource/spartan'\nimport '@fontsource/spartan/400.css'\nimport '@fontsource/spartan/500.css'\nimport '@fontsource/spartan/600.css'\nimport '@fontsource/spartan/700.css'\nimport '@fontsource/spartan/800.css'\n\n// ** Service Worker\nimport * as serviceWorker from './serviceWorker'\nimport App from './App';\n\n// ** Initialize Sentry\nconst history = createBrowserHistory();\nSentry.init({\n dsn: \"https://a44ff4b70ffa151130ae4ada1f7bdf44@o970154.ingest.sentry.io/4506383982592000\",\n\n sampleRate: 1.0,\n\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n // We recommend adjusting this value in production\n tracesSampleRate: 1.0,\n\n // This sets the sample rate to be 25%. You may want this to be 100% while\n // in development and sample at a lower rate in production\n replaysSessionSampleRate: 1.0,\n // If the entire session is not sampled, use the below sample rate to sample\n // sessions when an error occurs.\n replaysOnErrorSampleRate: 1.0,\n environment: process.env.REACT_APP_AMPLIFY_ENV || 'development',\n integrations: [\n new Sentry.Replay({\n networkDetailAllowUrls: ['api.getoliver.com', 'core.getoliver.com'],\n maskAllText: false,\n maskAllInputs: false,\n }),\n new Sentry.BrowserTracing({\n routingInstrumentation: Sentry.reactRouterV5Instrumentation(history),\n }),\n ],\n});\n\n// ** Lazy load app\nconst LazyApp = lazy(() => import('./App'));\n\nconst container = document.getElementById('root');\nconst root = createRoot(container);\nroot.render(\n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n","export default __webpack_public_path__ + \"static/media/OLI_APP_4C_LTBG.6f18b359.png\";"],"sourceRoot":""}