{"version":3,"sources":["authConfigB2C.js","actions/types.js","constants.js","util.js","actions/oneInc.js","trackingEvents/baseRequest.js","trackingEvents/trackingLoadQuote.js","trackingEvents/useTrackingPurchaseComplete.js","trackingEvents/useTrackingPlanSelection.js","components/quoting/planSection/constants.js","assets/plans/popular-active.svg","assets/plans/popular-inactive.svg","assets/plans/higher-active.svg","assets/plans/higher-inactive.svg","assets/plans/value-plus-active.svg","assets/plans/value-plus-inactive.svg","routes.js","partners/partners.constants.js","partners/partners.util.js","reducers/quoting.js","reducers/index.js","store.js","gtmDataLayer/constants.js","gtmDataLayer/utils.js","gtmDataLayer/dataLayer.js","gtmDataLayer/useDataLayerViewItem.js","components/quoting/powerups/utils.js","utils/featureFlags.utils.js","actions/leads.js","actions/quoting.js","components/common/TouchableDiv.js","components/common/Shimmer.js","assets/plus-circle-icon.svg","hooks/useCalculatePlanPrice.js","hooks/useCallbackAfterRate.js","utils/zipcode.js","hooks/useExtole.js","hooks/useGetNavigator.js","hooks/useHtmlInjection.js","hooks/useOneIncScript.js","hooks/useOnEscEvent.js","hooks/usePartnerNotes.js","hooks/usePrevious.js","hooks/useSessionFooter.js","hooks/usePurchase.js","gtmDataLayer/useDataLayerBeginCheckout.js","i18n.js","actions/partners.js","assets/close-gray.svg","components/common/ModalContainer.js","hooks/useSavedElement.js","components/common/FigoLottie.js","components/common/FigoLoadingOverlay.js","hooks/useFeatureFlag.js","hooks/useRateSummary.js","hooks/useResponsive.js","hooks/useTranslations.js","hooks/useB2CInfo.js","hooks/useGTM.js","hooks/useFeatureFlagLoadedValidation.js","assets/error.svg","assets/done-success.svg","assets/info-i.svg","components/common/FigoInputMessage.js","assets/lock-square-closed.svg","components/common/FigoInput.js","components/quoting/yourInfo/PetParentInfo.js","assets/check.svg","components/common/FakeCheckbox.js","components/quoting/yourInfo/PaymentSummary.js","assets/yourInfo/add-card-icon.svg","assets/bank-active.svg","assets/warning.svg","assets/bank-card-navy.svg","assets/info.png","assets/undo-navy.svg","components/common/OneIncModal.js","trackingEvents/useTrackingPaymentMethodAddition.js","trackingEvents/useTrackingPaymentMethodSelection.js","assets/bank-card.png","assets/ills/ill-9.svg","components/quoting/yourInfo/PaymentMethod.js","assets/arrow-right-citron-main.svg","assets/ills/ill-4.svg","assets/next-white.svg","components/quoting/yourInfo/PurchaseStickyBar.js","components/quoting/yourInfo/YourInfoFooter.js","hooks/useInjectScript.js","components/common/Checkbox.js","components/quoting/yourInfo/TermsAndConditions.js","assets/dog-selected.svg","assets/cat-selected.svg","components/common/TagPetCover.js","components/quoting/yourInfo/PartnerDiscountCallout.js","assets/yourInfo/plus.svg","assets/yourInfo/substract.svg","components/quoting/yourInfo/PaymentBreakdown.js","assets/landing/discount-tag.svg","components/quoting/TooltipDiscount.js","components/common/HtmlContent.js","components/quoting/CostcoPartnerDiscountLabel.js","components/quoting/GenericPartnerDiscountLabel.js","partners/usePartnersData.js","partners/useGoodDogData.js","components/quoting/yourInfo/DiscountApplied.js","assets/yourInfo/calendar-icon-deep-blue.svg","components/quoting/yourInfo/YourFirstPayment.js","components/common/LoadingButton.js","components/quoting/yourInfo/PartnersCustomFields/CostcoMembershipValidator.js","assets/yourInfo/calendar-icon.svg","utils/storage.js","components/quoting/yourInfo/important-dates/ImportantDatesNewDesign.js","assets/ills/ill-14.svg","components/quoting/yourInfo/YourInfoFloatingImages.js","components/common/Loading.js","components/quoting/yourInfo/Prop103DisclaimerText.js","assets/close-arrow.svg","components/quoting/TemporaryMessage.js","components/quoting/QuestionsSection.js","components/common/Message.js","components/quoting/IncompleteSelectionError.js","components/quoting/QuoteSizeWarning.js","components/quoting/yourInfo/YourInfoContent.js","assets/arrow-down-deep-blue-main.svg","components/common/ScrollableDiv.js","components/common/DropdownAddPet.js","assets/dog-active.svg","assets/dog-inactive.svg","assets/cat-active.svg","assets/cat-inactive.svg","components/common/modalAddPet/SpecieSelectorItem.js","components/common/modalAddPet/AddPetSpecieSelector.js","components/common/modalAddPet/AddPetGenderSelector.js","components/common/TooltipContainer.js","assets/tooltip-good-dog.svg","components/common/modalAddPet/AddPetForm.js","components/common/modalAddPet/ModalAddPet.js","components/quoting/ModalRemovePet.js","components/common/MultiModalInfoItemMenu.js","components/common/MultiModalInfoItemContent.js","assets/figo-logo-shield.svg","components/common/MultiModalInfo.js","components/common/InputWithError.js","assets/inbox-and-docs.svg","components/quoting/SaveYourQuoteModal.js","components/quoting/SidebarSaveQuoteModalConfirmation.js","assets/clouds-icon-citron.svg","assets/ills/ill-7.svg","assets/coming-soon-icon.svg","assets/close-custom-modal.svg","components/common/CustomModal.js","components/landing/ComingSoonModal.js","assets/next-citron.svg","components/landing/StickyBarHeightProvider.js","components/quoting/purchase/PriceStickyBar.js","gtmDataLayer/useDataLayerAddToCart.js","components/common/EffectiveDateCustom.js","components/quoting/WhatsCoveredLink.js","assets/info-blue-light.svg","assets/info-white.svg","assets/powerUps/circle-check.svg","components/quoting/powerups/PowerUpTitle.js","components/common/Switch.js","assets/radio-selected.svg","assets/radio-deselected.svg","components/common/RadioButton.js","components/quoting/powerups/PowerUpCard.js","assets/powerUps/pet-protect-copay-active.svg","assets/powerUps/pet-protect-copay.svg","assets/info-deep-blue-citron.svg","components/quoting/powerups/PowerUpCoPayModal.js","components/quoting/powerups/PowerUpCoPay.js","components/quoting/powerups/PowerUpSection.js","assets/ills/ill-10.svg","components/quoting/myPets/MyPetsContainer.js","components/quoting/CardPlanMainHeaderCompany.js","assets/ills/ill-12.png","components/quoting/NeedToKnowNewDesign.js","assets/ills/ill-16.svg","components/quoting/SaveYourQuoteButton.js","assets/plus-icon.svg","assets/less-icon.svg","components/quoting/WhatFigoCoversAccordion.js","components/quoting/WhatFigoCovers.js","assets/ills/ill-5.svg","components/quoting/QuotingFloatingImages.js","assets/info-deep-blue.svg","components/common/IconTooltip.js","assets/plans/info.svg","assets/plans/select-arrows.svg","components/common/DropdownItemList.js","assets/arrow-down-gray.svg","components/common/Dropdown.js","assets/plans/check.svg","components/quoting/customPlanSection/SelectorPill.js","components/quoting/customPlanSection/SelectorPills.js","components/quoting/customPlanSection/SelectorCombo.js","components/quoting/customPlanSection/DeductibleReimbursement.js","trackingEvents/useTrackingReimbursementSelection.js","trackingEvents/useTrackingDeductibleSelection.js","components/quoting/planSection/PrepackagedPlanCard.js","assets/plans/custom-inactive.svg","assets/plans/custom-active.svg","components/quoting/planSection/PlansSection.js","components/quoting/WhatsNotCovered.js","components/quoting/SeeFullCoverage.js","components/quoting/CardPlanMain.js","components/quoting/QuoteContent.js","assets/sync-clouds-citron.svg","components/common/ModalCustomerWelcome.js","components/common/ModalCustomerLogin.js","components/common/ModalForgetPassword.js","assets/alert-hydrant.svg","components/common/RoundButton.js","components/quoting/purchase/duplicatedPurchasesModal/DuplicatedPurchasesModal.js","components/quoting/header/HeaderUnderwriting.js","components/quoting/header/MyQuote.js","components/quoting/header/QuotingStepsComponent.js","assets/ddPetSelector/add.svg","assets/ddPetSelector/remove.svg","assets/ddPetSelector/arrow-down.svg","assets/ddPetSelector/cat-placeholder.svg","assets/ddPetSelector/dog-placeholder.svg","assets/edit-pencil-citron.svg","components/mobile/petQuotingDropDown/PetQuoteDropDownCommon.js","components/mobile/petQuotingDropDown/hooks/usePetQuoteDropdown.js","components/mobile/petQuotingDropDown/PetQuoteDropDownItem.js","components/common/PriceLog.js","components/mobile/petQuotingDropDown/PetQuoteDropDown.js","assets/pencil.svg","assets/ddPetSelector/left-enabled.svg","assets/ddPetSelector/right-disabled.svg","components/quoting/petSelector/PetSelector.js","hooks/useVisibilityObserver.js","assets/figo-logo.svg","components/quoting/header/Header.js","hooks/useOnBodyScrollEvent.js","components/quoting/header/QuotingHeader.js","components/common/FooterLinks.js","components/quoting/QuotingFooter.js","components/pageNotFound/PageNotFound.js","components/quoting/OpenQuote.js","assets/landing/figo-logo.svg","components/landing/LandingHeader.js","components/landing/LandingRightContainer.js","components/landing/LandingLeftContainer.js","components/landing/LandingFooter.js","components/landing/vipSupportBanner/VipSupportBanner.js","components/landing/LandingPage.js","hooks/usePartnerSubId.js","components/common/ModalError.js","components/common/GenericErrorModalContainer.js","assets/close.svg","assets/purchase/down-arrow.svg","components/quoting/purchase/PurchasePage.js","assets/purchase/questions.svg","components/quoting/QuestionsInfo.js","assets/purchase/error.svg","components/quoting/purchase/PetPurchaseFailureCard.js","assets/purchase/ok.svg","components/quoting/purchase/PetPurchaseSuccessCard.js","assets/purchase/cat-placeholder.svg","assets/purchase/dog-placeholder.svg","components/quoting/purchase/PetPurchaseResult.js","assets/purchase/ios-navy.svg","assets/purchase/google-navy.svg","assets/purchase/qr.svg","components/quoting/purchase/PetCloudSection.js","assets/purchase/check.svg","components/common/Toggle.js","components/quoting/purchase/TextAlertsSection.js","components/quoting/purchase/PurchaseSuccess.js","gtmDataLayer/useDataLayerPurchase.js","components/quoting/purchase/PurchaseError.js","components/common/Logout.js","components/common/PageTabTitle.js","hooks/useBeaconSalesforceScript.js","assets/saveQuote/link-expired.svg","components/common/conversion/Footer.js","components/saveQuote/SavedQuoteExpired.js","components/quoting/header/HeaderIAIC.js","assets/arrow-down-navy.svg","components/login/LoginAccountScreen.js","assets/login/figo-logo-new-design.png","components/common/TrackingLoadQuoteOnRefresh.js","assets/purchase/back.svg","components/quoting/purchase/PurchaseRetryScreen.js","components/landing/GoodDogComingSoonModal.js","components/quoting/purchase/ModalMultiQuoteLoading.js","App.js","serviceWorker.js","components/StorageProvider.js","index.js"],"names":["b2cPolicies","authorities","signUpSignIn","authority","concat","process","redirectUrl","window","location","origin","authorityDomain","names","msalConfig","auth","clientId","knownAuthorities","navigateToLoginRequestUrl","postLogoutRedirectUri","redirectUri","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","message","containsPii","LogLevel","Error","console","error","Info","info","Verbose","debug","Warning","warn","ADDRESS_BY_ZIP_CODE_LOADED","AGE_DATA_ERROR","AGE_DATA_LOADED","AGREE_TERMS_AND_CONDITION_CHANGED","ALL_PETS_POWERUPS_VALIDATED","AMERICAN_STATES_LOADED","BREED_DATA_ERROR","BREED_DATA_LOADED","COMING_SOON_ERROR_MODAL_CLOSED","COMING_SOON_MODAL_CLOSED","COMING_SOON_SUCCESS_MODAL_CLOSED","CONSENT_ELECTRONIC_DELIVERY_CHANGED","CONTINUE_WITHOUT_LOGIN","COSTCO_MEMBERSHIP_EDIT_CLICKED","COSTCO_MEMBERSHIP_ERROR_MESSAGE_SET","COSTCO_MEMBERSHIP_NUMBER_CHANGED","COSTCO_MEMBERSHIP_VALIDATED","COSTCO_MEMBERSHIP_VALIDATION_FAILED","COSTCO_MEMBERSHIP_VALIDATION_STARTED","CREATE_DIAMOND_CLIENT_ATTEMPT","CREATE_DIAMOND_CLIENT_ERROR","CREATE_DIAMOND_CLIENT_SUCCESS","CURRENT_QUOTE_STEP_CHANGED","CUSTOM_VET_DATA_CLEARED","CUSTOM_VET_MODAL_OPENED","CUSTOM_VET_SAVED","CUSTOMER_PASSWORD_SET","CUSTOMER_VALIDATED","CUSTOMER_VALIDATION_ATTEMPT","CUSTOMER_VALIDATION_ERROR","CUSTOMER_VALIDATION_RESTARTED","DEDUCTIBLE_LEGEND_CHANGED","DIAMOND_CUSTOMER_LOGIN_ATTEMPT","DIAMOND_CUSTOMER_LOGIN_CLEANED","DIAMOND_CUSTOMER_LOGIN_FAILED","DIAMOND_CUSTOMER_LOGIN_SUCCESS","DIAMOND_CUSTOMER_LOGOUT","DIAMOND_CUSTOMER_RESETED_LOGIN_FAIL","DIAMOND_CUSTOMER_VALIDATION_ATTEMPT","DIAMOND_CUSTOMER_VALIDATION_FAILED","DIAMOND_CUSTOMER_VALIDATION_LOADED","DIAMOND_CUSTOMER_ZIPCODE_CHANGED","DUPLICATED_VALIDATION_FAILED","DUPLICATED_VALIDATION_MODAL_CLOSED","EFFECTIVE_DATE_CUSTOM_CHANGED","ERROR_MODAL_CLOSED","EXTOLE_PURCHASE_COMPLETED","EXTOLE_UUID_SAVED","FAILED_TO_LOAD_ADDRESS_BY_ZIP_CODE","FAILED_TO_LOAD_AMERICAN_STATES","FAILED_TO_LOAD_VETERINARIANS","FETCH_MESSAGE_NO_DATA","FETCH_MESSAGE_SUCCESS","FORGET_PASSWORD_CONFIRM_MODAL_VISIBLE_CHANGED","FORGET_PASSWORD_MODAL_EMAIL_CHANGED","FORGET_PASSWORD_MODAL_EMAIL_ERROR_CHANGED","FORGET_PASSWORD_MODAL_VISIBLE_CHANGED","FORGET_PASSWORD_RESET_PASSWORD_ATTEMTPED","FORGET_RESET_PASSWORD_FAILED","FORGET_RESET_PASSWORD_SUCCEEDED","GET_SUB_ID_SYNONYMS_DATA_FAILED","GOOD_DOG_COMING_SOON_MODAL_HIDED","GOOD_DOG_COMING_SOON_MODAL_SHOWED","IMPERSONATING_INFO_CHANGED","IN_APP_STARTED","IN_LOGIN_APP_STARTED","INITIAL_EMAIL_REASIGNED","LOAD_MULTI_MODAL_DATA_FAILED","LOAD_MULTI_MODAL_DATA_SUCCESS","LOADING_QUOTE_DATA","LOADING_QUOTE_DATA_FINISH","LOGIN_B2C_FAILED","LOGIN_B2C_STARTED","MODAL_CUSTOMER_WELCOME_VISIBLE_CHANGED","MODAL_PET_CO_PAY_VISIBLE_CHANGED","MULTI_MODAL_CUSTOM_CONTENT_CHANGED","MULTI_MODAL_CUSTOM_CONTENT_CLEARED","MULTI_MODAL_NEED_TO_KNOW_VISIBLE_CHANGED","MULTI_MODAL_PET_CO_PAY_VISIBLE_CHANGED","MULTI_MODAL_TERMS_AND_COND_VISIBLE_CHANGED","MULTI_MODAL_WELLNESS_VISIBLE_CHANGED","NEW_CUSTOMER_ADDRESS_LOAD_ATTEMPTED","NEW_CUSTOMER_CITY_CHANGED","NEW_CUSTOMER_EMAIL_CHANGED","NEW_CUSTOMER_EMAIL_ERROR_CHANGED","NEW_CUSTOMER_LAST_NAME_CHANGED","NEW_CUSTOMER_NAME_CHANGED","NEW_CUSTOMER_PHONE_CHANGED","NEW_CUSTOMER_RESET_EMAIL","NEW_CUSTOMER_SECOND_PARENT_LAST_NAME_CHANGED","NEW_CUSTOMER_SECOND_PARENT_NAME_CHANGED","NEW_CUSTOMER_SECOND_PARENT_NUMBER_CHANGED","NEW_CUSTOMER_STATE_CHANGED","NEW_CUSTOMER_STREET_CHANGED","NEW_CUSTOMER_STREET2_CHANGED","NEW_CUSTOMER_ZIP_CODE_CHANGED","NEW_PET_AGE_SAVED","NEW_PET_BREED_SAVED","NEW_PET_EMAIL_SAVED","NEW_PET_GROUP_DSCR_CODE_SAVED","NEW_PET_NAME_SAVED","NEW_PET_PICKUP_DATE_SAVED","NEW_PET_PROMO_CODE_SAVED","NEW_PET_SEX_SAVED","NEW_PET_TYPE_SAVED","NEW_PET_ZIPCODE_SAVED","NO_DIAMOND_CLIENT_ID_OR_PC_ERROR","NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL","NOTIFY_ME_BUTTON_CLICKED","NOTIFY_ME_EMAIL_VALUES_SAVED","NOTIFY_ME_FAILED","NOTIFY_ME_SUCCESS","ONE_INC_PAYMENT_BANK_SAVED","ONE_INC_PAYMENT_CREDIT_CARD_SAVED","ONE_INC_PAYMENT_DEFAULTS_SAVED","ONE_INC_PAYMENT_SAVED","ONE_INC_PAYMENT_UPDATED","ONE_INC_PET_PAYMENT_METHOD_SAVED","ONE_INC_PET_PAYMENT_UPDATED","ONE_INC_RESET_ALL","ONE_INC_SESSION_CREATED","ONE_INC_SESSION_REMOVED","OPEN_QUOTE_LOADED","OPEN_QUOTE_PENDING_PETS_LOADED","OPEN_SAVED_QUOTE_ATTEMPT","OPEN_SAVED_QUOTE_ERROR","OPEN_SAVED_QUOTE_EXPIRED","PARAMETERS_UPDATED","PARTNER_ID_INFORMATION_FAILED","PARTNER_ID_INFORMATION_LOADED","PARTNER_ID_LOAD_INFORMATION_ATTEMPT","PAYMENT_METHOD_TYPE_CHANGE","PAYMENT_PLAN_FREQUENCY_CHANGED","PET_ADDED","PET_QUOTE_REMOVAL_ATTEMPT","PET_QUOTE_REMOVAL_FAILED","PET_QUOTE_REMOVAL_SUCCEED","PET_REMOVED","PET_TAG_COLOR_CHANGED","PET_TAG_DATE_ERRORS_CHANGED","PET_TAG_DATE_OF_BIRTH_CHANGED","PET_UPDATED","POWER_UP_SELECTED","POWERUP_ID_ERRORS_REMOVED","POWERUP_ID_ERRORS_RESTARTED","POWERUP_ID_ERRORS_SET","PROCEED_WITHOUT_PARTNER_CHANGED","PURCHASE_ATTEMPT","PURCHASE_COMPLETED","PURCHASE_MULTIPLE_ATTEMPT","PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED","QUOTE_DATA_LOADED_BY_STORAGE","QUOTE_PLAN_SELECTED","QUOTE_PLAN_SELECTED_BY_QUOTEID","QUOTE_POWER_UP_CHANGED","QUOTE_SELECTED_VALUES_REMOVED","QUOTE_WELLNESS_SELECTED","QUOTING_PLAN_DATA_LOADED","RATE_QUOTE_ERROR","RATE_QUOTE_UPDATE_ATTEMPT","RATE_QUOTE_UPDATE_LOADED","RATE_SUMMARY_ATTEMP","RATE_SUMMARY_FAILED","RATE_SUMMARY_SUCCESS","RECALCULATE_LOCAL_TOTAL","RECALCULATE_PACKAGED_VALUES_SELECTED","RECAPTCHA_VALIDATE_ATTEMPT","RECAPTCHA_VALIDATE_FAILED","RECAPTCHA_VALIDATE_LOADED","REMOVE_PET_MODAL_VISIBLE","RESET_POWER_UP_ARIA_LABEL","RESET_QUOTES_VALUES_SELECTED","RETRY_PURCHASE_ERROR","SAVE_DEDUCTIBLE_SELECTED","SAVE_MONTHLY_PLAN_SELECTED","SAVE_QUOTE_ATTEMPT","SAVE_QUOTE_ERROR","SAVE_QUOTE_MOBILE_VISIBLE_CHANGED","SAVE_REIMBURSEMENT_SELECTED","SAVE_SELECTED_ADD_PET_MODAL","SAVE_SELECTED_EDIT_PET_MODAL","SAVE_SELECTED_PET_NUMBER","SAVE_UPDATED_PET","SAVE_URL_PARAMETERS","SAVE_UTM_PARAMS","SAVED_QUOTE","SAVED_QUOTE_MODAL_VISIBLE","SECOND_ADDRESS_CLEARED","SECOND_PARENT_FORM_TOGGLED","SEND_SMS_APPS_LINKS_ATTEMPT","SEND_SMS_APPS_LINKS_FAILED","SEND_SMS_APPS_LINKS_SUCCESS","SIGNED_UP_SMS","SIGNED_UP_SMS_ATTEMPT","SUB_ID_SAVED","SUB_ID_SYNONYMS_DATA_LOADED","TERMS_AND_CONDITION_VALIDATION_CHANGED","TERMS_AND_POLICY_CHANGED","UNDERSTAND_CONDITIONS_CHANGED","VETERINARIAN_SET","VETERINARIANS_LOAD_ATTEMPT","VETERINARIANS_LOADED","YOUR_INFO_SCROLL_TO_TOP_TOGGLED","YOUR_INFO_STEP_CHANGED","ZIP_CODE_CUSTOMER_UPDATED","ZIP_CODE_VALIDATION_ATTEMPT","ZIP_CODE_VALIDATION_CRASHED","ZIP_CODE_VALIDATION_FAILED","ZIP_CODE_VALIDATION_SUCCESS","PetGender","Female","name","value","Male","None","PetType","Cat","Dog","QuotingSteps","SelectPlan","Welcome","YourInfo","PAYMENT_TYPE","bank","creditCard","CreditCardType","AmericanExpress","DinnersClub","Discover","MasterCard","Other","Visa","POWERUP_TYPE","BILLING_CYCLE_TYPE","annualy","monthly","oneTime","YOUR_INFO_STEPS","PRODUCT_VALUES","FPI_VALUES","IHC_VALUES","CUSTOMER_SERVICE_PHONE_NUMBER","CUSTOMER_SERVICE_EMAIL","PRIVACY_POLICY_LINK","TERMS_OF_USE_LINK_GENERAL","UNDERWRITING_LINK","FOOTER_TEXT_BASE","Date","getFullYear","MODAL_RELATION_LIST","NEED_TO_KNOW_MODAL_ID","PET_CO_PAY_MODAL_ID","TERMS_AND_COND_MODAL_ID","WELLNESS_MODAL_ID","MODAL_DEFAULT_CATEGORY","NEED_TO_KNOW_DEF_CATEGORY_ID","PET_CO_PAY_DEF_CATEGORY_ID","TERMS_AND_COND_DEF_CATEGORY_ID","WELLNESS_DEF_CATEGORY_ID","PowerUpsRelation","EXTRA_CARE_PACK_PSM_ID","PER_INCIDENT_CO_PAY","VETERINARY_EXAM_FEES_PSM_ID","WELLNESS_DENTAL_PSM_ID","WELLNESS_PSM_ID","BENEFIT_FEE_TYPE","dynamic","fixedFee","ftpFactor","none","USER_ROLL_LIST","TEN_DIGIT_NUMBER","ONE_INC_PAYMENT_CATEGORY","bankAccount","ONE_INC_DEFAULT_TOKEN","ONE_INC_EMPTY_ACH","accountType","bankName","customerName","lastFourDigits","paymentCategory","sessionId","timeZone","tokenId","transactionDate","ONE_INC_EMPTY_CC","cardExpirationMonth","cardExpirationYear","cardType","holderZip","DROPDOWN_ITEM_TYPE","OS","android","ios","unknown","WELLNESS_MULTIMODAL_ID","WELLNESS_COVERAGE_LIMIT_FPI","BASIC","PLUS","PLAN_LIMIT","ESSENTIAL","title","PREFERRED","UNLIMITED","AMERICAN_STATES","AmericanStates","AFTER_RATE_TAG","addPet","createRate","loadByOrderId","newZipCode","removePartner","removePet","updatePet","updatePowerUp","MARKETING_CHANNEL","SAVE_QUOTE_TYPE","auto","customer","PURCHASE_MULTI_STATUS","complete","pending","progress","PURCHASE_ERROR_TYPES","otherError","paymentMethodError","CLIENT_NAME","serializeForUri","obj","arguments","length","undefined","Object","keys","map","key","encodeURI","join","genApiUrl","baseURL","path","params","serializedParams","async","genHttpRequest","url","options","headers","Authorization","app","version","post","method","body","JSON","stringify","delete","id","withTimeout","timeoutTime","AbortSignal","timeout","signal","controller","AbortController","setTimeout","abort","response","fetch","clearTimeout","apiCall","get","apiCallPurchase","setSessionStorage","_ref2","data","sessionStorage","setItem","getSessionStorage","getItem","parse","removeSessionStorage","removeItem","formatParameters","parametersRaw","parameters","forEach","text","temp","replace","_","c","toUpperCase","substr","toLowerCase","camelize","sleep","time","Promise","resolve","getPetNameFromValue","petValue","validateEmail","email","RegExp","test","String","testOnlyNumber","currencyFormat","_ref3","fixed","toFixed","Math","abs","isPaycheck","paycheck","useEnrollmentflag","useGoogleTagManager","useOneInc","useSecondaryPetParent","useTrackingEvents","phoneMask","split","filter","item","isValidDiamondStreet","newValue","trim","isProductFPI","productId","indexOf","removeEmojis","stringToClean","scrollToElement","idElement","element","document","getElementById","scrollTo","offsetLeft","offsetTop","getElementOffsetTop","elementName","modifier","isValidCardNumber","cardNumber","type","getCreditCardType","CARD_NUMBER_LENGTH","createEffectiveDate","date","setDate","getDate","toISOString","closeWindow","os","userAgent","navigator","vendor","opera","MSStream","getMobileOperatingSystem","webkit","messageHandlers","dismissWebView","postMessage","ReactNativeWebView","close","validatePartnerIds","_ref4","synonyms","customParameter","find","parameter","synonym","includes","Name","Value","loadEmbeddedScript","_ref5","onLoadCallback","scriptAsync","scriptDefer","scriptId","scriptInnerHTML","scriptSrc","scriptType","script","createElement","src","defer","innerHTML","onload","appendChild","getUtmParams","fromEntries","entries","_ref8","startsWith","getAgeInYears","ageName","forceFocusElement","focus","delay","ms","toBoolean","match","appVersion","useElectronicConsent","validatePowerupsSelected","petQuoteRateItem","isValid","modifierIdNotSelectedList","possiblePowerups","InsuranceModifiers","InsuranceModifierTypeId","IsVisible","modifierIdNotSelected","powerup","IsSelected","push","Id","useCostcoTN","useCustomEffectiveDate","useCustomPlanPills","useFSCLeads","useGoodDogTN","useMarketingChannel","useRetryPurchase","usePowerupsRadioButtons","useROPC","removeOneIncSession","savePaymentMethod","isCreditCard","savePaymentMethods","saveOneIncPetPaymentMethod","changeOneIncPaymentUpdate","savePaymentDefaultMethods","resetOneInInformation","PAYMENT_TYPES_TRACKING","EVENT_TYPE","DEDUCTIBLE_SELECTION","LOAD_QUOTE","PAYMENT_METHOD_ADDITION","PAYMENT_METHOD_SELECTION","PLAN_SELECTION","PURCHASE_COMPLETE","REIMBURSEMENT_SELECTION","baseRequest","_ref","codeMask","promoCode","subId","code_mask","datetime_utc","moment","format","partner_account_code","subid","getPetPowerups","currentPet","modifierList","modifiers","extraCarePack","vetFees","wellness","currentPetMods","mod","isSelected","modList","petMod","PMSModifierId","wellnessTag","_wellness$BundleInsur","BundleInsuranceModifiers","wChild","pm","TitleText","getCurrentPrice","deductibleIdParam","petIdSelected","planIndex","quoteSelectedValues","reimbursementIdParam","plans","Plans","deductibleId","reimbursementId","pt","quoteId","RatingOptions","rating","DeductibleId","ReimbursementId","getQuotePlanInfo","petId","currentQuote","quote","annualPremium","totalAnnual","deductible","deductibleQuantity","monthlyLimit","selectedPlanAmount","monthlyPremium","totalMontly","reimbursement","reimbursementPercentage","selectedPlanIndex","getPlanLimit","planInfoLimit","planLimit","customTrackEvent","dataLayer","log","trackingLoadQuote","petQuoteList","zipCode","pets","pet","petQuoteInf","petQuoteId","petQuotePowerups","age","petAgeName","breed","breedName","gender","genderName","petName","annual_premium","extra_care","limit","monthly_premium","vet_fees","species","petType","zip","event","useTrackingPurchaseComplete","trackEvent","useTracking","dispatch","store","useSelector","quoting","groupCodeDscr","trackPurchaseComplete","policies","effectiveDate","petQuoteResponseList","insuranceProduct","petPolicy","policy","PetName","IsCat","effective_date","policy_number","PolicyNumber","groupCode","useTrackingPlanSelection","petQuoteSelected","trackPlanSelection","price","petInfo","AnnualPremium","MonthlyPremium","prepackagedPlansIcons","active","inactive","CUSTOM_PLAN_ID","LANDING_URL","URL_YOUR_INFO","URL_ROOT_QUOTE","URL_PURCHASE","URL_PURCHASE_RETRY","URL_PURCHASE_ERROR","URL_PURCHASE_BACKEND_ERROR","URL_COSTCO","URL_COSTCO_CX","URL_LOGIN_ACCOUNT","URL_GOOD_DOG","URL_USAA","COSTCO_PARTNER_IDS","COSTCO_PARTNER_ID","COSTCO_CX_PARTNER_ID","GOOD_DOG_PARTNER_ID","USAA_PARTNER_ID","COSTCO_URL_PARAMS","refer","COSTCO_CX_URL_PARAMS","GOOD_DOG_URL_PARAMS","USAA_URL_PARAMS","QUOTE_CLIENT_TYPES","RECAPTCHA_PARTNER_ORIGIN","PARTNERS","costco","fastRoute","partnerId","recaptchaOrigin","urlParams","costcoCx","goodDog","usaa","isPartnersGoodDog","isPartnersUSAA","getPartnerData","getQuoteClientType","partnerData","pickupDateMin","validatePickupDate","pickupDate","minEffectiveDateTime","getTime","validatePickupDate7Days","addDay","setHours","setMinutes","dateAddDays","INITIAL_QUOTE_SELECTED_VALUES","annualAmountPlan","annualTax","isMonthlyPlan","monthlyAmountPlan","monthlyTax","partnerAnnualSaving","selectedPlan","selectedPlanPackaged","total","INITIAL_SECONDARY_ADDRESS_STATE","city","cityError","state","stateError","street","street2","street2Error","streetError","zipError","INITIAL_PARTNERS_STATE","comingSoonZipcode","costcoMembership","editing","executeMemberBenefitDisplay","executeMemberBenefitWaivedAmount","feeWaivedMessageContent","feeWaivedMessageTitle","isFeeWaived","loading","membershipNumber","membershipStatus","membershipTier","membershipType","membershipTypeName","waivableFee","isCostco","isGoodDog","isUSAA","loaded","notifyMeEmail","invalidQuote","petAge","petBreed","petSex","zipcode","partnerName","petPickupDate","INITIAL_ONE_INC","customerId","customerUpdated","defaultsPaymentMethod","defaultValue","isTwoDefaults","petPaymentMethods","portalOneSessionKey","INITIAL_STATE","acceptedTermsAndPolicy","addPetModalVisible","ageData","americanStates","breedData","companyName","currentQuoteStep","customerValidationLoading","customerValidationResponse","customerRoles","displayName","fullName","hasPassword","userName","customerZipCode","customVet","nameOfPractice","stateId","customVetModalVisible","deductibleLegend","diamondClientLoading","editPetModalVisible","effectiveDateCustom","employeeIdHelpText","employer","employerPromoCode","extoleQuoteUUID","goodDogComingSonModalVisible","inApp","inLoginApp","installmentName","isAgeDataLoading","isBreedDataLoading","isErrorModalVisible","isLoading","isLoadingNewAddress","modalCustomerWelcomeVisible","multiModalCustomData","multiModalData","InsuranceMultiModalSectionDtoList","IsEbProduct","ZipCode","multiModalUserSelection","needToKnowIdSelected","needToKnowModalVisible","needToKnowSelectionHistory","petCoPayIdSelected","petCoPayModalVisible","termsAndCondIdSelected","termsAndCondModalVisible","wellnessIdSelected","wellnessModalVisible","newCustomer","address","cityFromZipCode","stateAbbr","canEditAddress","emailError","emailValidated","initialEmail","lastName","loadingVets","password","passwordConfirm","passwordConfirmError","passwordError","phoneNumber","resetEmail","secondParent","newPet","breedCat","breedDog","petBreedId","oneInc","openQuoteGuid","partners","paymentMethod","accountNumber","accountNumberConfirmation","accountNumberConfirmationError","accountNumberError","label","routingNumber","routingNumberError","billingAddress","creditDebit","cardCvv","cardCvvError","cardNumberError","creditCardType","expirationDate","expirationDateError","nameOnCard","nameOnCardError","loadingSecondAddress","mailAddressSameAsPet","paymentMethodType","petParentAddress","petParentAddressError","petRemovedLoading","petRemovedSuccess","petsWithQuoteError","petTags","petTagsErrors","petToRemove","petUpdated","planChanged","plansPackaged","Description","monthlyPrice","PlanId","powerUpErrors","powerUpErrorsScroll","powerUpLoadings","purchase","duplicatedPets","duplicatedPetsModalVisible","extolePurchaseComplete","incompletePurchases","multiQuoteList","isCat","status","multiQuoteLoading","notDuplicatedPets","policyNumbers","sendingMessage","success","rateSummary","AllDiscounts","PetQuotes","powerUpChanged","pricesChanged","QuoteSummaries","recaptcha","token","redirectToLanding","removePetModalSuccess","removePetModalVisible","saveQuote","failOpenQuote","isOpeningQuote","isSavingQuote","openQuoteLoaded","redirectLink","savedQuoteExpired","savedQuoteId","savedQuoteModalVisible","saveQuoteMobileModalVisible","scrollYourInfoToTop","searchParameters","secondParentFormVisible","selectedVeterinarian","AccountID","customCity","customState","customStateId","isCustomVet","sessionInformation","forgetPasswordEmail","forgetPasswordEmailError","forgetPasswordModalConfirmVisible","forgetPasswordModalVisible","forgetPasswordPasswordUpdated","forgetPasswordResetLoading","impersonatingEmail","isCustomer","isImpersonating","loadingLogin","loadingTagFinish","loggingWithoutModal","nopCommerceUser","Address","AddressLine1","AddressLine2","City","State","BillingInfoList","CustomerNopCommerceId","DefaultPaymentProfileIdACH","DefaultPaymentProfileIdCC","DiamonClientdId","FirstName","LastName","LoginMessage","LoginSuccess","MarketingChannelId","MiddleName","notifyMeButtonLoading","showComingSoonModal","showErrorComingSoonModal","showLoginMenssage","showSuccessComingSoonModal","showWelcomeMessage","userEmail","validateZipCodeLoading","subIdSynonyms","temporaryMessageData","termsAndConditions","agreeTermsAndConditionCheck","agreeTermsAndConditionError","consentElectronicDeliveryCheck","modalDescription","modalTitle","understandConditionCheck","understandConditionError","textAlerts","togglePetCoPayModalVisible","utmParams","validatingEmployerId","vetList","yourInfoStep","combineReducers","action","tag","isUpdate","breedDataFiltered","petDateOfBirth","toLocaleDateString","petTagColor","search","annualAmount","monthlyAmount","description","quantity","plan","PartnerAnnualSaving","petQuote","prePackagedPlan","PrePackagedPlans","prePackaged","ratingOption","Plan","ratingItem","DeductibleName","ReimbursementName","planId","planAmount","findIndex","planPackagedId","newDate","petZipCode","breedId","_action$quoteId","isAuto","visible","employeeID","petTag","ids","CityName","StateName","StateAbbr","ZIPCode","toggledState","isMonthly","pendingPets","pendingPet","selectedPlanPackage","step","veterinarians","veterinarian","formattedStates","userState","americanState","vetPractice","_userState","_userState2","categoryId","newSelectionHistory","category","CategoryHeader","content","oldModifier","deductibleChanged","payload","CanEditAddress","ExecuteMemberBenefitDisplay","ExecuteMemberBenefitValue","DetailMessageContent","DetailMessageTitle","valuesEmail","quoteValue","newStatus","modifierId","modifierIds","_action$value","middleWares","thunk","createStore","reducers","applyMiddleware","STORE_ATTRIBUTE","DATALAYER_EVENT_TYPE","EMPTY_STRING","FULL_POLICY","NO_POWERUPS","NO_PARTNER_CODE","PATH_ALLOWED","VIEW_ITEM","waitForQuotingData","intervalId","setInterval","getState","clearInterval","quotingState","temporal_item_id","dt","r","random","floor","toString","generateUUID","getCoupon","_quoting$data$groupCo","getPetAge","getBillingCycle","getPlanName","planFounded","planName","getModifiersName","selectedModifiers","modifiersName","selectedModifierId","getModifierNameById","AppText","subModifier","modifiersListNames","Set","pickupPartnerCodeFromSessionStorage","storageData","partnerCode","dataLayerEvent","pickupItemsFromSessionStorage","_storageData$data","_storageData$data2","_quoting$data","_quoting$data$petQuot","some","quoteSelected","index","affiliation","item_brand","item_category","item_category2","item_category3","item_category4","item_id","item_name","item_variant","item_addon","getDataLayerPurchaseEvent","items","pickupIncompleteTransactionsFromSessionStorage","transactionId","PetQuoteId","pickupTransactionIdFromSessionStorage","monthlyPriceTotal","totalAmount","reduce","acc","parseFloat","calcTotalMontlyAmountFromItems","billingCycle","summary","BillingCycle","PaymentType","MonthlyPremiumTotal","TodaysTotal","itemsWithoutPetQuoteId","itemCopy","ecommerce","billing_cycle","coupon","currency","language","transaction_id","Number","email_address","e","dataLayerViewItem","pathname","pathLowerCase","toLocaleLowerCase","currentPetSelected","toTruncate","trunc","isWellnessFPI","_powerUp$BundleInsura","insuranceProductId","powerUp","findSelectedModifier","contentModifierSelected","getFeeAmountChildren","benefitType","BenefitFeeType","isModifierSelected","prev","next","FeeAmount","getPriceWithoutFees","_ref7","coverageFeeValue","_ref6","insuranceModifiers","powerUps","feeFactor","a","b","feeFixed","getCoverageFee","calculateCoverageFee","_ref9","accumulator","currentValue","_powerUp$BundleInsura2","isWellnessFPIWithoutChild","_powerUp$BundleInsura3","coverageFee","priceWithoutFees","getCoverageByBenefitFeeType","KEY_FEATURE_FLAGS","FEATURE_FLAGS_LOADED_EVENT_NAME","getFeatureFlagFromStorage","featureFlags","sendFSCLead","marketingOpt","_payload$Data","legacyAPI","purchaseAPI","QuoteSiteD2CPurchaseV1T159710","stateValidationUrl","json","Data","sendAllPetsFSCLead","removePromoCode","marketingOptIn","sendFSCCustomerLead","line1","line2","firstName","secondaryPetParent","quoteInfo","planInfo","sendFSCQuoteLead","_quoting$partners","_quoting$partners$cos","_quoting$partners2","_quoting$partners2$co","_quoting$partners3","quotes","_modifier$BundleInsur","bundleModifier","bmodifier","powerUpPrice","amount","getModifierData","Boolean","discountModifiers","discountResume","current","InsuranceModifierDiscount","Discount","DiamondName","percentage","discountGroup","discount","coinsurance","annualMax","Coinsurance","planPrice","policyPlan","quoteType","membershipLevel","membershipPartner","PartnerName","sendFSCPaymentLead","sendFSCPurchaseLead","successfulPurchases","logError","endpoint","exception","statusCode","request","_state$quoting","_state$quoting$newCus","_state$quoting2","_state$quoting2$param","_navigator","_navigator$userAgentD","_state$quoting3","_state$quoting3$partn","requestString","responseString","QuoteSiteD2CPurchaseV1T169322","Action","Email","Endpoint","ErrorDescription","HttpStatusCode","OperatingSystem","userAgentData","platform","PartnerGuid","Request","Response","UserAgent","noDiamondClientIdError","getBreedDataFilteredByType","saveSelectedPetNumber","continueWithoutLogin","makeRateData","planParams","maxAnnual","MaxAnnual","PlanName","selectedPlanData","selectedPlanIndexAux","selectedDeductibleId","Deductible","selectedDeductibleQty","deductibleName","selectedDeductible","Deductibles","DollarVal","parseInt","selectedReimbursementId","Reimbursement","selectedReimbursementQty","selectedReimbursement","Reimbursements","PercentVal","PrePackagedPlanId","saveSubId","trackLoadEvent","guidData","saveQuoteFindModifiers","_modifierFilter$find","_modifierFilter$find2","_modifierFilter$find3","modifiersData","ExtraCarePackAdded","PerIncidentCoPayAdded","VetFeesAdded","WellnessPlanType","modifierFilter","IsActive","veterinary","wellnessPsm","wellnessBundle","perIncidentCoPay","CoverageLimitId","cloudClientId","EffectiveDate","QuoteSubId","QuoteSiteD2CPurchaseV1T167578","api","saveQuoteResponse","saveQuotePayload","_getState$quoting$par","agentId","petQuotes","petResponse","petSelectedValue","cloudOrderId","PetAge","PetBreed","PetBreedId","PetSex","userSelectedInfoPlan","prePackagedPlanId","reimbursementName","_saveQuotePayload","_saveQuotePayload$Dat","eMail","GroupCode","GroupCodeDscr","IsEB","Partner","PickupDate","IsValid","Message","_saveQuoteResponse","loadSubIdSynonymsData","QuoteSiteD2CPurchaseV1T172558","parametersResponse","parametersPayload","_parametersResponse","rateQuote","firstLoad","isRemovePet","showLoading","stayLoadingAtFinish","update","statusToLog","payloadRateQuote","_state$quoting4","_state$quoting4$subId","IsOpenQuote","QuoteGuid","rateQuoteResponse","rateData","quoteGuid","query","URLSearchParams","set","loadAddressByZipCode","validateZipCodeComingSoon","loadAddress","validState","validateCostcoRate","partnerGuid","partnerResponse","QuoteSiteD2CPurchaseV1T174569","partnerIdLoadedRequest","saveURLParameters","_ref10","recalculateTotalPrices","saveSelectedReimbursement","_ref12","saveDeductibleSelected","_ref13","_ref14","saveNewPetAge","saveNewPetBreed","_ref16","saveNewPetName","saveNewPetPromoCode","partnerIdLoaded","saveNewPetZipCode","saveNewPetEmail","saveNewPetType","saveNewPetSex","saveNewPetPickupDate","saveSelectedEditPetModal","saveSelectedAddPetModal","saveSelectedRemovePetModal","updateRateQuote","_ref18","diamondClientId","ebGuID","employerName","nopCommerceClientId","DiamondClientId","Modifiers","TestEffectiveDate","_ref19","recalculatePackagedValuesSelected","validateAllPetsPowerups","_ref20","guidPayload","_ref17","handlePowerUpChanged","_ref21","removePetIds","toggleOpen","notifyMeEmailQuote","_ref23","emailQuoteResponse","apiCallCostco","emailQuotePayload","saveQuoteMobileVisibleChanged","newCustomerChanged","_ref24","openQuote","_ref25","utmRest","partnerParameter","openQuoteResponse","openQuotePayload","AgentId","quoteSubId","planSelected","searchObject","IsEb","IsFeeWaived","MembershipId","MembershipType","MembershipTypeDescription","selectedValues","selectedPlanByIndex","_response","QuotationId","_openQuotePayload","_openQuotePayload$Dat","RedirectLink","_openQuoteResponse","toggleYourInfoScrollToTop","togglePaymentPlanFrequency","_ref28","setCurrentQuoteStep","paymentMethodChanged","_ref29","validateCustomerExistsByEmail","validateCustomerExists","CustomerRoles","DisplayName","FullName","HasPassword","UserName","duplicatePurchasesValidationFailed","validateDuplicatedPurchases","_ref34","QuoteSiteD2CPurchaseV1T169325","petsRequest","BreedName","ClientId","IsFemale","duplicatedPet","IsDuplicated","_response3","sendPurchaseErrorLog","bodyRequest","_ref35","_navigator2","_navigator2$userAgent","QuoteSiteD2CPurchaseV1T167460","purchaseQuotes","_ref36","ok","_body$QuotePurchaseDt","duplicatedPurchaseData","QuotePurchaseDto","InsurancePetQuotes","IsRetryPurchase","PrimaryEMail","CustomerId","IncompletePurchases","SuccessfullyPurchased","_response4","ErrorType","PaymentError","TagColorId","reason","purchaseMultipleQuotes","_ref37","quoteRequests","outData","HasMessages","rest","_request","Success","_outData$Data","_outData$Data2","_outData$Data3","otherIncomplete","otherSuccess","doPurchaseMultiple","_ref38","flatMap","_quote$QuotePurchaseD","wellnessVisibleChanged","_ref43","needToKnowModalVisibleChanged","_ref44","termsAndCondModalVisibleChanged","_ref45","petCoPayModalVisibleChanged","_ref46","togglePetCoPayModalVisibleChanged","_ref47","resetPurchaseData","forgetPasswordVisibleChanged","_ref51","validateDiamondUser","_ref54","customerExistsData","userAlreadyExists","validateCustomer","customerInfo","hasCustomerRoll","roll","saveOneIncPaymentMethod","_ref55","billingInfoList","PaymentProfileId","AddressFirstName","BillingInfoType","MaskedCardNumber","substring","MaskedAccountNumber","payment","onLoginDiamondUser","_ref56","b2cToken","PetPaymentMethod","defaultPaymentMethod","modalCustomerWelcomeVisibleChanged","saveUtmParams","SMSSignedUp","_ref59","smsphone","smsOptIn","smsPhone","sendFSCMarketingLead","changeGoodDogComingSoonModal","setPowerUpErrors","modifierIdList","removePowerupIdError","restartPowerupErrors","setAsHasPassword","TouchableDiv","ariaProps","children","className","compRef","disabled","onClick","onKeyDown","onKeyPress","onFocus","onBlur","style","handleOnclick","target","_jsx","ref","Shimmer","props","isVisible","styles","borderRadius","height","width","defaultProps","useCalculatePlanPrice","useDispatch","useMemo","currentPetQuote","plansQuote","plansPackagedSelected","_currentPetQuote$PreP","planItem","getCurrentPlan","useCallback","emptyPlan","getValue","priceAnnualFix","useEffect","_ref11","saveMonthlyPlanSelected","useCallbackAfterRate","callbackMemo","tags","shallowEqual","lastTag","setLastTag","useState","getStateAbbreviation","zipString","code","max","min","s","zipcodeAbbreviation","useExtole","firstPet","QuoteId","sendPolicyPurchaseEvent","_window$extole2","cartValue","partnerUserId","policyId","extole","createZone","cart_value","first_name","last_name","membership_type","partner_user_id","policy_id","extolePurchaseEvent","sendQuoteSubmittedEvent","_window$extole","pet_age","pet_breed","pet_name","pet_sex","pet_type","promo_code","quote_id","extoleQuoteEvent","BROWSERS","useHtmlInjection","classNameContainer","elementType","contentLoaded","setContentLoaded","htmlContent","htmlContainer","classList","add","useOneIncScript","useOnEscEvent","callback","dependencies","handleKeyDown","keyCode","removeEventListener","addEventListener","usePartnerNotes","stores","CustomFields","field","Section","usePrevious","useRef","useSessionFooter","BottomDisclaimer","FooterText","useRouteMatch","InsuranceInformationSections","Title","InsuranceInformationDetails","Text","usePurchase","sessionFooter","getSelectedValues","getMutiplePetId","_store$data","clientIdToSend","_sessionInformation$n","getQuotePurchaseDto","insurancePetQuotes","InsuranceProductFee","ImpersonatingAdminEmail","CloudClientId","EMail","GroupPartnerCode","PetState","PetZip","InsuranceProductId","IsMultiplePets","IsRated","ProductInfo","RatingFromComplete","NeedToKnows","NeedToKnowDetails","ImportantDates","ImportantDateDetails","IconRoute","Fees","fee","TypeId","InsuranceFeeId","InsuranceFee","Amount","DisplayText","PaymentPlans","GroupPartnerDisplay","IsEndorsement","IsZipCodeForQuote","getQuoteRequestBase","isRetryPurchase","includeMultiPetDiscount","SelectedStateFactor","sendElectronicConsent","oneIncSrcEft","oneIncSrcCC","paymentDataToSend","OneIncCreditCard","CardExpirationMonth","CardExpirationYear","CardholderName","CardType","LastFourDigits","TokenId","OneIncEft","secondaryBillingAddress","MailAddressLine1","MailAddressLine2","MailAddressCity","MailAddressState","MailAddressZip","AppVersion","PrimaryFirstName","PrimaryLastName","PrimaryMobilePhone","PrimaryOtherPhone","PrimaryEMailConfirm","PrimaryPassword","PrimaryPasswordConfirm","LoginPassword","HasSecondaryOwner","SecondaryFirstName","SecondaryLastName","SecondaryMobilePhone","PetAddressLine1","PetAddressLine2","PetAddressCity","PetAddressState","PetAddressZip","MailAddressSameAsPet","HowDidYouHear","HasManualVet","SelectedVetID","VetCompany","VetCity","StateId","SelectedVet","SelectedVetName","SelectedVetCode","VetZip","VetAddress","IncludeMultiPetDiscount","Referrals","ElectronicOptOut","Comment1","HowDidYouHearId","Comment2","PaymentPlanEnum","Comment3","ShouldProcessPayment","Comment4","PaymentMethodEnum","Comment6","Comment5","isEBProduct","SendElectronicConsent","MembershipStatus","MembershipTier","getInsurancePetQuotes","hideModifiers","insuranceModifer","costcoModifiers","m","d","y","annualDollar","annnualCents","monthlyDollar","monthlyCents","allModifiers","extraCarePackSelected","extraCarePackChildrens","child","BreedId","AgeString","ActiveMilitary","DownPayment","DownPaymentDscr","AdminFee","FullPayCCCharge","Tax","ActualDownPayment","VersionId","LobId","PMSLOBId","CompanyId","PMSCompanyId","DOB","AnnualPayPremium","CloudOrderId","GetAnnualPayAtRate","NeedsPaymentInfo","HasWaitingPeriodWaiver","DisableEndorsements","PayrollDeduct","SelectedDeductibleId","SelectedReimbursementId","CoverageId","Coverages","InsuranceProductCoverages","ModifierDetails","InputText","InformationText","QuestionType","ModifierType","Discounts","IsServiceDog","IsExamFees","IsSpayedNeutered","VetPast12Months","DateOfBirthGuess","InvalidCombinationsPlan","PMSCoverageLimitId","SelectedPlanId","SelectedPlan","MostPopularPlan","MonthlyCost","DiamondPolicyId","ImportantMessage","IsAnnual","WebPreSelectedPlan","WebPreSelectedReimbursement","WebPreSelectedDeductible","IsExamFeesAllowed","IsMilitaryAllowed","IsVetShelterHumaneDiscountAllowed","IsHumaneDiscountAllowed","TotalDue","TotalDueDollars","TotalDueCents","MonthlyCostDollars","MonthlyCostCents","SelectedDeductibleDscr","SelectedReimbursementDscr","SelectedModifiers","doPurchase","multiPetDiscount","quoteRequestBase","multipleQuoteRequest","petListWithoutPetQuoteId","dataLayerBeginCheckout","resources","en","common","enrollment","EnrrollmentEn","landing","LandingEn","login","LoginEn","purchaseResult","PurchaseResultEn","QuotingEn","ger","LandingGer","i18n","use","initReactI18next","init","interpolation","escapeValue","lng","EXECUTIVE_BENEFIT_FIELDS","membershipTypeConfig","validateCostcoMembership","rateSummaryBody","useFeeWaived","useFeeWaivedBackend","urlMembership","apiCallMGMT","costcoResponse","valid","membershipTierDescription","t","rate","stateAbrv","isExecutive","fields","QuoteSiteD2CPurchaseV1T174566","urlConfig","configRequest","configPayload","IsEnrollmentFeeWaived","SuccessfulValidationMessage","Content","ExclusiveTitle","Benefits","_configRequest","stateIsNoFeeWaived","messageName","messageField","membershipTypeDescription","errorMessage","changeProceedWithoutCostcoMembership","_ref15","planChangedByQuoteId","saveNotifyMeValuesEmail","ModalContainer","ariaTitle","cancelable","classCloseIcon","disableClickOutside","displayTitleDivider","handleOutClick","idPrefix","idTitle","isMultiModal","show","keepInDOM","bottom","setBottom","modalDisappear","modalAppear","animationName","setAnimationName","idOuter","dialogId","closeId","containerId","resetModalState","handleCloseModal","_jsxs","role","tabIndex","FocusTrap","onAnimationEnd","_Fragment","alt","closeIcon","SavedElementContext","React","createContext","SavedElementProvider","refElement","refId","clean","saveId","saveElement","saveElementById","goToSavedElement","nodeName","goToSavedElementAndForgot","Provider","useSavedElement","useContext","FigoLottie","animationData","loadingSpinner","ariaLabel","ariaRole","loop","defaultOptions","autoplay","rendererSettings","preserveAspectRatio","Lottie","isClickToPauseDisabled","outline","FigoLoadingOverlay","loadingBadge","FeatureFlagContext","FEATURE_FLAGS_LOADED","FEATURE_FLAGS_FAILED","FEATURE_FLAGS_REQUESTED","flags","reducer","FeatureFlagProvider","useReducer","getFeatureFlags","d2cFlags","pre","dispatchEvent","Event","storeFeatureFlags","useFeatureFlag","featureKey","context","useRedesign","useRateSummary","isFeeWaivedBackend","getSelectedRateBody","selectedPackagePlan","getSelectedRate","MOBILE_WIDTH","useResponsive","isTablet","setIsTablet","outerWidth","isMobile","setIsMobile","handleResize","AvailableLanguages","changeLanguage","lenguage","useTranslations","translationFileName","keyPrefixValue","keyPrefix","useTranslation","useB2CInfo","accounts","inProgress","instance","useMsal","setB2cToken","history","useHistory","ropcError","setRopcError","loginB2CROPC","username","client_id","grant_type","response_type","scope","urlB2C","acquireTokenByPassword","error_description","access_token","id_token","loginB2CSilent","existingEmail","InteractionStatus","tokenRequest","account","loginHint","prompt","acquireTokenSilent","then","tokenResponse","accessToken","idToken","setActiveAccount","catch","InteractionRequiredAuthError","acquireTokenRedirect","loginB2C","urlState","href","hostname","acquireTokenPopup","BrowserAuthError","logoutB2C","logoutUrl","logoutRequest","getActiveAccount","logoutRedirect","gtmAuth","REACT_APP_GTM_AUTH","gtmPreview","REACT_APP_GTM_ENV","gtmCookies","useFeatureFlagLoadedValidation","featureFlagsLoaded","setFeatureFlagsLoaded","onFeatureFlagsLoaded","featureFlagsLoadedValidation","TYPE","FigoInputMessage","icon","infoIcon","succesIcon","errorIcon","SIZES","large","small","xl","FigoInput","forwardRef","autocomplete","containerClassName","hint","messageType","onChange","placeholder","readOnly","rightIcon","size","inputProps","sizeClassName","rightIconDisplay","lockIcon","describedbyId","htmlFor","autoComplete","TYPES","newCustomerEmail","petParenStreetAddress","petParenStreetAddress2","petParentCity","petParentFirstName","petParentLastName","petParentPhoneNumber","petParentState","petParentZipCode","secondaryPetParentLastName","secondaryPetParentMobilePhone","secondaryPetParentName","PetParentInfo","containerRef","containerSecondaryRef","focusInputWithError","sendCustomerLead","validatePetParentInfo","isMounted","setIsMounted","nameError","setNameError","lastNameError","setLastNameError","setStreetError","setCityError","phoneNumberError","setPhoneNumberError","secondParentNameError","setSecondParentNameError","secondLastNameError","setSecondLastNameError","secondParentPhoneError","setSecondParentPhoneError","isFirstValidation","setIsFirstValidation","petParentNameRef","firstInputWithErrorRef","titleRef","emailRef","_titleRef$current","isNopComercedDisabled","defaultStateByZipcode","onValueChanged","cleanValue","containsNumber","testContainNumber","onInputChangeCallback","callbackState","onInputFocusEmail","onRequiredInputBlur","setErrorCallBack","toggleSecondaryPetParentForm","getStreetError","onStreetInputBlur","onStreetValueChanged","onSecondPhoneNumberBlur","getPhoneError","onPhoneNumberBlur","onPhoneNumberChanged","onlyNumbersValue","onSecondStreetAddressBlur","onSecondaryPetInputBlur","inputErrorCallBack","prevEmail","previousEmailValidated","nameErrorLocal","lastNameErrorLocal","streetErrorLocal","cityErrorLocal","phoneNumberErrorLocal","secondParentNameErrorLocal","secondLastNameErrorLocal","secondPhoneErrorLocal","validateFields","setRef","node","maxLength","setEmailRef","required","plusIcon","FakeCheckbox","isChecked","checkedIcon","PaymentSummary","paymentType","getTotalMonthlyAmount","totalMonthlyAmount","dollar","cent","getTotalAnnualAmount","totalAnnualAmount","getMonthlyFeeLegend","BillingCycleType","getMonthlyFee","getAnnualyFeeLegend","getAnnualyFee","renderMonthlyFee","renderAnnualFee","onPlaymentPlanChanged","getBillingCycleAriaLabel","isMonthlyCard","quantityAmount","feeLabelLegend","currentLabelSelected","bilingPaymentCycle","feeLabel","OneIncModal","onComplete","styleUpdate","emailValiated","divRef","updateButtonRef","setLoading","renderTwoPaymement","trackPaymentMethodAddition","useTrackingPaymentMethodAddition","trackPaymentMethodSelection","useTrackingPaymentMethodSelection","saveComplete","handleComplete","unLoad","onError","useLayoutEffect","$","off","on","initOneIncListener","billingAddressStreet","billingZip","clientReferenceData1","confirmationDisplay","policyHolderName","portalOne","onAddPaymentMethod","Result","onDefaultPaymentMethodUpdated","updatePaymentMethods","paymentMethodSelected","renderUpdateButton","centerButtom","spinner","renderOneItemDetails","subTitle","renderCreditCardDeatils","subtitle","creditCardNavyIcon","renderBankAccountDetails","bankAccountIcon","renderCheckBox","checked","methodData","onUndoChage","renderChargeWarning","warningIcon","renderDisclaimer","_store$partners$data","SupportPhoneNumber","cardIcon","renderTwoCardDetails","Key","petsNames","firtsPets","endPet","undoIcon","renderWarning","PaymentMethod","showError","ill9","PurchaseStickyBar","onPurchaseClick","onBackClick","goBack","arrowRightIcon","RECAPTCHA_SRC","YourInfoFooter","handleContinuePurchaseClick","isPurchaseValid","isSecondStep","petCloudLoginSuccess","isRedesign","scriptRecaptchaLoaded","isLoaded","setLoaded","onLoad","remove","useInjectScript","_purchase$incompleteP","goToPurchaseScreen","handleReturnToPlansClick","renderContentButton","continueToPaymentsArrow","onContinueWithoutLoginClick","forceNopCommerUser","handleOnPurchaseQuote","onSubmit","_getPartnerData","isValidToken","_ref60","user","isTokenValid","Origin","Token","_response6","validateRecaptchaToken","handleSubmit","grecaptcha","ready","execute","ill4","Checkbox","errorClasName","isRounded","keepSpaceError","TermsAndConditions","triggerValidation","handleConsentDeliveryClick","handleTermsAndConditionsModalOpen","handleUnderstandConditionModalOpen","IsElectronicConsent","rel","TagPetCover","dogTag","catTag","PartnerDiscountCallout","membershipImage","messageTitle","messageContent","BreakdownItem","bold","toBottom","PetBreakdown","quoteRate","isExpanded","setIsExpanded","MembershipValidation","handleExpanded","prevExpanded","modifiersMapped","oneTimeFee","installmentFee","applyDiscount","taxes","quoteSummary","MonthlyTaxes","AnnualTaxes","taxesItems","taxesReduced","taxesTotal","oneTimeAmount","installmentAmount","executiveMembership","_MembershipValidation","MembershipTypes","membership","petContainerId","collapseIcon","expandIcon","Image","PaymentBreakdown","TooltipDiscount","tooltipVisible","setTooltipVisible","handleHoverIn","handleHoverOut","handleClick","onMouseEnter","onMouseLeave","HtmlContent","elementId","setAttribute","Label","discountLabel","CostcoPartnerDiscountLabel","_store$partners","discountTotal","showDecimals","Logo","discountTag","GenericPartnerDiscountLabel","logo","brandName","usePartnersData","goodDogData","useGoodDogData","isPickupDateValid","isPickupDateValid7Days","onPetPickupDateChange","updateRateByPickupDate","petSelected","useTennesseeValidations","renderCardPlanHeader","DiscountLabel","PartnerDisplayName","supportPhoneNumber","isPartner","DiscountTagItem","DiscountApplied","count","_item$Description","YourFirstPayment","day","ordinalDay","getTotal","monthlyTotal","todaysTotal","calendarIcon","colors","MINT","NAVY","WHITE","LoadingButton","buttonEvents","loadingColor","submit","whiteSpinner","mintSpinner","navySpinner","CostcoMembershipValidator","goToCustomize","membershipInputRef","membershipTypes","waivableFeeMemo","Fee","callValidateCostcoMembership","select","preventDefault","changeCostcoMembershipNumber","renderButton","isProceedWithoutPartner","KEY_IS_OPEN_QUOTE","ImportantDatesNewDesign","contentRef","InsuranceInformationTypeId","getEffectiveDate","now","importantDates","InsuranceWaitingPeriods","dateText","Units","IsMonth","InsuranceWaitingPeriodType","renderImportantDatesList","YourInfoFloatingImages","isLoggedIn","ill14","Loading","border","color","borderColor","PLAN_VALUES","QuoteLinks","comparableQuote","linkUrl","Prop103DisclaimerText","setComparableQuote","displayLink","isQuoteLoading","setQuoteLoading","logProp103Request","apiUrl","payloadQuote","quotePlan","quotePrice","annualLimit","years","accidentOnly","premiumMonthly","requestingInsurer","apiClient","promises","reject","makeRequest","_response$data","_response$data2","errorMsg","all","quotesToDisplay","Trans","components","i18nKey","ns","TemporaryMessage","sticky","positionBottom","setIsVisible","site","QuoteSiteD2CPurchaseV1T169319","isProdEnv","messageResponse","messagePayload","fetchTemporaryMessage","handleCloseClick","dangerouslySetInnerHTML","__html","QuestionsSection","isQuote","isLogin","isPurchase","supportDesc","supportSchedule","extraNumber","supportDesc2","emailDesc","SupportLabel","SupportSchedule","IncompleteSelectionError","QuoteSizeWarning","petsLimit","PICKUP_DATE_MIN","YourInfoContent","validateTermsAndConditions","setValidateTermsAndConditions","setValidatePetParentInfo","validatePetCloudLogin","setValidatePetCloudLogin","yourVeterinarianRef","setYourVeterinarianRef","isAuthenticated","useIsAuthenticated","useLocation","renderCostcoMembershipValidator","currentUrl","validateCustomerB2C","scrollTermCondition","setScrollTermCondition","termConditionsRef","scrollPaymentMethod","setScrollPaymentMethod","paymentMethodRef","showPaymentMethodError","setShowPaymentMethodError","scrollPetParentInfo","setScrollPetParentInfo","goToFirstErrorInput","setGoToFirstErrorInput","petParentInfoRef","redirectToCustomize","setRedirectToCustomize","scrollPetParentInfoSecond","setScrollPetParentInfoSecond","petParentInfoSecondRef","useProp103","SiteMessages","bankValidations","routing","checksumTotal","charAt","isRoutingNumberValid","creditCardValidations","cvv","isValidDate","today","currentYearRaw","currentYear","currentMonth","getMonth","monthRaw","month","yearRaw","year","isValidCardExpirationDate","isPaymentMethodValid","pickupDateValid","isTermsAndConditionsValid","isPetParentInfoValid","isSecondParentInfoValid","isNewCustomerValid","isSecondBillingAddressValid","behavior","top","createCustomer","_ref30","stateAbbreviation","stateName","StateAbbreviation","Zip","Phones","Primary","_response2","createDiamondClient","onBurPetPickupDate","PlanSummary","costcoMembershipSetErrorMessage","ScrollableDiv","scrollbarMargin","ignoredKeys","DropdownAddPet","isLanding","petAgeRef","petBreedRef","requiredError","showShimmer","withInput","open","setOpen","searchInput","setSearchInput","setError","itemsFiltered","setItemsFiltered","itemSelectedId","setItemSelectedId","searchRef","dropdownHeaderRef","selectedItemRef","containerItemRef","currentSelection","setActiveDescendant","currentRef","selectedItemId","getAttribute","scrollItemListToView","toggle","handleDropDownContainer","dropdownCurrent","inputCurrent","handleOnClickItem","handleOnKeyPressItem","handleSearchInputChanged","inputSearch","ageDataFiltered","_containerItemRef$cur","_containerItemRef$cur2","filterItems","handleArrowKeyPressed","factor","newId","handleOutsideClick","handleInputFocus","renderSearchInput","valueToShow","isPlaceHolder","ItemList","ItemListNotFoundText","notFoundText","ItemListNotFound","getAriaPropsForDiv","classNameShimmer","renderContainer","renderHeaderDropdown","ArrowDown","resultsNotFound","renderItems","textError","renderErrorMessage","SpecieSelectorItem","handleSpecieSelected","petIcon","petInactiveIcon","petSpeciesRef","AddPetSpecieSelector","catSelected","dogSelected","dogSpeciesRef","handleCatSelected","handleDogSelected","InputError","selected","dogIcon","dogInactiveIcon","catIcon","catInactiveIcon","AddPetGenderSelector","handleFemaleGenderSelected","handleMaleGenderSelected","maleGenderRef","petGenderSelected","maleGender","femaleGender","TooltipContainer","arrowPaddingLeft","arrowPosition","backgroundColor","styleContent","containerLocation","clientHeight","left","opacity","arrowStyle","paddingLeft","borderTop","AddPetForm","ageError","breedError","getQuote","handleEmail","handleOnCancelClick","handlePetNameChange","handlePromoCodeChange","handleSubmitPetForm","handleZipcodeChange","isEditing","onBlurEmail","onBlurPetName","onBlurPromoCode","onBlurZipcode","onFocusEmail","onFocusPetName","onFocusZipcode","petEmailRef","petGenderError","petGenderRef","petNameError","petNameRef","petPickupDateRef","petTypeError","petTypeRef","petZipcodeRef","setPetGenderError","setPetTypeError","setTermsPolicyError","termsPolicyError","zipCodeError","shimmerWidth","promoDesc","breedList","hasCodeGroupDscr","onCancelClick","onChangeAcceptTerms","zipCodeEditable","getZipCodeValue","progressIdCount","input","progressQueue","numberOfFields","promoCodeMemo","GoodDogInfoIcon","term","buttonContent","renderButtons","ModalAddPet","_partnerRowInformatio","handleCloseModalAddPet","partnerRowInformation","detailMessage","membersInfo","validateOnMount","firstMount","setFirstMount","setPetNameError","setEmailError","setZipcodeError","setAgeError","setBreedError","validating","setValidating","isFocusTrapActive","setIsFocusTrapActive","breedPayload","breedResponse","agePayload","ageResponse","getBodyForQuote","isEditingPet","currentPets","newPetIdAdded","petNameTyped","promoCodeTyped","isValidZipCode","zipValid","_ref22","validZipCode","areTermsRejected","handleEnterPress","newPetName","doFormValidations","newPromoCode","handleOnSaveClick","validZipCodeComingSoon","bodyWithDiamondClientId","petIndex","urlQuoting","onClickGetQuote","queryString","parseUrl","agentIdParam","quoteBase","_Data$HasPassword","urlLogin","petPickupDateError","ModalRemovePet","handleCancelRemovePetClick","dogIconActive","catIconActive","handleRemovePetClick","newPetQuoteSelected","newQuoteSelectedValues","newQuoteId","doneSpinner","MultiModalInfoItemMenu","buttonRef","MultiModalInfoItemContent","bulletIcon","customStyle","subtitleStyle","titleStyle","isBold","isNotCovered","singleItem","subtitleRef","iconClassname","iconStyle","MultiModalInfo","menuSelected","modalId","sideMenuRef","handleDelayShimmer","handleMenuItemClick","categoryList","InsuranceMultiModalCategoryDtoList","getCategoryList","SubTitle","headerTitle","categoryContent","menuContentList","menuContent","menuContentCagegoryList","InsuranceMultiModalItemsDtoList","getCategoryContent","onCloseModal","figoLogo","SectionName","getModalTitle","BulletIconUrl","BulletIcon","IsBold","ItemSubText","ItemSubtext","ItemLabel","InputWithError","absoluteButtonContent","containerClass","inputClass","isCurrency","labelClass","labelContainerClass","labelError","labelErrorClass","onAbsoluteBtnClick","internalError","setInternalError","showInternalError","setShowInternalError","eventFormated","validateValue","testNumberWithDecimal","SaveYourQuoteModal","setFirstName","firstNameError","setFirstNameError","setLastName","setEmail","setEmailNameError","anyError","validateFirstName","validateLastName","validateEmailAddress","handleEmailChanged","InboxIcon","SidebarSaveQuoteModalConfirmation","handleOnClick","CustomModal","buttonText","displayButton","imageSrc","imgAlt","onButtonClick","closeIconButton","closeIconCustomModal","ComingSoonModal","modalVisible","modalEmail","setModalEmail","modalEmailError","setModalEmailError","setInitialEmail","resetEmailLogin","errorModalButtonClick","renderErrorModal","cloudsIcon","onSubmitEmail","comingSoonIcon","successIcon","renderComingSoonModal","StickyBarHeightContext","setStickyBarHeight","stickyBarHeight","useStickyBarHeight","StickyBarHeightProvider","PriceStickyBar","stickyBarRef","adjustMainContentPadding","mainContent","querySelector","barHeight","offsetHeight","paddingBottom","resizeObserver","ResizeObserver","observe","unobserve","nextStepLabel","quoteTotal","allQuotes","removeDuplicates","array","uniqueSet","has","previous","numberOfPets","onContinueClick","pqRateItem","powerUpValidation","allPetsAreValid","dataLayerAddToCart","EffectiveDateCustom","WhatsCoveredLink","ariaControls","isHeader","PowerUpTitle","addedLabel","localSelected","checkIcon","Switch","customClassname","switchBallColor","switchRef","RadioButton","selectedRadio","deselectedRadio","PowerUpCard","bundleCoverageClick","bundleModifierAdd","bundleModifierCheckSelection","handleAddPowerup","handleRemovePowerup","hideInfoImage","onClickWhatsCovered","powerUpInfo","startingText","setMounted","setLocalSelected","handleInfoPowerup","renderInfoImage","infoSelected","handleAddPowerupCallback","handleRemovePowerupCallback","handleAddPowerupOption","handleRemovePowerupOption","_powerUpInfo$BundleIn","contentModifiers","bundleModifiers","reverse","renderOptions","PowerUpCoPayModal","handleContinue","handleNeverMind","onConfirmCallback","ActiveCopayImg","PowerUpCoPay","onCancelCallback","onClickHowItWorks","sub","HowItWorks","InfoImage","CopayImg","PowerUpSection","currentZipCode","wellnessText","perIncidentCoPayPowerup","getPetName","petNameFactor","slice","powerupIdToScroll","addOrUpdatePowerUp","base","toAdd","newBase","previosQuoteModifiers","_ref48","powerUpSelected","BenefitParentId","quoteModifier","currentModifier","petModifier","wellnessPowerUp","wellnessFather","wellnessChildrens","wellnessChildrensIds","previousWellness","prevModifier","childsWellness","isPicpSelected","chidlrenPICP","getPowerUpPrice","powerUpSelectedHandle","handleSeeWhatsCovered","wellnessTypeFromEvent","menuId","subnMenuId","getFirstCategoryId","multiModalContent","OptionalBenefitsDetailsItem","_ref42","multiModalCustomContenChanged","selectedModifier","defaultModifier","checkboxWellnessPrefix","quoteValues","renderContent","MaximumAnnualBenefit","handleToggle","resetAriaLabel","isWellness","renderPowerUps","MyPetsContainer","_data$petQuoteRespons","handleAddPetClick","_buttonRef$current","blur","ill10","CardPlanMainHeaderCompany","isYourInfo","YourInfoComponent","NeedToKnowNewDesign","isEnrollment","classContainer","enrollmentClass","NeedToKnowRow","ill12","SaveYourQuoteButton","handleSaveYourQuote","ill16","CoveredElements","_store$data$CoverageI","activeIndexes","setActiveIndexes","whatsCovered","coverage","CoverageInformation","WhatsCovered","toggleAccordion","prevActiveIndexes","i","Icon","lessIcon","WhatFigoCovers","QuotingFloatingImages","ill5","TOOL_TIP_POSITION","center","containerArrowPosition","end","start","IconTooltip","descriptionClassName","position","iconRef","borderStyle","borderWidth","borderTopColor","borderTopStyle","borderTopWidth","DropdownItemList","listSize","IGNORED_KEYS_BASE","Dropdown","ariaLabelledBy","disableArrowAnimation","dropdownIcon","headerClassName","idPostfix","listClassName","noFoundItemsText","onItemSelected","petParentInfo","valueSelected","pressedKeys","browser","useGetNavigator","setBrowser","sBrowser","sUsrAg","handleDropdownClick","dataFiltered","newItem","getDropdownId","arrowDown","SelectorPill","itemExtraData","handleChange","SelectorPills","tooltipDescription","onOptionClick","titleForId","SelectorCombobox","arrowsIcon","SelectorCombo","DeductibleReimbursement","isEssentialSelected","deductibles","setDeductibles","reimbursements","setReimbursements","trackReimbursementSelection","useTrackingReimbursementSelection","newDeductible","currentDeductibleId","currentCombination","Invalid","deductibleAvailable","available","getDeductibleUpdated","trackDeductibleSelection","useTrackingDeductibleSelection","plansItems","isUltimateSelected","updateDeductible","updateReimbursement","reimbursementAvailable","onReimbursementChange","onDeductibleChange","onCoverageChange","deductiblesFilter","deductiblesAvailables","currentDeductible","nameLegend","changeDeductibleLegend","reimbursementsFilter","headsUpClass","deductibleLegendClass","deductibleLegendContainer","PrepackagedPlanCard","activeIcon","billingCycleLabel","bottomDisclaimer","inactiveIcon","onPlanChange","isCustom","priceParts","integer","decimal","ariaPlanLabel","billingCycleLecture","desktop","mobile","PlansSection","ESSENTIAL_PLAN","planIdSelected","setPlanIdSelected","prevPlanIdSelected","isCustomPlanSelected","onChangePrepackagedPlan","onChangeCustomPlan","customPlanDisclaimer","byPet","PrepackagedPlanDisclaimer","getAriaLabelSelected","customActive","customInactive","WhatsNotCovered","notCovered","NotCovered","SeeFullCoverage","handleButtonClick","CardPlanMain","extoleEvents","setCurrentZipCode","NeedToKnowSection","QuoteContent","ModalCustomerWelcome","goTo","locationParams","PREFERRED_PLAN","ULTIMATE_PLAN","isNewZipcode","_nopCommerceUser$Addr","syncIcon","_ref57","reRateByNopCommerCustomer","handleCloseFocus","ModalCustomerLogin","emailUser","isModal","onForgotPassword","onDismiss","setPassword","passwordInput","createRef","onChangePassword","onSubmitLogin","showPasswordOrUserError","onFocusPassword","onChangeEmail","syncClouds","ModalForgetPassword","onModalClosed","RoundButton","primary","cn","PetRow","policyNumber","IdenticalPurchases","onClose","syncCloud","values","phone","PartialIdenticalPurchases","petQuotesToRemove","newPetQuoteList","qsv","pqtr","newPetSelected","alertIcon","DuplicatedPurchasesModal","duplicated","isIdenticalPurchase","handleClose","HeaderUnderwriting","MyQuote","myQuoteFlatCorner","getQuoteTotal","renderQuoteTotal","QuotingStepsComponent","figoSmallLogoVisible","handleStepClick","stepClicked","module","getAriaLabel","selectedText","secondLineClassName","_path","_path2","_extends","assign","bind","source","prototype","hasOwnProperty","call","apply","this","SvgRemove","svgRef","titleId","viewBox","fill","xmlns","ForwardRef","SvgEditPencilCitron","fillRule","clipRule","DropDownIcon","isOpen","dropDownItemType","dogPlaceHolder","catPlaceHolder","addIcon","PetQuoteInfo","handleCancelRemovePet","marginRight","PetQuoteConfirmButton","onEditPet","onRemovePet","PencilIcon","RemoveIcon","usePetQuoteDropdown","onRemovePetAskConfirmation","PetQuoteDropDownItem","onAddPetClick","onEditPetSelection","onHeaderClick","onItemClick","petQuoteToEdit","showEditSection","setShowEditSection","isAddPet","quoteCount","petActionText","handleItemClick","handleEditPet","toogleEdtiSection","shiftKey","renderLabel","renderChildren","PriceLog","memo","setLabel","prevTotal","cleanLog","PetQuoteDropDown","customClass","hideAddPet","setIsOpen","petQuoteToRemove","setPetQuoteToRemove","route","shouldRenderPriceLog","isExact","prevIsOpen","prevLength","handleHeaderOnClick","handleRemoveItem","hasMoreThanOnePet","renderChildList","petItems","ActionItem","focused","onAction","PetDot","hasError","PetSelectorItem","_petTabRef$current","isSelectedPetValid","isSinglePet","onPetSelected","petsCount","listRef","menuButtonRef","selectedActionRef","itemRef","petTabRef","targetRef","root","rootMargin","threshold","handleVisibility","entry","isIntersecting","observer","IntersectionObserver","useVisibilityObserver","prevState","petQuoteTotal","scrollIntoView","block","inline","handleFocus","handleOpen","goFirstItem","childNodes","firstItem","goLastItem","handleMenuClick","handlePetKeyDown","itemId","petTabId","petInfoId","menuIconId","menuListId","selectActionId","editActionId","removeActionId","onPowerupsValid","handleSelection","handleAction","actionId","actions","editAction","moveBetweenActions","_selectedActionRef$cu","newIndex","handleMenuListKeyDown","editIcon","getBoundingClientRect","x","PetSelector","hideInteraction","selectedPetQuote","_petQuoteList","isVisiblePetValidPowerUps","handlePetSelection","arrowIconsData","_petQuoteList2","_petQuoteList3","_petQuoteList$","_petQuoteList4","arrowData","newPos","prevPet","arrowEnabled","right","nextPet","arrowDisabled","handleArrowClick","newPetQuote","Header","isError","isFirstStep","isWelcomeStep","verticalScrollValue","useOnBodyScrollEvent","setVerticalScrollValue","onScrollBody","isOnTopScreen","showFloating","QuotingHeader","showModalLogin","setShowModalLogin","bodyStyle","showLoadingOverlay","_ref41","partnerParam","_payload","_response5","loadMultiModalData","isFreeUser","isLoadingSessionInformation","onDismissLoginModal","handleForgetPasswordClick","Route","exact","handleOnClickCloseConfirmationModal","FooterLink","FooterLinks","extraLinks","links","link","Fragment","QuotingFooter","customFooterText","notesRef","footerRef","sup1","currentLocation","containerStyle","footerClassName","purchaseStickyBarHeight","marginBottom","PageNotFound","OpenQuote","queryParams","partnerguid","quoteid","encodeURIComponent","redirectOnceLoadIsCompleted","LandingHeader","TopDisclaimer","LandingRightContainer","PartnerInformationRow","partnerImage","LandingLeftContainer","_partnerRowInformatio2","partnerWelcomeText","row","Order","LandingFooter","disclaimers","disclaimerReduced","footerContent","VipSupportBanner","LandingPage","disclaimerRef","setTriggerValidation","saveNewPetGroupCodeDscr","ageFound","breedFound","usePartnerSubId","showLoadingModal","WelcomeText","WelcomeTitle","ModalError","GenericErrorModalContainer","goToLanding","landingUrl","stringifiedParams","partnerURL","handleErrorModalOutClick","cancellable","PurchasePage","QuestionsInfo","deskHelpIcon","PetPurchaseFailureCard","PetPurchaseSuccessCard","okIcon","PetPurchaseResult","errorType","PetCloudSection","isFullySuccess","isCardFooter","messageSent","setMessageSent","inputPhoneValue","setInputPhoneValue","flexDirection","sanitizeText","getAriaLabelSendMessage","toPhone","_ref40","bodyPost","QuoteSiteD2CPurchaseV1T169312","sendSMSAppsLinks","google","qr","Toggle","labelClassName","TextAlertsSection","setPhoneNumber","acceptSMS","setAcceptSMS","signUpError","setSignUpError","signUpAvailable","openExternal","prevAcceptSMS","policyBuyed","PurchaseSuccess","fromApp","purchaseEvent","_policyNumbers$","handleOnComplete","incompletePurchasesByPayment","incompletePurchasesByOther","_store$purchase","downArrow","PurchaseError","handleErrorGoBack","Logout","Redirect","to","PageTabTitle","titlePrefix","SalesforceInteractions","Footer","SavedQuoteExpired","handleGetNewQuote","linkExpired","HeaderIAIC","HEADER_TEXT","headerInfo","section","renderText","LoginAccountScreen","setPasswordError","logginMessageResponse","onEmailChanged","onPasswordChanged","newQuery","onResetPasswordClick","_state$hasPassword","isValidEmail","arrow","TrackingLoadQuoteOnRefresh","PurchaseButtons","onReturnSummary","backIcon","PurchaseRetryScreen","totalToday","handlePurchase","GoodDogComingSoonModal","ModalMultiQuoteLoading","extraClassWith","catPlaceholder","dogPlaceholder","URLS_VALID","VersionData","createPortal","head","RedirectWithParameters","originalParameters","originalParametersMap","App","scriptTemplate","noscriptTemplate","scriptEl","noscriptEl","insertBefore","firstChild","removeChild","orderId","validStoredQuote","validLoadCache","_ref58","impersonate","impersonatingAdminEmail","publicToken","rateUrl","QuoteSiteD2CCustomerV1T172565","loginUrl","urlToLog","payloadToLog","loginResponse","loginData","CustomerEmail","rateDate","loadQuoteDataByOrderId","testEffectiveDate","loadQuoteData","component","StorageProvider","msalInstance","PublicClientApplication","container","createRoot","render","StrictMode","MsalProvider","Router","basename","serviceWorker","registration","unregister"],"mappings":"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","file":"static/js/main.55a86f34.chunk.js","sourcesContent":["/* eslint-disable no-console */\n/* eslint-disable max-len */\nimport { LogLevel } from '@azure/msal-browser';\n\n/**\n * Enter here the user flows and custom policies for your B2C application\n * To learn more about user flows, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview\n * To learn more about custom policies, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview\n */\nexport const b2cPolicies = {\n authorities: {\n signUpSignIn: {\n authority: `https://${process.env.REACT_APP_B2C_URL}/${process.env.REACT_APP_B2C_TENANT_URL}/${process.env.REACT_APP_B2C_SIGNIN_NAME}`,\n redirectUrl: `${window.location.origin}/getQuote`,\n },\n },\n authorityDomain: process.env.REACT_APP_B2C_URL,\n names: {\n signUpSignIn: process.env.REACT_APP_B2C_SIGNIN_NAME,\n },\n};\n\n/**\n * Configuration object to be passed to MSAL instance on creation.\n * For a full list of MSAL.js configuration parameters, visit:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\n */\nexport const msalConfig = {\n auth: {\n authority: b2cPolicies.authorities.signUpSignIn.authority, // Choose SUSI as your default authority.\n clientId: process.env.REACT_APP_B2C_CLIENT_ID, // This is the ONLY mandatory field that you need to supply.\n knownAuthorities: [b2cPolicies.authorityDomain], // Mark your B2C tenant's domain as trusted.\n navigateToLoginRequestUrl: false, // If \"true\", will navigate back to the original request location before processing the auth code response.\n postLogoutRedirectUri: b2cPolicies.authorities.signUpSignIn.redirectUrl, // Indicates the page to navigate after logout.\n redirectUri: b2cPolicies.authorities.signUpSignIn.redirectUrl, // You must register this URI on Azure Portal/App Registration. Defaults to window.location.origin\n },\n cache: {\n cacheLocation: 'sessionStorage', // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\n },\n system: {\n loggerOptions: {\n loggerCallback: (level, message, containsPii) => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case LogLevel.Error:\n console.error(message);\n return;\n case LogLevel.Info:\n console.info(message);\n return;\n case LogLevel.Verbose:\n console.debug(message);\n return;\n case LogLevel.Warning:\n console.warn(message);\n break;\n default:\n break;\n }\n },\n },\n },\n};\n\n/**\n * Scopes you add here will be prompted for user consent during sign-in.\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\n * For more information about OIDC scopes, visit:\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\n */\nexport const loginRequestScope = {\n scopes: ['openid'],\n};\n\n/**\n * Add here the scopes to request when obtaining an access token for MS Graph API. For more information, see:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\n */\nexport const graphConfig = {\n graphMeEndpoint: 'Enter_the_Graph_Endpoint_Herev1.0/me', // e.g. https://graph.microsoft.com/v1.0/me\n};\n","/* eslint-disable max-len */\nexport const ACCOUNT_NUMBER_CHANGED = 'ACCOUNT_NUMBER_CHANGED';\nexport const ACCOUNT_NUMBER_ERROR_CHANGED = 'ACCOUNT_NUMBER_ERROR_CHANGED';\nexport const ACCOUNT_TYPE_CHANGED = 'ACCOUNT_TYPE_CHANGED';\nexport const ADDRESS_BY_ZIP_CODE_LOADED = 'ADDRESS_BY_ZIP_CODE_LOADED';\nexport const ADDRESS_BY_ZIP_CODE_REQUESTED = 'ADDRESS_BY_ZIP_CODE_REQUESTED';\nexport const AGE_DATA_ERROR = 'AGE_DATA_ERROR';\nexport const AGE_DATA_LOADED = 'AGE_DATA_LOADED';\nexport const AGREE_TERMS_AND_CONDITION_CHANGED = 'AGREE_TERMS_AND_CONDITION_CHANGED';\nexport const ALL_PETS_POWERUPS_VALIDATED = 'ALL_PETS_POWERUPS_VALIDATED';\nexport const AMERICAN_STATES_LOADED = 'AMERICAN_STATES_LOADED';\nexport const BREED_DATA_ERROR = 'BREED_DATA_ERROR';\nexport const BREED_DATA_LOADED = 'BREED_DATA_LOADED';\nexport const CARD_CVV_CHANGED = 'CARD_CVV_CHANGED';\nexport const CARD_CVV_ERROR_CHANGED = 'CARD_CVV_ERROR_CHANGED';\nexport const CARD_NUMBER_CHANGED = 'CARD_NUMBER_CHANGED';\nexport const CARD_NUMBER_ERROR_CHANGED = 'CARD_NUMBER_ERROR_CHANGED';\nexport const COMING_SOON_ERROR_MODAL_CLOSED = 'COMING_SOON_ERROR_MODAL_CLOSED';\nexport const COMING_SOON_MODAL_CLOSED = 'COMING_SOON_MODAL_CLOSED';\nexport const COMING_SOON_SUCCESS_MODAL_CLOSED = 'COMING_SOON_SUCCESS_MODAL_CLOSED';\nexport const CONFIRM_ACCOUNT_NUMBER_CHANGED = 'CONFIRM_ACCOUNT_NUMBER_CHANGED';\nexport const CONFIRM_ACCOUNT_NUMBER_ERROR_CHANGED = 'CONFIRM_ACCOUNT_NUMBER_ERROR_CHANGED';\nexport const CONSENT_ELECTRONIC_DELIVERY_CHANGED = 'CONSENT_ELECTRONIC_DELIVERY_CHANGED';\nexport const CONTINUE_WITHOUT_LOGIN = 'CONTINUE_WITHOUT_LOGIN';\nexport const COSTCO_MEMBERSHIP_EDIT_CLICKED = 'COSTCO_MEMBERSHIP_EDIT_CLICKED';\nexport const COSTCO_MEMBERSHIP_ERROR_MESSAGE_SET = 'COSTCO_MEMBERSHIP_ERROR_MESSAGE_SET';\nexport const COSTCO_MEMBERSHIP_NUMBER_CHANGED = 'COSTCO_MEMBERSHIP_NUMBER_CHANGED';\nexport const COSTCO_MEMBERSHIP_VALIDATED = 'COSTCO_MEMBERSHIP_VALIDATED';\nexport const COSTCO_MEMBERSHIP_VALIDATION_FAILED = 'COSTCO_MEMBERSHIP_VALIDATION_FAILED';\nexport const COSTCO_MEMBERSHIP_VALIDATION_STARTED = 'COSTCO_MEMBERSHIP_VALIDATION_STARTED';\nexport const CREATE_DIAMOND_CLIENT_ATTEMPT = 'CREATE_DIAMOND_CLIENT_ATTEMPT';\nexport const CREATE_DIAMOND_CLIENT_ERROR = 'CREATE_DIAMOND_CLIENT_ERROR';\nexport const CREATE_DIAMOND_CLIENT_SUCCESS = 'CREATE_DIAMOND_CLIENT_SUCCESS';\nexport const CREATE_LIVE_VET_NEW_ACCOUNT_ATTEMPTED = 'CREATE_LIVE_VET_NEW_ACCOUNT_ATTEMPTED';\nexport const CREDIT_CARD_TYPE_CHANGED = 'CREDIT_CARD_TYPE_CHANGED';\nexport const CURRENT_QUOTE_STEP_CHANGED = 'CURRENT_QUOTE_STEP_CHANGED';\nexport const CUSTOM_VET_CITY_CHANGED = 'CUSTOM_VET_CITY_CHANGED';\nexport const CUSTOM_VET_DATA_CLEARED = 'CUSTOM_VET_DATA_CLEARED';\nexport const CUSTOM_VET_MODAL_OPENED = 'CUSTOM_VET_MODAL_OPENED';\nexport const CUSTOM_VET_PRACTICE_NAME_CHANGED = 'CUSTOM_VET_PRACTICE_NAME_CHANGED';\nexport const CUSTOM_VET_SAVED = 'CUSTOM_VET_SAVED';\nexport const CUSTOM_VET_STATE_CHANGED = 'CUSTOM_VET_STATE_CHANGED';\nexport const CUSTOMER_PASSWORD_SET = 'CUSTOMER_PASSWORD_SET';\nexport const CUSTOMER_VALIDATED = 'CUSTOMER_VALIDATED';\nexport const CUSTOMER_VALIDATION_ATTEMPT = 'CUSTOMER_VALIDATION_ATTEMPT';\nexport const CUSTOMER_VALIDATION_ERROR = 'CUSTOMER_VALIDATION_ERROR';\nexport const CUSTOMER_VALIDATION_RESTARTED = 'CUSTOMER_VALIDATION_RESTARTED';\nexport const DEDUCTIBLE_LEGEND_CHANGED = 'DEDUCTIBLE_LEGEND_CHANGED';\nexport const DIAMOND_CUSTOMER_LOGIN_ATTEMPT = 'DIAMOND_CUSTOMER_LOGIN_ATTEMPT';\nexport const DIAMOND_CUSTOMER_LOGIN_CLEANED = 'DIAMOND_CUSTOMER_LOGIN_CLEANED';\nexport const DIAMOND_CUSTOMER_LOGIN_FAILED = 'DIAMOND_CUSTOMER_LOGIN_FAILED';\nexport const DIAMOND_CUSTOMER_LOGIN_SUCCESS = 'DIAMOND_CUSTOMER_LOGIN_SUCCESS';\nexport const DIAMOND_CUSTOMER_LOGOUT = 'DIAMOND_CUSTOMER_LOGOUT';\nexport const DIAMOND_CUSTOMER_RESETED_LOGIN_FAIL = 'DIAMOND_CUSTOMER_RESETED_LOGIN_FAIL';\nexport const DIAMOND_CUSTOMER_VALIDATION_ATTEMPT = 'DIAMOND_CUSTOMER_VALIDATION_ATTEMPT';\nexport const DIAMOND_CUSTOMER_VALIDATION_FAILED = 'DIAMOND_CUSTOMER_VALIDATION_FAILED';\nexport const DIAMOND_CUSTOMER_VALIDATION_LOADED = 'DIAMOND_CUSTOMER_VALIDATION_LOADED';\nexport const DIAMOND_CUSTOMER_ZIPCODE_CHANGED = 'DIAMOND_CUSTOMER_ZIPCODE_CHANGED';\nexport const DUPLICATED_VALIDATION_FAILED = 'DUPLICATED_VALIDATION_FAILED';\nexport const DUPLICATED_VALIDATION_MODAL_CLOSED = 'DUPLICATED_VALIDATION_MODAL_CLOSED';\nexport const EFFECTIVE_DATE_CUSTOM_CHANGED = 'EFFECTIVE_DATE_CUSTOM_CHANGED';\nexport const ERROR_MODAL_CLOSED = 'ERROR_MODAL_CLOSED';\nexport const EXPIRATION_DATE_CHANGED = 'EXPIRATION_DATE_CHANGED';\nexport const EXPIRATION_DATE_ERROR_CHANGED = 'EXPIRATION_DATE_ERROR_CHANGED';\nexport const EXTOLE_PURCHASE_COMPLETED = 'EXTOLE_PURCHASE_COMPLETED';\nexport const EXTOLE_UUID_SAVED = 'EXTOLE_UUID_SAVED';\nexport const FAILED_TO_LOAD_ADDRESS_BY_ZIP_CODE = 'FAILED_TO_LOAD_ADDRESS_BY_ZIP_CODE';\nexport const FAILED_TO_LOAD_AMERICAN_STATES = 'FAILED_TO_LOAD_AMERICAN_STATES';\nexport const FAILED_TO_LOAD_VETERINARIANS = 'FAILED_TO_LOAD_VETERINARIANS';\nexport const FETCH_MESSAGE_NO_DATA = 'FETCH_MESSAGE_NO_DATA';\nexport const FETCH_MESSAGE_SUCCESS = 'FETCH_MESSAGE_SUCCESS';\nexport const FORGET_PASSWORD_CONFIRM_MODAL_VISIBLE_CHANGED = 'FORGET_PASSWORD_CONFIRM_MODAL_VISIBLE_CHANGED';\nexport const FORGET_PASSWORD_MODAL_EMAIL_CHANGED = 'FORGET_PASSWORD_MODAL_EMAIL_CHANGED';\nexport const FORGET_PASSWORD_MODAL_EMAIL_ERROR_CHANGED = 'FORGET_PASSWORD_MODAL_EMAIL_ERROR_CHANGED';\nexport const FORGET_PASSWORD_MODAL_VISIBLE_CHANGED = 'FORGET_PASSWORD_MODAL_VISIBLE_CHANGED';\nexport const FORGET_PASSWORD_RESET_PASSWORD_ATTEMTPED = 'FORGET_PASSWORD_RESET_PASSWORD_ATTEMTPED';\nexport const FORGET_RESET_PASSWORD_FAILED = 'FORGET_RESET_PASSWORD_FAILED';\nexport const FORGET_RESET_PASSWORD_SUCCEEDED = 'FORGET_RESET_PASSWORD_SUCCEEDED';\nexport const GET_SUB_ID_SYNONYMS_DATA_FAILED = 'GET_SUB_ID_SYNONYMS_DATA_FAILED';\nexport const GOOD_DOG_COMING_SOON_MODAL_HIDED = 'GOOD_DOG_COMING_SOON_MODAL_HIDED';\nexport const GOOD_DOG_COMING_SOON_MODAL_SHOWED = 'GOOD_DOG_COMING_SOON_MODAL_SHOWED';\nexport const IMPERSONATING_INFO_CHANGED = 'IMPERSONATING_INFO_CHANGED';\nexport const IN_APP_STARTED = 'IN_APP_STARTED';\nexport const IN_LOGIN_APP_STARTED = 'IN_LOGIN_APP_STARTED';\nexport const INITIAL_EMAIL_REASIGNED = 'INITIAL_EMAIL_REASIGNED';\nexport const LIVE_VET_ACCESS_RESET = 'LIVE_VET_ACCESS_RESET';\nexport const LIVE_VET_ACCESS_VALIDATED = 'LIVE_VET_ACCESS_VALIDATED';\nexport const LIVE_VET_ACCESS_VALIDATION_ATTEMPTED = 'LIVE_VET_ACCESS_VALIDATION_ATTEMPTED';\nexport const LIVE_VET_ACCESS_VALIDATION_FAILED = 'LIVE_VET_ACCESS_VALIDATION_FAILED';\nexport const LIVE_VET_MODAL_LOGIN_VISIBLE_CHANGED = 'LIVE_VET_MODAL_LOGIN_VISIBLE_CHANGED';\nexport const LIVE_VET_NEW_CUSTOMER_VALIDATED = 'LIVE_VET_NEW_CUSTOMER_VALIDATED';\nexport const LIVE_VET_PET_PARENT_VALIDATED = 'LIVE_VET_PET_PARENT_VALIDATED';\nexport const LIVE_VET_SUBSCRIPTION_ATTEMPT = 'LIVE_VET_SUBSCRIPTION_ATTEMPT';\nexport const LIVE_VET_SUBSCRIPTION_FAILED = 'LIVE_VET_SUBSCRIPTION_FAILED';\nexport const LIVE_VET_SUBSCRIPTION_RESET = 'LIVE_VET_SUBSCRIPTION_RESET';\nexport const LIVE_VET_SUBSCRIPTION_SUCCESS = 'LIVE_VET_SUBSCRIPTION_SUCCESS';\nexport const LOAD_MULTI_MODAL_DATA_FAILED = 'LOAD_MULTI_MODAL_DATA_FAILED';\nexport const LOAD_MULTI_MODAL_DATA_SUCCESS = 'LOAD_MULTI_MODAL_DATA_SUCCESS';\nexport const LOADING_QUOTE_DATA = 'LOADING_QUOTE_DATA';\nexport const LOADING_QUOTE_DATA_FINISH = 'LOADING_QUOTE_DATA_FINISH';\nexport const LOGIN_B2C_FAILED = 'LOGIN_B2C_FAILED';\nexport const LOGIN_B2C_STARTED = 'LOGIN_B2C_STARTED';\nexport const MODAL_CUSTOMER_WELCOME_VISIBLE_CHANGED = 'MODAL_CUSTOMER_WELCOME_VISIBLE_CHANGED';\nexport const MODAL_PET_CO_PAY_VISIBLE_CHANGED = 'MODAL_PET_CO_PAY_VISIBLE_CHANGED';\nexport const MULTI_MODAL_CUSTOM_CONTENT_CHANGED = 'MULTI_MODAL_CUSTOM_CONTENT_CHANGED';\nexport const MULTI_MODAL_CUSTOM_CONTENT_CLEARED = 'MULTI_MODAL_CUSTOM_CONTENT_CLEARED';\nexport const MULTI_MODAL_NEED_TO_KNOW_VISIBLE_CHANGED = 'MULTI_MODAL_NEED_TO_KNOW_VISIBLE_CHANGED';\nexport const MULTI_MODAL_PET_CO_PAY_VISIBLE_CHANGED = 'MULTI_MODAL_PET_CO_PAY_VISIBLE_CHANGED';\nexport const MULTI_MODAL_TERMS_AND_COND_VISIBLE_CHANGED = 'MULTI_MODAL_TERMS_AND_COND_VISIBLE_CHANGED';\nexport const MULTI_MODAL_WELLNESS_VISIBLE_CHANGED = 'MULTI_MODAL_WELLNESS_VISIBLE_CHANGED';\nexport const NAME_ON_CARD_CHANGED = 'NAME_ON_CARD_CHANGED';\nexport const NAME_ON_CARD_ERROR_CHANGED = 'NAME_ON_CARD_ERROR_CHANGED';\nexport const NEW_CUSTOMER_ADDRESS_LOAD_ATTEMPTED = 'NEW_CUSTOMER_ADDRESS_LOAD_ATTEMPTED';\nexport const NEW_CUSTOMER_CITY_CHANGED = 'NEW_CUSTOMER_CITY_CHANGED';\nexport const NEW_CUSTOMER_CONFIRM_PASSWORD_CHANGED = 'NEW_CUSTOMER_CONFIRM_PASSWORD_CHANGED';\nexport const NEW_CUSTOMER_EMAIL_CHANGED = 'NEW_CUSTOMER_EMAIL_CHANGED';\nexport const NEW_CUSTOMER_EMAIL_ERROR_CHANGED = 'NEW_CUSTOMER_EMAIL_ERROR_CHANGED';\nexport const NEW_CUSTOMER_EMPLOYEE_ID_CHANGED = 'NEW_CUSTOMER_EMPLOYEE_ID_CHANGED';\nexport const NEW_CUSTOMER_LAST_NAME_CHANGED = 'NEW_CUSTOMER_LAST_NAME_CHANGED';\nexport const NEW_CUSTOMER_NAME_CHANGED = 'NEW_CUSTOMER_NAME_CHANGED';\nexport const NEW_CUSTOMER_PASSWORD_CHANGED = 'NEW_CUSTOMER_PASSWORD_CHANGED';\nexport const NEW_CUSTOMER_PASSWORD_CONFIRM_ERROR_CHANGED = 'NEW_CUSTOMER_PASSWORD_CONFIRM_ERROR_CHANGED';\nexport const NEW_CUSTOMER_PASSWORD_ERROR_CHANGED = 'NEW_CUSTOMER_PASSWORD_ERROR_CHANGED';\nexport const NEW_CUSTOMER_PHONE_CHANGED = 'NEW_CUSTOMER_PHONE_CHANGED';\nexport const NEW_CUSTOMER_RESET_EMAIL = 'NEW_CUSTOMER_RESET_EMAIL';\nexport const NEW_CUSTOMER_SECOND_PARENT_EMAIL_CHANGED = 'NEW_CUSTOMER_SECOND_PARENT_EMAIL_CHANGED';\nexport const NEW_CUSTOMER_SECOND_PARENT_LAST_NAME_CHANGED = 'NEW_CUSTOMER_SECOND_PARENT_LAST_NAME_CHANGED';\nexport const NEW_CUSTOMER_SECOND_PARENT_NAME_CHANGED = 'NEW_CUSTOMER_SECOND_PARENT_NAME_CHANGED';\nexport const NEW_CUSTOMER_SECOND_PARENT_NUMBER_CHANGED = 'NEW_CUSTOMER_SECOND_PARENT_NUMBER_CHANGED';\nexport const NEW_CUSTOMER_STATE_CHANGED = 'NEW_CUSTOMER_STATE_CHANGED';\nexport const NEW_CUSTOMER_STREET_CHANGED = 'NEW_CUSTOMER_STREET_CHANGED';\nexport const NEW_CUSTOMER_STREET2_CHANGED = 'NEW_CUSTOMER_STREET2_CHANGED';\nexport const NEW_CUSTOMER_ZIP_CODE_CHANGED = 'NEW_CUSTOMER_ZIP_CODE_CHANGED';\nexport const NEW_PET_AGE_SAVED = 'NEW_PET_AGE_SAVED';\nexport const NEW_PET_BREED_SAVED = 'NEW_PET_BREED_SAVED';\nexport const NEW_PET_EMAIL_SAVED = 'NEW_PET_EMAIL_SAVED';\nexport const NEW_PET_GROUP_DSCR_CODE_SAVED = 'NEW_PET_GROUP_DSCR_CODE_SAVED';\nexport const NEW_PET_NAME_SAVED = 'NEW_PET_NAME_SAVED';\nexport const NEW_PET_PICKUP_DATE_SAVED = 'NEW_PET_PICKUP_DATE_SAVED';\nexport const NEW_PET_PROMO_CODE_SAVED = 'NEW_PET_PROMO_CODE_SAVED';\nexport const NEW_PET_SEX_SAVED = 'NEW_PET_SEX_SAVED';\nexport const NEW_PET_TYPE_SAVED = 'NEW_PET_TYPE_SAVED';\nexport const NEW_PET_ZIPCODE_SAVED = 'NEW_PET_ZIPCODE_SAVED';\nexport const NO_DIAMOND_CLIENT_ID_OR_PC_ERROR = 'NO_DIAMOND_CLIENT_ID_OR_PC_ERROR';\nexport const NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL = 'NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL';\nexport const NOTIFY_ME_BUTTON_CLICKED = 'NOTIFY_ME_BUTTON_CLICKED';\nexport const NOTIFY_ME_EMAIL_VALUES_SAVED = 'NOTIFY_ME_EMAIL_VALUES_SAVED';\nexport const NOTIFY_ME_FAILED = 'NOTIFY_ME_FAILED';\nexport const NOTIFY_ME_SUCCESS = 'NOTIFY_ME_SUCCESS';\nexport const ONE_INC_PAYMENT_BANK_SAVED = 'ONE_INC_PAYMENT_BANK_SAVED ';\nexport const ONE_INC_PAYMENT_CREDIT_CARD_SAVED = 'ONE_INC_PAYMENT_CREDIT_CARD_SAVED';\nexport const ONE_INC_PAYMENT_DEFAULTS_SAVED = 'ONE_INC_PAYMENT_DEFAULTS_SAVED';\nexport const ONE_INC_PAYMENT_SAVED = 'ONE_INC_PAYMENT_SAVED';\nexport const ONE_INC_PAYMENT_UPDATED = 'ONE_INC_PAYMENT_UPDATED';\nexport const ONE_INC_PET_PAYMENT_METHOD_SAVED = 'ONE_INC_PET_PAYMENT_METHOD_SAVED';\nexport const ONE_INC_PET_PAYMENT_UPDATED = 'ONE_INC_PET_PAYMENT_UPDATED';\nexport const ONE_INC_RESET_ALL = 'ONE_INC_RESET_ALL';\nexport const ONE_INC_SESSION_CREATED = 'ONE_INC_SESSION_CREATED';\nexport const ONE_INC_SESSION_REMOVED = 'ONE_INC_SESSION_REMOVED';\nexport const OPEN_QUOTE_LOADED = 'OPEN_QUOTE_LOADED';\nexport const OPEN_QUOTE_PENDING_PETS_LOADED = 'OPEN_QUOTE_PENDING_PETS_LOADED';\nexport const OPEN_SAVED_QUOTE_ATTEMPT = 'OPEN_SAVED_QUOTE_ATTEMPT';\nexport const OPEN_SAVED_QUOTE_ERROR = 'OPEN_SAVED_QUOTE_ERROR';\nexport const OPEN_SAVED_QUOTE_EXPIRED = 'OPEN_SAVED_QUOTE_EXPIRED';\nexport const PARAMETERS_UPDATED = 'PARAMETERS_UPDATED';\nexport const PARTNER_ID_INFORMATION_FAILED = 'PARTNER_ID_INFORMATION_FAILED';\nexport const PARTNER_ID_INFORMATION_LOADED = 'PARTNER_ID_INFORMATION_LOADED';\nexport const PARTNER_ID_LOAD_INFORMATION_ATTEMPT = 'PARTNER_ID_LOAD_INFORMATION_ATTEMPT';\nexport const PAYMENT_METHOD_TYPE_CHANGE = 'PAYMENT_METHOD_TYPE_CHANGE';\nexport const PAYMENT_PLAN_FREQUENCY_CHANGED = 'PAYMENT_PLAN_FREQUENCY_CHANGED';\nexport const PET_ADDED = 'PET_ADDED';\nexport const PET_QUOTE_REMOVAL_ATTEMPT = 'PET_QUOTE_REMOVAL_ATTEMPT';\nexport const PET_QUOTE_REMOVAL_FAILED = 'PET_QUOTE_REMOVAL_FAILED';\nexport const PET_QUOTE_REMOVAL_SUCCEED = 'PET_QUOTE_REMOVAL_SUCCEED';\nexport const PET_REMOVED = 'PET_REMOVED';\nexport const PET_TAG_COLOR_CHANGED = 'PET_TAG_COLOR_CHANGED';\nexport const PET_TAG_DATE_ERRORS_CHANGED = 'PET_TAG_DATE_ERRORS_CHANGED';\nexport const PET_TAG_DATE_OF_BIRTH_CHANGED = 'PET_TAG_DATE_OF_BIRTH_CHANGED';\nexport const PET_UPDATED = 'PET_UPDATED';\nexport const POWER_UP_SELECTED = 'POWER_UP_SELECTED';\nexport const POWERUP_ID_ERRORS_REMOVED = 'POWERUP_ID_ERRORS_REMOVED';\nexport const POWERUP_ID_ERRORS_RESTARTED = 'POWERUP_ID_ERRORS_RESTARTED';\nexport const POWERUP_ID_ERRORS_SET = 'POWERUP_ID_ERRORS_SET';\nexport const PROCEED_WITHOUT_PARTNER_CHANGED = 'PROCEED_WITHOUT_PARTNER_CHANGED';\nexport const PURCHASE_ATTEMPT = 'PURCHASE_ATTEMPT';\nexport const PURCHASE_COMPLETED = 'PURCHASE_COMPLETED';\nexport const PURCHASE_MULTIPLE_ATTEMPT = 'PURCHASE_MULTIPLE_ATTEMPT';\nexport const PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED = 'PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED';\nexport const QUOTE_DATA_LOADED_BY_STORAGE = 'QUOTE_DATA_LOADED_BY_STORAGE';\nexport const QUOTE_PLAN_SELECTED = 'QUOTE_PLAN_SELECTED';\nexport const QUOTE_PLAN_SELECTED_BY_QUOTEID = 'QUOTE_PLAN_SELECTED_BY_QUOTEID';\nexport const QUOTE_POWER_UP_CHANGED = 'QUOTE_POWER_UP_CHANGED';\nexport const QUOTE_SELECTED_VALUES_REMOVED = 'QUOTE_SELECTED_VALUES_REMOVED';\nexport const QUOTE_WELLNESS_SELECTED = 'QUOTE_WELLNESS_SELECTED';\nexport const QUOTING_PLAN_DATA_LOADED = 'QUOTING_PLAN_DATA_LOADED';\nexport const RATE_QUOTE_ERROR = 'RATE_QUOTE_ERROR';\nexport const RATE_QUOTE_UPDATE_ATTEMPT = 'RATE_QUOTE_UPDATE_ATTEMPT';\nexport const RATE_QUOTE_UPDATE_LOADED = 'RATE_QUOTE_UPDATE_LOADED';\nexport const RATE_SUMMARY_ATTEMP = 'RATE_SUMMARY_ATTEMP';\nexport const RATE_SUMMARY_FAILED = 'RATE_SUMMARY_FAILED';\nexport const RATE_SUMMARY_SUCCESS = 'RATE_SUMMARY_SUCCESS';\nexport const RECALCULATE_LOCAL_TOTAL = 'RECALCULATE_LOCAL_TOTAL';\nexport const RECALCULATE_PACKAGED_VALUES_SELECTED = 'RECALCULATE_PACKAGED_VALUES_SELECTED';\nexport const RECAPTCHA_VALIDATE_ATTEMPT = 'RECAPTCHA_VALIDATE_ATTEMPT';\nexport const RECAPTCHA_VALIDATE_FAILED = 'RECAPTCHA_VALIDATE_FAILED';\nexport const RECAPTCHA_VALIDATE_LOADED = 'RECAPTCHA_VALIDATE_LOADED';\nexport const REMOVE_PET_MODAL_VISIBLE = 'REMOVE_PET_MODAL_VISIBLE';\nexport const RESET_POWER_UP_ARIA_LABEL = 'RESET_POWER_UP_ARIA_LABEL';\nexport const RESET_QUOTES_VALUES_SELECTED = 'RESET_QUOTES_VALUES_SELECTED';\nexport const RETRY_PURCHASE_ERROR = 'RETRY_PURCHASE_ERROR';\nexport const ROUTING_NUMBER_CHANGED = 'ROUTING_NUMBER_CHANGED';\nexport const ROUTING_NUMBER_ERROR_CHANGED = 'ROUTING_NUMBER_ERROR_CHANGED';\nexport const SAME_ADDRESS_FOR_BILLING_CHANGED = 'SAME_ADDRESS_FOR_BILLING_CHANGED';\nexport const SAVE_DEDUCTIBLE_SELECTED = 'SAVE_DEDUCTIBLE_SELECTED';\nexport const SAVE_MONTHLY_PLAN_SELECTED = 'SAVE_MONTHLY_PLAN_SELECTED';\nexport const SAVE_QUOTE_ATTEMPT = 'SAVE_QUOTE_ATTEMPT';\nexport const SAVE_QUOTE_ERROR = 'SAVE_QUOTE_ERROR';\nexport const SAVE_QUOTE_MOBILE_VISIBLE_CHANGED = 'SAVE_QUOTE_MOBILE_VISIBLE_CHANGED';\nexport const SAVE_REIMBURSEMENT_SELECTED = 'SAVE_REIMBURSEMENT_SELECTED';\nexport const SAVE_SELECTED_ADD_PET_MODAL = 'SAVE_SELECTED_ADD_PET_MODAL';\nexport const SAVE_SELECTED_EDIT_PET_MODAL = 'SAVE_SELECTED_EDIT_PET_MODAL';\nexport const SAVE_SELECTED_PET_NUMBER = 'SAVE_SELECTED_PET_NUMBER';\nexport const SAVE_UPDATED_PET = 'SAVE_UPDATED_PET';\nexport const SAVE_URL_PARAMETERS = 'SAVE_URL_PARAMETERS';\nexport const SAVE_UTM_PARAMS = 'SAVE_UTM_PARAMS';\nexport const SAVED_QUOTE = 'SAVED_QUOTE';\nexport const SAVED_QUOTE_MODAL_VISIBLE = 'SAVED_QUOTE_MODAL_VISIBLE';\nexport const SECOND_ADDRESS_CITY_CHANGED = 'SECOND_ADDRESS_CITY_CHANGED';\nexport const SECOND_ADDRESS_CITY_ERROR_CHANGED = 'SECOND_ADDRESS_CITY_ERROR_CHANGED';\nexport const SECOND_ADDRESS_CLEARED = 'SECOND_ADDRESS_CLEARED';\nexport const SECOND_ADDRESS_STATE_ERROR_CHANGED = 'SECOND_ADDRESS_STATE_ERROR_CHANGED';\nexport const SECOND_ADDRESS_STREET_CHANGED = 'SECOND_ADDRESS_STREET_CHANGED';\nexport const SECOND_ADDRESS_STREET_ERROR_CHANGED = 'SECOND_ADDRESS_STREET_ERROR_CHANGED';\nexport const SECOND_ADDRESS_STREET2_CHANGED = 'SECOND_ADDRESS_STREET2_CHANGED';\nexport const SECOND_ADDRESS_ZIP_CODE_CHANGED = 'SECOND_ADDRESS_ZIP_CODE_CHANGED';\nexport const SECOND_ADDRESS_ZIP_ERROR_CHANGED = 'SECOND_ADDRESS_ZIP_ERROR_CHANGED';\nexport const SECOND_PARENT_FORM_TOGGLED = 'SECOND_PARENT_FORM_TOGGLED';\nexport const SEND_SMS_APPS_LINKS_ATTEMPT = 'SEND_SMS_APPS_LINKS_ATTEMPT';\nexport const SEND_SMS_APPS_LINKS_FAILED = 'SEND_SMS_APPS_LINKS_FAILED';\nexport const SEND_SMS_APPS_LINKS_SUCCESS = 'SEND_SMS_APPS_LINKS_SUCCESS';\nexport const SIGNED_UP_SMS = 'SIGNED_UP_SMS';\nexport const SIGNED_UP_SMS_ATTEMPT = 'SIGNED_UP_SMS_ATTEMPT';\nexport const SUB_ID_SAVED = 'SUB_ID_SAVED';\nexport const SUB_ID_SYNONYMS_DATA_LOADED = 'SUB_ID_SYNONYMS_DATA_LOADED';\nexport const TERMS_AND_CONDITION_VALIDATION_CHANGED = 'TERMS_AND_CONDITION_VALIDATION_CHANGED';\nexport const TERMS_AND_POLICY_CHANGED = 'TERMS_AND_POLICY_CHANGED';\nexport const UNDERSTAND_CONDITIONS_CHANGED = 'UNDERSTAND_CONDITIONS_CHANGED';\nexport const VETERINARIAN_SET = 'VETERINARIAN_SET';\nexport const VETERINARIANS_LOAD_ATTEMPT = 'VETERINARIANS_LOAD_ATTEMPT';\nexport const VETERINARIANS_LOADED = 'VETERINARIANS_LOADED';\nexport const YOUR_INFO_SCROLL_TO_TOP_TOGGLED = 'YOUR_INFO_SCROLL_TO_TOP_TOGGLED';\nexport const YOUR_INFO_STEP_CHANGED = 'YOUR_INFO_STEP_CHANGED';\nexport const ZIP_CODE_CUSTOMER_UPDATED = 'ZIP_CODE_CUSTOMER_UPDATED';\nexport const ZIP_CODE_VALIDATION_ATTEMPT = 'ZIP_CODE_VALIDATION_ATTEMPT';\nexport const ZIP_CODE_VALIDATION_CRASHED = 'ZIP_CODE_VALIDATION_CRASHED';\nexport const ZIP_CODE_VALIDATION_FAILED = 'ZIP_CODE_VALIDATION_FAILED';\nexport const ZIP_CODE_VALIDATION_SUCCESS = 'ZIP_CODE_VALIDATION_SUCCESS';\n","import AmericanStates from './utils/americanStates.json';\n\nexport const PetGender = {\n Female: {\n name: 'Female',\n value: 2,\n },\n Male: {\n name: 'Male',\n value: 1,\n },\n None: {\n name: '',\n value: -1,\n },\n};\n\nexport const PetType = {\n Cat: {\n name: 'Cat',\n value: 1,\n },\n Dog: {\n name: 'Dog',\n value: 0,\n },\n None: {\n name: '',\n value: -1,\n },\n};\n\nexport const QuotingSteps = {\n SelectPlan: {\n name: 'Select Plan',\n value: 1,\n },\n Welcome: {\n name: 'Welcome',\n value: 3,\n },\n YourInfo: {\n name: 'Your Info',\n value: 2,\n },\n};\n\nexport const AccountTypes = [\n { label: 'Checking', value: 1 },\n { label: 'Savings', value: 2 },\n];\n\nexport const PAYMENT_TYPE = {\n bank: {\n name: 'Bank Account',\n value: 1,\n },\n creditCard: {\n name: 'Credit or Debit',\n value: 2,\n },\n};\n\nexport const CreditCardType = {\n AmericanExpress: {\n name: 'American Express',\n value: 4,\n },\n DinnersClub: {\n name: 'Diners Club',\n value: 6,\n },\n Discover: {\n name: 'Discover',\n value: 3,\n },\n MasterCard: {\n name: 'Master Card',\n value: 2,\n },\n Other: {\n name: 'Other',\n value: 5,\n },\n Visa: {\n name: 'Visa',\n value: 1,\n },\n};\n\nexport const EXECUTIVE_MEMBERSHIP_TYPE_NAME = 'Executive';\n\nexport const DISCOUNT_MODIFIER_TYPE = 4;\n\nexport const POWERUP_TYPE = 5;\n\nexport const MULTIPET_DISCOUNT = 58;\n\nexport const VET_EXAM_FEES_ID = 17;\n\nexport const BILLING_CYCLE_TYPE = {\n annualy: 2,\n monthly: 1,\n oneTime: 0,\n};\n\nexport const YOUR_INFO_STEPS = {\n firstStep: 1,\n secondStep: 2,\n};\n\nexport const PRODUCT_VALUES = {\n FPI_VALUES: [11, 12, 13, 14, 15, 16, 17, 18],\n IHC_VALUES: [1, 2, 3],\n};\n\n// Method getProductType must be used for casting product id from backend.\nexport const PRODUCT_TYPE = {\n FPI: 2,\n IHC: 1,\n Unknown: -1,\n};\n\nexport const TAG_COLOR = {\n mintColor: 1,\n navyColor: 2,\n};\n\nexport const TAG_COLOR_ID = {\n mint: 55,\n navy: 54,\n};\n\nexport const CUSTOMER_SERVICE_PHONE_NUMBER = '(844) 738-3446';\n\nexport const CUSTOMER_SERVICE_MSG_NUMBER = '(844) 262-8133';\n\nexport const CUSTOMER_SERVICE_PHONE_NUMBER_COMING_SOON = '(844) 200-2607';\n\nexport const CUSTOMER_SERVICE_EMAIL = 'support@figopetinsurance.com';\n\nexport const ELECTRONIC_DELIVERY_NOTICE =\n 'https://figopetinsurance.com/Electronic-Records-Consent';\n\nexport const SMS_APP_LINKS = 'Download the Pet Cloud app.\\n'\n + 'For iOS: https://appstore.com/petcloud\\n'\n + 'For Android https://play.google.com/store/'\n + 'apps/details?id=com.figoinsurance.petcloud';\n\nexport const GOOGLE_PLAY_URL =\n 'https://play.google.com/store/apps/details?id=com.figoinsurance.petcloud';\n\nexport const APP_STORE_URL =\n 'https://apps.apple.com/us/app/figo-pet-cloud/id1278520013';\n\nexport const PRIVACY_POLICY_LINK =\n 'https://figopetinsurance.com/figo-privacy-policy';\n\n/**\n * Post-purchase page.\n */\nexport const TERMS_OF_USE_LINK_SMS =\n 'https://figopetinsurance.com/figo-sms-terms-conditions';\n\n/**\n * Landing and quoting page (footer component).\n */\nexport const TERMS_OF_USE_LINK_GENERAL =\n 'https://figopetinsurance.com/what-are-figos-terms-use';\n\nexport const UNDERWRITING_LINK =\n 'https://figopetinsurance.com/carrier-underwriter-information ';\n\nexport const INSURED_DISCLOSURES_LINK =\n // eslint-disable-next-line max-len\n 'https://assets.ctfassets.net/wcjeikrx8553/3ZavA3DUxHeitwJfp0LLPJ/282309a9e40b0d002b9c5d0f2b1dde63/Figo_Model_Law_Disclosures_ME_DE_MS_NE_NH_LA_WA.pdf';\n\nexport const WAITING_PERIODS_LINK =\n // eslint-disable-next-line max-len\n 'https://assets.ctfassets.net/wcjeikrx8553/3dkJZXQcANjR0Ou2xC4qRa/634c5082b6b06a141c6a8fcf5526b67b/IAIC_FPI_WP-WAIVER_UW_12.4_SAMPLE_ONLY.pdf';\n\nexport const SAMPLE_POLICY_LINK = 'https://figopetinsurance.com/sample-policy';\n\nexport const FOOTER_TEXT_BASE =\n `No one is permitted to sell, solicit, or negotiate an insurance \npolicy without a producer license in the state in which the plan is \nsold, and all prospects should be directed to Figo Pet Insurance. \nThe information contained in this website is for illustrative purposes \nonly and coverage under any pet insurance policy is expressly subject \nto the conditions, restrictions, limitations, exclusions (including \n pre-existing conditions), and terms of the policy documentation issued \n by the insurer. Availability of this program is subject to each state’s \n approval and coverage may vary by state. Coverage underwritten by \n Independence American Insurance Company (IAIC), a Delaware Insurance \n Company, 11333 North Scottsdale Road Suite 160 Scottsdale, AZ 85254. \n Plans administered by Figo Pet Insurance, LLC., 540 N Dearborn Street \n #10873, Chicago, IL 60610. Live Vet and the Figo Pet Cloud are separate \n non-insurance services unaffiliated with IAIC. Copyright © \n 2015-${new Date().getFullYear()} Figo Pet Insurance LLC. All rights \n reserved. Figo Pet Insurance's California license number is 0K02763.`;\n\nexport const MODAL_RELATION_LIST = {\n NEED_TO_KNOW_MODAL_ID: 1,\n PET_CO_PAY_MODAL_ID: 4,\n TERMS_AND_COND_MODAL_ID: 3,\n WELLNESS_MODAL_ID: 2,\n};\n\nexport const MODAL_DEFAULT_CATEGORY = {\n NEED_TO_KNOW_DEF_CATEGORY_ID: 1,\n PET_CO_PAY_DEF_CATEGORY_ID: 17,\n TERMS_AND_COND_DEF_CATEGORY_ID: 8,\n WELLNESS_DEF_CATEGORY_ID: 11,\n};\n\nexport const PowerUpsRelation = {\n EXTRA_CARE_PACK_PSM_ID: 70427,\n PER_INCIDENT_CO_PAY: 100005,\n VETERINARY_EXAM_FEES_PSM_ID: 70422,\n WELLNESS_DENTAL_PSM_ID: 70430,\n WELLNESS_PSM_ID: 70428,\n};\n\nexport const BENEFIT_TYPE = {\n bundle: 2,\n individual: 1,\n none: 0,\n};\n\nexport const BENEFIT_FEE_TYPE = {\n dynamic: 3,\n fixedFee: 2,\n ftpFactor: 1,\n none: 0,\n};\n\nexport const USER_ROLL_LIST = ['Administrators', 'Registered'];\n\nexport const TEN_DIGIT_NUMBER = /^\\d{10}$/;\n\nexport const CVV_CARD_LENGTH_MAX = 4;\n\nexport const CVV_CARD_LENGTH_MIN = 3;\n\nexport const ONE_INC_PAYMENT_CATEGORY = {\n bankAccount: 'ACH',\n creditCard: 'CreditCard',\n};\n\nexport const ONE_INC_DEFAULT_TOKEN = 'DEFAULT';\n\nexport const ONE_INC_EMPTY_ACH = {\n accountType: '',\n bankName: '',\n customerName: '',\n lastFourDigits: '',\n paymentCategory: '',\n sessionId: '',\n timeZone: '',\n tokenId: '',\n transactionDate: '',\n};\n\nexport const ONE_INC_EMPTY_CC = {\n accountType: 'Credit Card',\n cardExpirationMonth: 0,\n cardExpirationYear: 0,\n cardType: '',\n customerName: '',\n holderZip: '',\n lastFourDigits: '',\n paymentCategory: '',\n timeZone: '',\n tokenId: '',\n transactionDate: '',\n};\n\nexport const ONE_INC_PAYMENT_METHOD = {\n bankAccount: 2,\n creditCard: 1,\n};\n\nexport const DROPDOWN_ITEM_TYPE = {\n addPet: 0,\n header: 1,\n pet: 2,\n remove: 3,\n};\n\nexport const OS = {\n android: 'Android',\n ios: 'iOS',\n unknown: 'unknown',\n};\n\nexport const WELLNESS_MULTIMODAL_ID = {\n BASIC: 15,\n PLUS: 16,\n};\n\nexport const WELLNESS_COVERAGE_LIMIT_FPI = {\n BASIC: [41, 42],\n PLUS: [43, 44],\n};\n\nexport const MAX_PET_NAME_LENGTH = 50;\n\nexport const PLAN_LIMIT = {\n ESSENTIAL: { title: '$5K', value: '5000' },\n PREFERRED: { title: '$10K', value: '10000' },\n UNLIMITED: { title: 'Unlimited', value: '1000000' },\n};\n\nexport const AMERICAN_STATES = AmericanStates;\n\nexport const AFTER_RATE_TAG = {\n addPet: 'addPet',\n createRate: 'createRate',\n loadByOrderId: 'loadByOrderId',\n newZipCode: 'newZipCode',\n removePartner: 'removePartner',\n removePet: 'removePet',\n updatePet: 'updatePet',\n updatePowerUp: 'updatePowerUp',\n};\n\nexport const RED_BACKGROUND = 2;\n\nexport const MARKETING_CHANNEL = {\n AKC: 3,\n Figo: 1,\n PC: 4,\n PPI: 2,\n};\n\nexport const SAVE_QUOTE_TYPE = {\n auto: 2,\n customer: 1,\n};\n\nexport const PURCHASE_MULTI_STATUS = {\n complete: 'complete',\n error: 'error',\n pending: 'pending',\n progress: 'in progress',\n};\n\nexport const PURCHASE_ERROR_TYPES = {\n otherError: 'Other',\n paymentMethodError: 'Payment',\n};\n\nexport const STICKY_BAR_HEIGHT_SECOND_STEP = 96;\nexport const DEFAULT_STICKY_BAR_HEIGHT = 0;\n\nexport const QUOTE_MAX_SIZE = 17;\n","import {\n CreditCardType,\n CVV_CARD_LENGTH_MAX,\n CVV_CARD_LENGTH_MIN,\n PetType,\n PRODUCT_TYPE,\n PRODUCT_VALUES,\n OS,\n POWERUP_TYPE,\n} from './constants';\nimport app from './app.json';\n\nconst CLIENT_NAME = 'D2C';\n\n// serializeForUri({ param0: 'value 0', param1: 'value:1' }) ===\n// 'param0=value%200¶m1=value%3A1'\nexport function serializeForUri(obj = {}) {\n return Object\n .keys(obj)\n .map((key) => `${encodeURI(key)}=${encodeURI(obj[key])}`)\n .join('&');\n}\n\nexport function genApiUrl(baseURL, path, params) {\n let serializedParams = serializeForUri(params);\n\n if (serializedParams) {\n serializedParams = `?${serializedParams}`;\n }\n\n return `${baseURL}/${path}${serializedParams}`;\n}\n\nasync function genHttpRequest(url, params = {}) {\n const options = {\n headers: {\n 'Api-version': 'v1',\n Authorization: 'APIKEY 8f7ecbb6-a62c-44d9-ab88-7b295ba7956c',\n 'Content-Type': 'application/json',\n 'X-Api-Key': process.env.REACT_APP_XAPIKEY,\n 'X-Client-Name': CLIENT_NAME,\n 'X-Client-Version': app.version,\n ...params.headers,\n },\n };\n\n if (params.post) {\n options.method = 'POST';\n options.body = JSON.stringify(params.post);\n } else if (params.delete) {\n options.method = 'DELETE';\n options.body = JSON.stringify(params.delete);\n }\n\n let id = 0;\n\n if (params.withTimeout) {\n const timeoutTime = params.timeoutTime || 60000;\n if (AbortSignal.timeout) {\n options.signal = AbortSignal.timeout(timeoutTime);\n } else {\n // old browsers\n const controller = new AbortController();\n id = setTimeout(() => controller\n .abort('AbortError: timeout'), timeoutTime);\n options.signal = controller.signal;\n }\n }\n\n const response = await fetch(url, options);\n clearTimeout(id);\n\n return response;\n}\n\nexport async function apiCall(path, params = {}) {\n const url = genApiUrl(process.env.REACT_APP_API_URL, path, params.get);\n\n return genHttpRequest(url, params);\n}\n\nexport async function apiCallCostco(path, params = {}) {\n const url = genApiUrl(process.env.REACT_APP_COSTCO_URL, path, params.get);\n const headers = {\n 'Ocp-Apim-Subscription-Key': process.env.REACT_APP_KEY_NAME_HERE,\n };\n\n return genHttpRequest(url, { ...params, headers });\n}\n\nexport async function apiCallMGMT(path, params = {}) {\n const url = genApiUrl(process.env.REACT_APP_MGMT_API_URL, path, params.get);\n const headers = {\n 'Ocp-Apim-Subscription-Key': process.env.REACT_APP_KEY_NAME_HERE,\n };\n\n return genHttpRequest(url, { ...params, headers });\n}\n\nexport async function apiCallPurchase(path, params = {}) {\n const url = genApiUrl(\n process.env.REACT_APP_PURCHASE_API_URL,\n path,\n params.get,\n );\n return genHttpRequest(url, { ...params });\n}\n\nexport async function acquireTokenByPassword({ username, password }) {\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n };\n\n const bodyObject = {\n client_id: process.env.REACT_APP_B2C_CLIENT_ID,\n grant_type: 'password',\n password,\n response_type: 'token id_token',\n scope: `openid ${process.env.REACT_APP_B2C_CLIENT_ID} offline_access`,\n username,\n };\n const body = serializeForUri(bodyObject);\n\n const urlB2C = `https://${process.env.REACT_APP_B2C_URL}`\n + `/${process.env.REACT_APP_B2C_TENANT_URL}/`\n + `${process.env.REACT_APP_B2C_SIGNIN_NAME}/oauth2/v2.0/token`;\n try {\n const response = await fetch(urlB2C, {\n body,\n headers,\n method: 'POST',\n });\n const payload = await response.json();\n return payload;\n } catch (error) {\n return null;\n }\n}\n\nexport function doNothing() {\n // Does exactly what it promises.\n // ... what is \"nothing\" anyway? https://bit.ly/2Hwo3Vj\n}\n\nexport function setSessionStorage({ data, key }) {\n if (data && key) {\n sessionStorage.setItem(key, JSON.stringify(data));\n }\n}\n\nexport function getSessionStorage(key) {\n const data = sessionStorage.getItem(key);\n\n if (data) {\n return JSON.parse(data);\n }\n\n return null;\n}\n\nexport function removeSessionStorage(key) {\n sessionStorage.removeItem(key);\n}\n\nfunction camelize(text) {\n const camelRegex = /[-_\\s.]+(.)?/g;\n const temp = text.replace(camelRegex, (_, c) => (\n c ? c.toUpperCase() : ''));\n return temp.substr(0, 1).toLowerCase() + temp.substr(1);\n}\n\nexport function formatParameters(parametersRaw) {\n const parameters = {};\n Object.keys(parametersRaw).forEach(\n (key) => { parameters[camelize(key)] = parametersRaw[key]; },\n );\n return parameters;\n}\n\nexport function formatDate(date) {\n if (date.toString().includes('T')) {\n return date.split('T')[0];\n }\n\n return date;\n}\n\n// This function uses setTimeout but can be combined with await in an async\n// function to wait for some time before continuing execution.\nexport function sleep(time) {\n return new Promise((resolve) => setTimeout(resolve, time));\n}\n\n/* eslint-disable no-bitwise */\nexport function generateUUID() {\n let dt = new Date().getTime();\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = ((dt + Math.random()) * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c === 'x' ? r : ((r & 0x3) | 0x8)).toString(16);\n });\n return uuid;\n}\n\nexport function getPetNameFromValue(petValue) {\n switch (petValue) {\n case PetType.Cat.value:\n return PetType.Cat.name;\n\n case PetType.Dog.value:\n return PetType.Dog.name;\n\n default:\n return 'undefined';\n }\n}\n\nexport function validateEmail(email) {\n const regexString = '^[a-zA-Z0-9_-]+(\\\\.[a-zA-Z0-9_-]+)*@'\n + '[a-zA-Z0-9_-]+(\\\\.[a-zA-Z0-9_-]+)*\\\\.[a-zA-Z0-9]{1,}$';\n const regex = new RegExp(regexString);\n\n return regex.test(String(email).toLowerCase());\n}\n\nexport function testOnlyNumber(value) {\n const REGEX_NUMBER = /^[0-9]*$/;\n\n return REGEX_NUMBER.test(value) || !value;\n}\n\nexport function testContainLetter(value) {\n const REGEX_LETTER = /[a-zA-Z]/;\n\n return REGEX_LETTER.test(value);\n}\n\nexport function testContainNumber(value) {\n const REGEX_ANY_NUMBER = /[0-9]/;\n\n return REGEX_ANY_NUMBER.test(value);\n}\n\nexport function currencyFormat({ fixed = 2, value = 0 }) {\n if (value === 0) {\n return `${value.toFixed(fixed)}`;\n }\n\n const formattedValue = `${Math.abs(value)\n .toFixed(fixed).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}`;\n\n return formattedValue;\n}\n\nexport const isPaycheck = app.paycheck;\nexport const {\n useEnrollmentflag,\n useGoogleTagManager,\n useOneInc,\n useSecondaryPetParent,\n useTrackingEvents,\n} = app;\n\n// For more information about the Routing validation see:\n// http://en.wikipedia.org/wiki/Routing_transit_number\nexport function isRoutingNumberValid(routing) {\n if (routing.length !== 9) {\n return false;\n }\n\n const checksumTotal =\n (\n 7 * (parseInt(routing.charAt(0), 10)\n + parseInt(routing.charAt(3), 10)\n + parseInt(routing.charAt(6), 10))\n )\n + (\n 3 * (parseInt(routing.charAt(1), 10)\n + parseInt(routing.charAt(4), 10)\n + parseInt(routing.charAt(7), 10))\n )\n + (\n 9 * (parseInt(routing.charAt(2), 10)\n + parseInt(routing.charAt(5), 10)\n + parseInt(routing.charAt(8), 10))\n );\n\n const checksumMod = checksumTotal % 10;\n if (checksumTotal === 0 || checksumMod !== 0) {\n return false;\n }\n\n return true;\n}\n\nexport function getProductType(productId) {\n const { FPI_VALUES, IHC_VALUES } = PRODUCT_VALUES;\n\n if (IHC_VALUES.indexOf(productId) >= 0) {\n return PRODUCT_TYPE.IHC;\n }\n\n if (FPI_VALUES.indexOf(productId) >= 0) {\n return PRODUCT_TYPE.FPI;\n }\n\n return PRODUCT_TYPE.Unknown;\n}\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\nlet timeout;\nexport function debounce(func, wait, immediate) {\n clearTimeout(timeout);\n\n return function f(...args) {\n const context = this;\n\n function later() {\n timeout = null;\n\n if (!immediate) {\n func.apply(context, args);\n }\n }\n\n const callNow = immediate && !timeout;\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\nexport function phoneMask(value = '') {\n const sanitizeText = value ? value.replace(/-/g, '') : '';\n const formattedValue = sanitizeText.split(/(\\d{0,3})(\\d{0,3})(\\d{0,4})/)\n .filter((item) => item.length > 0);\n\n return formattedValue.join('-');\n}\n\nexport function decodeImageBase64(imageEncoded) {\n return `data:image/png;base64,${imageEncoded}`;\n}\n\nexport function isValidDiamondStreet(value) {\n const newValue = String(value).replace('P.O.', '').replace('P. O.', '');\n\n // eslint-disable-next-line max-len\n const REGEX_STREET_ADDRESS = /^\\s*((([a-zA-Z]+\\s){1}((?=.*[0-9]+))|([0-9]+\\s){1}((?=.*[a-zA-Z]+)))|((?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)+\\s){1}((?=.*[0-9a-zA-Z]+)))+.*\\s*$/;\n const isStreetAddressValid = REGEX_STREET_ADDRESS.test(newValue.trim());\n\n return isStreetAddressValid;\n}\n\n/**\n * store.data.insuranceProduct.Id\n * @param {*} productId int\n */\nexport function isProductFPI(productId) {\n const { FPI_VALUES } = PRODUCT_VALUES;\n\n return FPI_VALUES.indexOf(productId) >= 0;\n}\n\nexport function testNumberWithDecimal(value) {\n const REGEX_NUMBER = /^(\\d+(\\.\\d{0,2})?|\\.?\\d{1,2})$/;\n\n return REGEX_NUMBER.test(value) || !value;\n}\n\n/**\n * @param {string} stringToClean\n * @returns {string} The same stringToClean without emojis\n */\nexport function removeEmojis(stringToClean) {\n // eslint-disable-next-line max-len\n const REGEX_EMOJIS = /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|\\ud83c[\\udd70-\\udd71]|\\ud83c[\\udd7e-\\udd7f]|\\ud83c\\udd8e|\\ud83c[\\udd91-\\udd9a]|\\ud83c[\\udde6-\\uddff]|\\ud83c[\\ude01-\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|\\ud83c[\\ude32-\\ude3a]|\\ud83c[\\ude50-\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff])/g;\n return stringToClean.replace(REGEX_EMOJIS, '');\n}\n\nexport function scrollToElement(idElement) {\n try {\n const element = document.getElementById(idElement);\n window.scrollTo(element.offsetLeft, element.offsetTop);\n } catch (_) {\n doNothing();\n }\n}\n\nexport function getElementOffsetTop(elementName = '', modifier = 0) {\n const element = document.getElementById(elementName);\n\n if (element) {\n return element.offsetTop - modifier;\n }\n\n return 0;\n}\n\nexport function isValidCardCVV(cvv) {\n if (cvv.length > CVV_CARD_LENGTH_MAX\n || cvv.length < CVV_CARD_LENGTH_MIN\n || !testOnlyNumber(cvv)) {\n return false;\n }\n return true;\n}\n\nexport function getCreditCardType(cardNumber) {\n const REGEX_AMEX = /^3[47]/;\n const REGEX_DINER_CLUB = /^3[068]/;\n const REGEX_VISA = /^4[0-9]/;\n\n if (REGEX_AMEX.test(cardNumber)) {\n return { length: 15, type: CreditCardType.AmericanExpress.name };\n }\n\n if (REGEX_VISA.test(cardNumber)) {\n return { length: 16, type: CreditCardType.Visa.name };\n }\n\n if (REGEX_DINER_CLUB.test(cardNumber)) {\n return { length: 14, type: CreditCardType.DinnersClub.name };\n }\n\n return {\n length: 16,\n type: CreditCardType.Other.name,\n };\n}\n\nexport function isValidCardNumber(cardNumber) {\n const cardType = getCreditCardType(cardNumber);\n\n if (cardType.type === CreditCardType.DinnersClub.name) {\n return false;\n }\n\n const CARD_NUMBER_LENGTH = cardType.length;\n\n if (cardNumber.length !== CARD_NUMBER_LENGTH\n || !testOnlyNumber(cardNumber)) {\n return false;\n }\n return true;\n}\n\nexport function isValidCardExpirationDate(expirationDate) {\n const EXPIRATION_DATE_LENGTH = 4;\n let isValidDate = false;\n if (expirationDate.length === 4) {\n const today = new Date();\n const currentYearRaw = today.getFullYear().toString().substring(2, 4);\n const currentYear = parseInt(currentYearRaw, 10);\n const currentMonth = parseInt(today.getMonth(), 10) + 1;// starts from 0\n const monthRaw = expirationDate.substring(0, 2);\n const month = parseInt(monthRaw, 10);\n const yearRaw = expirationDate.substring(2, 4);\n const year = parseInt(yearRaw, 10);\n\n if (year === currentYear) {\n isValidDate = month > currentMonth && month <= 12;\n } else if (year > currentYearRaw) {\n isValidDate = month >= 1 && month <= 12;\n } else {\n isValidDate = false;\n }\n }\n\n if (expirationDate.length !== EXPIRATION_DATE_LENGTH\n || !testOnlyNumber(expirationDate) || !isValidDate) {\n return false;\n }\n return true;\n}\n\nexport function formatDataDMY(utcFormatDate) {\n const splitedParts = utcFormatDate.split('-');\n return `${splitedParts[2]}-${splitedParts[1]}-${splitedParts[0]}`;\n}\n\nexport function createEffectiveDate() {\n const date = new Date();\n date.setDate(date.getDate() + 1);\n\n return date.toISOString().split('T')[0];\n}\n\nexport function getMobileOperatingSystem() {\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\n\n if (/android/i.test(userAgent)) {\n return OS.android;\n }\n\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\n return OS.ios;\n }\n\n return OS.unknown;\n}\n\nexport function closeWindow() {\n const os = getMobileOperatingSystem();\n\n if (os === OS.ios) {\n window.webkit.messageHandlers.dismissWebView.postMessage('finish_task');\n } else if (os === OS.android) {\n window.ReactNativeWebView.postMessage('close-page');\n } else {\n window.close();\n }\n}\n\nexport function validatePartnerIds({ parameters, synonyms }) {\n const response = {};\n const customParameter = Object.keys(parameters)\n .find((parameter) => synonyms\n .map((synonym) => synonym.toLowerCase())\n .includes(parameter.toLowerCase()));\n\n if (customParameter) {\n response.Name = customParameter;\n response.Value = parameters[customParameter];\n }\n\n return response;\n}\n\nexport function loadEmbeddedScript({\n onLoadCallback,\n scriptAsync,\n scriptDefer,\n scriptId,\n scriptInnerHTML,\n scriptSrc,\n scriptType = 'text/javascript',\n}) {\n if (document.getElementById(scriptId)) {\n return;\n }\n let script = document.createElement('script');\n if (scriptType === 'text/css') {\n script = document.createElement('style');\n }\n script.id = scriptId;\n script.type = scriptType;\n if (scriptSrc) {\n script.src = scriptSrc;\n }\n\n script.async = scriptAsync;\n script.defer = scriptDefer;\n\n if (scriptInnerHTML) {\n script.innerHTML = scriptInnerHTML;\n }\n if (onLoadCallback) {\n script.onload = () => onLoadCallback();\n }\n document.body.appendChild(script);\n}\n\nexport function extoleQuoteEvent({\n email,\n petAge,\n petBreed,\n petName,\n petSex,\n petType,\n promoCode,\n quoteId,\n state,\n zipcode,\n}) {\n window.extole?.createZone({\n data: {\n email,\n pet_age: petAge,\n pet_breed: petBreed,\n pet_name: petName,\n pet_sex: petSex,\n pet_type: petType,\n promo_code: promoCode,\n quote_id: quoteId,\n state,\n zipcode,\n },\n name: 'quote_submitted',\n });\n}\n\nexport function extolePurchaseEvent({\n cartValue,\n email,\n firstName,\n lastName,\n membershipType,\n partnerUserId,\n policyId,\n state,\n}) {\n window.extole?.createZone({\n data: {\n cart_value: cartValue,\n email,\n first_name: firstName,\n last_name: lastName,\n membership_type: membershipType,\n partner_user_id: partnerUserId,\n policy_id: policyId,\n state,\n },\n name: 'policy_purchased',\n });\n}\n\nexport const isProdEnv = process.env.REACT_APP_NAME === 'Prod';\n\nexport function getUtmParams(parameters) {\n return Object.fromEntries(Object.entries(parameters)\n .filter(([key]) => key.startsWith('utm_')));\n}\n\nexport function getAgeInYears(ageName = '') {\n if (ageName?.toLowerCase().includes('year')) {\n return ageName?.split(' ')[0];\n }\n\n return '0';\n}\n\n// Use this only if you can't use useRef,\n// React not recommend manipulate DOM directly\nexport function forceFocusElement(id) {\n const element = document.getElementById(id);\n\n if (element) {\n element.focus();\n }\n}\n\nexport function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * @param {string} value String to force to boolean\n * @returns {boolean} the parsed value\n */\nexport function toBoolean(value = '') {\n return !!value.match(/^(true|1|yes)$/i);\n}\n\nexport function getB2CRedirectUrl() {\n if (window.location.hostname === 'localhost') {\n return 'http://localhost:3000';\n }\n\n switch (process.env.REACT_APP_NAME) {\n case 'test-2':\n return 'https://test-2-d2c-quote.figopetinsurance.com';\n case 'test-3':\n return 'https://test-3-d2c-quote.figopetinsurance.com';\n case 'test-4':\n return 'https://c61-test-4-d2c-quote.azurewebsites.net';\n case 'Prod':\n return 'https://quote.figopetinsurance.com';\n case 'CPSC':\n return 'https://c61-cpsc-d2c-quote.azurewebsites.net';\n default:\n return 'https://test-3-d2c-quote.figopetinsurance.com';\n }\n}\n\nexport const appVersion = app.version;\n\nexport const useElectronicConsent = app['fpi-10540'];\n\nexport const removeDuplicates = (array, key) => {\n const uniqueSet = new Set();\n\n return array.filter((item) => {\n const value = key ? item[key] : item;\n if (!uniqueSet.has(value)) {\n uniqueSet.add(value);\n return true;\n }\n return false;\n });\n};\n\n/**\n * Validates if all the powerups have been reviewed by the user.\n * If not, returns an array with the powerup ids not reviewed\n * @param {object} petQuoteRateItem\n * @returns {{isValid: boolean, modifierIdNotSelectedList: int[]}}\n */\nexport const validatePowerupsSelected = (petQuoteRateItem) => {\n if (!petQuoteRateItem) {\n return { isValid: false, modifierIdNotSelectedList: [] };\n }\n const possiblePowerups = petQuoteRateItem.InsuranceModifiers.filter(\n (modifier) => modifier.InsuranceModifierTypeId === POWERUP_TYPE\n && modifier.IsVisible,\n );\n\n const modifierIdNotSelected = [];\n\n possiblePowerups.forEach((powerup) => {\n if (powerup.IsSelected === null || powerup.IsSelected === undefined) {\n modifierIdNotSelected.push(powerup.Id);\n }\n });\n\n return {\n isValid: !modifierIdNotSelected.length,\n modifierIdNotSelectedList: modifierIdNotSelected,\n };\n};\n\nexport const {\n useCostcoTN,\n useCustomEffectiveDate,\n useCustomPlanPills,\n useFSCLeads,\n useGoodDogTN,\n useMarketingChannel,\n useRetryPurchase,\n usePowerupsRadioButtons,\n useROPC,\n} = app;\n","import { apiCall } from '../util';\nimport {\n ONE_INC_PAYMENT_BANK_SAVED,\n ONE_INC_PAYMENT_CREDIT_CARD_SAVED,\n ONE_INC_PAYMENT_SAVED,\n ONE_INC_PAYMENT_UPDATED,\n ONE_INC_SESSION_CREATED,\n ONE_INC_SESSION_REMOVED,\n ONE_INC_PET_PAYMENT_METHOD_SAVED,\n ONE_INC_PET_PAYMENT_UPDATED,\n ONE_INC_PAYMENT_DEFAULTS_SAVED,\n ONE_INC_RESET_ALL,\n} from './types';\nimport { ONE_INC_PAYMENT_CATEGORY } from '../constants';\n\nexport function removeOneIncSession() {\n return { type: ONE_INC_SESSION_REMOVED };\n}\n\nexport function createOneIncSession() {\n return async (dispatch) => {\n const request = await apiCall('api/Payments/getOneIncSessionId');\n const response = await request.json();\n\n if (response.IsValid) {\n dispatch({\n portalOneSessionKey: response.Data.Result.portalOneSessionKey,\n type: ONE_INC_SESSION_CREATED,\n });\n }\n };\n}\n\nexport function savePaymentMethod(data) {\n const isCreditCard =\n data.paymentCategory === ONE_INC_PAYMENT_CATEGORY.creditCard;\n const type = isCreditCard\n ? ONE_INC_PAYMENT_CREDIT_CARD_SAVED : ONE_INC_PAYMENT_BANK_SAVED;\n\n return {\n data: {\n ...data,\n paymentCategory: isCreditCard\n ? ONE_INC_PAYMENT_CATEGORY.creditCard\n : ONE_INC_PAYMENT_CATEGORY.bankAccount,\n },\n type,\n };\n}\n\nexport function savePaymentMethods(data) {\n return { data, type: ONE_INC_PAYMENT_SAVED };\n}\n\nexport function updatePaymentMethods(data) {\n return { data, type: ONE_INC_PAYMENT_UPDATED };\n}\n\nexport function saveOneIncPetPaymentMethod(data) {\n return { data, type: ONE_INC_PET_PAYMENT_METHOD_SAVED };\n}\n\nexport function changeOneIncPaymentUpdate(data) {\n return { data, type: ONE_INC_PET_PAYMENT_UPDATED };\n}\n\nexport function savePaymentDefaultMethods(data) {\n return { data, type: ONE_INC_PAYMENT_DEFAULTS_SAVED };\n}\n\nexport function resetOneInInformation() {\n return { type: ONE_INC_RESET_ALL };\n}\n","// import track from 'react-tracking';\nimport moment from 'moment';\n\nimport { PLAN_LIMIT, PowerUpsRelation } from '../constants';\n\nexport const PAYMENT_TYPES_TRACKING = {\n BankAccount: 'Bank Account',\n CreditCard: 'Credit Card',\n};\n\nexport const EVENT_TYPE = {\n DEDUCTIBLE_SELECTION: 'DEDUCTIBLE_SELECTION',\n LOAD_QUOTE: 'LOAD_QUOTE',\n PAYMENT_METHOD_ADDITION: 'PAYMENT_METHOD_ADDITION',\n PAYMENT_METHOD_SELECTION: 'PAYMENT_METHOD_SELECTION',\n PLAN_SELECTION: 'PLAN_SELECTION',\n PURCHASE_COMPLETE: 'PURCHASE_COMPLETE',\n REIMBURSEMENT_SELECTION: 'REIMBURSEMENT_SELECTION',\n};\n\nexport const baseRequest = ({\n codeMask = '',\n email = '',\n promoCode = '',\n subId = '',\n}) => ({\n code_mask: codeMask,\n datetime_utc: moment(new Date()).format('MM-DD-YYYY hh:mm:ss'),\n email,\n origin: 'D2C',\n partner_account_code: promoCode,\n subid: subId,\n});\n\nexport function getPetPowerups({ currentPet, modifierList }) {\n if (!currentPet.modifiers) {\n return {\n extraCarePack: 'none',\n vetFees: 'none',\n wellness: 'none',\n };\n }\n\n const currentPetMods = currentPet.modifiers.filter((mod) => mod.isSelected);\n\n const modList = modifierList.filter((mod) => currentPetMods\n .find((petMod) => petMod.id === mod.Id));\n const extraCarePack = modList.find((mod) => mod.PMSModifierId\n === PowerUpsRelation.EXTRA_CARE_PACK_PSM_ID);\n\n const vetFees = modList.find((mod) => mod.PMSModifierId\n === PowerUpsRelation.VETERINARY_EXAM_FEES_PSM_ID);\n\n const wellness = modList.find((mod) => mod.PMSModifierId\n === PowerUpsRelation.WELLNESS_PSM_ID);\n\n let wellnessTag = 'none';\n\n if (wellness) {\n wellnessTag = wellness.BundleInsuranceModifiers\n .find((wChild) => currentPetMods.find((pm) => pm.id === wChild.Id))\n ?.TitleText.toLowerCase() === 'basic' ? 'tier-3' : 'tier-5';\n }\n\n return {\n extraCarePack: extraCarePack ? 'selected' : 'none',\n vetFees: vetFees ? 'selected' : 'none',\n wellness: wellnessTag,\n };\n}\n\nexport function getCurrentPrice({\n currentPet,\n deductibleIdParam = 0,\n petIdSelected,\n planIndex,\n quoteSelectedValues,\n reimbursementIdParam = 0,\n}) {\n const plans = currentPet.Plans[planIndex];\n const { deductibleId, reimbursementId } =\n quoteSelectedValues.find((pt) => pt.quoteId === petIdSelected);\n const price =\n plans.RatingOptions.find((rating) => rating.DeductibleId\n === (deductibleIdParam || deductibleId)\n && rating.ReimbursementId === (reimbursementIdParam || reimbursementId));\n\n return price;\n}\n\nexport function getQuotePlanInfo({ petId, quoteSelectedValues }) {\n const currentQuote = quoteSelectedValues\n .find((quote) => quote.quoteId === petId);\n\n return {\n annualPremium: currentQuote.totalAnnual,\n deductible: currentQuote.deductibleQuantity,\n deductibleId: currentQuote.deductibleId,\n monthlyLimit: currentQuote.selectedPlanAmount,\n monthlyPremium: currentQuote.totalMontly,\n reimbursement: currentQuote.reimbursementPercentage,\n selectedPlanIndex: currentQuote.selectedPlanIndex,\n };\n}\n\nexport function getPlanLimit(planInfoLimit) {\n let planLimit = PLAN_LIMIT.ESSENTIAL.value;\n\n switch (planInfoLimit) {\n case PLAN_LIMIT.ESSENTIAL.title:\n planLimit = PLAN_LIMIT.ESSENTIAL.value;\n break;\n case PLAN_LIMIT.PREFERRED.title:\n planLimit = PLAN_LIMIT.PREFERRED.value;\n break;\n case PLAN_LIMIT.UNLIMITED.title:\n planLimit = PLAN_LIMIT.UNLIMITED.value;\n break;\n default:\n planLimit = PLAN_LIMIT.ESSENTIAL.value;\n break;\n }\n\n return planLimit;\n}\n\nexport const customTrackEvent = (data) => {\n (window.dataLayer || []).push(data);\n\n // eslint-disable-next-line no-console\n console.log('trackEvent', data);\n};\n","import { getAgeInYears } from '../util';\nimport { PetType, PowerUpsRelation } from '../constants';\nimport {\n baseRequest,\n customTrackEvent,\n EVENT_TYPE,\n getPlanLimit,\n} from './baseRequest';\n\nfunction getPetPowerups({ currentPet, modifierList }) {\n if (!currentPet.modifiers) {\n return {\n extraCarePack: 'none',\n vetFees: 'none',\n wellness: 'none',\n };\n }\n\n const currentPetMods = currentPet.modifiers.filter((mod) => mod.isSelected);\n\n const modList = modifierList.filter((mod) => currentPetMods\n .find((petMod) => petMod.id === mod.Id));\n const extraCarePack = modList.find((mod) => mod.PMSModifierId\n === PowerUpsRelation.EXTRA_CARE_PACK_PSM_ID);\n\n const vetFees = modList.find((mod) => mod.PMSModifierId\n === PowerUpsRelation.VETERINARY_EXAM_FEES_PSM_ID);\n\n const wellness = modList.find((mod) => mod.PMSModifierId\n === PowerUpsRelation.WELLNESS_PSM_ID);\n\n let wellnessTag = 'none';\n\n if (wellness) {\n wellnessTag = wellness.BundleInsuranceModifiers\n .find((wChild) => currentPetMods.find((pm) => pm.id === wChild.Id))\n ?.TitleText.toLowerCase() === 'basic' ? 'tier-3' : 'tier-5';\n }\n\n return {\n extraCarePack: extraCarePack ? 'selected' : 'none',\n vetFees: vetFees ? 'selected' : 'none',\n wellness: wellnessTag,\n };\n}\n\nfunction getQuotePlanInfo({ petId, quoteSelectedValues }) {\n const currentQuote = quoteSelectedValues\n .find((quote) => quote.quoteId === petId) || {};\n\n return {\n annualPremium: currentQuote.totalAnnual,\n deductible: currentQuote.deductibleQuantity,\n monthlyLimit: currentQuote.selectedPlanAmount,\n monthlyPremium: currentQuote.totalMontly,\n reimbursement: currentQuote.reimbursementPercentage,\n };\n}\n\nexport function trackingLoadQuote({\n codeMask,\n email,\n modifierList,\n petQuoteList,\n promoCode,\n quoteSelectedValues,\n subId,\n zipCode,\n}) {\n const pets = petQuoteList.map((pet) => {\n const petQuoteInf = getQuotePlanInfo({\n petId: pet.petQuoteId,\n quoteSelectedValues,\n });\n\n const petQuotePowerups = getPetPowerups({ currentPet: pet, modifierList });\n\n return {\n age: getAgeInYears(pet.petAgeName),\n breed: pet.breedName,\n gender: pet.genderName.toLowerCase(),\n name: pet.petName,\n quote: {\n annual_premium: petQuoteInf.annualPremium,\n deductible: petQuoteInf.deductible,\n extra_care: petQuotePowerups.extraCarePack,\n limit: getPlanLimit(petQuoteInf.monthlyLimit),\n monthly_premium: petQuoteInf.monthlyPremium,\n reimbursement: petQuoteInf.reimbursement,\n vet_fees: petQuotePowerups.vetFees,\n wellness: petQuotePowerups.wellness,\n },\n species: pet.petType === PetType.Dog.value ? 'dog' : 'cat',\n zip: zipCode,\n };\n });\n\n customTrackEvent({\n ...baseRequest({ codeMask, email, promoCode, subId }),\n event: EVENT_TYPE.LOAD_QUOTE,\n pets,\n });\n}\n","import { useSelector } from 'react-redux';\nimport { useTracking } from 'react-tracking';\nimport { PetType } from '../constants';\nimport { getAgeInYears } from '../util';\nimport {\n baseRequest,\n customTrackEvent,\n EVENT_TYPE,\n getPetPowerups,\n getPlanLimit,\n getQuotePlanInfo,\n} from './baseRequest';\n\nconst useTrackingPurchaseComplete = () => {\n const { trackEvent } = useTracking({ }, { dispatch: customTrackEvent });\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n parameters: { groupCodeDscr, email },\n quoteSelectedValues,\n subId,\n } = store;\n\n function trackPurchaseComplete({ policies, effectiveDate }) {\n const pets = data.petQuoteResponseList.map((pet) => {\n const petQuoteInf = getQuotePlanInfo({\n petId: pet.petQuoteId,\n quoteSelectedValues,\n });\n\n const modifierList = data.insuranceProduct.InsuranceModifiers;\n const petQuotePowerups =\n getPetPowerups({ currentPet: pet, modifierList });\n\n const petPolicy = policies.find((policy) => policy.PetName === pet.petName\n && (policy.IsCat ? pet.petType === PetType.Cat.value\n : pet.petType === PetType.Dog.value));\n\n return {\n age: getAgeInYears(pet.petAgeName),\n breed: pet.breedName,\n gender: pet.genderName.toLowerCase(),\n name: pet.petName,\n policy: {\n annual_premium: petQuoteInf.annualPremium,\n deductible: petQuoteInf.deductible,\n effective_date: effectiveDate,\n extra_care: petQuotePowerups.extraCarePack,\n limit: getPlanLimit(petQuoteInf.monthlyLimit),\n monthly_premium: petQuoteInf.monthlyPremium,\n policy_number: petPolicy?.PolicyNumber,\n reimbursement: petQuoteInf.reimbursement,\n vet_fees: petQuotePowerups.vetFees,\n wellness: petQuotePowerups.wellness,\n },\n species: pet.petType === PetType.Dog.value ? 'dog' : 'cat',\n zip: data.zipCode,\n };\n });\n\n trackEvent({\n ...baseRequest({\n codeMask: groupCodeDscr,\n email,\n promoCode: data.groupCode || '',\n subId: subId.Value,\n }),\n event: EVENT_TYPE.PURCHASE_COMPLETE,\n pets,\n });\n }\n\n return { trackPurchaseComplete };\n};\n\nexport { useTrackingPurchaseComplete };\n","import { useSelector } from 'react-redux';\nimport { useTracking } from 'react-tracking';\nimport { PetType } from '../constants';\nimport { getAgeInYears } from '../util';\nimport {\n baseRequest,\n customTrackEvent,\n EVENT_TYPE,\n getCurrentPrice,\n getPetPowerups,\n getPlanLimit,\n getQuotePlanInfo,\n} from './baseRequest';\n\nconst useTrackingPlanSelection = () => {\n const { trackEvent } = useTracking({ }, { dispatch: customTrackEvent });\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n parameters: { groupCodeDscr, email },\n petQuoteSelected,\n quoteSelectedValues,\n subId,\n } = store;\n\n function trackPlanSelection({\n planIndex,\n planLimit,\n }) {\n const currentPet = data.petQuoteResponseList\n .find((element) => element.petQuoteId === petQuoteSelected);\n\n const petQuoteInf = getQuotePlanInfo({\n petId: currentPet.petQuoteId,\n quoteSelectedValues,\n });\n\n const modifierList = data.insuranceProduct.InsuranceModifiers;\n const petQuotePowerups = getPetPowerups({ currentPet, modifierList });\n\n const price = getCurrentPrice({\n currentPet,\n petIdSelected: petQuoteSelected,\n planIndex,\n quoteSelectedValues,\n });\n\n const petInfo = {\n age: getAgeInYears(currentPet.petAgeName),\n breed: currentPet.breedName,\n gender: currentPet.genderName.toLowerCase(),\n name: currentPet.petName,\n quote: {\n annual_premium: price.AnnualPremium,\n deductible: petQuoteInf.deductible,\n extra_care: petQuotePowerups.extraCarePack,\n limit: getPlanLimit(planLimit),\n monthly_premium: price.MonthlyPremium,\n reimbursement: petQuoteInf.reimbursement,\n vet_fees: petQuotePowerups.vetFees,\n wellness: petQuotePowerups.wellness,\n },\n species: currentPet.petType === PetType.Dog.value ? 'dog' : 'cat',\n zip: data.zipCode,\n };\n\n trackEvent({\n ...baseRequest({\n codeMask: groupCodeDscr,\n email,\n promoCode: data.groupCode || '',\n subId: subId.Value,\n }),\n event: EVENT_TYPE.PLAN_SELECTION,\n pet: petInfo,\n });\n }\n\n return { trackPlanSelection };\n};\n\nexport { useTrackingPlanSelection };\n","import popularActive from '../../../assets/plans/popular-active.svg';\nimport popularInactive from '../../../assets/plans/popular-inactive.svg';\nimport higherActive from '../../../assets/plans/higher-active.svg';\nimport higherInactive from '../../../assets/plans/higher-inactive.svg';\nimport valuePlusActive from '../../../assets/plans/value-plus-active.svg';\nimport valuePlusInactive from '../../../assets/plans/value-plus-inactive.svg';\n\nexport const prepackagedPlansIcons = [\n { active: popularActive, inactive: popularInactive },\n { active: higherActive, inactive: higherInactive },\n { active: valuePlusActive, inactive: valuePlusInactive },\n];\n\nexport const CUSTOM_PLAN_ID = -1;\n\nexport const MOST_POPULAR_ID = 1;\nexport const HIGHER_COVERAGE_ID = 2;\nexport const VALUE_PLUS_ID = 3;\n\nexport const WHATS_COVERED_LINK_ID = 'whatsCoveredLinkPlanSection';\n","export default __webpack_public_path__ + \"static/media/popular-active.b7422446.svg\";","export default __webpack_public_path__ + \"static/media/popular-inactive.74c92a40.svg\";","export default __webpack_public_path__ + \"static/media/higher-active.9c22bedd.svg\";","export default __webpack_public_path__ + \"static/media/higher-inactive.01378d40.svg\";","export default __webpack_public_path__ + \"static/media/value-plus-active.ae946b3b.svg\";","export default __webpack_public_path__ + \"static/media/value-plus-inactive.c896d607.svg\";","export const LANDING_URL = '/getQuote';\nexport const URL_YOUR_INFO = '/quoting/getquote/yourinfo/';\nexport const URL_ROOT_QUOTE = '/quoting/getquote';\nexport const URL_PURCHASE = '/quoting/purchase/success';\nexport const URL_PURCHASE_RETRY = '/quoting/purchase/retry';\nexport const URL_PURCHASE_ERROR = '/quoting/purchase/error';\nexport const URL_PURCHASE_BACKEND_ERROR = '/quoting/purchase/errors';\nexport const URL_COSTCO = '/Costco';\nexport const URL_COSTCO_CX = '/costco-cx';\nexport const URL_LOGOUT = '/logout';\nexport const URL_OPEN_QUOTE = '/openQuote';\nexport const URL_OPEN_QUOTE_ERROR = '/openQuote/error';\nexport const URL_LOGIN_ACCOUNT = '/login';\nexport const URL_GOOD_DOG = '/gooddog';\nexport const URL_USAA = '/usaa';\n","import { URL_COSTCO, URL_COSTCO_CX, URL_GOOD_DOG, URL_USAA } from '../routes';\n\n// #region GUIDS\nexport const COSTCO_PARTNER_IDS = [\n '4BC8B4C4-E147-41F8-8E96-B2E693CC2AD9',\n 'E22B67D6-6228-45DE-90D7-26D4470E7CDE',\n];\n\nexport const COSTCO_PARTNER_ID = COSTCO_PARTNER_IDS[0];\n\nexport const COSTCO_CX_PARTNER_ID = COSTCO_PARTNER_IDS[1];\n\nexport const GOOD_DOG_PARTNER_ID = '21229794-9CAA-4930-ABA6-B543A2C0CCDB';\n\nexport const USAA_PARTNER_ID = 'F85EA715-03FE-4149-9F11-5A8233C2504E';\n// #endregion\n\n// #region URL_PARAMS\nexport const COSTCO_URL_PARAMS = { refer: COSTCO_PARTNER_ID };\nexport const COSTCO_CX_URL_PARAMS = { refer: COSTCO_CX_PARTNER_ID };\nexport const GOOD_DOG_URL_PARAMS = { refer: GOOD_DOG_PARTNER_ID };\nexport const USAA_URL_PARAMS = { refer: USAA_PARTNER_ID };\n// #endregion\n\nexport const QUOTE_CLIENT_TYPES = {\n costco: 'Costco',\n d2c: 'Direct to Customer',\n goodDog: 'Good Dog',\n usaa: 'USAA',\n};\n\nexport const RECAPTCHA_PARTNER_ORIGIN = {\n costco: 3,\n d2c: 1,\n goodDog: 4,\n usaa: 5,\n};\n\n// #region info per partner\nexport const PARTNERS = {\n costco: {\n fastRoute: URL_COSTCO,\n name: QUOTE_CLIENT_TYPES.costco,\n partnerId: COSTCO_PARTNER_ID,\n recaptchaOrigin: RECAPTCHA_PARTNER_ORIGIN.costco,\n urlParams: COSTCO_URL_PARAMS,\n },\n costcoCx: {\n fastRoute: URL_COSTCO_CX,\n name: QUOTE_CLIENT_TYPES.costco,\n partnerId: COSTCO_CX_PARTNER_ID,\n recaptchaOrigin: RECAPTCHA_PARTNER_ORIGIN.costco,\n urlParams: COSTCO_CX_URL_PARAMS,\n },\n goodDog: {\n fastRoute: URL_GOOD_DOG,\n name: QUOTE_CLIENT_TYPES.goodDog,\n partnerId: GOOD_DOG_PARTNER_ID,\n recaptchaOrigin: RECAPTCHA_PARTNER_ORIGIN.goodDog,\n urlParams: GOOD_DOG_URL_PARAMS,\n },\n usaa: {\n fastRoute: URL_USAA,\n name: QUOTE_CLIENT_TYPES.usaa,\n partnerId: USAA_PARTNER_ID,\n recaptchaOrigin: RECAPTCHA_PARTNER_ORIGIN.usaa,\n urlParams: USAA_URL_PARAMS,\n },\n};\n// #endregion\n","import { doNothing } from '../util';\nimport {\n COSTCO_CX_PARTNER_ID,\n COSTCO_PARTNER_ID,\n COSTCO_PARTNER_IDS,\n GOOD_DOG_PARTNER_ID,\n PARTNERS,\n QUOTE_CLIENT_TYPES,\n USAA_PARTNER_ID,\n} from './partners.constants';\n\nfunction dateAddDays(addDay = 1) {\n const date = new Date();\n date.setDate(date.getDate() + addDay);\n date.setHours(23);\n date.setMinutes(59);\n\n return date;\n}\n\nexport const isPartnersCostco = (\n partnerId,\n) => COSTCO_PARTNER_IDS.includes(partnerId);\n\nexport const isPartnersGoodDog = (\n partnerId,\n) => GOOD_DOG_PARTNER_ID === partnerId;\n\nexport const isPartnersUSAA = (\n partnerId,\n) => USAA_PARTNER_ID === partnerId;\n\nexport const getPartnerData = (partnerId) => {\n switch (partnerId) {\n case USAA_PARTNER_ID:\n return PARTNERS.usaa;\n case GOOD_DOG_PARTNER_ID:\n return PARTNERS.goodDog;\n case COSTCO_CX_PARTNER_ID:\n return PARTNERS.costcoCx;\n case COSTCO_PARTNER_ID:\n return PARTNERS.costco;\n default:\n return null;\n }\n};\n\n/**\n * @param {string} param.partnerId\n * @returns {string} Client Name\n */\nexport const getQuoteClientType = ({ partnerId }) => {\n const partnerData = getPartnerData(partnerId);\n if (partnerData) {\n return partnerData.name;\n }\n return QUOTE_CLIENT_TYPES.d2c;\n};\n\nexport function pickupDateMin() {\n const date = new Date();\n\n return date.toISOString().split('T')[0];\n}\n\nexport function validatePickupDate(pickupDate) {\n if (!pickupDate) {\n return true;\n }\n\n let isValid = false;\n\n try {\n const minEffectiveDateTime = new Date().getTime();\n const pickupDateTime = new Date(`${pickupDate} 23:59`).getTime();\n\n isValid = pickupDateTime >= minEffectiveDateTime;\n } catch (_) {\n doNothing();\n }\n\n return isValid;\n}\n\nexport function validatePickupDate7Days(pickupDate) {\n if (!pickupDate) {\n return true;\n }\n\n let isValid = false;\n\n try {\n const minEffectiveDateTime = dateAddDays(7).getTime();\n const pickupDateTime = new Date(`${pickupDate} 01:00`).getTime();\n\n isValid = pickupDateTime <= minEffectiveDateTime;\n } catch (_) {\n doNothing();\n }\n\n return isValid;\n}\n","import {\n ACCOUNT_NUMBER_CHANGED,\n ACCOUNT_NUMBER_ERROR_CHANGED,\n ACCOUNT_TYPE_CHANGED,\n ADDRESS_BY_ZIP_CODE_LOADED,\n AGE_DATA_ERROR,\n AGE_DATA_LOADED,\n AGREE_TERMS_AND_CONDITION_CHANGED,\n AMERICAN_STATES_LOADED,\n BREED_DATA_ERROR,\n BREED_DATA_LOADED,\n CARD_CVV_CHANGED,\n CARD_CVV_ERROR_CHANGED,\n CARD_NUMBER_CHANGED,\n CARD_NUMBER_ERROR_CHANGED,\n COMING_SOON_ERROR_MODAL_CLOSED,\n COMING_SOON_MODAL_CLOSED,\n COMING_SOON_SUCCESS_MODAL_CLOSED,\n CONFIRM_ACCOUNT_NUMBER_CHANGED,\n CONFIRM_ACCOUNT_NUMBER_ERROR_CHANGED,\n CONSENT_ELECTRONIC_DELIVERY_CHANGED,\n COSTCO_MEMBERSHIP_EDIT_CLICKED,\n COSTCO_MEMBERSHIP_ERROR_MESSAGE_SET,\n COSTCO_MEMBERSHIP_NUMBER_CHANGED,\n COSTCO_MEMBERSHIP_VALIDATED,\n COSTCO_MEMBERSHIP_VALIDATION_FAILED,\n COSTCO_MEMBERSHIP_VALIDATION_STARTED,\n CREATE_DIAMOND_CLIENT_ATTEMPT,\n CREATE_DIAMOND_CLIENT_ERROR,\n CREATE_DIAMOND_CLIENT_SUCCESS,\n CREDIT_CARD_TYPE_CHANGED,\n CURRENT_QUOTE_STEP_CHANGED,\n CUSTOM_VET_CITY_CHANGED,\n CUSTOM_VET_DATA_CLEARED,\n CUSTOM_VET_MODAL_OPENED,\n CUSTOM_VET_PRACTICE_NAME_CHANGED,\n CUSTOM_VET_SAVED,\n CUSTOM_VET_STATE_CHANGED,\n CUSTOMER_VALIDATED,\n CUSTOMER_VALIDATION_ATTEMPT,\n CUSTOMER_VALIDATION_ERROR,\n DEDUCTIBLE_LEGEND_CHANGED,\n DIAMOND_CUSTOMER_LOGIN_ATTEMPT,\n DIAMOND_CUSTOMER_LOGIN_CLEANED,\n DIAMOND_CUSTOMER_LOGIN_FAILED,\n DIAMOND_CUSTOMER_LOGIN_SUCCESS,\n DIAMOND_CUSTOMER_LOGOUT,\n DIAMOND_CUSTOMER_RESETED_LOGIN_FAIL,\n DIAMOND_CUSTOMER_VALIDATION_ATTEMPT,\n DIAMOND_CUSTOMER_VALIDATION_FAILED,\n DIAMOND_CUSTOMER_VALIDATION_LOADED,\n DIAMOND_CUSTOMER_ZIPCODE_CHANGED,\n EFFECTIVE_DATE_CUSTOM_CHANGED,\n ERROR_MODAL_CLOSED,\n EXPIRATION_DATE_CHANGED,\n EXPIRATION_DATE_ERROR_CHANGED,\n EXTOLE_PURCHASE_COMPLETED,\n EXTOLE_UUID_SAVED,\n FAILED_TO_LOAD_ADDRESS_BY_ZIP_CODE,\n FAILED_TO_LOAD_AMERICAN_STATES,\n FAILED_TO_LOAD_VETERINARIANS,\n FORGET_PASSWORD_CONFIRM_MODAL_VISIBLE_CHANGED,\n FORGET_PASSWORD_MODAL_EMAIL_CHANGED,\n FORGET_PASSWORD_MODAL_EMAIL_ERROR_CHANGED,\n FORGET_PASSWORD_MODAL_VISIBLE_CHANGED,\n FORGET_PASSWORD_RESET_PASSWORD_ATTEMTPED,\n FORGET_RESET_PASSWORD_FAILED,\n FORGET_RESET_PASSWORD_SUCCEEDED,\n IN_APP_STARTED,\n IN_LOGIN_APP_STARTED,\n LOAD_MULTI_MODAL_DATA_FAILED,\n LOAD_MULTI_MODAL_DATA_SUCCESS,\n LOADING_QUOTE_DATA_FINISH,\n LOADING_QUOTE_DATA,\n MODAL_CUSTOMER_WELCOME_VISIBLE_CHANGED,\n MODAL_PET_CO_PAY_VISIBLE_CHANGED,\n MULTI_MODAL_CUSTOM_CONTENT_CHANGED,\n MULTI_MODAL_CUSTOM_CONTENT_CLEARED,\n MULTI_MODAL_NEED_TO_KNOW_VISIBLE_CHANGED,\n MULTI_MODAL_PET_CO_PAY_VISIBLE_CHANGED,\n MULTI_MODAL_TERMS_AND_COND_VISIBLE_CHANGED,\n MULTI_MODAL_WELLNESS_VISIBLE_CHANGED,\n NAME_ON_CARD_CHANGED,\n NAME_ON_CARD_ERROR_CHANGED,\n NEW_CUSTOMER_ADDRESS_LOAD_ATTEMPTED,\n NEW_CUSTOMER_CITY_CHANGED,\n NEW_CUSTOMER_CONFIRM_PASSWORD_CHANGED,\n NEW_CUSTOMER_EMAIL_CHANGED,\n NEW_CUSTOMER_EMAIL_ERROR_CHANGED,\n NEW_CUSTOMER_EMPLOYEE_ID_CHANGED,\n NEW_CUSTOMER_LAST_NAME_CHANGED,\n NEW_CUSTOMER_NAME_CHANGED,\n NEW_CUSTOMER_PASSWORD_CHANGED,\n NEW_CUSTOMER_PASSWORD_CONFIRM_ERROR_CHANGED,\n NEW_CUSTOMER_PASSWORD_ERROR_CHANGED,\n NEW_CUSTOMER_PHONE_CHANGED,\n NEW_CUSTOMER_RESET_EMAIL,\n NEW_CUSTOMER_SECOND_PARENT_LAST_NAME_CHANGED,\n NEW_CUSTOMER_SECOND_PARENT_NAME_CHANGED,\n NEW_CUSTOMER_SECOND_PARENT_NUMBER_CHANGED,\n NEW_CUSTOMER_STATE_CHANGED,\n NEW_CUSTOMER_STREET_CHANGED,\n NEW_CUSTOMER_STREET2_CHANGED,\n NEW_CUSTOMER_ZIP_CODE_CHANGED,\n NEW_PET_AGE_SAVED,\n NEW_PET_BREED_SAVED,\n NEW_PET_EMAIL_SAVED,\n NEW_PET_NAME_SAVED,\n NEW_PET_PROMO_CODE_SAVED,\n NEW_PET_SEX_SAVED,\n NEW_PET_TYPE_SAVED,\n NEW_PET_ZIPCODE_SAVED,\n NO_DIAMOND_CLIENT_ID_OR_PC_ERROR,\n NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL,\n NOTIFY_ME_BUTTON_CLICKED,\n NOTIFY_ME_EMAIL_VALUES_SAVED,\n NOTIFY_ME_FAILED,\n NOTIFY_ME_SUCCESS,\n ONE_INC_PAYMENT_BANK_SAVED,\n ONE_INC_PAYMENT_CREDIT_CARD_SAVED,\n ONE_INC_PAYMENT_DEFAULTS_SAVED,\n ONE_INC_PAYMENT_SAVED,\n ONE_INC_PAYMENT_UPDATED,\n ONE_INC_PET_PAYMENT_METHOD_SAVED,\n ONE_INC_PET_PAYMENT_UPDATED,\n ONE_INC_SESSION_CREATED,\n ONE_INC_SESSION_REMOVED,\n OPEN_QUOTE_LOADED,\n OPEN_QUOTE_PENDING_PETS_LOADED,\n OPEN_SAVED_QUOTE_ATTEMPT,\n OPEN_SAVED_QUOTE_ERROR,\n OPEN_SAVED_QUOTE_EXPIRED,\n PARAMETERS_UPDATED,\n PARTNER_ID_INFORMATION_FAILED,\n PARTNER_ID_INFORMATION_LOADED,\n PARTNER_ID_LOAD_INFORMATION_ATTEMPT,\n PAYMENT_METHOD_TYPE_CHANGE,\n PAYMENT_PLAN_FREQUENCY_CHANGED,\n PET_ADDED,\n PET_QUOTE_REMOVAL_ATTEMPT,\n PET_QUOTE_REMOVAL_FAILED,\n PET_QUOTE_REMOVAL_SUCCEED,\n PET_REMOVED,\n PET_TAG_COLOR_CHANGED,\n PET_TAG_DATE_ERRORS_CHANGED,\n PET_TAG_DATE_OF_BIRTH_CHANGED,\n PET_UPDATED,\n POWER_UP_SELECTED,\n PROCEED_WITHOUT_PARTNER_CHANGED,\n PURCHASE_ATTEMPT,\n PURCHASE_COMPLETED,\n QUOTE_DATA_LOADED_BY_STORAGE,\n QUOTE_PLAN_SELECTED,\n QUOTE_POWER_UP_CHANGED,\n QUOTE_WELLNESS_SELECTED,\n QUOTING_PLAN_DATA_LOADED,\n RATE_QUOTE_ERROR,\n RATE_QUOTE_UPDATE_ATTEMPT,\n RATE_QUOTE_UPDATE_LOADED,\n RATE_SUMMARY_ATTEMP,\n RATE_SUMMARY_FAILED,\n RATE_SUMMARY_SUCCESS,\n RECALCULATE_LOCAL_TOTAL,\n REMOVE_PET_MODAL_VISIBLE,\n RESET_POWER_UP_ARIA_LABEL,\n RESET_QUOTES_VALUES_SELECTED,\n ROUTING_NUMBER_CHANGED,\n ROUTING_NUMBER_ERROR_CHANGED,\n SAME_ADDRESS_FOR_BILLING_CHANGED,\n SAVE_DEDUCTIBLE_SELECTED,\n SAVE_MONTHLY_PLAN_SELECTED,\n SAVE_QUOTE_ATTEMPT,\n SAVE_QUOTE_ERROR,\n SAVE_QUOTE_MOBILE_VISIBLE_CHANGED,\n SAVE_REIMBURSEMENT_SELECTED,\n SAVE_SELECTED_ADD_PET_MODAL,\n SAVE_SELECTED_EDIT_PET_MODAL,\n SAVE_SELECTED_PET_NUMBER,\n SAVE_UPDATED_PET,\n SAVE_URL_PARAMETERS,\n SAVE_UTM_PARAMS,\n SAVED_QUOTE_MODAL_VISIBLE,\n SAVED_QUOTE,\n SECOND_ADDRESS_CITY_CHANGED,\n SECOND_ADDRESS_CITY_ERROR_CHANGED,\n SECOND_ADDRESS_CLEARED,\n SECOND_ADDRESS_STATE_ERROR_CHANGED,\n SECOND_ADDRESS_STREET_CHANGED,\n SECOND_ADDRESS_STREET_ERROR_CHANGED,\n SECOND_ADDRESS_STREET2_CHANGED,\n SECOND_ADDRESS_ZIP_CODE_CHANGED,\n SECOND_ADDRESS_ZIP_ERROR_CHANGED,\n SECOND_PARENT_FORM_TOGGLED,\n SEND_SMS_APPS_LINKS_ATTEMPT,\n SEND_SMS_APPS_LINKS_FAILED,\n SEND_SMS_APPS_LINKS_SUCCESS,\n SIGNED_UP_SMS_ATTEMPT,\n SIGNED_UP_SMS,\n SUB_ID_SAVED,\n TERMS_AND_CONDITION_VALIDATION_CHANGED,\n UNDERSTAND_CONDITIONS_CHANGED,\n VETERINARIAN_SET,\n VETERINARIANS_LOAD_ATTEMPT,\n VETERINARIANS_LOADED,\n YOUR_INFO_SCROLL_TO_TOP_TOGGLED,\n YOUR_INFO_STEP_CHANGED,\n ZIP_CODE_CUSTOMER_UPDATED,\n ZIP_CODE_VALIDATION_ATTEMPT,\n ZIP_CODE_VALIDATION_CRASHED,\n ZIP_CODE_VALIDATION_FAILED,\n ZIP_CODE_VALIDATION_SUCCESS,\n ONE_INC_RESET_ALL,\n QUOTE_SELECTED_VALUES_REMOVED,\n CONTINUE_WITHOUT_LOGIN,\n IMPERSONATING_INFO_CHANGED,\n RECALCULATE_PACKAGED_VALUES_SELECTED,\n FETCH_MESSAGE_SUCCESS,\n FETCH_MESSAGE_NO_DATA,\n NEW_PET_PICKUP_DATE_SAVED,\n GOOD_DOG_COMING_SOON_MODAL_SHOWED,\n GOOD_DOG_COMING_SOON_MODAL_HIDED,\n CUSTOMER_VALIDATION_RESTARTED,\n RECAPTCHA_VALIDATE_LOADED,\n RECAPTCHA_VALIDATE_ATTEMPT,\n RECAPTCHA_VALIDATE_FAILED,\n RETRY_PURCHASE_ERROR,\n NEW_PET_GROUP_DSCR_CODE_SAVED,\n TERMS_AND_POLICY_CHANGED,\n PURCHASE_MULTIPLE_ATTEMPT,\n PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED,\n POWERUP_ID_ERRORS_REMOVED,\n POWERUP_ID_ERRORS_RESTARTED,\n POWERUP_ID_ERRORS_SET,\n CUSTOMER_PASSWORD_SET,\n LOGIN_B2C_STARTED,\n LOGIN_B2C_FAILED,\n DUPLICATED_VALIDATION_FAILED,\n DUPLICATED_VALIDATION_MODAL_CLOSED,\n QUOTE_PLAN_SELECTED_BY_QUOTEID,\n ALL_PETS_POWERUPS_VALIDATED,\n INITIAL_EMAIL_REASIGNED,\n SUB_ID_SYNONYMS_DATA_LOADED,\n} from '../actions/types';\nimport {\n AMERICAN_STATES,\n AccountTypes,\n CreditCardType,\n MODAL_DEFAULT_CATEGORY,\n PAYMENT_TYPE,\n PetGender,\n PetType,\n YOUR_INFO_STEPS,\n ONE_INC_EMPTY_ACH,\n ONE_INC_EMPTY_CC,\n ONE_INC_PAYMENT_CATEGORY,\n PURCHASE_MULTI_STATUS,\n} from '../constants';\nimport {\n isPartnersCostco,\n isPartnersGoodDog,\n isPartnersUSAA,\n} from '../partners/partners.util';\n\nconst {\n NEED_TO_KNOW_DEF_CATEGORY_ID,\n PET_CO_PAY_DEF_CATEGORY_ID,\n TERMS_AND_COND_DEF_CATEGORY_ID,\n WELLNESS_DEF_CATEGORY_ID,\n} = MODAL_DEFAULT_CATEGORY;\n\nconst INITIAL_QUOTE_SELECTED_VALUES = {\n annualAmountPlan: 0,\n annualTax: 0,\n deductibleId: 9,\n deductibleQuantity: '$750',\n isMonthlyPlan: true,\n modifiers: [],\n monthlyAmountPlan: 0,\n monthlyTax: 0,\n partnerAnnualSaving: 0,\n petName: '',\n quoteId: 1,\n reimbursementId: 3,\n reimbursementPercentage: '80%',\n // @Deprecate\n selectedPlan: 9,\n selectedPlanAmount: '0',\n selectedPlanIndex: 1,\n selectedPlanPackaged: 9,\n total: 0,\n totalAnnual: 0,\n totalMontly: 0,\n};\n\nconst INITIAL_SECONDARY_ADDRESS_STATE = {\n city: '',\n cityError: '',\n state: '',\n stateError: '',\n street: '',\n street2: '',\n street2Error: '',\n streetError: '',\n zip: '',\n zipError: '',\n};\n\nconst INITIAL_PLANS_STATE = [{ id: 0 }, { id: 1 }, { id: 2 }];\n\nconst INITIAL_PLANS_PACKAGED = [\n {\n DeductibleId: 8,\n Description: '',\n Id: 4,\n monthlyPrice: 0,\n Name: 'Most Popular',\n PlanId: 9,\n ReimbursementId: 3,\n },\n {\n DeductibleId: 4,\n Description: '',\n Id: 5,\n monthlyPrice: 0,\n Name: 'Higher Coverage',\n PlanId: 39,\n ReimbursementId: 2,\n },\n {\n DeductibleId: 9,\n Description: '',\n Id: 6,\n monthlyPrice: 0,\n Name: 'Value Plus',\n PlanId: 12,\n ReimbursementId: 4,\n },\n];\n\nconst INITIAL_RATE_SUMMARY = {\n AllDiscounts: [],\n loading: false,\n PetQuotes: [],\n powerUpChanged: false,\n pricesChanged: false,\n QuoteSummaries: [],\n};\n\nconst INITIAL_PARTNERS_STATE = {\n comingSoonZipcode: null,\n costcoMembership: {\n editing: true,\n error: '',\n executeMemberBenefitDisplay: '',\n executeMemberBenefitWaivedAmount: null,\n feeWaivedMessageContent: '',\n feeWaivedMessageTitle: '',\n isFeeWaived: false,\n isValid: false,\n loading: false,\n membershipNumber: '',\n membershipStatus: '',\n membershipTier: '',\n membershipType: '',\n membershipTypeName: null,\n message: null,\n waivableFee: 0,\n zipCode: '',\n },\n data: {},\n isCostco: false,\n isGoodDog: false,\n isUSAA: false,\n loaded: false,\n loading: false,\n notifyMeEmail: {\n email: '',\n invalidQuote: false,\n petAge: '',\n petBreed: '',\n petName: '',\n petSex: '',\n zipcode: '',\n },\n partnerId: null,\n partnerName: '',\n petPickupDate: null, // for good dog\n};\n\nconst INITIAL_ONE_INC = {\n bankAccount: { ...ONE_INC_EMPTY_ACH },\n creditCard: { ...ONE_INC_EMPTY_CC },\n customerId: '',\n customerUpdated: false,\n defaultsPaymentMethod: {\n bankAccount: { ...ONE_INC_EMPTY_ACH },\n creditCard: { ...ONE_INC_EMPTY_CC },\n defaultValue: '',\n },\n isTwoDefaults: false,\n paymentCategory: '',\n petPaymentMethods: [],\n portalOneSessionKey: '',\n tokenId: '',\n};\n\nconst INITIAL_STATE = {\n acceptedTermsAndPolicy: false,\n addPetModalVisible: false,\n ageData: null,\n americanStates: [],\n breedData: null,\n companyName: '',\n currentQuoteStep: 1,\n customerValidationLoading: false,\n customerValidationResponse: {\n customerRoles: [],\n displayName: '',\n email: '',\n fullName: '',\n hasPassword: true,\n id: 0,\n isValid: false,\n message: '',\n userName: '',\n },\n customerZipCode: null,\n customVet: {\n city: '',\n nameOfPractice: '',\n state: '',\n stateId: '',\n },\n customVetModalVisible: false,\n data: null,\n deductibleLegend: '',\n diamondClientLoading: false,\n editPetModalVisible: false,\n effectiveDateCustom: null,\n employeeIdHelpText: null,\n employer: {\n id: 1,\n },\n employerPromoCode: '',\n extoleQuoteUUID: null,\n goodDogComingSonModalVisible: false,\n inApp: false,\n inLoginApp: false,\n installmentName: '',\n isAgeDataLoading: true,\n isBreedDataLoading: true,\n isErrorModalVisible: false,\n isLoading: false,\n isLoadingNewAddress: false,\n isMonthlyPlan: true,\n message: '',\n modalCustomerWelcomeVisible: false,\n multiModalCustomData: null,\n multiModalData: {\n InsuranceMultiModalSectionDtoList: [],\n IsEbProduct: false,\n ZipCode: '',\n },\n multiModalUserSelection: {\n needToKnowIdSelected: NEED_TO_KNOW_DEF_CATEGORY_ID,\n needToKnowModalVisible: false,\n needToKnowSelectionHistory: [],\n petCoPayIdSelected: PET_CO_PAY_DEF_CATEGORY_ID,\n petCoPayModalVisible: false,\n termsAndCondIdSelected: TERMS_AND_COND_DEF_CATEGORY_ID,\n termsAndCondModalVisible: false,\n wellnessIdSelected: WELLNESS_DEF_CATEGORY_ID,\n wellnessModalVisible: false,\n },\n newCustomer: {\n address: {\n city: '',\n cityFromZipCode: '',\n state: '',\n stateAbbr: '',\n street: '',\n street2: '',\n zipCode: '',\n },\n canEditAddress: false,\n email: '',\n emailError: '',\n emailValidated: false, // email validate if exist\n initialEmail: '',\n lastName: '',\n loadingVets: false,\n name: '',\n password: '',\n passwordConfirm: '',\n passwordConfirmError: '',\n passwordError: '',\n phoneNumber: '',\n resetEmail: false,\n secondParent: {\n lastName: '',\n name: '',\n phoneNumber: '',\n },\n },\n newPet: {\n breedCat: [],\n breedDog: [],\n email: '',\n petAge: null,\n petBreed: null,\n petBreedId: null,\n petName: '',\n petSex: PetGender.None,\n petType: PetType.None,\n promoCode: '',\n zipcode: '',\n },\n oneInc: INITIAL_ONE_INC,\n openQuoteGuid: '',\n parameters: {},\n partners: INITIAL_PARTNERS_STATE,\n paymentMethod: {\n bankAccount: {\n accountNumber: '',\n accountNumberConfirmation: '',\n accountNumberConfirmationError: '',\n accountNumberError: '',\n accountType: AccountTypes[0],\n routingNumber: '',\n routingNumberError: '',\n },\n billingAddress: INITIAL_SECONDARY_ADDRESS_STATE,\n creditDebit: {\n cardCvv: '',\n cardCvvError: '',\n cardNumber: '',\n cardNumberError: '',\n creditCardType: CreditCardType.Other,\n expirationDate: '',\n expirationDateError: '',\n nameOnCard: '',\n nameOnCardError: '',\n },\n loadingSecondAddress: false,\n mailAddressSameAsPet: true,\n paymentMethodType: PAYMENT_TYPE.creditCard,\n },\n petParentAddress: null,\n petParentAddressError: false,\n petQuoteSelected: 1,\n petRemovedLoading: false,\n petRemovedSuccess: false,\n petsWithQuoteError: [],\n petTags: null,\n petTagsErrors: [],\n petToRemove: {\n petName: '',\n petType: PetType.Dog.value,\n },\n petUpdated: false,\n planChanged: false,\n plans: INITIAL_PLANS_STATE,\n plansPackaged: INITIAL_PLANS_PACKAGED,\n powerUpErrors: [],\n powerUpErrorsScroll: false,\n powerUpLoadings: [],\n purchase: {\n customerId: '',\n duplicatedPets: [],\n duplicatedPetsModalVisible: false,\n error: '',\n extolePurchaseComplete: false,\n incompletePurchases: [],\n loading: false,\n multiQuoteList: [\n {\n id: 0,\n isCat: true,\n petName: '',\n status: PURCHASE_MULTI_STATUS.progress,\n },\n ],\n multiQuoteLoading: false,\n notDuplicatedPets: [],\n policyNumbers: [],\n sendingMessage: false,\n success: false,\n },\n quoteSelectedValues: [],\n rateSummary: INITIAL_RATE_SUMMARY,\n recaptcha: {\n error: null,\n loading: false,\n token: null,\n },\n redirectToLanding: false,\n removePetModalSuccess: false,\n removePetModalVisible: false,\n saveQuote: {\n failOpenQuote: false,\n isOpeningQuote: false,\n isSavingQuote: false,\n openQuoteLoaded: false,\n quoteId: null,\n redirectLink: '',\n savedQuoteExpired: false,\n savedQuoteId: null,\n savedQuoteModalVisible: false,\n saveQuoteMobileModalVisible: false,\n },\n scrollYourInfoToTop: false,\n searchParameters: '',\n secondParentFormVisible: false,\n selectedVeterinarian: {\n AccountID: '0010a00001WKi7Z',\n customCity: '',\n customState: '',\n customStateId: '',\n isCustomVet: false,\n nameOfPractice: '',\n },\n sessionInformation: {\n forgetPasswordEmail: '',\n forgetPasswordEmailError: '',\n forgetPasswordModalConfirmVisible: false,\n forgetPasswordModalVisible: false,\n forgetPasswordPasswordUpdated: false,\n forgetPasswordResetLoading: false,\n impersonatingEmail: '',\n isCustomer: false,\n isImpersonating: false,\n isLoading: false,\n loadingLogin: false,\n loadingTagFinish: '',\n loggingWithoutModal: false,\n nopCommerceUser: {\n Address: {\n AddressLine1: '',\n AddressLine2: '',\n City: '',\n State: '',\n ZipCode: '',\n },\n BillingInfoList: [],\n CustomerNopCommerceId: 0,\n DefaultPaymentProfileIdACH: '',\n DefaultPaymentProfileIdCC: '',\n DiamonClientdId: 0,\n FirstName: '',\n LastName: '',\n LoginMessage: '',\n LoginSuccess: false,\n MarketingChannelId: 1,\n MiddleName: '',\n },\n notifyMeButtonLoading: false,\n showComingSoonModal: false,\n showErrorComingSoonModal: false,\n showLoginMenssage: false,\n showSuccessComingSoonModal: false,\n showWelcomeMessage: false,\n userEmail: '',\n validateZipCodeLoading: false,\n },\n subId: {},\n subIdSynonyms: {},\n temporaryMessageData: '',\n termsAndConditions: {\n agreeTermsAndConditionCheck: false,\n agreeTermsAndConditionError: false,\n consentElectronicDeliveryCheck: true,\n modalDescription: '',\n modalTitle: '',\n understandConditionCheck: false,\n understandConditionError: false,\n },\n textAlerts: {\n error: '',\n loading: false,\n success: false,\n },\n togglePetCoPayModalVisible: false,\n utmParams: {},\n validatingEmployerId: false,\n vetList: [],\n yourInfoStep: YOUR_INFO_STEPS.firstStep,\n};\n\nexport default function reducer(state = INITIAL_STATE, action) {\n switch (action.type) {\n case RATE_QUOTE_ERROR: {\n return {\n ...state,\n addPetModalVisible: false,\n editPetModalVisible: false,\n isLoading: action.status,\n message: action.message,\n petTags: [],\n redirectToLanding: action.redirectToLanding,\n };\n }\n\n case NO_DIAMOND_CLIENT_ID_OR_PC_ERROR:\n return {\n ...state,\n addPetModalVisible: false,\n editPetModalVisible: false,\n isLoading: false,\n message: action.message,\n petTags: [],\n redirectToLanding: true,\n };\n\n case LOADING_QUOTE_DATA: {\n return {\n ...state,\n isLoading: true,\n };\n }\n\n case LOADING_QUOTE_DATA_FINISH: {\n return {\n ...state,\n isLoading: false,\n loadingTagFinish: action.tag || '',\n };\n }\n\n case QUOTING_PLAN_DATA_LOADED: {\n const { isUpdate } = action;\n\n return {\n ...state,\n customerZipCode: action.data.zipCode,\n data: action.data,\n newPet: {\n ...state.newPet,\n breedDataFiltered: null,\n petAge: null,\n petName: '',\n petSex: PetGender.None,\n petType: PetType.None,\n },\n openQuoteGuid: action.openQuoteGuid,\n petTags: state.petTags\n ? state.petTags\n : action.data.petQuoteResponseList\n .map((quote) => {\n const { petName, petQuoteId, petType } = quote;\n\n return {\n petDateOfBirth: new Date().toLocaleDateString('en-US'),\n petName,\n petQuoteId,\n petTagColor: 1,\n petType,\n };\n }),\n petUpdated: false,\n plans: action.plans,\n plansPackaged: action.plansPackaged,\n quoteSelectedValues: isUpdate\n ? [\n ...state.quoteSelectedValues.map((item) => {\n if (item.quoteId === state.petQuoteSelected) {\n return {\n ...item,\n petName: isUpdate\n ? action.petName\n : item.petName,\n };\n }\n\n return item;\n }),\n ]\n : [\n ...state.quoteSelectedValues,\n {\n ...INITIAL_QUOTE_SELECTED_VALUES,\n annualAmountPlan: action.annualAmountPlan,\n deductibleId: action.deductibleId,\n deductibleQuantity: action.deductibleQuantity,\n monthlyAmountPlan: action.monthlyPremium,\n partnerAnnualSaving: action.partnerAnnualSaving,\n petName: action.petName,\n quoteId: action.quoteId,\n reimbursementId: action.reimbursementId,\n reimbursementPercentage: action.reimbursementPercentage || '',\n selectedPlan: action.selectedPlan,\n selectedPlanAmount: action.selectedPlanAmount,\n selectedPlanIndex: action.selectedPlanIndex,\n selectedPlanPackaged: action.selectedPlanPackaged\n || action.selectedPlan,\n total: action.monthlyPremium,\n totalAnnual: action.monthlyPremium * 12,\n totalMontly: action.monthlyPremium,\n },\n ],\n saveQuote: {\n ...state.saveQuote,\n isOpeningQuote: false,\n },\n };\n }\n\n case SAVE_URL_PARAMETERS: {\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n email: action.parameters.email || '',\n initialEmail: action.parameters.email || '',\n },\n newPet: {\n ...state.newPet,\n groupCodeDscr: action.parameters.groupCodeDscr || '',\n promoCode: action.parameters.groupCode || '',\n },\n parameters: {\n ...state.parameters,\n ...action.parameters,\n },\n searchParameters: action.search,\n };\n }\n\n case PARAMETERS_UPDATED:\n return {\n ...state,\n parameters: {\n ...state.parameters,\n ...action.parameters,\n },\n };\n\n case SAVE_MONTHLY_PLAN_SELECTED: {\n return {\n ...state,\n quoteSelectedValues: [\n ...state.quoteSelectedValues.map((item) => {\n if (item.quoteId === state.petQuoteSelected) {\n return {\n ...item,\n annualAmountPlan: action.annualAmount,\n monthlyAmountPlan: action.monthlyAmount,\n partnerAnnualSaving: action.partnerAnnualSaving,\n };\n }\n\n return item;\n }),\n ],\n };\n }\n\n case SAVE_REIMBURSEMENT_SELECTED: {\n return {\n ...state,\n openQuoteGuid: '',\n planChanged: false,\n quoteSelectedValues: [\n ...state.quoteSelectedValues.map((item) => {\n if (item.quoteId === state.petQuoteSelected) {\n return {\n ...item,\n reimbursementId: action.id,\n reimbursementPercentage: action.description,\n };\n }\n\n return item;\n }),\n ],\n };\n }\n\n case SAVE_DEDUCTIBLE_SELECTED: {\n return {\n ...state,\n openQuoteGuid: '',\n planChanged: false,\n quoteSelectedValues: [\n ...state.quoteSelectedValues.map((item) => {\n if (item.quoteId === state.petQuoteSelected) {\n return {\n ...item,\n deductibleId: action.id,\n deductibleQuantity: action.description,\n };\n }\n\n return item;\n }),\n ],\n };\n }\n\n case QUOTE_WELLNESS_SELECTED: {\n return {\n ...state,\n quoteSelectedValues: [\n ...state.quoteSelectedValues.map((item) => {\n if (item.quoteId === state.petQuoteSelected) {\n return {\n ...item,\n wellness: action.quantity,\n };\n }\n\n return item;\n }),\n ],\n };\n }\n\n case RECALCULATE_LOCAL_TOTAL: {\n return {\n ...state,\n quoteSelectedValues: [\n ...state.quoteSelectedValues.map((item) => {\n if (item.quoteId === state.petQuoteSelected) {\n return {\n ...item,\n total: item.isMonthlyPlan\n ? item.monthlyAmountPlan : item.annualAmountPlan,\n totalAnnual: item.annualAmountPlan,\n totalMontly: item.monthlyAmountPlan,\n };\n }\n\n return item;\n }),\n ],\n };\n }\n\n case NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL:\n return {\n ...state,\n quoteSelectedValues: [\n ...state.quoteSelectedValues.map((item) => {\n const quoteValues = state.data.petQuoteResponseList\n .find((quote) => quote.petQuoteId === item.quoteId);\n const plan = quoteValues.Plans[item.selectedPlanIndex];\n const {\n AnnualPremium,\n MonthlyPremium,\n PartnerAnnualSaving,\n } = plan.RatingOptions\n .find((rating) => rating.DeductibleId === item.deductibleId\n && rating.ReimbursementId === item.reimbursementId);\n\n return {\n ...item,\n annualAmountPlan: AnnualPremium,\n monthlyAmountPlan: MonthlyPremium,\n partnerAnnualSaving: PartnerAnnualSaving,\n total: item.isMonthlyPlan ? MonthlyPremium : AnnualPremium,\n totalAnnual: AnnualPremium,\n totalMontly: MonthlyPremium,\n };\n }),\n ],\n };\n\n // Recalculate Deductible/Reimbursement selected from PrePackagedPlans\n case RECALCULATE_PACKAGED_VALUES_SELECTED:\n return {\n ...state,\n quoteSelectedValues: state.quoteSelectedValues.map((item) => {\n const { selectedPlanPackaged } = item;\n const quote = state.data.petQuoteResponseList\n .find((petQuote) => petQuote.petQuoteId === item.quoteId);\n const prePackagedPlan = quote.PrePackagedPlans\n .find((prePackaged) => prePackaged.Id === selectedPlanPackaged);\n\n if (!prePackagedPlan) {\n return item;\n }\n\n const { DeductibleId, PlanId, ReimbursementId } = prePackagedPlan;\n const planSelected = quote.Plans.find((plan) => plan.Plan === PlanId);\n const ratingOption = planSelected.RatingOptions\n .find((ratingItem) => ratingItem.DeductibleId === DeductibleId\n && ratingItem.ReimbursementId === ReimbursementId);\n\n return {\n ...item,\n deductibleId: DeductibleId,\n deductibleQuantity: ratingOption.DeductibleName,\n reimbursementId: ReimbursementId,\n reimbursementPercentage: ratingOption.ReimbursementName,\n selectedPlan: PlanId,\n };\n }),\n };\n\n case NOTIFY_ME_BUTTON_CLICKED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n notifyMeButtonLoading: true,\n },\n };\n\n case NOTIFY_ME_FAILED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n notifyMeButtonLoading: false,\n showErrorComingSoonModal: true,\n },\n };\n\n case NOTIFY_ME_SUCCESS:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n notifyMeButtonLoading: false,\n showSuccessComingSoonModal: true,\n },\n };\n\n case QUOTE_DATA_LOADED_BY_STORAGE: {\n return {\n ...action.data,\n };\n }\n\n case QUOTE_PLAN_SELECTED:\n return {\n ...state,\n openQuoteGuid: '',\n planChanged: true,\n quoteSelectedValues: [\n ...state.quoteSelectedValues.map((item) => {\n if (item.quoteId === state.petQuoteSelected) {\n return {\n ...item,\n selectedPlan: action.planId,\n selectedPlanAmount: action.planAmount,\n selectedPlanIndex: state.plans\n .findIndex((plan) => plan.id === action.planId),\n selectedPlanPackaged: action.planPackagedId,\n };\n }\n\n return item;\n }),\n ],\n };\n\n case QUOTE_PLAN_SELECTED_BY_QUOTEID:\n return {\n ...state,\n planChanged: true,\n quoteSelectedValues: [\n ...state.quoteSelectedValues.map((item) => {\n if (item.quoteId === action.quoteId) {\n return {\n ...item,\n selectedPlan: action.planId,\n selectedPlanAmount: action.planAmount,\n selectedPlanIndex: state.plans\n .findIndex((plan) => plan.id === action.planId),\n selectedPlanPackaged: action.planPackagedId,\n };\n }\n\n return item;\n }),\n ],\n };\n\n case DEDUCTIBLE_LEGEND_CHANGED: {\n return {\n ...state,\n deductibleLegend: action.deductibleLegend,\n };\n }\n\n case EFFECTIVE_DATE_CUSTOM_CHANGED:\n return {\n ...state,\n effectiveDateCustom: action.newDate,\n };\n\n case CONTINUE_WITHOUT_LOGIN:\n return {\n ...state,\n loggingWithoutModal: !state.loggingWithoutModal,\n };\n\n case BREED_DATA_LOADED: {\n return {\n ...state,\n breedData: action.data,\n isBreedDataLoading: false,\n isLoading: false,\n newPet: {\n ...state.newPet,\n breedCat: action.breedCat,\n breedDog: action.breedDog,\n },\n };\n }\n\n case BREED_DATA_ERROR: {\n return {\n ...state,\n addPetModalVisible: false,\n editPetModalVisible: false,\n isLoading: false,\n message: action.message,\n };\n }\n\n case AGE_DATA_ERROR: {\n return {\n ...state,\n addPetModalVisible: false,\n editPetModalVisible: false,\n isLoading: false,\n message: action.message,\n };\n }\n\n case AGE_DATA_LOADED: {\n return {\n ...state,\n ageData: action.data,\n isAgeDataLoading: false,\n isLoading: false,\n };\n }\n\n case NEW_PET_AGE_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n petAge: action.petAge,\n },\n };\n }\n\n case NEW_PET_BREED_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n petBreed: action.petBreed,\n petBreedId: action.petBreedId,\n },\n };\n }\n\n case NEW_PET_NAME_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n petName: action.petName,\n },\n };\n }\n\n case NEW_PET_PROMO_CODE_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n promoCode: action.promoCode,\n },\n };\n }\n\n case NEW_PET_GROUP_DSCR_CODE_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n groupCodeDscr: action.groupCodeDscr,\n },\n };\n }\n\n case PARTNER_ID_LOAD_INFORMATION_ATTEMPT:\n return {\n ...state,\n partners: {\n ...state.partners,\n loaded: false,\n loading: true,\n },\n };\n\n case PROCEED_WITHOUT_PARTNER_CHANGED: {\n return {\n ...state,\n partners: INITIAL_PARTNERS_STATE,\n };\n }\n\n case PARTNER_ID_INFORMATION_LOADED:\n return {\n ...state,\n partners: {\n ...state.partners,\n data: action.data,\n isCostco: isPartnersCostco(action.partnerId),\n isGoodDog: isPartnersGoodDog(action.partnerId),\n isUSAA: isPartnersUSAA(action.partnerId),\n loaded: true,\n loading: false,\n partnerId: action.partnerId,\n partnerName: action.partnerName,\n },\n };\n\n case PARTNER_ID_INFORMATION_FAILED:\n return {\n ...state,\n partners: {\n ...state.partners,\n loaded: true,\n loading: false,\n },\n };\n\n case NEW_PET_TYPE_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n breedDataFiltered: action.petType === PetType.Dog\n ? state.newPet.breedDog : state.newPet.breedCat,\n petBreed: '',\n petBreedId: '',\n petType: action.petType,\n },\n };\n }\n\n case NEW_PET_ZIPCODE_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n zipcode: action.zipcode,\n },\n };\n }\n\n case NEW_PET_EMAIL_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n email: action.email,\n },\n };\n }\n\n case QUOTE_POWER_UP_CHANGED: {\n return {\n ...state,\n data: {\n ...state.data,\n insuranceProduct: {\n ...state.data.insuranceProduct,\n InsuranceModifiers:\n state.data.insuranceProduct.InsuranceModifiers\n .map((item) => {\n if (item.Id === action.id) {\n return {\n ...item,\n IsSelected: action.isSelected,\n };\n }\n\n return item;\n }),\n },\n rateSummary: {\n ...state.rateSummary,\n powerUpChanged: true,\n pricesChanged: true,\n },\n },\n };\n }\n\n case NEW_PET_SEX_SAVED: {\n return {\n ...state,\n newPet: {\n ...state.newPet,\n petSex: action.petSex,\n },\n };\n }\n\n case NEW_PET_PICKUP_DATE_SAVED: {\n return {\n ...state,\n partners: {\n ...state.partners,\n petPickupDate: action.pickupDate,\n },\n };\n }\n\n case SAVE_SELECTED_PET_NUMBER: {\n return {\n ...state,\n petQuoteSelected: action.petQuoteSelected,\n };\n }\n\n case RATE_QUOTE_UPDATE_ATTEMPT: {\n return {\n ...state,\n powerUpLoadings: [...state.powerUpLoadings, action.id],\n };\n }\n\n case RATE_QUOTE_UPDATE_LOADED: {\n return {\n ...state,\n powerUpLoadings: state.powerUpLoadings.filter((id) => id !== action.id),\n };\n }\n\n case SAVE_SELECTED_EDIT_PET_MODAL: {\n const { petQuoteSelected } = state;\n const { petZipCode } = state.parameters;\n\n const {\n petAgeName,\n breedName,\n breedId,\n petName,\n genderName,\n petType,\n promoCode,\n } = state.data.petQuoteResponseList\n .find((item) => item.petQuoteId === petQuoteSelected);\n\n return {\n ...state,\n editPetModalVisible: action.editPetModalVisible,\n newPet: {\n ...state.newPet,\n petAge: petAgeName,\n petBreed: breedName,\n petBreedId: breedId,\n petName,\n petSex: genderName === PetGender.Male.name\n ? PetGender.Male : PetGender.Female,\n petType: petType === PetType.Dog.value\n ? PetType.Dog : PetType.Cat,\n promoCode,\n zipcode: petZipCode,\n },\n };\n }\n\n case SAVE_SELECTED_ADD_PET_MODAL: {\n const { data: { groupCode }, parameters: { petZipCode } } = state;\n\n return {\n ...state,\n addPetModalVisible: action.addPetModalVisible,\n newPet: {\n ...state.newPet,\n petAge: '',\n petBreed: '',\n petBreedId: '',\n petName: '',\n petSex: PetGender.None,\n petType: PetType.None,\n promoCode: groupCode,\n zipcode: petZipCode,\n },\n };\n }\n\n case REMOVE_PET_MODAL_VISIBLE: {\n const { petName, petType } = state.data.petQuoteResponseList\n .find((item) => item.petQuoteId === state.petQuoteSelected);\n\n return {\n ...state,\n petRemovedLoading: false,\n petRemovedSuccess: false,\n petToRemove: {\n ...state.petToRemove,\n petName,\n petType,\n },\n removePetModalVisible: action.removePetModalVisible,\n };\n }\n\n case SAVE_UPDATED_PET: {\n const { petQuoteSelected } = state;\n const { petAge, petBreed, petBreedId, petName, petSex, petType, promoCode,\n zipcode } = state.newPet;\n\n return {\n ...state,\n data: {\n ...state.data,\n petQuoteResponseList:\n [\n ...state.data.petQuoteResponseList.map((item) => {\n if (item.petQuoteId === petQuoteSelected) {\n return {\n ...item,\n breedId: petBreedId,\n breedName: petBreed,\n genderName: petSex.name,\n petAgeName: petAge,\n petName,\n petType: petType.value,\n promoCode,\n };\n }\n\n return item;\n }),\n ],\n },\n parameters: {\n ...state.parameters,\n petZipCode: zipcode,\n },\n petUpdated: true,\n };\n }\n\n case PET_QUOTE_REMOVAL_ATTEMPT: {\n return {\n ...state,\n petRemovedLoading: true,\n petRemovedSuccess: false,\n };\n }\n\n case PET_QUOTE_REMOVAL_SUCCEED: {\n return {\n ...state,\n petQuoteSelected: action.petQuoteSelected,\n petRemovedLoading: false,\n petRemovedSuccess: true,\n quoteSelectedValues: action.quoteSelectedValues,\n };\n }\n\n case PET_QUOTE_REMOVAL_FAILED: {\n return {\n ...state,\n petRemovedLoading: false,\n petRemovedSuccess: false,\n };\n }\n\n case SAVE_QUOTE_ATTEMPT: {\n return {\n ...state,\n saveQuote: {\n ...state.saveQuote,\n isSavingQuote: true,\n },\n };\n }\n\n case OPEN_SAVED_QUOTE_EXPIRED:\n return {\n ...state,\n saveQuote: {\n ...state.saveQuote,\n isOpeningQuote: false,\n savedQuoteExpired: true,\n },\n };\n\n case SAVED_QUOTE: {\n return {\n ...state,\n saveQuote: {\n ...state.saveQuote,\n isSavingQuote: false,\n quoteId: action.quoteId ?? state.saveQuote.quoteId,\n savedQuoteModalVisible: !action.isAuto,\n saveQuoteMobileModalVisible: false,\n },\n };\n }\n\n case SAVE_QUOTE_ERROR: {\n return {\n ...state,\n message: action.message,\n saveQuote: {\n ...state.saveQuote,\n isSavingQuote: false,\n },\n };\n }\n\n case SAVED_QUOTE_MODAL_VISIBLE: {\n return {\n ...state,\n saveQuote: {\n ...state.saveQuote,\n savedQuoteModalVisible: false,\n },\n };\n }\n\n case SAVE_QUOTE_MOBILE_VISIBLE_CHANGED: {\n return {\n ...state,\n saveQuote: {\n ...state.saveQuote,\n saveQuoteMobileModalVisible: action.visible,\n },\n };\n }\n\n case NEW_CUSTOMER_EMAIL_CHANGED: {\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n email: action.value,\n emailValidated: false,\n },\n sessionInformation: {\n ...state.sessionInformation,\n isCustomer: false,\n },\n };\n }\n\n case NEW_CUSTOMER_EMAIL_ERROR_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n emailError: action.value,\n },\n };\n\n case NEW_CUSTOMER_PASSWORD_CHANGED: {\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n password: action.value,\n },\n };\n }\n\n case NEW_CUSTOMER_PASSWORD_ERROR_CHANGED: {\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n passwordError: action.value,\n },\n };\n }\n\n case NEW_CUSTOMER_CONFIRM_PASSWORD_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n passwordConfirm: action.value,\n },\n };\n\n case NEW_CUSTOMER_PASSWORD_CONFIRM_ERROR_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n passwordConfirmError: action.value,\n },\n };\n\n case NEW_CUSTOMER_EMPLOYEE_ID_CHANGED: {\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n employeeID: action.value,\n },\n };\n }\n\n case NEW_CUSTOMER_RESET_EMAIL:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n resetEmail: action.value,\n },\n };\n\n case INITIAL_EMAIL_REASIGNED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n initialEmail: state.newCustomer.email,\n },\n };\n\n case OPEN_SAVED_QUOTE_ATTEMPT: {\n return {\n ...state,\n saveQuote: {\n ...state.saveQuote,\n isOpeningQuote: true,\n redirectLink: '',\n },\n };\n }\n\n case OPEN_SAVED_QUOTE_ERROR: {\n return {\n ...state,\n saveQuote: {\n ...state.saveQuote,\n failOpenQuote: true,\n isOpeningQuote: false,\n redirectLink: action.redirectLink,\n },\n };\n }\n\n case SUB_ID_SAVED: {\n return {\n ...state,\n subId: action.subId,\n };\n }\n\n case PET_ADDED: {\n return {\n ...state,\n petTags: [\n ...state.petTags,\n {\n ...action.data,\n petDateOfBirth: new Date().toLocaleDateString('en-US'),\n },\n ],\n };\n }\n\n case PET_REMOVED: {\n return {\n ...state,\n petTags: state.petTags\n .filter((petTag) => !action.ids.includes(petTag.petQuoteId)),\n };\n }\n\n case PET_UPDATED: {\n return {\n ...state,\n petTags: state.petTags.map((petTag) => {\n if (petTag.petQuoteId === action.data.petQuoteId) {\n return {\n ...petTag,\n petName: action.data.petName,\n petType: action.data.petType,\n };\n }\n\n return petTag;\n }),\n };\n }\n\n case PET_TAG_COLOR_CHANGED: {\n return {\n ...state,\n petTags: state.petTags.map((petTag) => {\n if (petTag.petQuoteId === action.data.petQuoteId) {\n return {\n ...petTag,\n petTagColor: action.data.petTagColor,\n };\n }\n\n return petTag;\n }),\n };\n }\n\n case PET_TAG_DATE_ERRORS_CHANGED:\n return {\n ...state,\n petTagsErrors: action.data,\n };\n\n case PET_TAG_DATE_OF_BIRTH_CHANGED: {\n return {\n ...state,\n petTags: state.petTags.map((petTag) => {\n if (petTag.petQuoteId === action.data.petQuoteId) {\n return {\n ...petTag,\n petDateOfBirth: action.data.petDateOfBirth,\n };\n }\n\n return petTag;\n }),\n };\n }\n\n case ADDRESS_BY_ZIP_CODE_LOADED:\n return {\n ...state,\n isLoadingNewAddress: false,\n newCustomer: {\n ...state.newCustomer,\n address: {\n ...state.newCustomer.address,\n city: action.address.CityName,\n cityFromZipCode: action.address.CityName,\n state: action.address.StateName,\n stateAbbr: action.address.StateAbbr,\n zipCode: action.address.ZIPCode,\n },\n },\n };\n case FAILED_TO_LOAD_ADDRESS_BY_ZIP_CODE:\n return {\n ...state,\n isLoadingNewAddress: false,\n petParentAddressError: true,\n };\n\n case OPEN_QUOTE_LOADED: {\n return {\n ...state,\n saveQuote: {\n ...state.saveQuote,\n openQuoteLoaded: true,\n quoteId: action.quoteId,\n savedQuoteId: action.savedQuoteId,\n },\n };\n }\n\n case SECOND_PARENT_FORM_TOGGLED:\n return {\n ...state,\n secondParentFormVisible: action.toggledState,\n };\n\n case NEW_CUSTOMER_CITY_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n address: {\n ...state.newCustomer.address,\n city: action.value,\n },\n },\n };\n\n case NEW_CUSTOMER_LAST_NAME_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n lastName: action.value,\n },\n };\n\n case NEW_CUSTOMER_NAME_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n name: action.value,\n },\n };\n\n case NEW_CUSTOMER_PHONE_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n phoneNumber: action.value,\n },\n };\n\n case NEW_CUSTOMER_SECOND_PARENT_LAST_NAME_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n secondParent: {\n ...state.newCustomer.secondParent,\n lastName: action.value,\n },\n },\n };\n\n case NEW_CUSTOMER_SECOND_PARENT_NAME_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n secondParent: {\n ...state.newCustomer.secondParent,\n name: action.value,\n },\n },\n };\n\n case NEW_CUSTOMER_SECOND_PARENT_NUMBER_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n secondParent: {\n ...state.newCustomer.secondParent,\n phoneNumber: action.value,\n },\n },\n };\n\n case NEW_CUSTOMER_STATE_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n address: {\n ...state.newCustomer.address,\n state: action.value,\n },\n },\n };\n\n case NEW_CUSTOMER_STREET_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n address: {\n ...state.newCustomer.address,\n street: action.value,\n },\n },\n };\n\n case NEW_CUSTOMER_STREET2_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n address: {\n ...state.newCustomer.address,\n street2: action.value,\n },\n },\n };\n\n case NEW_CUSTOMER_ZIP_CODE_CHANGED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n address: {\n ...state.newCustomer.address,\n zipCode: action.value,\n },\n },\n };\n\n case NEW_CUSTOMER_ADDRESS_LOAD_ATTEMPTED:\n return {\n ...state,\n isLoadingNewAddress: true,\n };\n\n case YOUR_INFO_SCROLL_TO_TOP_TOGGLED:\n return {\n ...state,\n scrollYourInfoToTop: action.toggledState,\n };\n\n case PAYMENT_PLAN_FREQUENCY_CHANGED:\n return {\n ...state,\n isMonthlyPlan: action.isMonthly,\n quoteSelectedValues: state.quoteSelectedValues\n .map((quote) => ({\n ...quote,\n isMonthlyPlan: action.isMonthly,\n })),\n };\n\n case CURRENT_QUOTE_STEP_CHANGED: {\n return {\n ...state,\n currentQuoteStep: action.currentQuoteStep,\n };\n }\n\n case OPEN_QUOTE_PENDING_PETS_LOADED: {\n return {\n ...state,\n quoteSelectedValues:\n [\n ...action.pendingPets.map((pendingPet) => ({\n ...INITIAL_QUOTE_SELECTED_VALUES,\n annualAmountPlan: pendingPet.annualAmountPlan,\n deductibleId: pendingPet.deductibleId,\n deductibleQuantity: pendingPet.deductibleQuantity,\n monthlyAmountPlan: pendingPet.total,\n partnerAnnualSaving: pendingPet.partnerAnnualSaving,\n petName: pendingPet.petName,\n quoteId: pendingPet.quoteId,\n reimbursementId: pendingPet.reimbursementId,\n reimbursementPercentage: pendingPet.reimbursementPercentage,\n selectedPlan: pendingPet.selectedPlan,\n selectedPlanAmount: pendingPet.selectedPlanAmount,\n selectedPlanIndex: state.plans\n .findIndex((plan) => plan.id === pendingPet.selectedPlan),\n selectedPlanPackaged: pendingPet.selectedPlanPackage\n || pendingPet.selectedPlan,\n total: pendingPet.total,\n totalAnnual: pendingPet.total * 12,\n totalMontly: pendingPet.total,\n })),\n ],\n };\n }\n\n case NAME_ON_CARD_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n nameOnCard: action.value,\n },\n },\n };\n\n case CARD_NUMBER_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n cardNumber: action.value,\n },\n },\n };\n\n case EXPIRATION_DATE_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n expirationDate: action.value,\n },\n },\n };\n\n case CARD_CVV_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n cardCvv: action.value,\n },\n },\n };\n\n case PAYMENT_METHOD_TYPE_CHANGE:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n paymentMethodType: action.value,\n },\n };\n\n case ACCOUNT_TYPE_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n bankAccount: {\n ...state.paymentMethod.bankAccount,\n accountType: action.value,\n },\n },\n };\n\n case ROUTING_NUMBER_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n bankAccount: {\n ...state.paymentMethod.bankAccount,\n routingNumber: action.value,\n },\n },\n };\n\n case ACCOUNT_NUMBER_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n bankAccount: {\n ...state.paymentMethod.bankAccount,\n accountNumber: action.value,\n },\n },\n };\n\n case CONFIRM_ACCOUNT_NUMBER_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n bankAccount: {\n ...state.paymentMethod.bankAccount,\n accountNumberConfirmation: action.value,\n },\n },\n };\n\n case ROUTING_NUMBER_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n bankAccount: {\n ...state.paymentMethod.bankAccount,\n routingNumberError: action.value,\n },\n },\n };\n\n case ACCOUNT_NUMBER_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n bankAccount: {\n ...state.paymentMethod.bankAccount,\n accountNumberError: action.value,\n },\n },\n };\n\n case CONFIRM_ACCOUNT_NUMBER_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n bankAccount: {\n ...state.paymentMethod.bankAccount,\n accountNumberConfirmationError: action.value,\n },\n },\n };\n\n case NAME_ON_CARD_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n nameOnCardError: action.value,\n },\n },\n };\n\n case CARD_NUMBER_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n cardNumberError: action.value,\n },\n },\n };\n\n case EXPIRATION_DATE_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n expirationDateError: action.value,\n },\n },\n };\n\n case CARD_CVV_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n cardCvvError: action.value,\n },\n },\n };\n\n case CREDIT_CARD_TYPE_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n creditDebit: {\n ...state.paymentMethod.creditDebit,\n creditCardType: action.value,\n },\n },\n };\n\n case YOUR_INFO_STEP_CHANGED:\n return {\n ...state,\n yourInfoStep: action.step,\n };\n\n case CUSTOMER_VALIDATION_ATTEMPT:\n return {\n ...state,\n customerValidationLoading: true,\n };\n\n case CREATE_DIAMOND_CLIENT_ATTEMPT:\n return {\n ...state,\n diamondClientLoading: true,\n };\n\n case CREATE_DIAMOND_CLIENT_ERROR:\n return {\n ...state,\n diamondClientLoading: false,\n message: action.message,\n };\n\n case CREATE_DIAMOND_CLIENT_SUCCESS:\n return {\n ...state,\n diamondClientLoading: false,\n sessionInformation: {\n ...state.sessionInformation,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n Address: {\n ...state.sessionInformation.nopCommerceUser.Address,\n },\n DiamonClientdId: action.clientId,\n },\n },\n };\n\n case CUSTOMER_VALIDATED:\n return {\n ...state,\n customerValidationLoading: false,\n customerValidationResponse: {\n ...state.customerValidationResponse,\n customerRoles: action.customerRoles,\n displayName: action.displayName,\n email: action.email,\n fullName: action.fullName,\n hasPassword: action.hasPassword,\n id: action.id,\n isValid: true,\n message: '',\n userName: action.userName,\n },\n };\n\n case CUSTOMER_VALIDATION_ERROR:\n return {\n ...state,\n addPetModalVisible: false,\n customerValidationLoading: false,\n customerValidationResponse: {\n ...state.customerValidationResponse,\n isValid: false,\n message: action.message,\n },\n editPetModalVisible: false,\n };\n\n case CUSTOMER_VALIDATION_RESTARTED:\n return {\n ...state,\n customerValidationResponse: {\n ...INITIAL_STATE.customerValidationResponse,\n customerRoles: [],\n email: action.email,\n },\n };\n\n case COMING_SOON_ERROR_MODAL_CLOSED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n showComingSoonModal: false,\n showErrorComingSoonModal: false,\n },\n };\n\n case COMING_SOON_MODAL_CLOSED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n notifyMeButtonLoading: false,\n showComingSoonModal: false,\n showErrorComingSoonModal: false,\n showSuccessComingSoonModal: false,\n },\n };\n\n case COMING_SOON_SUCCESS_MODAL_CLOSED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n showComingSoonModal: false,\n showSuccessComingSoonModal: false,\n },\n };\n\n case ERROR_MODAL_CLOSED:\n return {\n ...state,\n message: '',\n redirectToLanding: false,\n };\n\n case VETERINARIANS_LOAD_ATTEMPT:\n return {\n ...state,\n loadingVets: true,\n };\n\n case VETERINARIANS_LOADED:\n return {\n ...state,\n loadingVets: false,\n vetList: action.veterinarians,\n };\n\n case FAILED_TO_LOAD_VETERINARIANS:\n return {\n ...state,\n loadingVets: false,\n };\n\n case CUSTOM_VET_CITY_CHANGED:\n return {\n ...state,\n customVet: {\n ...state.customVet,\n city: action.value,\n },\n };\n\n case CUSTOM_VET_PRACTICE_NAME_CHANGED:\n return {\n ...state,\n customVet: {\n ...state.customVet,\n nameOfPractice: action.value,\n },\n };\n\n case CUSTOM_VET_DATA_CLEARED:\n return {\n ...state,\n customVet: {\n ...INITIAL_STATE.customVet,\n },\n customVetModalVisible: false,\n };\n\n case VETERINARIAN_SET:\n return {\n ...state,\n selectedVeterinarian: {\n ...action.veterinarian,\n isCustomVet: false,\n },\n };\n\n case AMERICAN_STATES_LOADED: {\n const formattedStates = action.americanStates.map((item) => ({\n label: item.StateName,\n value: item.Id,\n }));\n\n const userState = formattedStates.find((americanState) => (\n americanState.value === state.newCustomer.address.stateAbbr\n ));\n\n return {\n ...state,\n americanStates: formattedStates,\n customVet: {\n ...state.customVet,\n state: userState.label,\n stateId: userState.value,\n },\n };\n }\n\n case FAILED_TO_LOAD_AMERICAN_STATES: {\n const formattedStates = AMERICAN_STATES.map((item) => ({\n label: item.StateName,\n value: item.Id,\n }));\n\n const userState = formattedStates.find((americanState) => (\n americanState.value === state.newCustomer.address.stateAbbr\n ));\n\n return {\n ...state,\n americanStates: formattedStates,\n customVet: {\n ...state.customVet,\n state: userState?.label,\n stateId: userState?.value,\n },\n };\n }\n\n case CUSTOM_VET_SAVED:\n return {\n ...state,\n customVet: {\n ...INITIAL_STATE.customVet,\n },\n selectedVeterinarian: {\n customCity: action.city,\n customState: action.state,\n customStateId: action.stateId,\n isCustomVet: true,\n nameOfPractice: action.vetPractice,\n },\n };\n\n case CUSTOM_VET_STATE_CHANGED:\n return {\n ...state,\n customVet: {\n ...state.customVet,\n state: action.value.state,\n stateId: action.value.stateId,\n },\n };\n\n case CUSTOM_VET_MODAL_OPENED: {\n const { americanStates, newCustomer } = state;\n let userState = americanStates.find((americanState) => (\n americanState.value === newCustomer.address.stateAbbr\n ));\n\n if (!userState && americanStates.length > 0) {\n [userState] = americanStates;\n }\n\n return {\n ...state,\n customVet: {\n ...state.customVet,\n state: userState?.label,\n stateId: userState?.value,\n },\n customVetModalVisible: true,\n };\n }\n\n case RATE_SUMMARY_ATTEMP:\n return {\n ...state,\n rateSummary: {\n ...state.rateSummary,\n loading: true,\n pricesChanged: false,\n },\n };\n\n case RATE_SUMMARY_FAILED:\n return {\n ...state,\n rateSummary: {\n ...state.rateSummary,\n loading: false,\n pricesChanged: false,\n },\n };\n\n case RATE_SUMMARY_SUCCESS:\n return {\n ...state,\n openQuoteGuid: '',\n rateSummary: {\n ...state.rateSummary,\n loading: false,\n pricesChanged: true,\n ...action.data,\n },\n };\n\n case RESET_QUOTES_VALUES_SELECTED:\n return {\n ...INITIAL_STATE,\n ageData: state.ageData,\n breedData: state.breedData,\n message: state.message,\n };\n\n case PURCHASE_ATTEMPT:\n return {\n ...state,\n purchase: {\n ...state.purchase,\n duplicatedPets: [],\n loading: true,\n notDuplicatedPets: [],\n },\n };\n\n case PURCHASE_MULTIPLE_ATTEMPT:\n return {\n ...state,\n purchase: {\n ...state.purchase,\n duplicatedPets: [],\n multiQuoteList: action.data,\n multiQuoteLoading: true,\n notDuplicatedPets: [],\n },\n };\n\n case PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED:\n return {\n ...state,\n purchase: {\n ...state.purchase,\n multiQuoteList: state.purchase.multiQuoteList.map((quote) => {\n if (action.id === quote.id) {\n return { ...quote, status: action.status };\n }\n\n return quote;\n }),\n },\n };\n\n case PURCHASE_COMPLETED:\n return {\n ...state,\n purchase: {\n ...state.purchase,\n customerId: action.customerId || state.purchase.customerId,\n error: action.error,\n incompletePurchases: action.incompletePurchases\n || state.purchase.incompletePurchases,\n loading: false,\n multiQuoteLoading: false,\n policyNumbers: action.policyNumbers || state.purchase.policyNumbers,\n sendingMessage: false,\n success: action.success,\n },\n };\n\n case AGREE_TERMS_AND_CONDITION_CHANGED: {\n const value = !state.termsAndConditions.agreeTermsAndConditionCheck;\n const error = value ? false\n : state.termsAndConditions.agreeTermsAndConditionError;\n\n return {\n ...state,\n termsAndConditions: {\n ...state.termsAndConditions,\n agreeTermsAndConditionCheck: value,\n agreeTermsAndConditionError: error,\n },\n };\n }\n\n case UNDERSTAND_CONDITIONS_CHANGED: {\n const value = !state.termsAndConditions.understandConditionCheck;\n const error = value ? false\n : state.termsAndConditions.understandConditionError;\n return {\n ...state,\n termsAndConditions: {\n ...state.termsAndConditions,\n understandConditionCheck: value,\n understandConditionError: error,\n },\n };\n }\n\n case CONSENT_ELECTRONIC_DELIVERY_CHANGED:\n return {\n ...state,\n termsAndConditions: {\n ...state.termsAndConditions,\n consentElectronicDeliveryCheck:\n !state.termsAndConditions.consentElectronicDeliveryCheck,\n },\n };\n\n case TERMS_AND_CONDITION_VALIDATION_CHANGED:\n return {\n ...state,\n termsAndConditions: {\n ...state.termsAndConditions,\n agreeTermsAndConditionError:\n !state.termsAndConditions.agreeTermsAndConditionCheck,\n understandConditionError:\n !state.termsAndConditions.understandConditionCheck,\n },\n };\n\n case SECOND_ADDRESS_CITY_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: {\n ...state.paymentMethod.billingAddress,\n city: action.value,\n cityError: '',\n },\n },\n };\n\n case SECOND_ADDRESS_CLEARED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: INITIAL_SECONDARY_ADDRESS_STATE,\n },\n };\n\n case SECOND_ADDRESS_STREET_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: {\n ...state.paymentMethod.billingAddress,\n street: action.value,\n streetError: '',\n },\n },\n };\n\n case SECOND_ADDRESS_STREET2_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: {\n ...state.paymentMethod.billingAddress,\n street2: action.value,\n street2Error: '',\n },\n },\n };\n\n case SECOND_ADDRESS_ZIP_CODE_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: {\n ...state.paymentMethod.billingAddress,\n city: '',\n state: '',\n zip: action.value,\n zipError: '',\n },\n },\n };\n\n case SECOND_ADDRESS_STREET_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: {\n ...state.paymentMethod.billingAddress,\n streetError: action.value,\n },\n },\n };\n\n case SECOND_ADDRESS_ZIP_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: {\n ...state.paymentMethod.billingAddress,\n zipError: action.value,\n },\n },\n };\n\n case SECOND_ADDRESS_CITY_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: {\n ...state.paymentMethod.billingAddress,\n cityError: action.value,\n },\n },\n };\n\n case SECOND_ADDRESS_STATE_ERROR_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n billingAddress: {\n ...state.paymentMethod.billingAddress,\n stateError: action.value,\n },\n },\n };\n\n case SAME_ADDRESS_FOR_BILLING_CHANGED:\n return {\n ...state,\n paymentMethod: {\n ...state.paymentMethod,\n mailAddressSameAsPet: !state.paymentMethod.mailAddressSameAsPet,\n },\n };\n\n case SEND_SMS_APPS_LINKS_SUCCESS:\n case SEND_SMS_APPS_LINKS_FAILED:\n return {\n ...state,\n purchase: {\n ...state.purchase,\n sendingMessage: false,\n },\n };\n\n case SEND_SMS_APPS_LINKS_ATTEMPT:\n return {\n ...state,\n purchase: {\n ...state.purchase,\n sendingMessage: true,\n },\n };\n\n case LOAD_MULTI_MODAL_DATA_FAILED:\n return {\n ...state,\n message: action.message,\n };\n\n case LOAD_MULTI_MODAL_DATA_SUCCESS:\n return {\n ...state,\n multiModalData: action.data,\n };\n\n case MODAL_PET_CO_PAY_VISIBLE_CHANGED:\n return {\n ...state,\n togglePetCoPayModalVisible: action.visible,\n };\n\n case MULTI_MODAL_PET_CO_PAY_VISIBLE_CHANGED:\n return {\n ...state,\n multiModalUserSelection: {\n ...state.multiModalUserSelection,\n petCoPayIdSelected: action.categoryId,\n petCoPayModalVisible: action.visible,\n },\n };\n\n case MULTI_MODAL_NEED_TO_KNOW_VISIBLE_CHANGED: {\n const { categoryId, visible } = action;\n const newSelectionHistory =\n state.multiModalUserSelection.needToKnowSelectionHistory;\n\n if (newSelectionHistory.indexOf(categoryId) === -1) {\n newSelectionHistory.push(categoryId);\n }\n\n return {\n ...state,\n multiModalUserSelection: {\n ...state.multiModalUserSelection,\n needToKnowIdSelected: categoryId,\n needToKnowModalVisible: visible,\n needToKnowSelectionHistory: newSelectionHistory,\n },\n };\n }\n\n case MULTI_MODAL_WELLNESS_VISIBLE_CHANGED:\n return {\n ...state,\n multiModalUserSelection: {\n ...state.multiModalUserSelection,\n wellnessIdSelected: action.categoryId,\n wellnessModalVisible: action.visible,\n },\n };\n\n case MULTI_MODAL_TERMS_AND_COND_VISIBLE_CHANGED:\n return {\n ...state,\n multiModalUserSelection: {\n ...state.multiModalUserSelection,\n termsAndCondIdSelected: action.categoryId,\n termsAndCondModalVisible: action.visible,\n },\n };\n\n case MULTI_MODAL_CUSTOM_CONTENT_CHANGED:\n return {\n ...state,\n multiModalCustomData: {\n ...state.multiModalCustomData,\n category: [{\n CategoryHeader: action.category,\n Id: -1,\n }],\n content: action.content,\n title: action.title,\n },\n };\n\n case MULTI_MODAL_CUSTOM_CONTENT_CLEARED:\n return {\n ...state,\n multiModalCustomData: null,\n };\n\n case RESET_POWER_UP_ARIA_LABEL:\n return {\n ...state,\n rateSummary: {\n ...state.rateSummary,\n powerUpChanged: false,\n },\n };\n\n case POWER_UP_SELECTED: {\n const { id, isSelected, quoteId } = action;\n\n const oldModifiers = state.quoteSelectedValues\n .find((quote) => quote.quoteId === quoteId).modifiers || [];\n const isNewModifier =\n !oldModifiers.find((oldModifier) => oldModifier.id === id);\n\n if (isNewModifier) {\n return {\n ...state,\n openQuoteGuid: '',\n planChanged: false,\n quoteSelectedValues: state.quoteSelectedValues.map((item) => {\n if (item.quoteId === quoteId) {\n return {\n ...item,\n modifiers: [\n ...item.modifiers,\n { id, isSelected },\n ],\n };\n }\n\n return item;\n }),\n rateSummary: {\n ...state.rateSummary,\n powerUpChanged: true,\n pricesChanged: true,\n },\n };\n }\n\n return {\n ...state,\n deductibleChanged: false,\n openQuoteGuid: '',\n planChanged: false,\n quoteSelectedValues: state.quoteSelectedValues.map((item) => {\n if (item.quoteId === quoteId) {\n return {\n ...item,\n modifiers: item.modifiers.map((modifier) => {\n if (modifier.id === id) {\n return { id, isSelected };\n }\n\n return modifier;\n }),\n };\n }\n\n return item;\n }),\n rateSummary: {\n ...state.rateSummary,\n powerUpChanged: true,\n pricesChanged: true,\n },\n };\n }\n\n case FORGET_PASSWORD_MODAL_VISIBLE_CHANGED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n forgetPasswordEmail: '',\n forgetPasswordEmailError: '',\n forgetPasswordModalVisible: action.visible,\n },\n };\n\n case FORGET_PASSWORD_RESET_PASSWORD_ATTEMTPED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n forgetPasswordEmailError: '',\n forgetPasswordResetLoading: true,\n },\n };\n\n case FORGET_RESET_PASSWORD_SUCCEEDED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n forgetPasswordEmailError: '',\n forgetPasswordModalConfirmVisible: true,\n forgetPasswordModalVisible: false,\n forgetPasswordPasswordUpdated: true,\n forgetPasswordResetLoading: false,\n },\n };\n\n case FORGET_RESET_PASSWORD_FAILED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n forgetPasswordEmailError: action.message,\n forgetPasswordPasswordUpdated: false,\n forgetPasswordResetLoading: false,\n },\n };\n\n case FORGET_PASSWORD_CONFIRM_MODAL_VISIBLE_CHANGED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n forgetPasswordModalConfirmVisible: action.visible,\n },\n };\n\n case FORGET_PASSWORD_MODAL_EMAIL_CHANGED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n forgetPasswordEmail: action.email,\n },\n };\n\n case FORGET_PASSWORD_MODAL_EMAIL_ERROR_CHANGED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n forgetPasswordEmailError: action.error,\n },\n };\n\n case FETCH_MESSAGE_SUCCESS:\n return { ...state, temporaryMessageData: action.payload };\n\n case FETCH_MESSAGE_NO_DATA:\n return {\n ...state,\n temporaryMessageData: null,\n };\n\n case DIAMOND_CUSTOMER_VALIDATION_ATTEMPT:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n emailValidated: false,\n },\n sessionInformation: {\n ...state.sessionInformation,\n isLoading: true,\n },\n };\n\n case DIAMOND_CUSTOMER_VALIDATION_FAILED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n isLoading: false,\n },\n };\n\n case DIAMOND_CUSTOMER_VALIDATION_LOADED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n emailValidated: true,\n },\n sessionInformation: {\n ...state.sessionInformation,\n isCustomer: action.isCustomer,\n isLoading: false,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n },\n userEmail: action.userEmail,\n },\n };\n\n case LOGIN_B2C_STARTED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n loadingLogin: true,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n LoginMessage: '',\n },\n },\n };\n\n case LOGIN_B2C_FAILED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n loadingLogin: false,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n LoginMessage: '',\n },\n },\n };\n\n case DIAMOND_CUSTOMER_LOGIN_ATTEMPT:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n emailValidated: false,\n },\n sessionInformation: {\n ...state.sessionInformation,\n loadingLogin: true,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n LoginMessage: '',\n },\n },\n };\n\n case DIAMOND_CUSTOMER_LOGIN_SUCCESS:\n return {\n ...state,\n customerZipCode: action.zipCode || state.customerZipCode,\n newCustomer: {\n ...state.newCustomer,\n address: {\n ...state.newCustomer.address,\n city: action.data.Address.City,\n state: action.data.Address.State || state.newCustomer.state,\n stateAbbr: action.data.Address.State || state.newCustomer.state,\n street: action.data.Address.AddressLine1,\n street2: action.data.Address.AddressLine2,\n zipCode: action.data.Address.ZipCode || state.customerZipCode,\n },\n canEditAddress: action.data.CanEditAddress,\n email: action.email,\n emailValidated: true,\n lastName: action.data.LastName,\n name: `${action.data.FirstName} ${action.data.MiddleName}`.trim(),\n password: action.password,\n passwordConfirm: action.password,\n },\n partners: {\n ...state.partners,\n comingSoonZipcode: action.zipCode || state.customerZipCode,\n notifyMeEmail: {\n ...state.partners.notifyMeEmail,\n email: action.email || state.partners.notifyMeEmail.email,\n },\n },\n sessionInformation: {\n ...state.sessionInformation,\n isCustomer: true,\n loadingLogin: false,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n ...action.data,\n Address: {\n ...state.sessionInformation.nopCommerceUser.Address,\n ...action.data.Address,\n ZipCode: action.zipCode || state.customerZipCode,\n },\n BillingInfoList: action.data.BillingInfoList,\n DefaultPaymentProfileIdACH: action.data.DefaultPaymentProfileIdACH,\n DefaultPaymentProfileIdCC: action.data.DefaultPaymentProfileIdCC,\n MarketingChannelId: action.data.MarketingChannelId,\n },\n showWelcomeMessage: true,\n userEmail: action.email,\n },\n };\n\n case DIAMOND_CUSTOMER_LOGOUT:\n return {\n ...state,\n newCustomer: {\n ...INITIAL_STATE.newCustomer,\n phoneNumber: state.newCustomer.phoneNumber,\n },\n sessionInformation: {\n ...state.sessionInformation,\n loadingLogin: false,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n LoginMessage: action.message,\n },\n showWelcomeMessage: false,\n },\n };\n\n case DIAMOND_CUSTOMER_LOGIN_FAILED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n loadingLogin: false,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n LoginMessage: action.message,\n },\n showWelcomeMessage: false,\n },\n };\n\n case DIAMOND_CUSTOMER_RESETED_LOGIN_FAIL:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n nopCommerceUser: {\n ...state.sessionInformation.nopCommerceUser,\n LoginMessage: '',\n },\n },\n };\n\n case DIAMOND_CUSTOMER_ZIPCODE_CHANGED:\n return {\n ...state,\n parameters: {\n ...state.parameters,\n petZipCode: action.zipCode,\n },\n sessionInformation: {\n ...state.sessionInformation,\n showWelcomeMessage: false,\n },\n };\n\n case DIAMOND_CUSTOMER_LOGIN_CLEANED:\n return {\n ...state,\n newCustomer: {\n ...state.newCustomer,\n email: '',\n emailValidated: false,\n password: '',\n },\n sessionInformation: { ...INITIAL_STATE.sessionInformation },\n };\n\n case MODAL_CUSTOMER_WELCOME_VISIBLE_CHANGED:\n return {\n ...state,\n modalCustomerWelcomeVisible: action.visible,\n };\n\n case ONE_INC_SESSION_CREATED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n portalOneSessionKey: action.portalOneSessionKey,\n },\n };\n\n case ONE_INC_SESSION_REMOVED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n portalOneSessionKey: '',\n },\n };\n\n case ONE_INC_PAYMENT_CREDIT_CARD_SAVED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n bankAccount: { ...INITIAL_ONE_INC.bankAccount },\n creditCard: action.data,\n paymentCategory: ONE_INC_PAYMENT_CATEGORY.creditCard,\n tokenId: action.data.tokenId,\n },\n paymentMethod: {\n ...state.paymentMethod,\n paymentMethodType: PAYMENT_TYPE.creditCard,\n },\n };\n\n case ONE_INC_PAYMENT_BANK_SAVED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n bankAccount: action.data,\n creditCard: { ...INITIAL_ONE_INC.creditCard },\n paymentCategory: ONE_INC_PAYMENT_CATEGORY.bankAccount,\n tokenId: action.data.tokenId,\n },\n paymentMethod: {\n ...state.paymentMethod,\n paymentMethodType: PAYMENT_TYPE.bank,\n },\n };\n\n case ONE_INC_PAYMENT_SAVED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n ...action.data,\n isTwoDefaults: true,\n },\n paymentMethod: {\n ...state.paymentMethod,\n paymentMethodType: PAYMENT_TYPE.bank,\n },\n };\n\n case ONE_INC_PAYMENT_DEFAULTS_SAVED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n defaultsPaymentMethod: {\n bankAccount: action.data.bankAccount || INITIAL_ONE_INC.bankAccount,\n creditCard: action.data.creditCard || INITIAL_ONE_INC.creditCard,\n defaultValue: action.data.defaultValue,\n },\n },\n };\n\n case ONE_INC_PAYMENT_UPDATED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n paymentCategory: action.data,\n },\n };\n\n case ONE_INC_PET_PAYMENT_METHOD_SAVED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n petPaymentMethods: action.data,\n },\n };\n\n case ONE_INC_PET_PAYMENT_UPDATED:\n return {\n ...state,\n oneInc: {\n ...state.oneInc,\n customerUpdated: action.data,\n },\n };\n\n case ONE_INC_RESET_ALL:\n return {\n ...state,\n oneInc: {\n ...INITIAL_ONE_INC,\n petPaymentMethods: state.oneInc.petPaymentMethods,\n },\n paymentMethod: {\n ...INITIAL_STATE.paymentMethod,\n },\n };\n\n case IMPERSONATING_INFO_CHANGED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n impersonatingEmail: action.impersonatingEmail,\n isImpersonating: action.isImpersonating,\n },\n };\n\n case IN_APP_STARTED:\n return {\n ...state,\n inApp: true,\n };\n\n case IN_LOGIN_APP_STARTED:\n return {\n ...state,\n inLoginApp: true,\n };\n\n case COSTCO_MEMBERSHIP_EDIT_CLICKED:\n return {\n ...state,\n partners: {\n ...state.partners,\n costcoMembership: {\n ...state.partners.costcoMembership,\n editing: true,\n error: '',\n isFeeWaived: false,\n isValid: false,\n membershipTypeName: null,\n message: null,\n },\n },\n };\n\n case COSTCO_MEMBERSHIP_ERROR_MESSAGE_SET:\n return {\n ...state,\n partners: {\n ...state.partners,\n costcoMembership: {\n ...state.partners.costcoMembership,\n error: action.error,\n },\n },\n };\n\n case COSTCO_MEMBERSHIP_NUMBER_CHANGED:\n return {\n ...state,\n partners: {\n ...state.partners,\n costcoMembership: {\n ...state.partners.costcoMembership,\n error: '',\n membershipNumber: action.membershipNumber,\n },\n },\n };\n\n case COSTCO_MEMBERSHIP_VALIDATION_STARTED:\n return {\n ...state,\n partners: {\n ...state.partners,\n costcoMembership: {\n ...state.partners.costcoMembership,\n error: '',\n loading: true,\n },\n },\n };\n\n case COSTCO_MEMBERSHIP_VALIDATED:\n return {\n ...state,\n partners: {\n ...state.partners,\n costcoMembership: {\n ...state.partners.costcoMembership,\n editing: false,\n error: '',\n executeMemberBenefitDisplay: action.ExecuteMemberBenefitDisplay\n || '',\n executeMemberBenefitWaivedAmount: action.ExecuteMemberBenefitValue,\n feeWaivedMessageContent: action.DetailMessageContent || '',\n feeWaivedMessageTitle: action.DetailMessageTitle || '',\n isFeeWaived: action.isFeeWaived,\n isValid: true,\n loading: false,\n membershipStatus: action.membershipStatus,\n membershipTier: action.membershipTier,\n membershipType: action.membershipType,\n membershipTypeName: action.membershipTypeName,\n message: action.message,\n waivableFee: action.waivableFee,\n zipCode: action.customerZipCode,\n },\n },\n };\n\n case COSTCO_MEMBERSHIP_VALIDATION_FAILED:\n return {\n ...state,\n partners: {\n ...state.partners,\n costcoMembership: {\n ...state.partners.costcoMembership,\n error: action.error,\n loading: false,\n },\n },\n };\n\n case ZIP_CODE_VALIDATION_ATTEMPT:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n showComingSoonModal: false,\n validateZipCodeLoading: true,\n },\n };\n\n case ZIP_CODE_VALIDATION_FAILED:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n showComingSoonModal: true,\n showErrorComingSoonModal: false,\n showSuccessComingSoonModal: false,\n validateZipCodeLoading: false,\n },\n };\n\n case ZIP_CODE_VALIDATION_SUCCESS:\n return {\n ...state,\n sessionInformation: {\n ...state.sessionInformation,\n showComingSoonModal: false,\n validateZipCodeLoading: false,\n },\n };\n\n case ZIP_CODE_VALIDATION_CRASHED:\n return {\n ...state,\n message: true,\n sessionInformation: {\n ...state.sessionInformation,\n validateZipCodeLoading: false,\n },\n };\n\n case ZIP_CODE_CUSTOMER_UPDATED:\n return {\n ...state,\n partners: {\n ...state.partners,\n comingSoonZipcode: action.zipcode,\n notifyMeEmail: {\n ...state.partners.notifyMeEmail,\n email: action.email || state.partners.notifyMeEmail.email,\n },\n },\n };\n\n case NOTIFY_ME_EMAIL_VALUES_SAVED: {\n const {\n email,\n invalidQuote,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex,\n zipcode,\n } = action.valuesEmail;\n\n return {\n ...state,\n partners: {\n ...state.partners,\n notifyMeEmail: {\n email,\n invalidQuote: !!invalidQuote,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex,\n zipcode,\n },\n },\n };\n }\n\n case EXTOLE_UUID_SAVED:\n return {\n ...state,\n extoleQuoteUUID: action.payload,\n };\n case EXTOLE_PURCHASE_COMPLETED:\n return {\n ...state,\n purchase: {\n ...state.purchase,\n extolePurchaseComplete: action.payload,\n },\n };\n\n case SAVE_UTM_PARAMS:\n return {\n ...state,\n utmParams: action.payload,\n };\n\n case SIGNED_UP_SMS:\n return {\n ...state,\n textAlerts: {\n error: action.error,\n loading: false,\n success: action.success,\n },\n };\n\n case SIGNED_UP_SMS_ATTEMPT:\n return {\n ...state,\n textAlerts: {\n error: '',\n loading: true,\n success: false,\n },\n };\n\n case QUOTE_SELECTED_VALUES_REMOVED:\n return {\n ...state,\n quoteSelectedValues: state.quoteSelectedValues\n .filter((quoteValue) => quoteValue.quoteId !== action.petQuoteId),\n };\n\n case GOOD_DOG_COMING_SOON_MODAL_SHOWED: {\n return {\n ...state,\n goodDogComingSonModalVisible: true,\n };\n }\n\n case GOOD_DOG_COMING_SOON_MODAL_HIDED: {\n return {\n ...state,\n goodDogComingSonModalVisible: false,\n };\n }\n\n case RECAPTCHA_VALIDATE_ATTEMPT: {\n return {\n ...state,\n recaptcha: {\n error: null,\n loading: true,\n token: null,\n },\n };\n }\n\n case RECAPTCHA_VALIDATE_LOADED: {\n return {\n ...state,\n recaptcha: {\n error: null,\n loading: false,\n token: action.token,\n },\n };\n }\n\n case RECAPTCHA_VALIDATE_FAILED: {\n return {\n ...state,\n recaptcha: {\n error: action.error,\n loading: false,\n token: null,\n },\n };\n }\n\n case RETRY_PURCHASE_ERROR: {\n return {\n ...state,\n message: action.message,\n };\n }\n\n case TERMS_AND_POLICY_CHANGED: {\n return {\n ...state,\n acceptedTermsAndPolicy: action.newStatus,\n };\n }\n\n case POWERUP_ID_ERRORS_REMOVED: {\n return {\n ...state,\n powerUpErrors: state.powerUpErrors\n .filter((modifierId) => modifierId !== action.modifierId),\n powerUpErrorsScroll: false,\n };\n }\n case POWERUP_ID_ERRORS_RESTARTED: {\n return {\n ...state,\n powerUpErrors: [],\n powerUpErrorsScroll: false,\n };\n }\n case POWERUP_ID_ERRORS_SET: {\n return {\n ...state,\n powerUpErrors: action.modifierIds,\n powerUpErrorsScroll: true,\n };\n }\n case CUSTOMER_PASSWORD_SET: {\n return {\n ...state,\n customerValidationResponse: {\n ...state.customerValidationResponse,\n hasPassword: action.value ?? true,\n },\n };\n }\n\n case DUPLICATED_VALIDATION_FAILED: {\n return {\n ...state,\n purchase: {\n ...state.purchase,\n duplicatedPets: action.data.duplicatedPets,\n duplicatedPetsModalVisible: true,\n loading: false,\n multiQuoteLoading: false,\n notDuplicatedPets: action.data.notDuplicatedPets,\n },\n };\n }\n\n case DUPLICATED_VALIDATION_MODAL_CLOSED: {\n return {\n ...state,\n purchase: {\n ...state.purchase,\n duplicatedPetsModalVisible: false,\n },\n };\n }\n\n case ALL_PETS_POWERUPS_VALIDATED: {\n return {\n ...state,\n petsWithQuoteError: action.petsWithQuoteError || [],\n };\n }\n\n case SUB_ID_SYNONYMS_DATA_LOADED: {\n return {\n ...state,\n subIdSynonyms: action.data,\n };\n }\n\n default:\n return { ...state };\n }\n}\n","import { combineReducers } from 'redux';\nimport Quoting from './quoting';\n\n/* Don't add more reducers;\n the state fails when handling multiple\n requests in different reducer :'v */\nexport default combineReducers({\n quoting: Quoting,\n});\n","import { applyMiddleware, createStore } from 'redux';\nimport thunk from 'redux-thunk';\n\nimport reducers from './reducers';\n\nconst middleWares = [thunk];\nconst store = createStore(reducers, applyMiddleware(...middleWares));\n\nexport { store };\n","const STORE_ATTRIBUTE = {\n GTM: 'store.gtm',\n PET_QUOTE_RESPONSE_LIST: 'petQuoteResponseList',\n QUOTING: 'store.quoting',\n};\nconst DATALAYER_EVENT_TYPE = {\n ADD_TO_CART: 'add_to_cart',\n BEGIN_CHECKOUT: 'begin_checkout',\n PURCHASE: 'purchase',\n VIEW_ITEM: 'view_item',\n};\nconst EMPTY_STRING = 'empty';\nconst FULL_POLICY = 'Full Policy';\nconst NO_POWERUPS = 'No Powerups';\nconst ALL_POWERUPS = 'All Powerups';\nconst NO_PARTNER_CODE = 'No Partner Code';\nconst PATH_ALLOWED = {\n VIEW_ITEM: ['/quoting/getquote'],\n};\n\nconst NO_PARTNER = 'No Partner';\n\nexport {\n ALL_POWERUPS,\n DATALAYER_EVENT_TYPE,\n EMPTY_STRING,\n FULL_POLICY,\n NO_PARTNER_CODE,\n NO_POWERUPS,\n PATH_ALLOWED,\n STORE_ATTRIBUTE,\n NO_PARTNER,\n};\n","import { store } from '../store';\nimport { generateUUID } from '../util';\nimport { NO_PARTNER } from './constants';\n\n// eslint-disable-next-line arrow-body-style\nconst waitForQuotingData = () => {\n return new Promise((resolve) => {\n const intervalId = setInterval(() => {\n const { quoting } = store.getState();\n if (quoting && quoting.data) {\n clearInterval(intervalId);\n\n const quotingState = {\n ...quoting,\n data: {\n ...quoting.data,\n petQuoteResponseList: quoting.data.petQuoteResponseList\n .map((pet) => ({ ...pet })),\n },\n };\n\n quotingState.data.petQuoteResponseList.forEach((pet) => {\n if (!pet?.temporal_item_id) {\n // eslint-disable-next-line no-param-reassign\n pet.temporal_item_id = generateUUID();\n }\n });\n\n resolve(quotingState);\n }\n }, 100);\n });\n};\n\nconst getCoupon = (quoting) => {\n if (quoting.data.groupCode?.trim().length > 0) {\n return quoting.data.groupCode;\n }\n\n return NO_PARTNER;\n};\n\nconst getPetAge = (pet) => {\n if (pet.petAgeName === '8 weeks to 12 months') {\n return 'Under 1 year';\n }\n\n return pet.petAgeName;\n};\n\nconst getBillingCycle = (quoting) => {\n if (quoting.isMonthlyPlan) {\n return 'Monthly';\n }\n return 'Annual';\n};\n\nexport { waitForQuotingData, getCoupon, getPetAge, getBillingCycle };\n","import { BILLING_CYCLE_TYPE, PetType } from '../constants';\nimport { store } from '../store';\nimport { currencyFormat, getSessionStorage, isProdEnv } from '../util';\nimport {\n ALL_POWERUPS,\n DATALAYER_EVENT_TYPE,\n EMPTY_STRING,\n FULL_POLICY,\n NO_PARTNER_CODE,\n NO_POWERUPS,\n STORE_ATTRIBUTE,\n} from './constants';\nimport {\n getBillingCycle,\n getCoupon,\n getPetAge,\n waitForQuotingData,\n} from './utils';\n\nconst getPlanName = ({ selectedPlan, plans }) => {\n if (!selectedPlan || !plans) {\n throw new Error();\n }\n\n const planFounded = plans.find((plan) => plan.Id === selectedPlan);\n\n return {\n planName: planFounded?.Name || 'Custom Plan',\n };\n};\n\nconst getModifierNameById = (modifier, id) => {\n if (!modifier || !id) {\n throw new Error();\n }\n\n if (modifier.Id === id) {\n return modifier.TitleText || modifier.AppText || '';\n }\n\n if (modifier.BundleInsuranceModifiers) {\n const subModifier = modifier.BundleInsuranceModifiers.find(\n (item) => item.Id === id,\n );\n\n if (subModifier) {\n return subModifier.TitleText || subModifier.AppText || '';\n }\n }\n return '';\n};\n\nconst getModifiersName = ({ selectedModifiers, modifiers }) => {\n if (!selectedModifiers || !modifiers) {\n return {\n modifiersName: NO_POWERUPS,\n };\n }\n\n const selectedModifiersIds = selectedModifiers\n .filter((modifier) => modifier.isSelected)\n .map((modifier) => modifier.id);\n\n // eslint-disable-next-line max-len\n const modifiersWithTitle = selectedModifiersIds.map((selectedModifierId) => modifiers.find((modifier) => getModifierNameById(modifier, selectedModifierId)));\n\n const modifiersName = modifiersWithTitle.map(\n (modifier) => modifier.TitleText || modifier.AppText,\n );\n\n const modifiersListNames = [...new Set(modifiersName)];\n\n const modifiersNameFormated =\n modifiersListNames.length > 1 ? ALL_POWERUPS : modifiersListNames[0];\n\n return {\n modifiersName: modifiersNameFormated || NO_POWERUPS,\n };\n};\n\nconst pickupTransactionIdFromSessionStorage = () => {\n try {\n const storageData = getSessionStorage(STORE_ATTRIBUTE.QUOTING);\n const { purchase } = storageData;\n const { customerId } = purchase;\n\n if (!storageData || !purchase || !customerId) {\n throw new Error();\n }\n\n const policyNumbers = purchase.policyNumbers.map(\n (policy) => policy.PolicyNumber,\n );\n\n const transactionId = `${customerId}_${policyNumbers?.join('_')}`;\n\n return {\n policyNumbers: policyNumbers || [],\n transactionId: transactionId || '',\n };\n } catch (_) {\n return {\n policyNumbers: [],\n transactionId: '',\n };\n }\n};\n\nconst pickupPartnerCodeFromSessionStorage = () => {\n try {\n // you can get this info from quoting\n // parameters.p\n // parameters.groupCode\n // data.groupCode\n\n const storageData = getSessionStorage(STORE_ATTRIBUTE.QUOTING);\n const { groupCode } = storageData?.data;\n\n if (!storageData || !groupCode) {\n throw new Error();\n }\n\n return {\n partnerCode: groupCode || NO_PARTNER_CODE,\n };\n } catch (_) {\n return {\n partnerCode: NO_PARTNER_CODE,\n };\n }\n};\n\nconst calcTotalMontlyAmountFromItems = (items) => {\n try {\n if (!items || !items.length) {\n throw new Error();\n }\n\n const totalAmount = items.reduce((acc, item) => {\n const { price, quantity } = item;\n return acc + price * quantity;\n }, 0);\n\n return parseFloat(parseFloat(totalAmount).toFixed(2)) || 0;\n } catch (_) {\n return 0;\n }\n};\n\n// exported functions\nconst dataLayerEvent = (data) => {\n (window.dataLayer || []).push(data);\n\n if (!isProdEnv) {\n // eslint-disable-next-line no-console\n console.log('dataLayerEvent', data);\n }\n};\n\nconst pickupItemsFromSessionStorage = async (sessionStorage) => {\n try {\n const storageData =\n sessionStorage ?? getSessionStorage(STORE_ATTRIBUTE.QUOTING);\n\n const { quoteSelectedValues } = storageData;\n const { petQuoteResponseList } = storageData?.data;\n const { InsuranceModifiers } = storageData?.data?.insuranceProduct;\n const { PrePackagedPlans } = storageData?.data?.petQuoteResponseList[0];\n\n if (\n !storageData\n || !quoteSelectedValues\n || !petQuoteResponseList\n || !InsuranceModifiers\n || !PrePackagedPlans\n ) {\n throw new Error();\n }\n\n const quoting = await waitForQuotingData();\n\n const itemsList = quoting.data?.petQuoteResponseList?.filter(\n (item) => quoteSelectedValues.some(\n (quoteSelected) => item.petQuoteId === quoteSelected.quoteId,\n ),\n ).map(\n (pet, index) => ({\n affiliation: quoting.partners.isCostco ? 'Costco' : 'No Partner',\n item_brand: 'Figo',\n item_category: getModifiersName({\n modifiers: InsuranceModifiers,\n selectedModifiers: pet.modifiers,\n }).modifiersName,\n item_category2:\n pet.petType === PetType.Dog.value ? PetType.Dog.name : PetType.Cat.name,\n item_category3: pet.breedName,\n item_category4: getPetAge(pet),\n item_id: pet.temporal_item_id,\n item_name: FULL_POLICY,\n item_variant: getPlanName({\n plans: PrePackagedPlans,\n selectedPlan: quoteSelectedValues[index].selectedPlanPackaged,\n }).planName,\n petQuoteId: pet.petQuoteId,\n price: quoteSelectedValues[index].total,\n quantity: 1,\n }),\n );\n\n return itemsList;\n } catch (_) {\n return [\n {\n item_addon: EMPTY_STRING,\n item_id: EMPTY_STRING,\n item_name: FULL_POLICY,\n item_variant: EMPTY_STRING,\n price: 0,\n quantity: 1,\n },\n ];\n }\n};\n\nconst pickupSimpleItemsFromSessionStorage = async () => {\n // eslint-disable-next-line arrow-body-style\n const waitForStoreReady = () => {\n return new Promise((resolve, reject) => {\n const intervalId = setInterval(() => {\n if (store.getState()) {\n clearInterval(intervalId);\n resolve();\n } else {\n reject();\n }\n }, 100);\n });\n };\n\n await waitForStoreReady();\n\n const { partnerCode } = pickupPartnerCodeFromSessionStorage();\n if (!partnerCode) {\n throw new Error();\n }\n\n const { quoting } = store.getState();\n\n const petsInfo = quoting.data?.petQuoteResponseList?.map((pet) => ({\n affiliation: partnerCode,\n item_brand: 'Figo',\n item_category2:\n pet.petType === PetType.Dog.value ? PetType.Dog.name : PetType.Cat.name,\n item_category3: pet.breedName,\n item_category4: getPetAge(pet),\n item_id: pet.temporal_item_id,\n item_name: FULL_POLICY,\n price: pet.monthlyPremium,\n quantity: 1,\n }));\n\n return petsInfo;\n};\n\nconst pickupIncompleteTransactionsFromSessionStorage = () => {\n try {\n const storageData = getSessionStorage(STORE_ATTRIBUTE.QUOTING);\n const { purchase } = storageData;\n const { incompletePurchases } = purchase;\n return {\n incompletePurchases: incompletePurchases || [],\n };\n } catch (_) {\n return {\n policyNumbers: [],\n transactionId: '',\n };\n }\n};\n\nconst getDataLayerPurchaseEvent = async () => {\n try {\n let items = await pickupItemsFromSessionStorage();\n if (!items || !items.length) {\n throw new Error();\n }\n\n const { incompletePurchases } =\n pickupIncompleteTransactionsFromSessionStorage();\n if (incompletePurchases.length) {\n items = items.filter((item) => !incompletePurchases\n .some((purchase) => item.petQuoteId === purchase.PetQuoteId));\n }\n\n const { transactionId, policyNumbers } =\n pickupTransactionIdFromSessionStorage();\n\n if (!transactionId || !policyNumbers) {\n throw new Error();\n }\n\n const { partnerCode } = pickupPartnerCodeFromSessionStorage();\n if (!partnerCode) {\n throw new Error();\n }\n\n const monthlyPriceTotal = calcTotalMontlyAmountFromItems(items);\n if (!monthlyPriceTotal) {\n throw new Error();\n }\n\n const quoting = await waitForQuotingData();\n\n const billingCycle = quoting.isMonthlyPlan\n ? BILLING_CYCLE_TYPE.monthly\n : BILLING_CYCLE_TYPE.annualy;\n\n const summary = quoting.rateSummary.QuoteSummaries.find(\n (item) => item.BillingCycle === billingCycle\n && item.PaymentType === quoting.paymentMethod.paymentMethodType.value,\n ) || { MonthlyPremiumTotal: 0, TodaysTotal: 0 };\n\n const itemsWithoutPetQuoteId = items.map((item) => {\n const itemCopy = { ...item };\n delete itemCopy.petQuoteId;\n return itemCopy;\n });\n\n return {\n ecommerce: {\n affiliation: partnerCode,\n billing_cycle: getBillingCycle(quoting),\n coupon: getCoupon(quoting),\n currency: 'USD',\n items: itemsWithoutPetQuoteId,\n language: 'en',\n transaction_id: transactionId,\n value: Number(currencyFormat({ value: summary.TodaysTotal })),\n },\n email_address: quoting.parameters.email,\n event: DATALAYER_EVENT_TYPE.PURCHASE,\n language: 'en',\n };\n } catch (e) {\n return {\n ecommerce: {\n affiliation: EMPTY_STRING,\n currency: 'USD',\n items: EMPTY_STRING,\n transaction_id: EMPTY_STRING,\n value: 0,\n },\n event: DATALAYER_EVENT_TYPE.PURCHASE,\n };\n }\n};\n\nexport {\n dataLayerEvent,\n getDataLayerPurchaseEvent,\n pickupSimpleItemsFromSessionStorage,\n pickupItemsFromSessionStorage,\n pickupPartnerCodeFromSessionStorage,\n};\n","// @ts-nocheck\n/**\n * @Route\n * URL_ROOT_QUOTE = '/quoting/getquote'\n *\n * @Component\n * src/components/quoting/header/QuotingHeader.js\n *\n * @Description\n * A view_item event represents when the user completes the form on step\n * one and reveals a quote for one pet. If the user adds another pet, a\n * new view_item event is fired to identify a new quote revealed, Each\n * time the user toggles between pets a new view_item event is fired.\n * Equals the Load Quote event previously configured.\n *\n * @Reference\n * https://developers.google.com/tag-manager/enhanced-ecommerce#view-item\n */\nimport { useGoogleTagManager } from '../util';\nimport {\n dataLayerEvent,\n pickupPartnerCodeFromSessionStorage,\n} from './dataLayer';\nimport { DATALAYER_EVENT_TYPE, FULL_POLICY, PATH_ALLOWED } from './constants';\nimport { getCoupon, getPetAge, waitForQuotingData } from './utils';\nimport { PetType } from '../constants';\n\nexport const dataLayerViewItem = async ({ pathname = '' }) => {\n const pathLowerCase = pathname?.toLocaleLowerCase() || '';\n\n if (!useGoogleTagManager || !PATH_ALLOWED.VIEW_ITEM.includes(pathLowerCase)) {\n return;\n }\n\n const quoting = await waitForQuotingData();\n\n const { partnerCode } = pickupPartnerCodeFromSessionStorage();\n if (!partnerCode) {\n throw new Error();\n }\n\n const items = quoting.data.petQuoteResponseList.map((pet) => ({\n affiliation: quoting.partners.isCostco ? 'Costco' : 'No Partner',\n item_brand: 'Figo',\n item_category2:\n pet.petType === PetType.Dog.value ? PetType.Dog.name : PetType.Cat.name,\n item_category3: pet.breedName,\n item_category4: getPetAge(pet),\n item_id: pet.temporal_item_id,\n item_name: FULL_POLICY,\n price: pet.monthlyPremium,\n quantity: 1,\n }));\n\n const currentPetSelected = items[quoting.petQuoteSelected - 1];\n\n const ecommerce = {\n coupon: getCoupon(quoting),\n currency: 'USD',\n items: [currentPetSelected],\n language: 'en',\n value: currentPetSelected.price,\n };\n\n dataLayerEvent({\n ecommerce,\n email_address: quoting.parameters.email,\n event: DATALAYER_EVENT_TYPE.VIEW_ITEM,\n language: 'en',\n });\n};\n","import {\n PowerUpsRelation,\n POWERUP_TYPE,\n BENEFIT_FEE_TYPE,\n} from '../../../constants';\nimport { isPaycheck, isProductFPI } from '../../../util';\n\nconst { WELLNESS_PSM_ID } = PowerUpsRelation;\n\nexport function toTruncate(value) {\n return Math.trunc((value * 100)) / 100;\n}\n\nexport function shouldDisplayInfoImage(powerUp) {\n return powerUp.PMSModifierId === WELLNESS_PSM_ID;\n}\n\n// FIXME: i think that we can use ProductFamily === \"FPI\" instead isProductFPI\nexport function isWellnessFPI({ insuranceProductId, powerUp }) {\n return powerUp?.PMSModifierId === WELLNESS_PSM_ID\n // FPA-12007: Wellness plus to be offered as single option of some states\n && powerUp?.BundleInsuranceModifiers?.length >= 2\n && isProductFPI(insuranceProductId);\n}\n\n// FIXME: i think that we can use ProductFamily === \"FPI\" instead isProductFPI\nexport function isWellnessFPIWithoutChild({ insuranceProductId, powerUp }) {\n return powerUp?.PMSModifierId === WELLNESS_PSM_ID\n // FPA-12007: Wellness plus to be offered as single option of some states\n && powerUp?.BundleInsuranceModifiers?.length === 1\n && isProductFPI(insuranceProductId);\n}\n\nexport function findSelectedModifier({ id, modifiers = [] }) {\n const contentModifierSelected = modifiers\n ?.find((element) => element.id === id);\n\n const isChecked = contentModifierSelected\n ? contentModifierSelected.isSelected : null;\n\n return isChecked;\n}\n\nfunction isModifierSelected({ id, selectedModifiers }) {\n const modifiersSelected =\n selectedModifiers.filter((modifier) => modifier.id === id\n && modifier.isSelected);\n\n return !!modifiersSelected.length;\n}\n\nexport function getFeeAmountChildren({\n benefitType,\n modifiers,\n selectedModifiers,\n}) {\n return modifiers\n .filter((item) => item.InsuranceModifierTypeId === POWERUP_TYPE\n && item.BenefitFeeType === benefitType)\n .map((element) => {\n if (element.BundleInsuranceModifiers) {\n return element.BundleInsuranceModifiers\n .filter((filter) => filter.IsSelected\n || isModifierSelected({ id: filter.Id, selectedModifiers }))\n .reduce((prev, next) => prev + next.FeeAmount, 0);\n }\n\n return 0;\n }).reduce((prev, next) => prev + next, 0);\n}\n\nfunction getCoverageFee({ data, petQuoteSelected }) {\n const { petQuoteResponseList } = data;\n\n const quote = petQuoteResponseList\n .find((item) => item.petQuoteId === petQuoteSelected)\n || { modifier: [] };\n const insuranceModifiers = quote.InsuranceModifiers;\n\n const modifiers = quote.modifiers\n ? quote.modifiers.filter((modifier) => modifier.isSelected)\n : [];\n const modifierIds = modifiers.map((modifier) => modifier.id);\n\n const powerUpsHidden = insuranceModifiers\n .filter((modifier) => modifier.InsuranceModifierTypeId === POWERUP_TYPE\n && modifier.IsSelected && !modifier.IsVisible);\n const powerUpsSelected = insuranceModifiers\n .filter((modifier) => modifierIds.includes(modifier.Id));\n const powerUps = [...powerUpsHidden, ...powerUpsSelected];\n\n const feeFactor = powerUps\n .filter((item) => item.BenefitFeeType === BENEFIT_FEE_TYPE.ftpFactor)\n .reduce((a, b) => a + b.FeeAmount, 0);\n const feeFixed = powerUps\n .filter((item) => item.BenefitFeeType === BENEFIT_FEE_TYPE.fixedFee\n || item.BenefitFeeType === BENEFIT_FEE_TYPE.dynamic)\n .reduce((a, b) => a + b.FeeAmount, 0);\n\n const feeFactorChildren = getFeeAmountChildren({\n benefitType: BENEFIT_FEE_TYPE.ftpFactor,\n modifiers: insuranceModifiers,\n selectedModifiers: quote.modifiers || [],\n });\n\n const feeFixedChildren = getFeeAmountChildren({\n benefitType: BENEFIT_FEE_TYPE.fixedFee,\n modifiers: insuranceModifiers,\n selectedModifiers: quote.modifiers || [],\n });\n\n return {\n feeFactor: feeFactor + feeFactorChildren,\n feeFixed: feeFixed + feeFixedChildren,\n };\n}\n\nfunction getPriceWithoutFees({ data, petQuoteSelected, quoteSelected }) {\n const { annualAmountPlan, monthlyAmountPlan } = quoteSelected;\n const coverageFeeValue = getCoverageFee({ data, petQuoteSelected });\n const pricePaycheck = (annualAmountPlan * 0.9) / 24;\n const price = isPaycheck ? pricePaycheck : monthlyAmountPlan;\n const priceWithoutFees = (price - coverageFeeValue.feeFixed)\n / (1 + coverageFeeValue.feeFactor);\n\n return priceWithoutFees;\n}\n\nfunction getCoverageByBenefitFeeType({\n data,\n petQuoteSelected,\n powerUp,\n quoteSelected,\n}) {\n const { BenefitFeeType, FeeAmount } = powerUp;\n const priceWithoutFees = getPriceWithoutFees({\n data,\n petQuoteSelected,\n quoteSelected,\n });\n\n if (BenefitFeeType === BENEFIT_FEE_TYPE.ftpFactor) {\n const coverageFee = FeeAmount * priceWithoutFees;\n\n return coverageFee;\n }\n\n return FeeAmount;\n}\n\nexport function calculateCoverageFee({\n data,\n petQuote,\n petQuoteSelected,\n powerUp,\n quoteSelected,\n}) {\n if (isWellnessFPI({\n insuranceProductId: data.insuranceProduct.Id,\n powerUp,\n })) {\n const wellnessArrayValues =\n powerUp.BundleInsuranceModifiers\n .map((item) => {\n const contentModifierSelected = (petQuote.modifiers || [])\n .find((element) => element.id === item.Id);\n const isSelected = contentModifierSelected\n ? contentModifierSelected.isSelected : false;\n\n return isSelected && item.FeeAmount\n ? item.FeeAmount : 0;\n });\n\n const wellnessPrice = wellnessArrayValues\n .reduce((accumulator, currentValue) => accumulator + currentValue, 0)\n || powerUp.BundleInsuranceModifiers[0].FeeAmount;\n\n return toTruncate(wellnessPrice).toFixed(2);\n }\n\n if (isWellnessFPIWithoutChild({\n insuranceProductId: data.insuranceProduct.Id,\n powerUp,\n })) {\n const firthChild = powerUp.BundleInsuranceModifiers[0]?.FeeAmount || 0;\n\n return toTruncate(firthChild).toFixed(2);\n }\n\n const coverageFee = getCoverageByBenefitFeeType({\n data,\n petQuoteSelected,\n powerUp,\n quoteSelected,\n });\n return toTruncate(coverageFee).toFixed(2);\n}\n","import { doNothing, getSessionStorage, setSessionStorage } from '../util';\n\nconst KEY_FEATURE_FLAGS = 'quoting.d2c.flags';\n\nconst FEATURE_FLAGS_LOADED_EVENT_NAME = 'featureFlagsLoaded';\n\nconst storeFeatureFlags = (featureFlags = { }) => {\n try {\n setSessionStorage({\n data: featureFlags,\n key: KEY_FEATURE_FLAGS,\n });\n window.dispatchEvent(new Event(FEATURE_FLAGS_LOADED_EVENT_NAME));\n } catch (_) {\n doNothing();\n }\n};\n\nconst getFeatureFlagFromStorage = () => {\n let featureFlags = {};\n\n try {\n featureFlags = getSessionStorage(KEY_FEATURE_FLAGS) || { };\n } catch (_) {\n doNothing();\n }\n\n return featureFlags;\n};\n\nconst featureFlagsLoadedValidation = () => {\n try {\n const featureFlags = getSessionStorage(KEY_FEATURE_FLAGS);\n\n return !!featureFlags;\n } catch {\n return false;\n }\n};\n\nexport {\n FEATURE_FLAGS_LOADED_EVENT_NAME,\n featureFlagsLoadedValidation,\n getFeatureFlagFromStorage,\n storeFeatureFlags,\n};\n","import { calculateCoverageFee } from '../components/quoting/powerups/utils';\nimport { DISCOUNT_MODIFIER_TYPE, PetType } from '../constants';\nimport { getQuoteClientType } from '../partners/partners.util';\nimport {\n apiCall,\n apiCallPurchase,\n doNothing,\n getAgeInYears,\n toBoolean,\n} from '../util';\nimport { getFeatureFlagFromStorage } from '../utils/featureFlags.utils';\nimport { INITIAL_EMAIL_REASIGNED } from './types';\n\n/**\n * Send lead with pet data, used on quote rate created\n * @param {Object} pet - The first pet when quote is created\n */\nexport function sendFSCLead({\n age = 0,\n breed = '',\n breedId = 0,\n email = '',\n gender = '',\n marketingOpt = false,\n petName = '',\n petType = '',\n promoCode,\n state,\n zipCode = '',\n}) {\n return async (_, getState) => {\n const { quoting: { saveQuote: { quoteId } } } = getState();\n const url = 'FSCLead';\n const body = {\n age,\n breed,\n breedId,\n email,\n gender,\n marketingOpt,\n petName,\n petType,\n promoCode,\n quoteId,\n state,\n zipCode,\n };\n\n try {\n let stateAbbr = state;\n if (!state) {\n const legacyAPI = `api/State/GetStateByZipCode/${zipCode}`;\n const purchaseAPI = `purchase/State/GetStateByZipCode/${zipCode}`;\n const { QuoteSiteD2CPurchaseV1T159710 } = getFeatureFlagFromStorage();\n const stateValidationUrl = QuoteSiteD2CPurchaseV1T159710\n ? purchaseAPI : legacyAPI;\n const response = await apiCall(stateValidationUrl);\n const payload = await response.json();\n stateAbbr = payload?.Data?.StateAbbr || '';\n }\n await apiCallPurchase(url, {\n post: {\n ...body,\n state: stateAbbr,\n },\n });\n } catch (error) {\n doNothing();\n }\n };\n}\n\n/** Send leads for each pet data\n * @param {boolean} removePromoCode\n*/\nexport function sendAllPetsFSCLead(removePromoCode = false) {\n return async (dispatch, getState) => {\n const { quoting: { data, newCustomer, parameters } } = getState();\n if (data) {\n data?.petQuoteResponseList.forEach((pet) => {\n dispatch(sendFSCLead({\n age: Number(getAgeInYears(pet.petAgeName)),\n breed: pet.breedName,\n breedId: pet.breedId,\n email: newCustomer.email || parameters.email,\n gender: pet.genderName,\n marketingOpt: toBoolean(parameters.marketingOptIn),\n petName: pet.petName,\n petType: PetType.Dog.value === pet.petType\n ? PetType.Dog.name : PetType.Cat.name,\n promoCode: removePromoCode ? '' : data?.groupCode || '',\n state: newCustomer.address.state || '',\n zipCode: newCustomer.address.zipCode || parameters.petZipCode,\n }));\n });\n }\n };\n}\n\n/**\n * Send lead with customer data, used after filling the Your info form\n*/\nexport function sendFSCCustomerLead() {\n return async (dispatch, getState) => {\n dispatch({ type: INITIAL_EMAIL_REASIGNED });\n const {\n quoting: {\n quoteSelectedValues,\n saveQuote: { quoteId },\n newCustomer,\n },\n } = getState();\n const url = 'FSCLead/customer';\n const body = {\n address: {\n city: newCustomer.address.city,\n line1: newCustomer.address.street,\n line2: newCustomer.address.street2,\n state: newCustomer.address.state,\n zip: newCustomer.address.zipCode,\n },\n email: newCustomer.email,\n firstName: newCustomer.name,\n lastName: newCustomer.lastName,\n pets: quoteSelectedValues.map((pet) => ({ petName: pet.petName })),\n phoneNumber: newCustomer.phoneNumber,\n quoteId,\n secondaryPetParent: {\n firstName: newCustomer.secondParent.name,\n lastName: newCustomer.secondParent.lastName,\n phoneNumber: newCustomer.secondParent.phoneNumber,\n },\n };\n\n try {\n await apiCallPurchase(url, { post: body });\n } catch (error) {\n doNothing();\n }\n };\n}\n\nconst getModifierData = ({ modifierId, quotingState, quoteId }) => {\n const {\n data,\n quoteSelectedValues,\n } = quotingState;\n\n const { petQuoteResponseList } = data;\n\n const petQuote = petQuoteResponseList\n .find((item) => item.petQuoteId === quoteId);\n const quoteSelected = quoteSelectedValues\n .find((item) => item.quoteId === quoteId)\n || { petName: 'Pet Name' };\n\n if (!petQuote || !quoteSelected) {\n return null;\n }\n\n const powerUp = petQuote.InsuranceModifiers\n .find((modifier) => {\n if (modifier.Id !== modifierId\n && modifier?.BundleInsuranceModifiers?.length) {\n const bundleModifier = modifier.BundleInsuranceModifiers\n .find((bmodifier) => bmodifier.Id === modifierId);\n if (bundleModifier) {\n return bundleModifier;\n }\n }\n return modifier.Id === modifierId;\n });\n\n if (!powerUp) {\n return null;\n }\n\n const powerUpPrice = calculateCoverageFee({\n data,\n petQuote,\n petQuoteSelected: quoteId,\n powerUp,\n quoteSelected,\n });\n\n return {\n amount: Number(powerUpPrice),\n name: powerUp.AppText,\n type: 'Powerup',\n };\n};\n\nconst getPlanName = ({ selectedPlanPackaged, quoteInfo }) => {\n const planInfo = quoteInfo.PrePackagedPlans\n .find((plan) => plan.Id === selectedPlanPackaged);\n return planInfo?.Name || 'Custom plan';\n};\n\nconst getTotalDiscount = (allDiscounts) => allDiscounts\n .reduce((accumulator, current) => {\n try {\n const { InsuranceModifierDiscount: { Discount, DiamondName } } = current;\n const percentage = Number(String(Discount)\n .replace('%', '')) || 0;\n\n const text = accumulator.discountGroup\n ? `${accumulator.discountGroup}, ${DiamondName}`\n : DiamondName;\n return {\n discount: accumulator.discount + percentage,\n discountGroup: text,\n };\n } catch (e) {\n return accumulator;\n }\n }, { discount: 0, discountGroup: '' });\n\n/**\n * Send lead with quotes data, used once when user finish to customize quote\n */\nexport function sendFSCQuoteLead() {\n return async (_, getState) => {\n const url = 'FSCLead/quote';\n const { quoting } = getState();\n try {\n const {\n data: { petQuoteResponseList },\n partners,\n quoteSelectedValues,\n saveQuote: { quoteId },\n } = quoting;\n\n const quotes = quoteSelectedValues.map((quote) => {\n const petQuote = petQuoteResponseList\n .find((item) => item.petQuoteId === quote.quoteId);\n\n if (!petQuote) { return null; }\n\n const modifiers = quote.modifiers\n .filter((modifier) => modifier.isSelected)\n .map((modifier) => getModifierData({\n modifierId: modifier.id,\n quoteId: quote.quoteId,\n quotingState: quoting,\n })).filter((modifier) => Boolean(modifier));\n\n const discountModifiers = petQuote.InsuranceModifiers\n .filter((modifier) => modifier.InsuranceModifierTypeId\n === DISCOUNT_MODIFIER_TYPE && modifier.IsSelected);\n const discountResume = getTotalDiscount(discountModifiers);\n\n const { reimbursementPercentage } = quote;\n const reimbursement = Number(reimbursementPercentage.replace(/%/g, ''));\n const coinsurance = 100 - reimbursement;\n\n return {\n annualMax: Number(quote.selectedPlanAmount.replace(/\\$|,/g, ''))\n || 0,\n Coinsurance: coinsurance,\n deductible: Number(quote.deductibleQuantity.replace(/\\$|,/g, '')),\n modifiers,\n petName: quote.petName,\n planPrice: quote.totalMontly,\n policyPlan: getPlanName({\n quoteInfo: petQuote,\n selectedPlanPackaged: quote.selectedPlanPackaged,\n }),\n quoteType: getQuoteClientType(partners),\n ...discountResume,\n };\n }).filter((quote) => quote);\n\n const body = {\n email: quoting.newCustomer.email || quoting.parameters.email,\n lastName: quoting.newCustomer.lastName || '',\n membershipLevel: quoting?.partners\n ?.costcoMembership?.membershipTypeName || '',\n membershipNumber: quoting?.partners\n ?.costcoMembership?.membershipNumber || '',\n membershipPartner: quoting?.partners?.data.PartnerName || '',\n quoteId,\n quotes,\n };\n await apiCallPurchase(url, { post: body });\n } catch (error) {\n doNothing();\n }\n };\n}\n\n/**\n * Send lead when potential client updates payment\n */\nexport function sendFSCPaymentLead() {\n return async (_, getState) => {\n const url = 'FSCLead/payment';\n const { quoting } = getState();\n try {\n const {\n quoteSelectedValues,\n newCustomer,\n saveQuote: { quoteId },\n } = quoting;\n\n const body = {\n email: quoting.newCustomer.email || quoting.parameters.email,\n lastName: newCustomer.lastName,\n pets: quoteSelectedValues.map((pet) => ({ petName: pet.petName })),\n quoteId,\n };\n await apiCallPurchase(url, { post: body });\n } catch (error) {\n doNothing();\n }\n };\n}\n\n/**\n * Send lead when client completes purchase\n */\nexport function sendFSCPurchaseLead(successfulPurchases = []) {\n return async (_, getState) => {\n const url = 'FSCLead/purchase';\n const { quoting } = getState();\n try {\n const {\n newCustomer,\n saveQuote: { quoteId },\n } = quoting;\n\n const body = {\n email: quoting.newCustomer.email || quoting.parameters.email,\n lastName: newCustomer.lastName,\n pets: successfulPurchases.map((pet) => ({ petName: pet.PetName })),\n quoteId,\n };\n await apiCallPurchase(url, { post: body });\n } catch (error) {\n doNothing();\n }\n };\n}\n\n/**\n * Send lead when client updates the SMS Alerts\n * @param {Object} param\n * @param {string} param.phoneNumber\n */\nexport function sendFSCMarketingLead({ phoneNumber }) {\n return async (_, getState) => {\n const url = 'FSCLead/marketing';\n const { quoting } = getState();\n try {\n const {\n newCustomer,\n saveQuote: { quoteId },\n sessionInformation: {\n nopCommerceUser: {\n DiamonClientdId,\n },\n },\n } = quoting;\n\n const body = {\n customerId: String(DiamonClientdId),\n email: newCustomer.email || quoting.parameters.email,\n lastName: newCustomer.lastName || '',\n quoteId,\n smsOptIn: true,\n smsPhone: phoneNumber,\n };\n await apiCallPurchase(url, { post: body });\n } catch (error) {\n doNothing();\n }\n };\n}\n","import moment from 'moment';\nimport {\n ADDRESS_BY_ZIP_CODE_LOADED,\n AGE_DATA_ERROR,\n AGE_DATA_LOADED,\n AMERICAN_STATES_LOADED,\n BREED_DATA_ERROR,\n BREED_DATA_LOADED,\n CONTINUE_WITHOUT_LOGIN,\n CREATE_DIAMOND_CLIENT_ATTEMPT,\n CREATE_DIAMOND_CLIENT_ERROR,\n CREATE_DIAMOND_CLIENT_SUCCESS,\n CURRENT_QUOTE_STEP_CHANGED,\n CUSTOM_VET_DATA_CLEARED,\n CUSTOM_VET_MODAL_OPENED,\n CUSTOM_VET_SAVED,\n CUSTOMER_VALIDATED,\n CUSTOMER_VALIDATION_ATTEMPT,\n CUSTOMER_VALIDATION_ERROR,\n CUSTOMER_VALIDATION_RESTARTED,\n DEDUCTIBLE_LEGEND_CHANGED,\n DIAMOND_CUSTOMER_LOGIN_ATTEMPT,\n DIAMOND_CUSTOMER_LOGIN_CLEANED,\n DIAMOND_CUSTOMER_LOGIN_FAILED,\n DIAMOND_CUSTOMER_LOGIN_SUCCESS,\n DIAMOND_CUSTOMER_LOGOUT,\n DIAMOND_CUSTOMER_RESETED_LOGIN_FAIL,\n DIAMOND_CUSTOMER_VALIDATION_ATTEMPT,\n DIAMOND_CUSTOMER_VALIDATION_FAILED,\n DIAMOND_CUSTOMER_VALIDATION_LOADED,\n DIAMOND_CUSTOMER_ZIPCODE_CHANGED,\n EFFECTIVE_DATE_CUSTOM_CHANGED,\n ERROR_MODAL_CLOSED,\n EXTOLE_PURCHASE_COMPLETED,\n EXTOLE_UUID_SAVED,\n FAILED_TO_LOAD_ADDRESS_BY_ZIP_CODE,\n FAILED_TO_LOAD_AMERICAN_STATES,\n FAILED_TO_LOAD_VETERINARIANS,\n FETCH_MESSAGE_NO_DATA,\n FETCH_MESSAGE_SUCCESS,\n FORGET_PASSWORD_CONFIRM_MODAL_VISIBLE_CHANGED,\n FORGET_PASSWORD_MODAL_EMAIL_CHANGED,\n FORGET_PASSWORD_MODAL_EMAIL_ERROR_CHANGED,\n FORGET_PASSWORD_MODAL_VISIBLE_CHANGED,\n FORGET_PASSWORD_RESET_PASSWORD_ATTEMTPED,\n FORGET_RESET_PASSWORD_FAILED,\n FORGET_RESET_PASSWORD_SUCCEEDED,\n GOOD_DOG_COMING_SOON_MODAL_HIDED,\n GOOD_DOG_COMING_SOON_MODAL_SHOWED,\n IMPERSONATING_INFO_CHANGED,\n IN_APP_STARTED,\n IN_LOGIN_APP_STARTED,\n LOAD_MULTI_MODAL_DATA_FAILED,\n LOAD_MULTI_MODAL_DATA_SUCCESS,\n LOADING_QUOTE_DATA_FINISH,\n LOADING_QUOTE_DATA,\n MODAL_CUSTOMER_WELCOME_VISIBLE_CHANGED,\n MODAL_PET_CO_PAY_VISIBLE_CHANGED,\n MULTI_MODAL_CUSTOM_CONTENT_CHANGED,\n MULTI_MODAL_CUSTOM_CONTENT_CLEARED,\n MULTI_MODAL_NEED_TO_KNOW_VISIBLE_CHANGED,\n MULTI_MODAL_PET_CO_PAY_VISIBLE_CHANGED,\n MULTI_MODAL_TERMS_AND_COND_VISIBLE_CHANGED,\n MULTI_MODAL_WELLNESS_VISIBLE_CHANGED,\n NEW_CUSTOMER_ADDRESS_LOAD_ATTEMPTED,\n NEW_CUSTOMER_EMAIL_ERROR_CHANGED,\n NEW_PET_AGE_SAVED,\n NEW_PET_BREED_SAVED,\n NEW_PET_EMAIL_SAVED,\n NEW_PET_NAME_SAVED,\n NEW_PET_PICKUP_DATE_SAVED,\n NEW_PET_PROMO_CODE_SAVED,\n NEW_PET_SEX_SAVED,\n NEW_PET_TYPE_SAVED,\n NEW_PET_ZIPCODE_SAVED,\n NO_DIAMOND_CLIENT_ID_OR_PC_ERROR,\n NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL,\n NOTIFY_ME_BUTTON_CLICKED,\n NOTIFY_ME_EMAIL_VALUES_SAVED,\n NOTIFY_ME_FAILED,\n NOTIFY_ME_SUCCESS,\n OPEN_QUOTE_LOADED,\n OPEN_QUOTE_PENDING_PETS_LOADED,\n OPEN_SAVED_QUOTE_ATTEMPT,\n OPEN_SAVED_QUOTE_ERROR,\n OPEN_SAVED_QUOTE_EXPIRED,\n PARAMETERS_UPDATED,\n PARTNER_ID_INFORMATION_FAILED,\n PARTNER_ID_INFORMATION_LOADED,\n PARTNER_ID_LOAD_INFORMATION_ATTEMPT,\n PAYMENT_METHOD_TYPE_CHANGE,\n PAYMENT_PLAN_FREQUENCY_CHANGED,\n PET_ADDED,\n PET_QUOTE_REMOVAL_ATTEMPT,\n PET_QUOTE_REMOVAL_FAILED,\n PET_QUOTE_REMOVAL_SUCCEED,\n PET_REMOVED,\n PET_TAG_COLOR_CHANGED,\n PET_TAG_DATE_ERRORS_CHANGED,\n PET_TAG_DATE_OF_BIRTH_CHANGED,\n PET_UPDATED,\n POWER_UP_SELECTED,\n PURCHASE_ATTEMPT,\n PURCHASE_COMPLETED,\n QUOTE_DATA_LOADED_BY_STORAGE,\n QUOTE_PLAN_SELECTED,\n QUOTE_POWER_UP_CHANGED,\n QUOTE_SELECTED_VALUES_REMOVED,\n QUOTE_WELLNESS_SELECTED,\n QUOTING_PLAN_DATA_LOADED,\n RATE_QUOTE_ERROR,\n RATE_QUOTE_UPDATE_ATTEMPT,\n RATE_QUOTE_UPDATE_LOADED,\n RATE_SUMMARY_ATTEMP,\n RATE_SUMMARY_FAILED,\n RATE_SUMMARY_SUCCESS,\n RECALCULATE_LOCAL_TOTAL,\n RECALCULATE_PACKAGED_VALUES_SELECTED,\n RECAPTCHA_VALIDATE_ATTEMPT,\n RECAPTCHA_VALIDATE_FAILED,\n RECAPTCHA_VALIDATE_LOADED,\n REMOVE_PET_MODAL_VISIBLE,\n RESET_POWER_UP_ARIA_LABEL,\n RESET_QUOTES_VALUES_SELECTED,\n RETRY_PURCHASE_ERROR,\n SAVE_DEDUCTIBLE_SELECTED,\n SAVE_MONTHLY_PLAN_SELECTED,\n SAVE_QUOTE_ATTEMPT,\n SAVE_QUOTE_ERROR,\n SAVE_QUOTE_MOBILE_VISIBLE_CHANGED,\n SAVE_REIMBURSEMENT_SELECTED,\n SAVE_SELECTED_ADD_PET_MODAL,\n SAVE_SELECTED_EDIT_PET_MODAL,\n SAVE_SELECTED_PET_NUMBER,\n SAVE_UPDATED_PET,\n SAVE_URL_PARAMETERS,\n SAVE_UTM_PARAMS,\n SAVED_QUOTE_MODAL_VISIBLE,\n SAVED_QUOTE,\n SECOND_ADDRESS_CLEARED,\n SECOND_PARENT_FORM_TOGGLED,\n SEND_SMS_APPS_LINKS_ATTEMPT,\n SEND_SMS_APPS_LINKS_FAILED,\n SEND_SMS_APPS_LINKS_SUCCESS,\n SIGNED_UP_SMS_ATTEMPT,\n SIGNED_UP_SMS,\n SUB_ID_SAVED,\n TERMS_AND_CONDITION_VALIDATION_CHANGED,\n VETERINARIAN_SET,\n VETERINARIANS_LOAD_ATTEMPT,\n VETERINARIANS_LOADED,\n YOUR_INFO_SCROLL_TO_TOP_TOGGLED,\n YOUR_INFO_STEP_CHANGED,\n ZIP_CODE_CUSTOMER_UPDATED,\n ZIP_CODE_VALIDATION_ATTEMPT,\n ZIP_CODE_VALIDATION_CRASHED,\n ZIP_CODE_VALIDATION_FAILED,\n ZIP_CODE_VALIDATION_SUCCESS,\n NEW_PET_GROUP_DSCR_CODE_SAVED,\n TERMS_AND_POLICY_CHANGED,\n PURCHASE_MULTIPLE_ATTEMPT,\n PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED,\n POWERUP_ID_ERRORS_SET,\n POWERUP_ID_ERRORS_REMOVED,\n POWERUP_ID_ERRORS_RESTARTED,\n CUSTOMER_PASSWORD_SET,\n LOGIN_B2C_STARTED,\n LOGIN_B2C_FAILED,\n DUPLICATED_VALIDATION_FAILED,\n DUPLICATED_VALIDATION_MODAL_CLOSED,\n QUOTE_PLAN_SELECTED_BY_QUOTEID,\n ALL_PETS_POWERUPS_VALIDATED,\n SUB_ID_SYNONYMS_DATA_LOADED,\n GET_SUB_ID_SYNONYMS_DATA_FAILED,\n} from './types';\nimport {\n apiCall,\n apiCallCostco,\n createEffectiveDate,\n doNothing,\n getAgeInYears,\n getPetNameFromValue,\n isProdEnv,\n serializeForUri,\n sleep,\n toBoolean,\n useCostcoTN,\n useFSCLeads,\n useGoodDogTN,\n useMarketingChannel,\n useTrackingEvents,\n validateEmail,\n validatePartnerIds,\n validatePowerupsSelected,\n} from '../util';\nimport {\n AFTER_RATE_TAG,\n MODAL_DEFAULT_CATEGORY,\n ONE_INC_DEFAULT_TOKEN,\n ONE_INC_PAYMENT_CATEGORY,\n PAYMENT_TYPE,\n PetType,\n SMS_APP_LINKS,\n POWERUP_TYPE,\n PowerUpsRelation,\n USER_ROLL_LIST,\n SAVE_QUOTE_TYPE,\n PURCHASE_MULTI_STATUS,\n PURCHASE_ERROR_TYPES,\n} from '../constants';\nimport {\n saveOneIncPetPaymentMethod,\n savePaymentDefaultMethods,\n savePaymentMethod,\n savePaymentMethods,\n} from './oneInc';\nimport { trackingLoadQuote } from '../trackingEvents';\nimport { CUSTOM_PLAN_ID } from '../components/quoting/planSection/constants';\nimport { dataLayerViewItem } from '../gtmDataLayer';\nimport {\n sendFSCLead,\n sendFSCMarketingLead,\n sendFSCPurchaseLead,\n} from './leads';\nimport { LANDING_URL } from '../routes';\nimport { COSTCO_PARTNER_ID } from '../partners/partners.constants';\nimport { getFeatureFlagFromStorage } from '../utils/featureFlags.utils';\n\nconst {\n NEED_TO_KNOW_DEF_CATEGORY_ID,\n PET_CO_PAY_DEF_CATEGORY_ID,\n TERMS_AND_COND_DEF_CATEGORY_ID,\n WELLNESS_DEF_CATEGORY_ID,\n} = MODAL_DEFAULT_CATEGORY;\n\nexport function logError({\n action,\n description = '',\n endpoint,\n exception = null,\n statusCode = '',\n request = null,\n response = null,\n}) {\n return (_, getState) => {\n const state = getState();\n try {\n let status = statusCode;\n if (exception && ((exception?.name === 'TimeoutError'\n || exception?.name === 'AbortError')\n || (exception.includes && exception.includes('AbortError')))) {\n status = 504;\n }\n\n let requestString = '';\n let responseString = '';\n try {\n if (request) {\n requestString = JSON.stringify(request);\n }\n } catch (error) {\n requestString = `INVALID JSON REQUEST: ${error}`;\n }\n\n try {\n if (response) {\n responseString = JSON.stringify(response);\n }\n } catch (error) {\n responseString = `INVALID JSON RESPONSE: ${error}`;\n }\n\n const legacyAPI = 'api/Log/QuoteSiteError';\n const purchaseAPI = 'purchase/Log/QuoteSiteError';\n const { QuoteSiteD2CPurchaseV1T169322 } = getFeatureFlagFromStorage();\n const url = QuoteSiteD2CPurchaseV1T169322 ? purchaseAPI : legacyAPI;\n\n apiCall(url, {\n post: {\n Action: action,\n Email: state?.quoting?.newCustomer?.email\n || state?.quoting?.parameters?.email,\n Endpoint: endpoint,\n ErrorDescription: description,\n HttpStatusCode: status,\n // Not compatible with all browsers\n OperatingSystem: navigator?.userAgentData?.platform,\n PartnerGuid: state?.quoting?.partners?.partnerId,\n Request: requestString,\n Response: responseString,\n UserAgent: navigator.userAgent,\n },\n });\n } catch (e) {\n doNothing();\n }\n };\n}\n\nexport function noDiamondClientIdError(message) {\n return { message, type: NO_DIAMOND_CLIENT_ID_OR_PC_ERROR };\n}\n\nfunction getBreedDataFilteredByType(breedData, petType) {\n const breedDataFiltered =\n breedData.filter((element) => element.PetType === petType.value);\n\n return breedDataFiltered;\n}\n\nexport function saveSelectedPetNumber(petQuoteSelected) {\n return { petQuoteSelected, type: SAVE_SELECTED_PET_NUMBER };\n}\n\nexport function continueWithoutLogin() {\n return { type: CONTINUE_WITHOUT_LOGIN };\n}\n\nasync function makeRateData({ Data, petQuote, planParams = {} }) {\n const plans = petQuote.Plans.map((plan, index) => ({\n id: plan.Plan,\n index,\n maxAnnual: plan.MaxAnnual,\n name: plan.PlanName,\n }));\n\n let selectedPlanIndex =\n plans.findIndex((plan) => plan.id === petQuote.Plan);\n let selectedPlanData =\n plans.find((plan) => plan.id === petQuote.Plan);\n\n if (planParams.plan) {\n const selectedPlanIndexAux = plans\n .findIndex((plan) => plan.name.toUpperCase()\n === planParams.plan.toUpperCase());\n if (selectedPlanIndexAux >= 0) {\n selectedPlanIndex = selectedPlanIndexAux;\n selectedPlanData = plans[selectedPlanIndex];\n }\n }\n\n let selectedDeductibleId = petQuote.Deductible;\n let selectedDeductibleQty = petQuote.deductibleName;\n if (planParams.deductible) {\n const selectedDeductible = petQuote.Deductibles\n .find((deductible) => deductible.DollarVal\n === parseInt(planParams.deductible, 10));\n if (selectedDeductible) {\n selectedDeductibleId = selectedDeductible.Id;\n selectedDeductibleQty = selectedDeductible.Description;\n }\n }\n\n let selectedReimbursementId = petQuote.Reimbursement;\n let selectedReimbursementQty = petQuote.ReimbursementName;\n if (planParams.reimbursement) {\n const selectedReimbursement = petQuote.Reimbursements\n .find((reimbursement) => reimbursement.PercentVal\n === (planParams.reimbursement / 100));\n if (selectedReimbursement) {\n selectedReimbursementId = selectedReimbursement.Id;\n selectedReimbursementQty = selectedReimbursement.Description;\n }\n }\n\n return {\n data: Data,\n deductibleId: selectedDeductibleId,\n deductibleQuantity: selectedDeductibleQty,\n isUpdate: false,\n monthlyPremium: petQuote.monthlyPremium,\n partnerAnnualSaving: petQuote.PartnerAnnualSaving,\n petName: petQuote.petName,\n plans,\n quoteId: petQuote.petQuoteId,\n reimbursementId: selectedReimbursementId,\n reimbursementPercentage: selectedReimbursementQty,\n selectedPlan: selectedPlanData.id,\n selectedPlanAmount: selectedPlanData.maxAnnual,\n selectedPlanIndex,\n selectedPlanPackaged: Data?.groupCodeDscr\n ? CUSTOM_PLAN_ID : petQuote.PrePackagedPlanId,\n type: QUOTING_PLAN_DATA_LOADED,\n };\n}\n\nexport function saveSubId(subId) {\n return { subId, type: SUB_ID_SAVED };\n}\n\nfunction costcoRateSummary() {\n return async (dispatch, getState) => {\n const url = 'api/Quote/GetSelectedRate';\n let response = null;\n let post = null;\n let payload = null;\n try {\n const {\n customerZipCode,\n data,\n effectiveDateCustom,\n parameters,\n partners,\n plans,\n quoteSelectedValues,\n sessionInformation: { nopCommerceUser, userEmail },\n openQuoteGuid,\n } = getState().quoting;\n const {\n effectiveDate,\n groupCode,\n groupCodeDscr,\n petQuoteResponseList,\n } = data;\n const { costcoMembership, isCostco, partnerId, petPickupDate } = partners;\n\n post = {\n DiamondClientId: nopCommerceUser.DiamonClientdId,\n EffectiveDate: effectiveDateCustom || effectiveDate,\n eMail: userEmail || parameters.email,\n employerName: '',\n GroupCode: groupCode,\n GroupCodeDscr: groupCodeDscr,\n IsEb: false,\n IsOpenQuote: !!openQuoteGuid,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n Partner: {\n IsFeeWaived: costcoMembership.isFeeWaived,\n MembershipId: isCostco ? costcoMembership.membershipNumber : '',\n MembershipType: isCostco ? costcoMembership.membershipTypeName : '',\n MembershipTypeDescription: isCostco\n ? costcoMembership.membershipType : '',\n PartnerGuid: partnerId || '',\n },\n PartnerGuid: partnerId || '',\n petQuotes: petQuoteResponseList.map((quote) => {\n const selectedValues = quoteSelectedValues.find(\n (item) => item.quoteId === quote.petQuoteId,\n );\n const selectedPlanByIndex = plans[selectedValues.selectedPlanIndex];\n\n return {\n deductible: selectedValues.deductibleId,\n Id: quote.petQuoteId,\n Modifiers: quote.modifiers || [],\n PetAge: quote.petAgeName,\n PetBreed: quote.breedName,\n PetBreedId: quote.breedId,\n PetName: quote.petName,\n PetSex: quote.genderName,\n PetType: quote.petType === PetType.Dog.value\n ? PetType.Dog.name : PetType.Cat.name,\n plan: selectedPlanByIndex.id,\n reimbursement: selectedValues.reimbursementId,\n selectedPlanIndex: selectedValues.selectedPlanIndex,\n };\n }),\n PickupDate: petPickupDate,\n QuoteGuid: openQuoteGuid || '',\n quoteId: 1,\n ZipCode: customerZipCode,\n };\n\n response = await apiCall(url, { post, withTimeout: true });\n payload = await response.json();\n\n if (payload.IsValid) {\n dispatch({ data: payload.Data, type: RATE_SUMMARY_SUCCESS });\n }\n } catch (exception) {\n dispatch(logError({\n action: 'costcoRateSummary',\n description: exception.toString()\n || 'Error getting selected rate.',\n endpoint: url,\n exception,\n request: post,\n response: payload,\n statusCode: response?.status,\n }));\n }\n };\n}\n\nexport const fetchTemporaryMessage = (isCostco) => async (dispatch) => {\n const site = isCostco ? 'Costco' : 'D2C';\n const published = isProdEnv;\n\n try {\n const { QuoteSiteD2CPurchaseV1T169319 } = getFeatureFlagFromStorage();\n const api = QuoteSiteD2CPurchaseV1T169319 ? 'purchase' : 'api';\n const url = `${api}/Contentful/TemporaryMessageQuote/${site}/${published}`;\n const messageResponse = await apiCall(url);\n const messagePayload = await messageResponse.json();\n\n if (messagePayload.IsValid && messagePayload.Data) {\n dispatch({ payload: messagePayload.Data, type: FETCH_MESSAGE_SUCCESS });\n } else {\n dispatch({ type: FETCH_MESSAGE_NO_DATA });\n }\n } catch (error) {\n dispatch({ payload: error.message, type: FETCH_MESSAGE_NO_DATA });\n }\n};\n\nfunction trackLoadEvent({ Data, quoting }) {\n if (useTrackingEvents) {\n trackingLoadQuote({\n codeMask: quoting.parameters.groupCodeDscr,\n email: quoting.parameters.email,\n guidData: quoting.guidData,\n modifierList: Data.insuranceProduct.InsuranceModifiers,\n petQuoteList: Data.petQuoteResponseList,\n promoCode: Data.groupCode || '',\n quoteSelectedValues: quoting.quoteSelectedValues,\n subId: quoting.subId.Value,\n zipCode: Data.zipCode,\n });\n }\n}\n\nfunction saveQuoteFindModifiers({ modifiersData = [], modifiers = [] }) {\n const modifierSelected = modifiers.filter((item) => item.isSelected !== null);\n const body = {\n ExtraCarePackAdded: null,\n PerIncidentCoPayAdded: false,\n VetFeesAdded: null,\n WellnessPlanType: null,\n };\n\n if (modifierSelected.length < 1) {\n return body;\n }\n\n const {\n EXTRA_CARE_PACK_PSM_ID,\n PER_INCIDENT_CO_PAY,\n VETERINARY_EXAM_FEES_PSM_ID,\n WELLNESS_PSM_ID,\n } = PowerUpsRelation;\n const modifierFilter = modifiersData\n .filter((item) => item.InsuranceModifierTypeId === POWERUP_TYPE\n && item.IsActive && item.IsVisible);\n\n const compare = (id) => (item) => item.IsSelected\n && item.PMSModifierId === id;\n\n const extraCarePack = modifierFilter.find((item) => item.PMSModifierId\n === EXTRA_CARE_PACK_PSM_ID)?.IsSelected;\n const veterinary = modifierFilter.find((item) => item.PMSModifierId\n === VETERINARY_EXAM_FEES_PSM_ID)?.IsSelected;\n const wellnessPsm = modifierFilter.find((item) => item\n .PMSModifierId === WELLNESS_PSM_ID\n && item.IsSelected !== null) ?? null;\n let wellnessBundle = null;\n const perIncidentCoPay = modifierFilter.find(compare(PER_INCIDENT_CO_PAY));\n\n if (wellnessPsm) {\n if (wellnessPsm.IsSelected) {\n wellnessBundle = wellnessPsm\n .BundleInsuranceModifiers.find((item) => item.IsSelected);\n } else {\n wellnessBundle = 0;\n }\n }\n\n return {\n ExtraCarePackAdded: extraCarePack,\n PerIncidentCoPayAdded: !!perIncidentCoPay,\n VetFeesAdded: veterinary,\n WellnessPlanType: wellnessBundle && wellnessBundle.CoverageLimitId,\n };\n}\n\nexport function saveQuote({\n cloudClientId = 0,\n EffectiveDate,\n email,\n firstName,\n groupCodeDscr,\n lastName,\n origin,\n partnerId,\n petQuoteResponseList,\n pickupDate,\n promoCode,\n quoteId = '',\n quoteSelectedValues,\n QuoteSubId,\n quoteType = SAVE_QUOTE_TYPE.customer,\n zipCode,\n}) {\n return async (dispatch, getState) => {\n const { QuoteSiteD2CPurchaseV1T167578 } = getFeatureFlagFromStorage();\n const api = QuoteSiteD2CPurchaseV1T167578 ? 'purchase' : 'api';\n\n const type = useFSCLeads ? `/${quoteType}` : '';\n const url = `${api}/Quote/SaveQuoteEB${type}`;\n let saveQuoteResponse = null;\n let saveQuotePayload = null;\n let body = null;\n try {\n dispatch({ type: SAVE_QUOTE_ATTEMPT });\n\n const agentId = getState().quoting.parameters?.agentId || '';\n\n const petQuotes = petQuoteResponseList\n .map((petResponse) => {\n const petSelectedValue = quoteSelectedValues\n .find((element) => element.quoteId === petResponse.petQuoteId);\n const { isMonthlyPlan, modifiers } = petSelectedValue;\n const annualPremium = petSelectedValue.monthlyAmountPlan * 12;\n\n return {\n ...saveQuoteFindModifiers({\n modifiers,\n modifiersData: petResponse.InsuranceModifiers,\n }),\n cloudOrderId: petResponse.cloudOrderId,\n Id: petResponse.quoteId || petResponse.petQuoteId,\n PetAge: petResponse.petAgeName,\n PetBreed: petResponse.breedName,\n PetBreedId: petResponse.breedId,\n PetName: petResponse.petName,\n PetSex: petResponse.genderName,\n PetType: getPetNameFromValue(petResponse.petType),\n userSelectedInfoPlan: {\n annualPremium: isMonthlyPlan ? 0 : annualPremium,\n deductibleName: petSelectedValue.deductibleQuantity,\n monthlyPremium: isMonthlyPlan\n ? petSelectedValue.monthlyAmountPlan : 0,\n plan: petSelectedValue.selectedPlan,\n prePackagedPlanId: petSelectedValue.selectedPlanPackaged,\n reimbursementName: petSelectedValue.reimbursementPercentage !== ''\n ? petSelectedValue.reimbursementPercentage\n : petResponse.ReimbursementName,\n },\n };\n });\n\n body = {\n agentId,\n cloudClientId,\n EffectiveDate,\n eMail: email,\n firstName,\n GroupCode: promoCode,\n GroupCodeDscr: groupCodeDscr,\n IsEB: false, // this always will be false for this project\n lastName,\n origin,\n Partner: {\n PartnerGuid: partnerId,\n },\n petQuotes,\n PickupDate: pickupDate,\n quoteId,\n QuoteSubId,\n ZipCode: zipCode,\n };\n\n saveQuoteResponse = await apiCall(\n url,\n {\n post: body,\n withTimeout: true,\n },\n );\n saveQuotePayload = await saveQuoteResponse.json();\n\n if (saveQuotePayload.IsValid) {\n dispatch({\n isAuto: quoteType === SAVE_QUOTE_TYPE.auto,\n quoteId: saveQuotePayload?.Data?.quoteId,\n type: SAVED_QUOTE,\n });\n } else {\n dispatch({\n message: saveQuotePayload.Message\n || 'Error saving quote.',\n type: SAVE_QUOTE_ERROR,\n });\n dispatch(logError({\n action: 'saveQuote',\n description: saveQuotePayload.Message\n || 'Error saving quote.',\n endpoint: url,\n request: body,\n response: saveQuotePayload,\n statusCode: saveQuoteResponse.status,\n }));\n }\n } catch (exception) {\n dispatch({\n message: 'Unexpected error saving quote.',\n type: SAVE_QUOTE_ERROR,\n });\n dispatch(logError({\n action: 'saveQuote',\n description: exception.toString(),\n endpoint: url,\n exception,\n request: body,\n response: saveQuotePayload,\n statusCode: saveQuoteResponse?.status,\n }));\n }\n };\n}\n\nexport function loadSubIdSynonymsData() {\n return async (dispatch) => {\n const { QuoteSiteD2CPurchaseV1T172558 } = getFeatureFlagFromStorage();\n const service = QuoteSiteD2CPurchaseV1T172558 ? 'purchase' : 'api';\n\n const url = `${service}/Quote/SubIdSynonyms`;\n let parametersResponse = null;\n let parametersPayload = null;\n try {\n parametersResponse = await apiCall(url);\n parametersPayload = await parametersResponse.json();\n\n if (parametersPayload.IsValid) {\n await dispatch({\n data: parametersPayload.Data,\n type: SUB_ID_SYNONYMS_DATA_LOADED,\n });\n } else {\n dispatch({\n message: parametersPayload.Message,\n type: GET_SUB_ID_SYNONYMS_DATA_FAILED,\n });\n dispatch(logError({\n action: 'loadSubIdSynonymsData',\n description: parametersPayload.Message,\n endpoint: url,\n response: parametersPayload,\n statusCode: parametersResponse.status,\n }));\n }\n } catch (exception) {\n dispatch({\n message: exception.message,\n type: GET_SUB_ID_SYNONYMS_DATA_FAILED,\n });\n dispatch(logError({\n action: 'loadSubIdSynonymsData',\n description: exception.toString(),\n endpoint: url,\n response: parametersPayload,\n statusCode: parametersResponse?.status,\n }));\n }\n };\n}\n\nexport function rateQuote({\n body,\n firstLoad = false,\n isRemovePet = false,\n parameters = null,\n planParams = {},\n showLoading = false,\n stayLoadingAtFinish = false,\n tag = '',\n update = false,\n}) {\n return async (dispatch, getState) => {\n if (!update || showLoading) {\n dispatch({ type: LOADING_QUOTE_DATA });\n }\n\n const url = 'api/Quote/Rate/';\n let statusToLog = '';\n let post = null;\n let payloadRateQuote = null;\n try {\n const state = getState();\n if (!state.quoting?.subIdSynonyms?.length) {\n await dispatch(loadSubIdSynonymsData());\n const synonyms = getState().quoting.subIdSynonyms;\n const QuoteSubId =\n validatePartnerIds({\n parameters: parameters || getState().quoting.parameters,\n synonyms,\n });\n dispatch(saveSubId(QuoteSubId));\n }\n\n const QuoteSubId = state.quoting.subId;\n\n const {\n isGoodDog,\n partnerId: PartnerGuid,\n petPickupDate,\n } = state.quoting.partners;\n\n const Partner = PartnerGuid ? { PartnerGuid } : {};\n\n let PickupDate = isGoodDog ? petPickupDate : null;\n const now = new Date().toISOString().split('T')[0];\n\n if (PickupDate === now) {\n // Today is valid date for user, but not for rate\n PickupDate = null;\n }\n\n post = {\n ...body,\n IsOpenQuote: !!state.quoting.openQuoteGuid,\n marketingOptIn: toBoolean(state.quoting.parameters.marketingOptIn),\n Partner,\n PickupDate,\n QuoteGuid: state.quoting.openQuoteGuid || '',\n QuoteSubId,\n };\n const rateQuoteResponse = await apiCall(url, {\n post,\n withTimeout: true,\n });\n statusToLog = rateQuoteResponse.status;\n\n payloadRateQuote = await rateQuoteResponse.json();\n\n if (payloadRateQuote.IsValid) {\n const { quoteId } = body;\n const { Data } = payloadRateQuote;\n const { petQuoteResponseList } = Data;\n const petQuote = petQuoteResponseList\n .find((item) => item.petQuoteId === quoteId);\n\n const rateData = await makeRateData({ Data, petQuote, planParams });\n\n await dispatch({\n ...rateData,\n isUpdate: update,\n quoteId,\n stayLoadingAtFinish,\n });\n if (!isRemovePet) {\n await dispatch({ type: NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL });\n }\n await dispatch({ type: RECALCULATE_LOCAL_TOTAL });\n await sleep(300);\n\n const { quoting } = getState();\n trackLoadEvent({ Data, quoting });\n\n if (useFSCLeads) {\n const {\n groupCode,\n groupCodeDscr,\n zipCode,\n } = Data;\n const {\n customerValidationResponse,\n quoteSelectedValues,\n saveQuote: {\n quoteId: quoteGuid,\n },\n partners: { partnerId },\n } = quoting;\n const cloudClientId = customerValidationResponse?.id || 0;\n await dispatch(saveQuote({\n cloudClientId,\n EffectiveDate: createEffectiveDate(),\n email: quoting.newCustomer.email\n || quoting.parameters.email,\n firstName: quoting.newCustomer.name || '',\n groupCode,\n groupCodeDscr,\n lastName: quoting.newCustomer.lastName || '',\n origin: window.location.origin,\n partnerId,\n petQuoteResponseList,\n pickupDate: petPickupDate,\n promoCode: quoting.newPet.promoCode,\n quoteId: quoteGuid,\n quoteSelectedValues,\n QuoteSubId: quoting.subId,\n quoteType: SAVE_QUOTE_TYPE.auto,\n zipCode,\n }));\n }\n\n dispatch({ tag, type: LOADING_QUOTE_DATA_FINISH });\n } else {\n dispatch(logError({\n action: 'rateQuote',\n description: payloadRateQuote.Message\n || 'Error saving quote.',\n endpoint: url,\n request: post,\n response: payloadRateQuote,\n statusCode: statusToLog,\n }));\n\n if (firstLoad) {\n const query = new URLSearchParams(parameters);\n if (query.get('partnerGuid')) {\n query.set('refer', query.get('partnerGuid'));\n query.delete('partnerGuid');\n }\n const redirectUrl = `${LANDING_URL}?${query.toString()}`;\n\n window.location.replace(redirectUrl);\n return;\n }\n\n dispatch({\n message: payloadRateQuote.Message\n || 'Error rating quote.',\n redirectToLanding: !update,\n type: RATE_QUOTE_ERROR,\n });\n }\n } catch (exception) {\n dispatch(logError({\n action: 'rateQuote',\n description: exception.toString()\n || 'Error rating quote.',\n endpoint: url,\n exception,\n request: post,\n response: payloadRateQuote,\n statusCode: statusToLog,\n }));\n dispatch({ message: exception, type: RATE_QUOTE_ERROR });\n }\n };\n}\n\nexport function getTomorrowEffectiveDate() {\n const today = new Date();\n const tomorrow = moment(today).add(1, 'days')\n .format('YYYY-MM-DD-Thh:mm:ss');\n return tomorrow;\n}\n\nexport function loadAddressByZipCode(zipCode) {\n return async (dispatch) => {\n try {\n dispatch({ type: NEW_CUSTOMER_ADDRESS_LOAD_ATTEMPTED });\n const legacyAPI = `api/State/GetStateByZipCode/${zipCode}`;\n const purchaseAPI = `purchase/State/GetStateByZipCode/${zipCode}`;\n const { QuoteSiteD2CPurchaseV1T159710 } = getFeatureFlagFromStorage();\n const url = QuoteSiteD2CPurchaseV1T159710 ? purchaseAPI : legacyAPI;\n const response = await apiCall(url);\n const payload = await response.json();\n\n if (payload.IsValid) {\n dispatch({ address: payload.Data, type: ADDRESS_BY_ZIP_CODE_LOADED });\n } else {\n dispatch({ type: FAILED_TO_LOAD_ADDRESS_BY_ZIP_CODE });\n }\n } catch (_) {\n dispatch({ type: FAILED_TO_LOAD_ADDRESS_BY_ZIP_CODE });\n }\n };\n}\n\nexport function validateZipCodeComingSoon({\n email,\n zipcode,\n loadAddress = true,\n}) {\n function validateZipCodeTennessee(zipCode) {\n const zipCodePattern = /^\\d{5}$/;\n const tennesseeZipCodePattern =\n /^(370|371|372|373|374|375|376|377|378|379|380|381|382|383|384|385)/;\n if (!zipCodePattern.test(zipCode)) {\n return false;\n }\n if (tennesseeZipCodePattern.test(zipCode)) {\n return false;\n }\n return true;\n }\n\n return async (dispatch) => {\n try {\n dispatch({ type: ZIP_CODE_VALIDATION_ATTEMPT });\n\n const validState = validateZipCodeTennessee(zipcode);\n\n const type = validState\n ? ZIP_CODE_VALIDATION_SUCCESS : ZIP_CODE_VALIDATION_FAILED;\n\n dispatch({ type });\n dispatch({ email, type: ZIP_CODE_CUSTOMER_UPDATED, zipcode });\n\n if (loadAddress) {\n dispatch(loadAddressByZipCode(zipcode));\n }\n\n return validState;\n } catch (exception) {\n dispatch({ type: ZIP_CODE_VALIDATION_CRASHED });\n dispatch(logError({\n action: 'validateZipCodeComingSoon',\n description: exception.toString(),\n endpoint: '',\n exception,\n statusCode: '',\n }));\n return false;\n }\n };\n}\n\nasync function partnerIdLoadedRequest(partnerId) {\n const { QuoteSiteD2CPurchaseV1T174569 } = getFeatureFlagFromStorage();\n const service = QuoteSiteD2CPurchaseV1T174569 ? 'purchase' : 'api';\n\n const url =\n `${service}/Partner/GetPartnerAppearanceByPartnerGuid/${partnerId}`;\n const response = await apiCall(url);\n\n if (response.status !== 200) {\n // if partnerId not found get status === 204\n return { IsValid: false };\n }\n\n const payload = await response.json();\n\n return payload;\n}\n\nasync function validateCostcoRate({ dispatch, parameters }) {\n const {\n email,\n partnerGuid,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex,\n petZipCode,\n } = parameters;\n\n if (!partnerGuid) {\n return true;\n }\n\n const partnerResponse = await partnerIdLoadedRequest(partnerGuid);\n\n if (partnerResponse.IsValid) {\n dispatch({\n data: partnerResponse.Data,\n partnerId: partnerGuid,\n type: PARTNER_ID_INFORMATION_LOADED,\n });\n\n const validZipCodeComingSoon =\n validateZipCodeComingSoon({ zipcode: petZipCode });\n\n if (!validZipCodeComingSoon) {\n dispatch({\n type: NOTIFY_ME_EMAIL_VALUES_SAVED,\n valuesEmail: {\n email,\n invalidQuote: true,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex,\n zipcode: petZipCode,\n },\n });\n\n return false;\n }\n\n dispatch(loadAddressByZipCode(petZipCode));\n }\n\n return true;\n}\n\nexport function loadQuoteData({\n firstLoad = false,\n parameters,\n update = false,\n}) {\n return async (dispatch, getState) => {\n dispatch({ type: LOADING_QUOTE_DATA });\n\n const planParams = {\n deductible: parameters.deductible,\n plan: parameters.plan,\n reimbursement: parameters.reimbursement,\n };\n\n try {\n const body = {\n DiamondClientId: 0,\n EffectiveDate: null,\n eMail: parameters.email,\n employerName: null,\n GroupCode: parameters.groupCode,\n GroupCodeDscr: parameters.groupCodeDscr,\n nopCommerceClientId: 0,\n petQuotes: [{\n Id: '1',\n PetAge: parameters.petAge,\n petBreed: parameters.petBreed,\n PetBreedId: parameters.petBreedId,\n petName: parameters.petName,\n petSex: parameters.petSex,\n petType: parameters.petType,\n }],\n PickupDate: parameters.petPickupDate,\n quoteId: 1,\n TestEffectiveDate: parameters.testEffectiveDate,\n ZipCode: parameters.petZipCode,\n };\n\n const rateValid = await validateCostcoRate({ dispatch, parameters });\n\n if (!rateValid) {\n dispatch({ type: LOADING_QUOTE_DATA_FINISH });\n\n return;\n }\n\n await dispatch(rateQuote({\n body,\n firstLoad,\n parameters,\n planParams,\n tag: AFTER_RATE_TAG.createRate,\n update,\n }));\n\n if (useFSCLeads) {\n const { quoting: { data } } = getState();\n dispatch(sendFSCLead({\n age: Number(getAgeInYears(parameters.petAge)),\n breed: parameters.petBreed,\n breedId: Number(parameters.petBreedId),\n email: parameters.email,\n gender: parameters.petSex,\n marketingOpt: toBoolean(parameters.marketingOptIn),\n petName: parameters.petName,\n petType: parameters.petType,\n promoCode: data?.groupCode || parameters.groupCode,\n zipCode: parameters.petZipCode,\n }));\n }\n } catch (exception) {\n dispatch(logError({\n action: 'loadQuoteData',\n description: exception.toString(),\n endpoint: '',\n exception,\n statusCode: '',\n }));\n dispatch({\n message: 'Unexpected error rating quote.',\n type: RATE_QUOTE_ERROR,\n });\n }\n };\n}\n\nexport function saveURLParameters({ parameters, search }) {\n return async (dispatch) => {\n dispatch({ parameters, search, type: SAVE_URL_PARAMETERS });\n };\n}\n\nexport function saveMonthlyPlanSelected({\n annualAmount,\n monthlyAmount,\n partnerAnnualSaving,\n}) {\n return async (dispatch) => {\n dispatch({\n annualAmount,\n monthlyAmount,\n partnerAnnualSaving,\n type: SAVE_MONTHLY_PLAN_SELECTED,\n });\n dispatch({ type: RECALCULATE_LOCAL_TOTAL });\n };\n}\n\nexport function recalculateTotalPrices() {\n return { type: NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL };\n}\n\nexport function saveSelectedReimbursement({ description, id }) {\n return async (dispatch) => {\n dispatch({ description, id, type: SAVE_REIMBURSEMENT_SELECTED });\n };\n}\n\nexport function saveDeductibleSelected({ description, id }) {\n return async (dispatch) => {\n dispatch({ description, id, type: SAVE_DEDUCTIBLE_SELECTED });\n };\n}\n\n// TODO - delete me when wellness modifier be ready\nexport function wellnessSelected(quantity) {\n return async (dispatch) => {\n dispatch({ type: QUOTE_POWER_UP_CHANGED });\n dispatch({\n id: -1,\n isSelected: !!quantity,\n type: RATE_QUOTE_UPDATE_ATTEMPT,\n });\n await sleep(2000);\n dispatch({ quantity, type: QUOTE_WELLNESS_SELECTED });\n dispatch({ type: RECALCULATE_LOCAL_TOTAL });\n dispatch({ id: -1, type: RATE_QUOTE_UPDATE_LOADED });\n };\n}\n\nexport function loadQuoteDataByStorage(data) {\n return async (dispatch) => {\n dispatch({ data, type: QUOTE_DATA_LOADED_BY_STORAGE });\n };\n}\n\nexport function selectedPlan({ planId, planAmount, planPackagedId }) {\n return async (dispatch) => {\n dispatch({ planAmount, planId, planPackagedId, type: QUOTE_PLAN_SELECTED });\n };\n}\n\nexport function planChangedByQuoteId({\n planId,\n planAmount,\n planPackagedId,\n quoteId,\n}) {\n return {\n planAmount,\n planId,\n planPackagedId,\n quoteId,\n type: QUOTE_PLAN_SELECTED_BY_QUOTEID,\n };\n}\n\nexport function loadBreedData() {\n return async (dispatch) => {\n const legacyAPI = 'api/Quote/Breeds';\n const purchaseAPI = 'purchase/quote/breeds';\n const { QuoteSiteD2CPurchaseV1T159710 } = getFeatureFlagFromStorage();\n const url = QuoteSiteD2CPurchaseV1T159710 ? purchaseAPI : legacyAPI;\n\n let breedPayload = null;\n try {\n const breedResponse = await apiCall(url, { withTimeout: true });\n breedPayload = await breedResponse.json();\n\n if (breedPayload.IsValid) {\n const breedDog =\n getBreedDataFilteredByType(breedPayload.Data, PetType.Dog);\n const breedCat =\n getBreedDataFilteredByType(breedPayload.Data, PetType.Cat);\n\n dispatch({\n breedCat,\n breedDog,\n data: breedPayload.Data,\n type: BREED_DATA_LOADED,\n });\n } else {\n dispatch({\n message: breedPayload.Message\n || 'Error retrieving breed data.',\n type: BREED_DATA_ERROR,\n });\n dispatch(logError({\n action: 'loadBreedData',\n description: breedPayload.Message\n || 'Error retrieving breed data.',\n endpoint: url,\n response: breedPayload,\n statusCode: breedResponse.status,\n }));\n }\n } catch (exception) {\n dispatch({ message: exception, type: BREED_DATA_ERROR });\n dispatch(logError({\n action: 'loadBreedData',\n description: exception.toString(),\n endpoint: url,\n exception,\n response: breedPayload,\n statusCode: '',\n }));\n }\n };\n}\n\nexport function saveNewPetAge(petAge) {\n return { petAge, type: NEW_PET_AGE_SAVED };\n}\n\nexport function saveNewPetBreed({ petBreed, petBreedId }) {\n return { petBreed, petBreedId, type: NEW_PET_BREED_SAVED };\n}\n\nexport function saveNewPetName(petName) {\n return { petName, type: NEW_PET_NAME_SAVED };\n}\n\nexport function saveNewPetPromoCode(promoCode) {\n return { promoCode, type: NEW_PET_PROMO_CODE_SAVED };\n}\n\nexport function saveNewPetGroupCodeDscr(groupCodeDscr) {\n return { groupCodeDscr, type: NEW_PET_GROUP_DSCR_CODE_SAVED };\n}\n\nexport function partnerIdLoaded(partnerId) {\n return async (dispatch) => {\n dispatch({ type: PARTNER_ID_LOAD_INFORMATION_ATTEMPT });\n\n try {\n const { QuoteSiteD2CPurchaseV1T174569 } = getFeatureFlagFromStorage();\n const service = QuoteSiteD2CPurchaseV1T174569 ? 'purchase' : 'api';\n\n const url =\n `${service}/Partner/GetPartnerAppearanceByPartnerGuid/${partnerId}`;\n const response = await apiCall(url);\n const payload = await response.json();\n\n if (payload.IsValid && payload.Data.PartnerGuid) {\n const { PartnerName } = payload.Data;\n\n dispatch({\n data: payload.Data,\n partnerId,\n partnerName: PartnerName,\n type: PARTNER_ID_INFORMATION_LOADED,\n });\n } else {\n dispatch({ type: PARTNER_ID_INFORMATION_FAILED });\n }\n } catch (_) {\n dispatch({ type: PARTNER_ID_INFORMATION_FAILED });\n }\n };\n}\n\nexport function saveNewPetZipCode(zipcode) {\n return { type: NEW_PET_ZIPCODE_SAVED, zipcode };\n}\n\nexport function saveNewPetEmail(email) {\n return { email, type: NEW_PET_EMAIL_SAVED };\n}\n\nexport function saveNewPetType(petType) {\n return { petType, type: NEW_PET_TYPE_SAVED };\n}\n\nexport function saveNewPetSex(petSex) {\n return { petSex, type: NEW_PET_SEX_SAVED };\n}\n\nexport function saveNewPetPickupDate(pickupDate) {\n return { pickupDate, type: NEW_PET_PICKUP_DATE_SAVED };\n}\n\nexport function loadAgeData() {\n return async (dispatch) => {\n let agePayload = null;\n let url = '';\n\n try {\n const legacyAPI = 'api/Quote/Ages';\n const purchaseAPI = 'purchase/quote/ages';\n const { QuoteSiteD2CPurchaseV1T159710 } = getFeatureFlagFromStorage();\n url = QuoteSiteD2CPurchaseV1T159710 ? purchaseAPI : legacyAPI;\n\n const ageResponse = await apiCall(url, { withTimeout: true });\n agePayload = await ageResponse.json();\n\n if (agePayload.IsValid) {\n dispatch({ data: agePayload.Data, type: AGE_DATA_LOADED });\n } else {\n dispatch({\n message: agePayload.Message\n || 'Error retrieving age data.',\n type: AGE_DATA_ERROR,\n });\n dispatch(logError({\n action: 'loadAgeData',\n description: agePayload.Message\n || 'Error retrieving age data.',\n endpoint: url,\n response: agePayload,\n statusCode: ageResponse.status,\n }));\n }\n } catch (exception) {\n dispatch({ message: exception, type: AGE_DATA_ERROR });\n dispatch(logError({\n action: 'loadAgeData',\n description: exception.toString(),\n endpoint: url,\n exception,\n response: agePayload,\n statusCode: '',\n }));\n }\n };\n}\n\nexport function saveSelectedEditPetModal(editPetModalVisible) {\n return { editPetModalVisible, type: SAVE_SELECTED_EDIT_PET_MODAL };\n}\n\nexport function saveSelectedAddPetModal(addPetModalVisible) {\n return { addPetModalVisible, type: SAVE_SELECTED_ADD_PET_MODAL };\n}\n\nexport function saveSelectedRemovePetModal(removePetModalVisible) {\n return { removePetModalVisible, type: REMOVE_PET_MODAL_VISIBLE };\n}\n\nexport function saveUpdatedPet() {\n return { type: SAVE_UPDATED_PET };\n}\n\nexport function changeDeductibleLegend(deductibleLegend) {\n return { deductibleLegend, type: DEDUCTIBLE_LEGEND_CHANGED };\n}\n\nexport function resetPowerUpAriaLabel() {\n return { type: RESET_POWER_UP_ARIA_LABEL };\n}\n\nfunction handlePowerUpChanged({ id, isSelected }) {\n return async (dispatch) => {\n dispatch({ id, isSelected, type: QUOTE_POWER_UP_CHANGED });\n dispatch({ id, isSelected, type: RATE_QUOTE_UPDATE_ATTEMPT });\n };\n}\n\nexport function updateRateQuote({\n diamondClientId,\n ebGuID,\n effectiveDateCustom,\n eMail,\n employerName,\n isRemovePet = false,\n modifiers,\n nopCommerceClientId,\n parameters,\n petPickupDate,\n petQuoteList,\n promoCode,\n quoteId,\n showLoading,\n tag = 'updateRateQuote',\n}) {\n return async (dispatch) => {\n const body = {\n DiamondClientId: diamondClientId,\n ebGuID,\n EffectiveDate: null,\n eMail,\n employerName,\n GroupCode: promoCode,\n GroupCodeDscr: parameters.groupCodeDscr,\n nopCommerceClientId,\n petQuotes: [\n ...petQuoteList.map((quote) => ({\n cloudOrderId: quote.cloudOrderId || 0,\n Id: quote.petQuoteId,\n Modifiers: quote.petQuoteId === quoteId\n ? modifiers : quote.modifiers,\n PetAge: quote.petAgeName,\n PetBreed: quote.breedName,\n PetBreedId: quote.breedId,\n PetName: quote.petName,\n PetSex: quote.genderName,\n PetType: quote.petType,\n })),\n ],\n PickupDate: petPickupDate || parameters.petPickupDate,\n quoteId,\n TestEffectiveDate: effectiveDateCustom,\n ZipCode: parameters.petZipCode,\n };\n\n await dispatch(rateQuote({\n body,\n isRemovePet,\n showLoading,\n tag,\n update: true,\n }));\n\n if (!showLoading) {\n dispatch({ tag, type: LOADING_QUOTE_DATA_FINISH });\n }\n };\n}\n\n/**\n * Recalculate Reimbursement/Deductible values from PrePackagedPlans and\n * total on quoteSelectedValues (values can change from some age/breed)\n */\nexport function recalculatePackagedValuesSelected() {\n return async (dispatch) => {\n dispatch({ type: RECALCULATE_PACKAGED_VALUES_SELECTED });\n dispatch({ type: NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL });\n };\n}\n\nexport function updatePet({ body, update }) {\n return async (dispatch) => {\n const tag = AFTER_RATE_TAG.updatePet;\n\n await dispatch(rateQuote({ body, showLoading: true, tag, update }));\n\n const { quoteId, petQuotes } = body;\n\n const petUpdated =\n petQuotes.find((quote) => quote.Id === quoteId) || {};\n\n const { Cat, Dog } = PetType;\n\n await recalculatePackagedValuesSelected()(dispatch);\n dispatch({\n data: {\n petName: petUpdated.PetName,\n petQuoteId: quoteId,\n petType: petUpdated.PetType === Dog.name ? Dog.value : Cat.value,\n },\n type: PET_UPDATED,\n });\n };\n}\n\nexport function validateAllPetsPowerups() {\n return (dispatch, getState) => {\n const { quoting } = getState();\n const petsWithQuoteError = [];\n\n if (!quoting.data) {\n dispatch({ petsWithQuoteError, type: ALL_PETS_POWERUPS_VALIDATED });\n return false;\n }\n const { data } = quoting;\n data.petQuoteResponseList.forEach((petQuote) => {\n const powerUpValidation = validatePowerupsSelected(petQuote);\n if (!powerUpValidation.isValid) {\n petsWithQuoteError.push(petQuote.petQuoteId);\n }\n });\n\n dispatch({ petsWithQuoteError, type: ALL_PETS_POWERUPS_VALIDATED });\n return !petsWithQuoteError.length;\n };\n}\n\nexport function updatePowerUp({\n diamondClientId,\n ebGuID,\n effectiveDateCustom,\n eMail,\n employerName,\n guidPayload,\n id,\n isSelected,\n modifiers,\n nopCommerceClientId,\n parameters,\n petQuoteList,\n promoCode,\n quoteId,\n showLoading,\n}) {\n return async (dispatch) => {\n try {\n dispatch(handlePowerUpChanged({ id, isSelected }));\n await dispatch(updateRateQuote({\n diamondClientId,\n ebGuID,\n effectiveDateCustom,\n eMail,\n employerName,\n guidPayload,\n modifiers,\n nopCommerceClientId,\n parameters,\n petQuoteList,\n promoCode,\n quoteId,\n showLoading,\n tag: AFTER_RATE_TAG.updatePowerUp,\n }));\n\n dispatch(validateAllPetsPowerups());\n await sleep(800);\n dispatch({ id, isSelected, type: RATE_QUOTE_UPDATE_LOADED });\n } catch (_) {\n dispatch({ id, isSelected: !isSelected, type: RATE_QUOTE_UPDATE_LOADED });\n }\n };\n}\n\nexport function removePet({\n diamondClientId,\n ebGuID,\n effectiveDateCustom,\n eMail,\n employerName,\n guidPayload,\n modifiers,\n nopCommerceClientId,\n parameters,\n petQuoteList,\n promoCode,\n quoteId,\n quoteSelectedValues = [],\n removePetIds = [],\n toggleOpen = () => { },\n showLoading = false,\n}) {\n return async (dispatch) => {\n try {\n dispatch({ type: PET_QUOTE_REMOVAL_ATTEMPT });\n await dispatch(updateRateQuote({\n diamondClientId,\n ebGuID,\n effectiveDateCustom,\n eMail,\n employerName,\n guidPayload,\n isRemovePet: true,\n modifiers,\n nopCommerceClientId,\n parameters,\n petQuoteList,\n promoCode,\n quoteId,\n showLoading,\n tag: AFTER_RATE_TAG.removePet,\n }));\n\n dispatch({\n petQuoteSelected: quoteSelectedValues\n .find((petQuote) => petQuote.quoteId === quoteId).quoteId,\n quoteSelectedValues,\n type: PET_QUOTE_REMOVAL_SUCCEED,\n });\n await sleep(1000);\n dispatch({ ids: removePetIds, type: PET_REMOVED });\n dispatch(saveSelectedRemovePetModal(false));\n await sleep(1000);\n dispatch({ type: NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL });\n toggleOpen();\n } catch (_) {\n dispatch({ type: PET_QUOTE_REMOVAL_FAILED });\n toggleOpen();\n }\n };\n}\n\nexport function resetState() {\n return { type: RESET_QUOTES_VALUES_SELECTED };\n}\n\nexport function addPet(body) {\n return async (dispatch, getState) => {\n const petQuote = body.petQuotes\n .find((quote) => body.quoteId === quote.Id);\n const tag = AFTER_RATE_TAG.addPet;\n\n await dispatch(rateQuote({ body, tag }));\n\n const { Cat, Dog } = PetType;\n\n dispatch({\n data: {\n petDateOfBirth: '',\n petName: petQuote.PetName,\n petQuoteId: body.quoteId,\n petTagColor: 1,\n petType: petQuote.PetType === Dog.name ? Dog.value : Cat.value,\n },\n type: PET_ADDED,\n });\n dispatch(saveSelectedPetNumber(body.quoteId));\n\n if (useFSCLeads) {\n const { quoting: { parameters, newCustomer, data } } = getState();\n dispatch(sendFSCLead({\n age: Number(getAgeInYears(petQuote.PetAge)),\n breed: petQuote.PetBreed,\n breedId: petQuote.PetBreedId,\n email: newCustomer.email || parameters.email,\n gender: petQuote.PetSex,\n marketingOpt: toBoolean(parameters.marketingOptIn),\n petName: petQuote.PetName,\n petType: petQuote.PetType,\n promoCode: data?.groupCode || parameters.groupCode,\n state: newCustomer.address.state || '',\n zipCode: newCustomer.address.zipCode || parameters.petZipCode,\n }));\n }\n\n // GTM\n dataLayerViewItem({ petIndex: body.quoteId });\n };\n}\n\nexport function validZipCode({ showLoading, zipcode }) {\n return async (dispatch) => {\n try {\n if (showLoading) {\n dispatch({ type: ZIP_CODE_VALIDATION_ATTEMPT });\n }\n\n const legacyAPI = `api/State/ValidateZipcode/${zipcode}`;\n const purchaseAPI = `purchase/State/ValidateZipcode/${zipcode}`;\n const { QuoteSiteD2CPurchaseV1T159710 } = getFeatureFlagFromStorage();\n const url = QuoteSiteD2CPurchaseV1T159710 ? purchaseAPI : legacyAPI;\n\n const request = await apiCall(url);\n const response = await request.json();\n\n if (showLoading) {\n dispatch({ type: ZIP_CODE_VALIDATION_SUCCESS });\n }\n\n return response.Data;\n } catch (_) {\n return false;\n }\n };\n}\n\nexport function notifyMeEmailQuote({\n age,\n breed,\n breedId,\n email,\n gender,\n partnerId,\n petName,\n state,\n zipCode,\n}) {\n return async (dispatch) => {\n try {\n dispatch({ type: NOTIFY_ME_BUTTON_CLICKED });\n\n const body = {\n age,\n breed,\n breedId,\n email,\n gender,\n partnerId,\n petName,\n state,\n zipCode,\n };\n\n const emailQuoteResponse = await apiCallCostco('api/costco/EmailQuote', {\n post: body,\n });\n const emailQuotePayload = await emailQuoteResponse.json();\n\n const type = emailQuotePayload ? NOTIFY_ME_SUCCESS : NOTIFY_ME_FAILED;\n\n dispatch({ type });\n } catch (_) {\n dispatch({ type: NOTIFY_ME_FAILED });\n }\n };\n}\n\nexport function closeSaveQuoteModalConfirmation() {\n return { type: SAVED_QUOTE_MODAL_VISIBLE };\n}\n\nexport function saveQuoteMobileVisibleChanged(visible) {\n return {\n type: SAVE_QUOTE_MOBILE_VISIBLE_CHANGED,\n visible,\n };\n}\n\nexport function newCustomerChanged({ type, value }) {\n return { type, value };\n}\n\n/**\n * Open an Quote from different ways; like save quote, marketing link\n * Decode short link to link with all query parameters\n *\n * examples values\n * customerId = 6a061059-7ede-46f5-9241-ed139999bc82\n * @link (./partners/partners.constants.js)\n * partnerId = 21229794-9CAA-4930-ABA6-B543A2C0CCDB\n * quoteId = f8a464cf-8683-46ac-9bc7-987ad6eff1ce\n *\n * @param {Object} params\n * @param {string} params.customerId - From save quote GUID\n * http://localhost:3000/openQuote?CustomerId=customerId\n * @param {string} params.partnerId - Extra param to third party (like costco)\n * http://localhost:3000/openQuote?quoteid=quoteId&partnerId=\n * @param {string} params.quoteId - From auto save quote\n * localhost:3000/openQuote?QuoteId=quoteId\n * @param {string} params.utmRest - Extra params from marketing tracking\n * like utm_source=MarketingCloud\n * /openQuote?CustomerId=customerId&utm_source=MarketingCloud&utm_some=\n */\nexport function openQuote({ customerId, partnerId, quoteId, utmRest }) {\n return async (dispatch, getState) => {\n dispatch({ type: OPEN_SAVED_QUOTE_ATTEMPT });\n const isEB = false;\n const { QuoteSiteD2CPurchaseV1T167578 } = getFeatureFlagFromStorage();\n const api = QuoteSiteD2CPurchaseV1T167578 ? 'purchase' : 'api';\n let url = `${api}/Quote/OpenQuoteEB/${customerId}/${isEB}`;\n const partnerParameter = partnerId ? `/${partnerId}` : '';\n url = `${url}${partnerParameter}`;\n let openQuoteResponse = null;\n let openQuotePayload = null;\n\n if (quoteId) {\n url = `api/Quote/OpenAutoSaveQuote?quoteid=${quoteId}`;\n }\n try {\n openQuoteResponse = await apiCall(url, { withTimeout: true });\n openQuotePayload = await openQuoteResponse.json();\n\n if (!openQuotePayload.IsValid\n && openQuotePayload.Message.toLowerCase().includes('expired')) {\n dispatch({ type: OPEN_SAVED_QUOTE_EXPIRED });\n return;\n }\n\n if (openQuotePayload.IsValid) {\n const { Data } = openQuotePayload;\n const {\n AgentId,\n Email,\n groupCode,\n groupCodeDscr,\n PartnerGuid,\n petQuoteResponseList,\n PickupDate,\n quoteSubId,\n zipCode,\n } = Data;\n\n const { petQuoteId, petName, genderName, petAgeName,\n breedId, breedName, petType } = petQuoteResponseList[0];\n\n const petQuote = petQuoteResponseList\n .find((item) => item.petQuoteId === petQuoteId);\n const plans = petQuote.Plans.map((plan, index) => ({\n id: plan.Plan,\n index,\n maxAnnual: plan.MaxAnnual,\n name: plan.PlanName,\n }));\n\n const selectedPlanData =\n plans.find((plan) => plan.id === petQuote.Plan);\n\n dispatch({\n annualAmountPlan: petQuote.annualPremium,\n data: Data,\n deductibleId: petQuote.Deductible,\n deductibleQuantity: petQuote.deductibleName,\n isUpdate: false,\n monthlyPremium: petQuote.monthlyPremium,\n openQuoteGuid: customerId || quoteId,\n partnerAnnualSaving: petQuote.PartnerAnnualSaving,\n petName: petQuote.petName,\n plans,\n quoteId: petQuoteId,\n reimbursementId: petQuote.Reimbursement,\n reimbursementPercentage: petQuote.ReimbursementName,\n selectedPlan: petQuote.Plan,\n selectedPlanAmount: selectedPlanData.maxAnnual,\n selectedPlanIndex: selectedPlanData,\n selectedPlanPackaged: petQuote.PrePackagedPlanId || CUSTOM_PLAN_ID,\n type: QUOTING_PLAN_DATA_LOADED,\n });\n\n dispatch(saveSelectedPetNumber(petQuoteId));\n\n const pendingPets =\n petQuoteResponseList.map((pendingPet) => {\n const { Plans, Plan, Deductible, Reimbursement } = pendingPet;\n\n const planSelected =\n Plans.find((plan) => plan.Plan === Plan);\n const ratingOption = planSelected.RatingOptions\n .find((rating) => rating.DeductibleId === Deductible\n && rating.ReimbursementId === Reimbursement);\n\n return {\n annualAmountPlan: ratingOption.AnnualPremium,\n deductibleId: Deductible,\n deductibleQuantity: pendingPet.deductibleName,\n partnerAnnualSaving: ratingOption?.PartnerAnnualSaving,\n petName: pendingPet.petName,\n quoteId: pendingPet.petQuoteId,\n reimbursementId: Reimbursement,\n reimbursementPercentage: pendingPet.ReimbursementName,\n selectedPlan: Plan,\n selectedPlanAmount: planSelected.MaxAnnual,\n selectedPlanPackage: pendingPet.PrePackagedPlanId\n || CUSTOM_PLAN_ID,\n total: pendingPet.monthlyPremium,\n };\n });\n\n await dispatch({ pendingPets, type: OPEN_QUOTE_PENDING_PETS_LOADED });\n\n let parameters = {\n email: Email,\n id: petQuoteId,\n petAge: petAgeName,\n petBreed: breedName,\n petBreedId: breedId,\n petName,\n petSex: genderName,\n petType: getPetNameFromValue(petType),\n petZipCode: zipCode,\n };\n\n if (AgentId) {\n parameters.agentId = AgentId;\n }\n\n if (!partnerId) {\n parameters = {\n ...parameters,\n groupCode,\n groupCodeDscr,\n };\n }\n\n if (partnerId || PartnerGuid) {\n parameters.partnerGuid = partnerId || PartnerGuid;\n await dispatch(partnerIdLoaded(partnerId || PartnerGuid));\n }\n\n if (PickupDate) {\n dispatch(saveNewPetPickupDate(PickupDate.split('T')[0]));\n }\n\n if (quoteSubId && quoteSubId.Name && quoteSubId.Value) {\n parameters[quoteSubId.Name] = quoteSubId.Value;\n dispatch({ subId: quoteSubId, type: SUB_ID_SAVED });\n }\n\n // utm parameters extra added from marketing in short link\n const searchObject = { ...parameters, ...utmRest };\n const search = `?${serializeForUri(searchObject)}`;\n\n await dispatch(saveURLParameters({\n parameters: searchObject,\n search,\n }));\n\n await dispatch(costcoRateSummary());\n\n const { quoting } = getState();\n trackLoadEvent({ Data, quoting });\n\n const savedQuoteId = Data.QuotationId;\n await dispatch({ quoteId, savedQuoteId, type: OPEN_QUOTE_LOADED });\n } else {\n dispatch({\n message: openQuotePayload.Message\n || 'Error opening quote.',\n redirectLink: openQuotePayload?.Data?.RedirectLink || '',\n type: OPEN_SAVED_QUOTE_ERROR,\n });\n dispatch(logError({\n action: 'openQuote',\n description: openQuotePayload.Message\n || 'Error opening quote.',\n endpoint: url,\n response: openQuotePayload,\n statusCode: openQuoteResponse.status,\n }));\n }\n } catch (exception) {\n dispatch({\n message: 'Unexpected error opening quote.',\n type: OPEN_SAVED_QUOTE_ERROR,\n });\n dispatch(logError({\n action: 'openQuote',\n description: exception.toString(),\n endpoint: url,\n exception,\n response: openQuotePayload,\n statusCode: openQuoteResponse?.status,\n }));\n }\n };\n}\n\nexport function petTagColorChanged({ petQuoteId, petTagColor }) {\n return {\n data: { petQuoteId, petTagColor },\n type: PET_TAG_COLOR_CHANGED,\n };\n}\n\nexport function petTagDateOfBirthChanged({ petQuoteId, petDateOfBirth }) {\n return {\n data: { petDateOfBirth, petQuoteId },\n type: PET_TAG_DATE_OF_BIRTH_CHANGED,\n };\n}\n\nexport function petTagErrorsChanged(dateErrors) {\n return {\n data: dateErrors,\n type: PET_TAG_DATE_ERRORS_CHANGED,\n };\n}\n\nexport function clearSecondAddress() {\n return { type: SECOND_ADDRESS_CLEARED };\n}\n\nexport function toggleYourInfoScrollToTop(toggledState) {\n return { toggledState, type: YOUR_INFO_SCROLL_TO_TOP_TOGGLED };\n}\n\nexport function toggleSecondPetParentForm(toggledState) {\n return { toggledState, type: SECOND_PARENT_FORM_TOGGLED };\n}\n\nexport function togglePaymentPlanFrequency({ isMonthly }) {\n return async (dispatch) => {\n dispatch({ isMonthly, type: PAYMENT_PLAN_FREQUENCY_CHANGED });\n dispatch({ type: RECALCULATE_LOCAL_TOTAL });\n };\n}\n\nexport function setCurrentQuoteStep(currentQuoteStep) {\n return { currentQuoteStep, type: CURRENT_QUOTE_STEP_CHANGED };\n}\n\nexport function paymentMethodChanged({ type, value }) {\n return { type, value };\n}\n\nexport function yourInfoStepChanged(step) {\n return { step, type: YOUR_INFO_STEP_CHANGED };\n}\n\nexport function createDiamondClient({\n address,\n city,\n clientId,\n email,\n firstName,\n lastName,\n phoneNumber,\n stateAbbreviation,\n stateName,\n zipCode,\n}) {\n return async (dispatch) => {\n dispatch({ type: CREATE_DIAMOND_CLIENT_ATTEMPT });\n const body = {\n Address: {\n City: city,\n PetAddressLine1: address,\n PetAddressLine2: '',\n StateAbbreviation: stateAbbreviation,\n StateName: stateName,\n Zip: zipCode,\n },\n ClientId: clientId,\n FirstName: firstName,\n LastName: lastName,\n Phones: [{\n Number: phoneNumber,\n Primary: true,\n }],\n PrimaryEMail: email,\n PrimaryEMailConfirm: email,\n };\n const url = 'api/customer/saveClient';\n let response = null;\n let payload = null;\n\n try {\n response = await apiCall(url, { post: body, withTimeout: true });\n payload = await response.json();\n const { Data, IsValid } = payload;\n\n if (IsValid && Data) {\n await dispatch({\n clientId: Data.ClientId,\n type: CREATE_DIAMOND_CLIENT_SUCCESS,\n });\n } else {\n dispatch({\n message: Data || 'Error creating diamond client.',\n type: CREATE_DIAMOND_CLIENT_ERROR,\n });\n dispatch(logError({\n action: 'createDiamondClient',\n description: Data || 'Error creating diamond client.',\n endpoint: url,\n request: body,\n response: payload,\n statusCode: response.status,\n }));\n }\n } catch (exception) {\n dispatch({\n message: 'Unexpected error creating diamond client.',\n type: CREATE_DIAMOND_CLIENT_ERROR,\n });\n dispatch(logError({\n action: 'createDiamondClient',\n description: exception.toString(),\n endpoint: url,\n exception,\n request: body,\n response: payload,\n statusCode: response?.status,\n }));\n }\n };\n}\n\nexport async function validateCustomerExistsByEmail(email) {\n const response = await apiCall(`api/customer/getclientinfo/${email}/`);\n const payload = await response.json();\n\n return payload;\n}\n\n// FIXME: i think that this is not necessary (duplicated)\nexport function validateCustomerExists(customer) {\n return async (dispatch) => {\n const isValidEmail = validateEmail(customer);\n\n if (!isValidEmail) {\n dispatch({\n message: 'Error validating customer.',\n type: CUSTOMER_VALIDATION_ERROR,\n });\n\n return;\n }\n\n dispatch({ type: CUSTOMER_VALIDATION_ATTEMPT });\n\n try {\n const payload = await validateCustomerExistsByEmail(customer);\n const { Data, IsValid, Message } = payload;\n\n if (IsValid && typeof Data === 'object') {\n await dispatch({\n customerRoles: Data.CustomerRoles,\n displayName: Data.DisplayName,\n email: Data.Email,\n fullName: Data.FullName,\n hasPassword: Data.HasPassword,\n id: Data.Id,\n type: CUSTOMER_VALIDATED,\n userName: Data.UserName,\n });\n } else {\n dispatch({\n message: Message || 'Error validating customer.',\n type: CUSTOMER_VALIDATION_ERROR,\n });\n }\n } catch (_) {\n dispatch({\n message: 'Unexpected error validating customer.',\n type: CUSTOMER_VALIDATION_ERROR,\n });\n }\n };\n}\n\nexport function closeErrorModal() {\n return { type: ERROR_MODAL_CLOSED };\n}\n\nexport function loadVeterinarians({ vetName, zipCode }) {\n return async (dispatch) => {\n dispatch({ type: VETERINARIANS_LOAD_ATTEMPT });\n try {\n const url = `api/Quote/Veterinarians?zipcode=${zipCode}&name=${vetName}`;\n const response = await apiCall(url);\n const payload = await response.json();\n\n if (payload.IsValid && response.ok) {\n dispatch({ type: VETERINARIANS_LOADED, veterinarians: payload.Data });\n } else {\n dispatch({ type: FAILED_TO_LOAD_VETERINARIANS });\n }\n } catch (_) {\n dispatch({ type: FAILED_TO_LOAD_VETERINARIANS });\n }\n };\n}\n\nexport function loadAmericanStates() {\n return async (dispatch) => {\n try {\n const url = 'api/State';\n const response = await apiCall(url);\n const payload = await response.json();\n\n if (payload.IsValid && response.ok) {\n dispatch({\n americanStates: payload.Data,\n type: AMERICAN_STATES_LOADED,\n });\n } else {\n dispatch({ type: FAILED_TO_LOAD_AMERICAN_STATES });\n }\n } catch (_) {\n dispatch({ type: FAILED_TO_LOAD_AMERICAN_STATES });\n }\n };\n}\n\nexport function saveCustomVet({ city, state, stateId, vetPractice }) {\n return { city, state, stateId, type: CUSTOM_VET_SAVED, vetPractice };\n}\n\nexport function clearCustomVetData() {\n return { type: CUSTOM_VET_DATA_CLEARED };\n}\n\nexport function setSelectedVeterinarian(veterinarian) {\n return { type: VETERINARIAN_SET, veterinarian };\n}\n\nexport function customVeterinarianChanged({ type, value }) {\n return { type, value };\n}\n\nexport function openCustomVetModal() {\n return { type: CUSTOM_VET_MODAL_OPENED };\n}\n\nexport function startPurchase() {\n return { type: PURCHASE_ATTEMPT };\n}\n\nexport function duplicatePurchasesValidationFailed(duplicatedPets) {\n return { data: duplicatedPets, type: DUPLICATED_VALIDATION_FAILED };\n}\n\nexport function closeDuplicatedPurchasesModal() {\n return { type: DUPLICATED_VALIDATION_MODAL_CLOSED };\n}\n\nasync function validateDuplicatedPurchases({\n clientId,\n pets = [],\n dispatch,\n}) {\n const { QuoteSiteD2CPurchaseV1T169325 } = getFeatureFlagFromStorage();\n const service = QuoteSiteD2CPurchaseV1T169325 ? 'purchase' : 'api';\n\n const url = `${service}/Quote/IsDuplicatedPurchase`;\n let response = null;\n let petsRequest = null;\n let payload = null;\n try {\n let duplicatedPets = [];\n let notDuplicatedPets = [];\n if (!pets || pets.length === 0 || !clientId) {\n return duplicatedPets;\n }\n\n petsRequest = pets.map((pet) => ({\n BreedName: pet.BreedName,\n ClientId: clientId,\n IsCat: pet.IsCat,\n IsFemale: pet.IsFemale,\n PetName: pet.PetName,\n }));\n\n response = await apiCall(url, {\n post: petsRequest,\n });\n payload = await response.json();\n\n if (payload.Data) {\n // TODO: The scenario where the user is purchasing\n // two identical pets in the current Rate will be ignored\n // due missing behavior definition.\n // Those pets will be handled as not duplicated\n duplicatedPets = payload.Data\n .filter((duplicatedPet) => duplicatedPet.IsDuplicated\n && duplicatedPet.PolicyNumber);\n notDuplicatedPets = payload.Data.filter((pet) => !pet.PolicyNumber);\n }\n return {\n duplicatedPets,\n notDuplicatedPets,\n };\n } catch (error) {\n if (dispatch) {\n dispatch(logError({\n action: 'validateDuplicatedPurchases',\n description: error.toString()\n || 'Error validating duplicates',\n endpoint: url,\n exception: error,\n request: petsRequest,\n response: payload,\n statusCode: response?.status,\n }));\n }\n return [];\n }\n}\n\nconst sendPurchaseErrorLog = async ({\n bodyRequest,\n response,\n message,\n status,\n email,\n}) => {\n try {\n const { QuoteSiteD2CPurchaseV1T167460 } = getFeatureFlagFromStorage();\n const api = QuoteSiteD2CPurchaseV1T167460 ? 'purchase' : 'api';\n await apiCall(`${api}/Log/PurchaseError`, {\n post: {\n Email: email,\n HttpStatusCode: status,\n Message: message,\n // Not compatible with all browsers\n OperatingSystem: navigator?.userAgentData?.platform,\n request: bodyRequest,\n response,\n UserAgent: navigator.userAgent,\n },\n });\n } catch (e) {\n doNothing();\n }\n};\n\nexport function purchaseQuotes({ body, clientId }) {\n return async (dispatch) => {\n let response = { ok: false };\n try {\n dispatch(startPurchase());\n\n const duplicatedPurchaseData = await validateDuplicatedPurchases({\n clientId,\n dispatch,\n pets: body.QuotePurchaseDto?.InsurancePetQuotes,\n });\n\n const { duplicatedPets } = duplicatedPurchaseData;\n\n if (duplicatedPets.length) {\n dispatch(duplicatePurchasesValidationFailed(duplicatedPurchaseData));\n return;\n }\n const url = `api/Quote/CompletePurchase/${clientId}`;\n\n response =\n await apiCall(url, { post: body, withTimeout: true });\n const payload = await response.json();\n const success = response.ok && payload.IsValid;\n\n if (body.IsRetryPurchase && response.status === 500) {\n dispatch({\n message: payload?.Message || RETRY_PURCHASE_ERROR,\n type: RETRY_PURCHASE_ERROR,\n });\n sendPurchaseErrorLog({\n bodyRequest: body,\n email: body.PrimaryEMail,\n message: payload?.Message || RETRY_PURCHASE_ERROR,\n response,\n statusCode: response.status,\n });\n }\n\n dispatch({\n customerId: payload.Data.CustomerId,\n error: success ? '' : payload.Message || payload.Data,\n incompletePurchases: payload.Data.IncompletePurchases,\n policyNumbers: payload.Data.SuccessfullyPurchased,\n success,\n type: PURCHASE_COMPLETED,\n });\n\n if (useFSCLeads && payload.Data.SuccessfullyPurchased.length > 0) {\n dispatch(sendFSCPurchaseLead(payload.Data.SuccessfullyPurchased));\n }\n } catch (error) {\n const { QuotePurchaseDto: { InsurancePetQuotes } } = body;\n const [pet] = InsurancePetQuotes;\n dispatch({\n error: '',\n incompletePurchases: [{\n ErrorType: PURCHASE_ERROR_TYPES.otherError,\n IsCat: pet?.IsCat,\n PaymentError: '',\n PetName: pet?.PetName,\n PetQuoteId: pet?.Id,\n TagColorId: 0,\n }],\n success: true,\n type: PURCHASE_COMPLETED,\n });\n\n let status = response?.status;\n if (error?.name === 'TimeoutError' || error?.name === 'AbortError') {\n status = 504;\n }\n sendPurchaseErrorLog({\n bodyRequest: body,\n email: body.PrimaryEMail,\n message: error.message || error.reason,\n response,\n status,\n });\n }\n };\n}\n\nasync function purchaseMultipleQuotes({\n clientId = '',\n dispatch,\n quoteRequests = [],\n outData = {\n Data: {\n CustomerId: 0,\n IncompletePurchases: [],\n SuccessfullyPurchased: [],\n },\n HasMessages: false,\n IsValid: true,\n Message: '',\n },\n}) {\n if (quoteRequests.length === 0) {\n return outData;\n }\n\n const [body, ...rest] = quoteRequests;\n const [quote] = body.QuotePurchaseDto.InsurancePetQuotes;\n const quoteId = quote.Id;\n\n dispatch({\n id: quoteId,\n status: PURCHASE_MULTI_STATUS.progress,\n type: PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED,\n });\n\n const url = `api/Quote/CompletePurchase/${clientId}`;\n let request = { ok: false };\n\n try {\n request = await apiCall(url, { post: body, withTimeout: true });\n } catch (error) {\n let status = request?.status;\n if (error?.name === 'TimeoutError' || error?.name === 'AbortError') {\n status = 504;\n }\n sendPurchaseErrorLog({\n bodyRequest: body,\n email: body.PrimaryEMail,\n message: error.message || error.reason,\n response: request,\n status,\n });\n }\n\n let data;\n\n if (request.ok) {\n const response = await request.json();\n const { Data, HasMessages, IsValid, Message } = response;\n\n const status = Data.SuccessfullyPurchased.length > 0\n ? PURCHASE_MULTI_STATUS.complete\n : PURCHASE_MULTI_STATUS.error;\n\n dispatch({\n id: quoteId,\n status,\n type: PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED,\n });\n\n data = {\n Data: {\n CustomerId: Data.CustomerId,\n IncompletePurchases: [\n ...outData.Data.IncompletePurchases,\n ...Data.IncompletePurchases,\n ],\n Success: Data.Success,\n SuccessfullyPurchased: [\n ...outData.Data.SuccessfullyPurchased,\n ...Data.SuccessfullyPurchased,\n ],\n },\n HasMessages: HasMessages && Message.length > 0,\n IsValid: outData.IsValid && IsValid,\n Message: `${outData.Message} ${Message}`.trim(),\n };\n } else {\n const { QuotePurchaseDto: { InsurancePetQuotes } } = body;\n const [pet] = InsurancePetQuotes;\n\n dispatch({\n id: quoteId,\n status: PURCHASE_MULTI_STATUS.error,\n type: PURCHASE_MULTIPLE_QUOTE_STATUS_CHANGED,\n });\n\n const otherIncomplete = outData?.Data?.IncompletePurchases || [];\n const otherSuccess = outData?.Data?.SuccessfullyPurchased || [];\n\n data = {\n Data: {\n CustomerId: outData?.Data?.CustomerId,\n IncompletePurchases: [\n ...otherIncomplete,\n {\n ErrorType: PURCHASE_ERROR_TYPES.otherError,\n IsCat: pet?.IsCat,\n PaymentError: '',\n PetName: pet?.PetName,\n PetQuoteId: pet?.Id,\n TagColorId: 0,\n },\n ],\n Success: false,\n SuccessfullyPurchased: [\n ...otherSuccess,\n ],\n },\n HasMessages: !!outData.Message,\n IsValid: false,\n Message: outData.Message,\n };\n }\n\n return purchaseMultipleQuotes({\n clientId,\n dispatch,\n outData: data,\n quoteRequests: rest,\n });\n}\n\nexport function doPurchaseMultiple({ quoteRequests, clientId }) {\n return async (dispatch) => {\n try {\n const petQuoteList = quoteRequests.map((petQuotes) => {\n const [quote] = petQuotes.QuotePurchaseDto.InsurancePetQuotes;\n\n return {\n id: quote.Id,\n isCat: quote.IsCat,\n petName: quote.PetName,\n status: PURCHASE_MULTI_STATUS.pending,\n };\n });\n\n dispatch({ data: petQuoteList, type: PURCHASE_MULTIPLE_ATTEMPT });\n\n const duplicatedPurchaseData = await validateDuplicatedPurchases({\n clientId,\n dispatch,\n pets: quoteRequests\n .flatMap((quote) => quote.QuotePurchaseDto?.InsurancePetQuotes),\n });\n\n const { duplicatedPets } = duplicatedPurchaseData;\n if (duplicatedPets.length) {\n dispatch(duplicatePurchasesValidationFailed(duplicatedPurchaseData));\n return;\n }\n\n const payload = await purchaseMultipleQuotes({\n clientId,\n dispatch,\n quoteRequests,\n });\n\n // wait for user feedback (progress modal)\n await sleep(800);\n\n dispatch({\n customerId: payload.Data.CustomerId,\n error: '',\n incompletePurchases: payload.Data.IncompletePurchases,\n policyNumbers: payload.Data.SuccessfullyPurchased,\n success: true,\n type: PURCHASE_COMPLETED,\n });\n\n if (useFSCLeads && payload.Data.SuccessfullyPurchased.length > 0) {\n dispatch(sendFSCPurchaseLead(payload.Data.SuccessfullyPurchased));\n }\n } catch (_) {\n dispatch({ error: _, success: false, type: PURCHASE_COMPLETED });\n }\n };\n}\n\nexport function termsAndConditionsChanged({ type, value }) {\n return { type, value };\n}\n\nexport function validateTermsAndConditions() {\n return { type: TERMS_AND_CONDITION_VALIDATION_CHANGED };\n}\n\nexport function rateSummary(post) {\n return async (dispatch) => {\n dispatch({ type: RATE_SUMMARY_ATTEMP });\n\n const response = await apiCall('api/Quote/GetSelectedRate', { post });\n const payload = await response.json();\n\n if (payload.IsValid) {\n dispatch({ data: payload.Data, type: RATE_SUMMARY_SUCCESS });\n } else {\n dispatch({ type: RATE_SUMMARY_FAILED });\n }\n };\n}\n\nexport function sendSMSAppsLinks({ toPhone }) {\n return async (dispatch) => {\n try {\n dispatch({ type: SEND_SMS_APPS_LINKS_ATTEMPT });\n const bodyPost = {\n body: SMS_APP_LINKS,\n toPhone,\n };\n const { QuoteSiteD2CPurchaseV1T169312 } = getFeatureFlagFromStorage();\n const service = QuoteSiteD2CPurchaseV1T169312 ? 'purchase' : 'api';\n const url = `${service}/Quote/SendSMS`;\n\n const response = await apiCall(url, { post: bodyPost });\n const payload = await response.json();\n\n if (payload.IsValid) {\n dispatch({ type: SEND_SMS_APPS_LINKS_SUCCESS });\n } else {\n dispatch({ type: SEND_SMS_APPS_LINKS_FAILED });\n }\n } catch (_) {\n dispatch({ type: SEND_SMS_APPS_LINKS_FAILED });\n }\n };\n}\n\nexport function loadMultiModalData({\n zipCode,\n isEBProduct = false,\n effectiveDate,\n}) {\n return async (dispatch, getState) => {\n const { quoting: { partners: { partnerId } } } = getState();\n const params = [zipCode, isEBProduct, effectiveDate].join('/');\n const partnerParam = partnerId ? `?partnerGuid=${partnerId}` : '';\n const url = `api/InsuranceMultiModal/GetAll/${params}${partnerParam}`;\n let response = null;\n let payload = null;\n try {\n response = await apiCall(url, { withTimeout: true });\n payload = await response.json();\n\n if (payload.IsValid) {\n dispatch({\n data: { ...payload.Data, ZipCode: zipCode },\n type: LOAD_MULTI_MODAL_DATA_SUCCESS,\n });\n } else {\n dispatch({ type: LOAD_MULTI_MODAL_DATA_FAILED });\n dispatch(logError({\n action: 'loadMultiModalData',\n description: payload?.Message || 'Error loading multimodal data',\n endpoint: url,\n response: payload,\n statusCode: response.status,\n }));\n }\n } catch (exception) {\n dispatch({ type: LOAD_MULTI_MODAL_DATA_FAILED });\n dispatch(logError({\n action: 'loadMultiModalData',\n description: exception.toString(),\n endpoint: url,\n exception,\n response: payload,\n statusCode: response?.status,\n }));\n }\n };\n}\n\nexport function multiModalCustomContenChanged({\n category = '',\n content = {},\n title = '',\n visible = false,\n}) {\n return {\n category,\n content,\n title,\n type: MULTI_MODAL_CUSTOM_CONTENT_CHANGED,\n visible,\n };\n}\n\nexport function multiModalCustomContenCleared() {\n return { type: MULTI_MODAL_CUSTOM_CONTENT_CLEARED };\n}\n\nexport function wellnessVisibleChanged({\n categoryId = WELLNESS_DEF_CATEGORY_ID,\n visible,\n}) {\n return {\n categoryId,\n type: MULTI_MODAL_WELLNESS_VISIBLE_CHANGED,\n visible,\n };\n}\n\nexport function needToKnowModalVisibleChanged({\n categoryId = NEED_TO_KNOW_DEF_CATEGORY_ID,\n visible,\n}) {\n return {\n categoryId,\n type: MULTI_MODAL_NEED_TO_KNOW_VISIBLE_CHANGED,\n visible,\n };\n}\n\nexport function termsAndCondModalVisibleChanged({\n categoryId = TERMS_AND_COND_DEF_CATEGORY_ID,\n visible,\n}) {\n return {\n categoryId,\n type: MULTI_MODAL_TERMS_AND_COND_VISIBLE_CHANGED,\n visible,\n };\n}\n\nexport function petCoPayModalVisibleChanged({\n categoryId = PET_CO_PAY_DEF_CATEGORY_ID,\n visible,\n}) {\n return {\n categoryId,\n type: MULTI_MODAL_PET_CO_PAY_VISIBLE_CHANGED,\n visible,\n };\n}\n\nexport function togglePetCoPayModalVisibleChanged({ visible }) {\n return {\n type: MODAL_PET_CO_PAY_VISIBLE_CHANGED,\n visible,\n };\n}\n\nexport function resetPurchaseData() {\n return { error: '', success: false, type: PURCHASE_COMPLETED };\n}\n\nexport function powerUpSelected({ id, isSelected = null, quoteId }) {\n return { id, isSelected, quoteId, type: POWER_UP_SELECTED };\n}\n\nexport function forgetPasswordEmailChanged({ email }) {\n return { email, type: FORGET_PASSWORD_MODAL_EMAIL_CHANGED };\n}\n\nexport function forgetPasswordEmailErrorChanged({ error }) {\n return { error, type: FORGET_PASSWORD_MODAL_EMAIL_ERROR_CHANGED };\n}\n\nexport function forgetPasswordVisibleChanged({ visible }) {\n return { type: FORGET_PASSWORD_MODAL_VISIBLE_CHANGED, visible };\n}\n\nexport function forgetPasswordConfirmVisibleChanged({ visible }) {\n return { type: FORGET_PASSWORD_CONFIRM_MODAL_VISIBLE_CHANGED, visible };\n}\n\nexport function resetPassword({ email }) {\n return async (dispatch) => {\n dispatch({ type: FORGET_PASSWORD_RESET_PASSWORD_ATTEMTPED });\n\n try {\n const resetPasswordURL = 'api/Account/PasswordRecoveryMessage';\n const url = `${window.location.origin}/`;\n\n const bodyRequest = {\n Email: email,\n Url: url,\n };\n\n const resetPasswordResponse =\n await apiCall(resetPasswordURL, { post: bodyRequest });\n const resetPasswordPayload = await resetPasswordResponse.json();\n\n if (resetPasswordResponse.ok && resetPasswordPayload.IsValid) {\n dispatch({ type: FORGET_RESET_PASSWORD_SUCCEEDED });\n } else {\n dispatch({\n message: resetPasswordPayload.Message || 'Error on reset password.',\n type: FORGET_RESET_PASSWORD_FAILED,\n });\n }\n } catch (_) {\n dispatch({\n message: 'Unexpected error.',\n type: FORGET_RESET_PASSWORD_FAILED,\n });\n }\n };\n}\n\nexport function forceValdationDiamonUser(email) {\n return {\n isCustomer: true,\n type: DIAMOND_CUSTOMER_VALIDATION_LOADED,\n userEmail: email,\n };\n}\n\nexport function validateDiamondUser({\n customerExistsData = null,\n email = '',\n userAlreadyExists = false,\n validateCustomer = true,\n}) {\n return async (dispatch) => {\n try {\n const isValidEmail = validateEmail(email);\n\n if (!isValidEmail) {\n dispatch(newCustomerChanged({\n type: NEW_CUSTOMER_EMAIL_ERROR_CHANGED,\n value: 'Invalid email address',\n }));\n return;\n }\n\n dispatch({ type: DIAMOND_CUSTOMER_VALIDATION_ATTEMPT });\n\n let isCustomer = userAlreadyExists;\n let customerInfo = customerExistsData;\n let hasCustomerRoll = false;\n let id = 0;\n\n if (validateCustomer) {\n const { IsValid, Data } = await validateCustomerExistsByEmail(email);\n isCustomer = IsValid && typeof Data === 'object';\n customerInfo = Data;\n }\n\n if (isCustomer) {\n id = customerInfo.Id; // FIXME: Data.Id allways is 0\n hasCustomerRoll = !!customerInfo.CustomerRoles\n .find((roll) => USER_ROLL_LIST.includes(roll));\n\n await dispatch({\n customerRoles: customerInfo.CustomerRoles,\n displayName: customerInfo.DisplayName,\n email: customerInfo.Email,\n fullName: customerInfo.FullName,\n hasPassword: customerInfo.HasPassword,\n id,\n type: CUSTOMER_VALIDATED,\n userName: customerInfo.UserName,\n });\n }\n\n if (isCustomer && !hasCustomerRoll) {\n if (useMarketingChannel) {\n return;\n }\n // TODO: delete after marketing channel on prod\n // users with no roll or diamondCliendId: 0 need call customer service.\n // WPI: Petclout Free user?\n dispatch({ type: DIAMOND_CUSTOMER_VALIDATION_FAILED });\n dispatch(noDiamondClientIdError('User without customer roll'));\n return;\n }\n\n if (!isCustomer) {\n dispatch({ email, type: CUSTOMER_VALIDATION_RESTARTED });\n }\n\n dispatch({\n id,\n isCustomer,\n type: DIAMOND_CUSTOMER_VALIDATION_LOADED,\n userEmail: email,\n });\n } catch (exception) {\n dispatch({ type: DIAMOND_CUSTOMER_VALIDATION_FAILED });\n dispatch(noDiamondClientIdError(`An error ocurred ${exception.message}`));\n dispatch(logError({\n action: 'validateDiamondUser',\n description: exception.toString(),\n endpoint: '',\n exception,\n statusCode: '',\n }));\n }\n };\n}\n\nasync function saveOneIncPaymentMethod({ data, dispatch }) {\n const billingInfoList = data\n .filter((item) => item.PaymentProfileId)\n .map((item) => ({\n customerName:\n `${item.AddressFirstName || ''} ${item.LastName || ''}`,\n id: item.PaymentProfileId,\n lastFourDigits: item.BillingInfoType === 1\n ? item.MaskedCardNumber && item.MaskedCardNumber.substring(4)\n : item.MaskedAccountNumber && item.MaskedAccountNumber.substring(4),\n paymentCategory: item.BillingInfoType === 1\n ? ONE_INC_PAYMENT_CATEGORY.creditCard\n : ONE_INC_PAYMENT_CATEGORY.bankAccount,\n tokenId: ONE_INC_DEFAULT_TOKEN,\n }));\n\n if (billingInfoList.length > 1) {\n const [bankAccount, creditCard] = billingInfoList;\n const oneIncData = {\n bankAccount,\n creditCard,\n isTwoDefaults: true,\n paymentCategory: ONE_INC_PAYMENT_CATEGORY.bankAccount,\n tokenId: ONE_INC_DEFAULT_TOKEN,\n };\n\n dispatch(savePaymentMethods(oneIncData));\n dispatch(savePaymentDefaultMethods({\n bankAccount,\n creditCard,\n defaultValue: ONE_INC_PAYMENT_CATEGORY.bankAccount,\n }));\n } else {\n const payment = billingInfoList && billingInfoList[0];\n const isCreditCard =\n payment.paymentCategory === ONE_INC_PAYMENT_CATEGORY.creditCard;\n\n dispatch(savePaymentMethod(payment));\n dispatch(savePaymentDefaultMethods({\n bankAccount: !isCreditCard && payment,\n creditCard: isCreditCard && payment,\n defaultValue: payment.paymentCategory,\n }));\n }\n}\n\nexport function onLoginB2CROPC() {\n return { type: LOGIN_B2C_STARTED };\n}\n\nexport function onLoginB2CROPCFailed() {\n return { type: LOGIN_B2C_FAILED };\n}\n\nexport function onLoginDiamondUser({ email, password, b2cToken }) {\n return async (dispatch, getState) => {\n try {\n dispatch({ type: DIAMOND_CUSTOMER_LOGIN_ATTEMPT });\n\n const headers = b2cToken ? {\n Authorization: `Bearer ${b2cToken}`,\n } : '';\n\n const response = await apiCall('api/Customer/LogInEBOnNopCommerce', {\n headers,\n post: {\n email,\n password,\n },\n });\n const payload = await response.json();\n const { Data, IsValid } = payload;\n\n const isCostco = useCostcoTN && getState().quoting.partners.isCostco;\n const isGoodDog = useGoodDogTN && getState().quoting.partners.isGoodDog;\n\n const needValidateZipCode = isCostco || isGoodDog;\n\n if (needValidateZipCode && Data.Address && Data.Address.ZipCode) {\n const { Address: { ZipCode } } = Data;\n\n const isZipCodeValid =\n await dispatch(validateZipCodeComingSoon({\n email,\n loadAddress: false,\n zipcode: ZipCode,\n }));\n\n if (!isZipCodeValid) {\n dispatch({\n message: '',\n type: DIAMOND_CUSTOMER_LOGIN_FAILED,\n });\n\n return;\n }\n }\n\n const {\n Address,\n BillingInfoList,\n CanEditAddress,\n CustomerNopCommerceId,\n DefaultPaymentProfileIdACH,\n DefaultPaymentProfileIdCC,\n DiamonClientdId,\n FirstName,\n LastName,\n LoginMessage,\n LoginSuccess,\n MarketingChannelId,\n MiddleName,\n PetPaymentMethod,\n } = Data;\n const data = {\n Address: {\n AddressLine1: (Address && Address.AddressLine1) || '',\n AddressLine2: (Address && Address.AddressLine2) || '',\n City: (Address && Address.City) || '',\n State: (Address && Address.State) || '',\n ZipCode: (Address && Address.ZipCode) || '',\n },\n BillingInfoList,\n CanEditAddress,\n CustomerNopCommerceId,\n DefaultPaymentProfileIdACH,\n DefaultPaymentProfileIdCC,\n DiamonClientdId,\n FirstName: FirstName || '',\n LastName: LastName || '',\n LoginMessage,\n LoginSuccess,\n MarketingChannelId: MarketingChannelId || 0,\n MiddleName: MiddleName || '',\n };\n\n const defaultPaymentMethod =\n DefaultPaymentProfileIdACH || DefaultPaymentProfileIdCC;\n const isCreditCard = !DefaultPaymentProfileIdACH;\n\n dispatch(saveOneIncPetPaymentMethod(PetPaymentMethod));\n\n if (defaultPaymentMethod) {\n await saveOneIncPaymentMethod({\n data: BillingInfoList,\n DefaultPaymentProfileIdACH,\n dispatch,\n });\n\n dispatch(paymentMethodChanged({\n type: PAYMENT_METHOD_TYPE_CHANGE,\n value: isCreditCard\n ? PAYMENT_TYPE.creditCard\n : PAYMENT_TYPE.bank,\n }));\n }\n\n if (IsValid && LoginSuccess) {\n dispatch({\n data,\n email,\n password,\n type: DIAMOND_CUSTOMER_LOGIN_SUCCESS,\n zipCode: data.Address.ZipCode,\n });\n } else {\n dispatch({\n message: LoginMessage || '',\n type: DIAMOND_CUSTOMER_LOGIN_FAILED,\n });\n }\n } catch (_) {\n dispatch({ type: DIAMOND_CUSTOMER_LOGIN_FAILED });\n }\n };\n}\n\nexport function hideCustomerWelcomeMessage() {\n return { type: DIAMOND_CUSTOMER_LOGIN_FAILED };\n}\n\nexport function deleteSession() {\n return { type: DIAMOND_CUSTOMER_LOGOUT };\n}\n\nexport function reRateByNopCommerCustomer({\n diamondClientId,\n ebGuID,\n effectiveDateCustom,\n eMail,\n employerName,\n nopCommerceClientId,\n parameters,\n petQuoteResponseList,\n promoCode,\n subId,\n zipCode,\n}) {\n return async (dispatch) => {\n try {\n const body = {\n DiamondClientId: diamondClientId,\n ebGuID,\n EffectiveDate: null,\n eMail,\n employerName,\n GroupCode: promoCode,\n GroupCodeDscr: parameters.groupCodeDscr,\n nopCommerceClientId,\n petQuotes: [\n ...petQuoteResponseList.map((quote) => ({\n cloudOrderId: quote.cloudOrderId,\n Id: quote.petQuoteId,\n Modifiers: quote.modifiers,\n PetAge: quote.petAgeName,\n PetBreed: quote.breedName,\n PetBreedId: quote.breedId,\n PetName: quote.petName,\n PetSex: quote.genderName,\n PetType: quote.petType,\n })),\n ],\n quoteId: petQuoteResponseList[0].petQuoteId,\n QuoteSubId: subId,\n TestEffectiveDate: effectiveDateCustom,\n ZipCode: zipCode,\n };\n\n await dispatch(rateQuote({\n body,\n showLoading: true,\n tag: AFTER_RATE_TAG.newZipCode,\n update: true,\n }));\n dispatch({ type: NOP_COMMERCE_RECALCULATE_LOCAL_TOTAL });\n dispatch({ type: DIAMOND_CUSTOMER_ZIPCODE_CHANGED, zipCode });\n } catch (_) {\n doNothing();\n }\n };\n}\n\nexport function resetLoginFailMessage() {\n return { type: DIAMOND_CUSTOMER_RESETED_LOGIN_FAIL };\n}\n\nexport function diamondClientEmailClean() {\n return { type: DIAMOND_CUSTOMER_LOGIN_CLEANED };\n}\n\nexport function modalCustomerWelcomeVisibleChanged(visible) {\n return { type: MODAL_CUSTOMER_WELCOME_VISIBLE_CHANGED, visible };\n}\n/**\n * @param {boolean} obj.impersonate\n * @param {string} obj.impersonatingAdminEmail\n * @param {boolean} obj.inApp\n * @param {boolean} obj.isCostco quote created from petcloud with costco\n * @param {string} obj.orderId\n * @param {string} obj.publicToken\n */\nexport function loadQuoteDataByOrderId({\n impersonate = false,\n impersonatingAdminEmail = '',\n inApp,\n isCostco = false,\n orderId,\n publicToken,\n}) {\n return async (dispatch) => {\n dispatch({ type: LOADING_QUOTE_DATA });\n\n if (inApp) {\n dispatch({ type: IN_APP_STARTED });\n }\n\n dispatch({\n impersonatingEmail: impersonatingAdminEmail,\n isImpersonating: impersonate,\n type: IMPERSONATING_INFO_CHANGED,\n });\n\n let rateUrl = `api/Quote/GetRate?orderId=${orderId}`;\n\n if (isCostco) {\n rateUrl = `${rateUrl}&partner=${COSTCO_PARTNER_ID}`;\n await dispatch(partnerIdLoaded(COSTCO_PARTNER_ID));\n }\n\n const { QuoteSiteD2CCustomerV1T172565 } = getFeatureFlagFromStorage();\n const api = QuoteSiteD2CCustomerV1T172565 ? 'customer' : 'api';\n\n const loginUrl = `${api}/Customer/`\n + `LogInOnNopCommerceByPublicToken/${publicToken}`;\n let urlToLog = rateUrl;\n let statusToLog = '';\n let payloadToLog = null;\n try {\n const rateQuoteResponse =\n await apiCall(rateUrl, { withTimeout: true });\n const payloadRateQuote = await rateQuoteResponse.json();\n\n const loginResponse = await apiCall(loginUrl, {\n post: {},\n withTimeout: true,\n });\n\n if (loginResponse.status !== 200) {\n statusToLog = loginResponse.status;\n urlToLog = loginUrl;\n }\n const loginData = await loginResponse.json();\n payloadToLog = loginData;\n\n if (loginData.IsValid) {\n const {\n Address,\n BillingInfoList,\n DefaultPaymentProfileIdACH,\n DefaultPaymentProfileIdCC,\n PetPaymentMethod,\n CustomerEmail,\n } = loginData.Data;\n\n const defaultPaymentMethod =\n DefaultPaymentProfileIdACH || DefaultPaymentProfileIdCC;\n const isCreditCard = !DefaultPaymentProfileIdACH;\n\n dispatch(saveOneIncPetPaymentMethod(PetPaymentMethod));\n\n if (defaultPaymentMethod) {\n await saveOneIncPaymentMethod({\n data: BillingInfoList,\n DefaultPaymentProfileIdACH,\n dispatch,\n });\n\n dispatch(paymentMethodChanged({\n type: PAYMENT_METHOD_TYPE_CHANGE,\n value: isCreditCard\n ? PAYMENT_TYPE.creditCard\n : PAYMENT_TYPE.bank,\n }));\n }\n\n dispatch({\n data: loginData.Data,\n email: CustomerEmail,\n password: '',\n type: DIAMOND_CUSTOMER_LOGIN_SUCCESS,\n zipCode: Address.ZipCode,\n });\n\n dispatch({\n parameters: { petZipCode: Address.ZipCode },\n type: PARAMETERS_UPDATED,\n });\n\n dispatch({ type: NEW_PET_ZIPCODE_SAVED, zipCode: Address.ZipCode });\n }\n payloadToLog = payloadRateQuote;\n\n if (payloadRateQuote.IsValid) {\n const { Data } = payloadRateQuote;\n const { petQuoteResponseList } = Data;\n\n petQuoteResponseList.forEach(async (petQuote) => {\n const rateDate = await makeRateData({ Data, petQuote });\n\n dispatch({ ...rateDate });\n });\n\n if (petQuoteResponseList.length > 0) {\n dispatch(saveSelectedPetNumber(petQuoteResponseList[0].petQuoteId));\n }\n\n await sleep(300);\n } else {\n dispatch(logError({\n action: 'loadQuoteDataByOrderId',\n description: payloadRateQuote.Message\n || 'Error rating quote.',\n endpoint: rateUrl,\n response: payloadRateQuote,\n statusCode: rateQuoteResponse.status,\n }));\n dispatch({\n message: payloadRateQuote.Message\n || 'Error rating quote.',\n redirectToLanding: true,\n type: RATE_QUOTE_ERROR,\n });\n }\n } catch (exception) {\n dispatch(logError({\n action: 'loadQuoteDataByOrderId',\n description: exception.toString(),\n endpoint: urlToLog,\n exception,\n response: payloadToLog,\n statusCode: statusToLog,\n }));\n dispatch({\n message: 'Unexpected error rating quote.',\n type: RATE_QUOTE_ERROR,\n });\n }\n\n dispatch({\n tag: AFTER_RATE_TAG.loadByOrderId,\n type: LOADING_QUOTE_DATA_FINISH,\n });\n };\n}\n\nexport function extoleQuoteUUIDSave(payload) {\n return { payload, type: EXTOLE_UUID_SAVED };\n}\n\nexport function extolePurchaseCompleted(payload) {\n return { payload, type: EXTOLE_PURCHASE_COMPLETED };\n}\n\nexport function effectiveDateCustomChanged(newDate) {\n return { newDate, type: EFFECTIVE_DATE_CUSTOM_CHANGED };\n}\n\nexport function saveUtmParams(payload) {\n return { payload, type: SAVE_UTM_PARAMS };\n}\n\nexport function inAppStarted() {\n return { type: IN_LOGIN_APP_STARTED };\n}\n\nexport function resetTagAfterRate() {\n return { tag: '', type: LOADING_QUOTE_DATA_FINISH };\n}\n\nexport function SMSSignedUp({\n phoneNumber,\n diamondClientId,\n customerId,\n email,\n policyNumbers,\n}) {\n return async (dispatch) => {\n dispatch({ type: SIGNED_UP_SMS_ATTEMPT });\n\n try {\n const url = 'api/Customer/SaveClientSmsConsent';\n const response = await apiCall(url, {\n post: {\n customerId,\n diamondClientId,\n email,\n policyNumbers,\n smsphone: phoneNumber,\n },\n });\n const payload = await response.json();\n dispatch({\n error: payload.Message,\n success: payload.IsValid && payload.Data,\n type: SIGNED_UP_SMS,\n });\n\n if (useFSCLeads && payload.IsValid) {\n dispatch(sendFSCMarketingLead({ phoneNumber }));\n }\n } catch (error) {\n dispatch({\n error,\n success: false,\n type: SIGNED_UP_SMS,\n });\n }\n };\n}\n\nexport function removeQuoteSelectedValueById(petQuoteId) {\n return { petQuoteId, type: QUOTE_SELECTED_VALUES_REMOVED };\n}\n\nexport function changeGoodDogComingSoonModal(visible) {\n const type = visible\n ? GOOD_DOG_COMING_SOON_MODAL_SHOWED\n : GOOD_DOG_COMING_SOON_MODAL_HIDED;\n\n return { type };\n}\n\nexport function validateRecaptchaToken({ origin, token, user }) {\n return async (dispatch) => {\n dispatch({ type: RECAPTCHA_VALIDATE_ATTEMPT });\n let isTokenValid = false;\n const legacyAPI = 'api/Recaptcha/Siteverify';\n const purchaseAPI = 'purchase/Recaptcha/Siteverify';\n const { QuoteSiteD2CPurchaseV1T159710 } = getFeatureFlagFromStorage();\n const url = QuoteSiteD2CPurchaseV1T159710 ? purchaseAPI : legacyAPI;\n let response = null;\n let payload = null;\n let post = null;\n\n try {\n post = {\n Email: user,\n Origin: origin,\n Token: token,\n };\n response = await apiCall(url, {\n post,\n withTimeout: true,\n });\n payload = await response.json();\n\n if (response.ok && payload.IsValid) {\n isTokenValid = true;\n dispatch({ type: RECAPTCHA_VALIDATE_LOADED });\n } else {\n dispatch({ error: payload.Message, type: RECAPTCHA_VALIDATE_FAILED });\n dispatch({\n message: `reCAPTCHA ${payload.Message}`,\n type: RATE_QUOTE_ERROR,\n });\n dispatch(logError({\n action: 'validateRecaptchaToken',\n description: `reCAPTCHA ${payload.Message}`,\n endpoint: url,\n request: post,\n response: payload,\n statusCode: response.status,\n }));\n }\n } catch (error) {\n dispatch({ error: error.message, type: RECAPTCHA_VALIDATE_FAILED });\n dispatch({\n message: `reCAPTCHA ${error.message}`,\n type: RATE_QUOTE_ERROR,\n });\n dispatch(logError({\n action: 'validateRecaptchaToken',\n description: `reCAPTCHA ${error.toString()}`,\n endpoint: url,\n exception: error,\n request: post,\n response: payload,\n statusCode: response?.status,\n }));\n }\n\n return isTokenValid;\n };\n}\n\nexport function changeTermsAndPolicyCheckbox(newStatus) {\n return { newStatus, type: TERMS_AND_POLICY_CHANGED };\n}\n\nexport function setPowerUpErrors(modifierIdList) {\n return { modifierIds: modifierIdList, type: POWERUP_ID_ERRORS_SET };\n}\n\nexport function removePowerupIdError(modifierId) {\n return { modifierId, type: POWERUP_ID_ERRORS_REMOVED };\n}\n\nexport function restartPowerupErrors() {\n return { type: POWERUP_ID_ERRORS_RESTARTED };\n}\n\nexport function setAsHasPassword(value = true) {\n return { type: CUSTOMER_PASSWORD_SET, value };\n}\n","import React from 'react';\nimport './TouchableDiv.css';\n\nconst TouchableDiv = ({\n ariaProps,\n children,\n className = '',\n compRef,\n disabled = false,\n id,\n onClick = () => { },\n onKeyDown = () => { },\n onKeyPress = () => { },\n onFocus = () => { },\n onBlur = () => { },\n style = {},\n}) => {\n function handleOnclick(event) {\n if (event.target.id === id) {\n if (event.type === 'click' && onClick) {\n onClick(event);\n } else if (event.type === 'keypress' && onKeyPress) {\n onKeyPress(event);\n } else if (event.type === 'keydown' && onKeyDown) {\n onKeyDown(event);\n }\n }\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport default TouchableDiv;\n","import React from 'react';\nimport './Shimmer.css';\nimport TouchableDiv from './TouchableDiv';\n\nconst Shimmer = (props = { visible: true }) => {\n function isVisible() {\n if (props.visible) {\n return `${props.className} Shimmer`;\n }\n\n return props.className || '';\n }\n\n function styles() {\n if (!props.visible) {\n return {};\n }\n\n const style = { borderRadius: props.borderRadius };\n\n if (props.height) {\n style.height = props.height;\n }\n\n if (props.width) {\n style.width = props.width;\n }\n\n return style;\n }\n\n switch (props.element) {\n case 'span': {\n return (\n \n {props.children}\n \n );\n }\n\n case 'touchableDiv': {\n return (\n \n {props.children}\n \n );\n }\n\n default: return (\n \n {props.children}\n \n );\n }\n};\n\nShimmer.defaultProps = {\n borderRadius: 0,\n height: 0,\n visible: true,\n width: 0,\n};\n\nexport default Shimmer;\n","export default __webpack_public_path__ + \"static/media/plus-circle-icon.ba55b15c.svg\";","import { useEffect, useCallback, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { saveMonthlyPlanSelected } from '../actions';\n\nimport { isPaycheck } from '../util';\n\nconst useCalculatePlanPrice = () => {\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n\n const {\n petQuoteSelected,\n quoteSelectedValues,\n } = store;\n\n const { petQuote, plans, plansPackaged } = useMemo(() => {\n if (!store.data) {\n return { plans: [], plansPackaged: store.plansPackaged };\n }\n\n const currentPetQuote = store.data.petQuoteResponseList\n .find((item) => item.petQuoteId === petQuoteSelected);\n\n const plansQuote = currentPetQuote ? currentPetQuote.Plans : [];\n\n let plansPackagedSelected = [];\n\n if (currentPetQuote) {\n plansPackagedSelected = currentPetQuote.PrePackagedPlans?.map((item) => {\n const plan = currentPetQuote.Plans\n .find((planItem) => planItem.Plan === item.PlanId);\n const ratingOption = plan.RatingOptions\n .find((ratingItem) => ratingItem.DeductibleId\n === item.DeductibleId && ratingItem.ReimbursementId\n === item.ReimbursementId);\n return ({\n ...item,\n deductibleName: ratingOption.DeductibleName,\n maxAnnual: plan.MaxAnnual,\n monthlyPrice: ratingOption.MonthlyPremium,\n reimbursementName: ratingOption.ReimbursementName,\n });\n });\n }\n\n return {\n petQuote: currentPetQuote,\n plans: plansQuote,\n plansPackaged: plansPackagedSelected,\n };\n }, [petQuoteSelected, store.data, store.plansPackaged]);\n\n const quoteSelected = quoteSelectedValues\n .find((item) => item.quoteId === petQuoteSelected)\n || { petName: 'Pet Name' };\n\n const getCurrentPlan = useCallback(() => {\n const emptyPlan = {\n annualAmount: 0,\n getValue: () => 0,\n monthlyAmount: 0,\n partnerAnnualSaving: 0,\n };\n\n if (!petQuote) {\n return emptyPlan;\n }\n\n const currPlan = petQuote.Plans\n .find((plan) => plan.Plan === quoteSelected.selectedPlan);\n const price = currPlan.RatingOptions\n .find((rating) => rating.DeductibleId === quoteSelected.deductibleId\n && rating.ReimbursementId === quoteSelected.reimbursementId);\n\n if (!price) {\n return emptyPlan;\n }\n\n let getValue = () => price.MonthlyPremium;\n\n if (isPaycheck) {\n const priceAnnualFix = (price.MonthlyPremium * 12);\n getValue = () => (priceAnnualFix * 0.9) / 24;\n }\n\n return {\n annualAmount: price.AnnualPremium,\n getValue,\n monthlyAmount: isPaycheck ? getValue() : price.MonthlyPremium,\n partnerAnnualSaving: price.PartnerAnnualSaving,\n };\n }, [petQuote, quoteSelected]);\n\n useEffect(() => {\n const price = getCurrentPlan();\n\n if (quoteSelected.totalMontly !== undefined\n && quoteSelected.totalMontly !== price.getValue()) {\n dispatch(saveMonthlyPlanSelected(price));\n }\n }, [\n dispatch,\n getCurrentPlan,\n quoteSelected,\n ]);\n\n return {\n petQuote,\n plans,\n plansPackaged,\n quoteSelected,\n };\n};\n\nexport { useCalculatePlanPrice };\n","import { useEffect, useState } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { resetTagAfterRate } from '../actions';\n\nconst useCallbackAfterRate = (callbackMemo = () => { }, tags = []) => {\n const dispatch = useDispatch();\n const { loadingTagFinish } =\n useSelector(({ quoting }) => quoting, shallowEqual);\n const [lastTag, setLastTag] = useState('');\n\n useEffect(() => {\n if (tags.length === 0 || lastTag === loadingTagFinish) {\n return;\n }\n\n setLastTag(loadingTagFinish);\n if (tags.includes(loadingTagFinish)) {\n dispatch(resetTagAfterRate());\n setLastTag('');\n callbackMemo();\n }\n }, [dispatch, callbackMemo, loadingTagFinish, lastTag, tags]);\n};\n\nexport { useCallbackAfterRate };\n","/** @deprecated Data does not match with real zipcodes.\n * TODO: Remove current references\n */\nexport function getStateAbbreviation(zipString) {\n if (typeof zipString !== 'string' || zipString.length !== 5) {\n return '';\n }\n\n const zipcode = parseInt(zipString, 10);\n\n const states = [{ code: 'AL', max: 36999, min: 35000 },\n { code: 'AK', max: 99999, min: 99500 },\n { code: 'AZ', max: 86999, min: 85000 },\n { code: 'AR', max: 72999, min: 71600 },\n { code: 'CA', max: 96699, min: 90000 },\n { code: 'CO', max: 81999, min: 80000 },\n { code: 'CT', max: 6999, min: 6000 },\n { code: 'DE', max: 19999, min: 19700 },\n { code: 'FL', max: 34999, min: 32000 },\n { code: 'GA', max: 31999, min: 30000 },\n { code: 'HI', max: 96999, min: 96700 },\n { code: 'ID', max: 83999, min: 83200 },\n { code: 'IL', max: 62999, min: 60000 },\n { code: 'IN', max: 47999, min: 46000 },\n { code: 'IA', max: 52999, min: 50000 },\n { code: 'KS', max: 67999, min: 66000 },\n { code: 'KY', max: 42999, min: 40000 },\n { code: 'LA', max: 71599, min: 70000 },\n { code: 'ME', max: 4999, min: 3900 },\n { code: 'MD', max: 21999, min: 20600 },\n { code: 'MA', max: 2799, min: 1000 },\n { code: 'MI', max: 49999, min: 48000 },\n { code: 'MN', max: 56999, min: 55000 },\n { code: 'MS', max: 39999, min: 38600 },\n { code: 'MO', max: 65999, min: 63000 },\n { code: 'MT', max: 59999, min: 59000 },\n { code: 'NC', max: 28999, min: 27000 },\n { code: 'ND', max: 58999, min: 58000 },\n { code: 'NE', max: 69999, min: 68000 },\n { code: 'NV', max: 89999, min: 88900 },\n { code: 'NH', max: 3899, min: 3000 },\n { code: 'NJ', max: 8999, min: 7000 },\n { code: 'NM', max: 88499, min: 87000 },\n { code: 'NY', max: 14999, min: 10000 },\n { code: 'OH', max: 45999, min: 43000 },\n { code: 'OK', max: 74999, min: 73000 },\n { code: 'OR', max: 97999, min: 97000 },\n { code: 'PA', max: 19699, min: 15000 },\n { code: 'PR', max: 999, min: 300 },\n { code: 'RI', max: 2999, min: 2800 },\n { code: 'SC', max: 29999, min: 29000 },\n { code: 'SD', max: 57999, min: 57000 },\n { code: 'TN', max: 38599, min: 37000 },\n { code: 'TX', max: 79999, min: 75000 },\n { code: 'TX', max: 88599, min: 88500 },\n { code: 'UT', max: 84999, min: 84000 },\n { code: 'VT', max: 5999, min: 5000 },\n { code: 'VA', max: 24699, min: 22000 },\n { code: 'DC', max: 20599, min: 20000 },\n { code: 'WA', max: 99499, min: 98000 },\n { code: 'WV', max: 26999, min: 24700 },\n { code: 'WI', max: 54999, min: 53000 },\n { code: 'WY', max: 83199, min: 82000 }];\n\n const state = states.find((s) => s.min <= zipcode && s.max >= zipcode);\n\n let zipcodeAbbreviation = '';\n\n if (state) {\n zipcodeAbbreviation = state.code;\n }\n\n return zipcodeAbbreviation;\n}\n","import { useMemo } from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { getStateAbbreviation } from '../utils/zipcode';\nimport { extoleQuoteEvent, extolePurchaseEvent } from '../util';\nimport { PetType } from '../constants';\n\nconst useExtole = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n\n const {\n nopCommerceUser: { FirstName, LastName },\n userEmail,\n } = store.sessionInformation;\n const { email } = store.parameters;\n const { name, lastName } = store.newCustomer;\n const { customerId, policyNumbers } = store.purchase;\n\n const firstPet = useMemo(() => {\n if (!store.data) {\n return {};\n }\n const { petQuoteResponseList, zipCode } = store.data;\n const {\n petName,\n petType,\n genderName,\n petAgeName,\n breedName,\n planName,\n promoCode,\n QuoteId,\n } = petQuoteResponseList[0];\n\n return {\n breedName,\n genderName,\n petAgeName,\n petName,\n petType,\n planName,\n promoCode,\n QuoteId,\n zipCode,\n };\n }, [store.data]);\n\n const sendQuoteSubmittedEvent = () => {\n if (!store.data) {\n return;\n }\n\n extoleQuoteEvent({\n email: userEmail || email,\n petAge: firstPet.petAgeName,\n petBreed: firstPet.breedName,\n petName: firstPet.petName,\n petSex: firstPet.genderName,\n petType: firstPet.petType === PetType.Dog.value\n ? PetType.Dog.name : PetType.Cat.name,\n promoCode: firstPet.promoCode,\n quoteId: firstPet.QuoteId,\n state: getStateAbbreviation(String(firstPet.zipCode)),\n zipcode: firstPet.zipCode,\n });\n };\n\n const sendPolicyPurchaseEvent = () => {\n if (!store.data && store.purchase.success) {\n return;\n }\n\n extolePurchaseEvent({\n cartValue: '',\n email: userEmail || email,\n firstName: name || FirstName,\n lastName: lastName || LastName,\n membershipType: firstPet.planName,\n partnerUserId: customerId,\n policyId: policyNumbers.length > 1 ? policyNumbers : policyNumbers[0],\n state: getStateAbbreviation(String(firstPet.zipCode)),\n });\n };\n\n return { sendPolicyPurchaseEvent, sendQuoteSubmittedEvent };\n};\n\nexport { useExtole };\n","import { useEffect, useState } from 'react';\n\nexport const BROWSERS = {\n chrome: 'Google Chrome or Chromium',\n edge: 'Microsoft Edge',\n fireFox: 'Mozilla Firefox',\n ie: 'Microsoft Internet Explorer',\n opera: 'Opera',\n safari: 'Safari',\n samsungBrowser: 'Samsung Internet',\n unknown: 'unknown',\n};\n\nexport const useGetNavigator = () => {\n const [browser, setBrowser] = useState(null);\n\n useEffect(() => {\n let sBrowser = null;\n const sUsrAg = window.navigator.userAgent;\n\n // The order matters here, and this may report false\n // positives for unlisted browsers.\n if (sUsrAg.indexOf('Firefox') > -1) {\n sBrowser = BROWSERS.fireFox;\n // 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0)\n // Gecko/20100101 Firefox/61.0'\n } else if (sUsrAg.indexOf('SamsungBrowser') > -1) {\n sBrowser = BROWSERS.samsungBrowser;\n // 'Mozilla/5.0 (Linux; Android 9;\n // SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36\n // (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87\n // Mobile Safari/537.36\n } else if (sUsrAg.indexOf('Opera') > -1 || sUsrAg.indexOf('OPR') > -1) {\n sBrowser = BROWSERS.opera;\n // 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0)\n // AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102\n // Safari/537.36 OPR/57.0.3098.106'\n } else if (sUsrAg.indexOf('Trident') > -1) {\n sBrowser = BROWSERS.ie;\n // 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0;\n // .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko'\n } else if (sUsrAg.indexOf('Edge') > -1) {\n sBrowser = BROWSERS.edge;\n // 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299'\n } else if (sUsrAg.indexOf('Chrome') > -1) {\n sBrowser = BROWSERS.chrome;\n // 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36\n // (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181\n // Chrome/66.0.3359.181 Safari/537.36'\n } else if (sUsrAg.indexOf('Safari') > -1) {\n sBrowser = BROWSERS.safari;\n // 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X)\n // AppleWebKit/605.1.15 (KHTML, like Gecko)\n // Version/11.0 Mobile/15E148 Safari/604.1 980x1306'\n } else {\n sBrowser = BROWSERS.unknown;\n }\n\n setBrowser(sBrowser);\n }, []);\n\n return browser;\n};\n","import { useEffect, useState } from 'react';\n\n/**\n * @deprecated Use HtmlContent component instead. 🙏\n */\nconst useHtmlInjection = ({\n classNameContainer,\n content,\n elementType = 'div',\n ref,\n}) => {\n const [contentLoaded, setContentLoaded] = useState();\n\n useEffect(() => {\n if (ref.current && !contentLoaded && content) {\n const htmlContent = content;\n const htmlContainer = document.createElement(elementType);\n htmlContainer.classList.add(classNameContainer);\n htmlContainer.innerHTML = htmlContent;\n ref.current.appendChild(htmlContainer);\n setContentLoaded(true);\n }\n }, [classNameContainer, content, contentLoaded, elementType, ref]);\n};\n\nexport { useHtmlInjection };\n","import { useEffect } from 'react';\nimport { isProdEnv, loadEmbeddedScript } from '../util';\n\nconst useOneIncScript = () => {\n const scriptEnv = isProdEnv ? 'portalone' : 'testportalone';\n // eslint-disable-next-line max-len\n const scriptSrc = `https://${scriptEnv}.processonepayments.com/Api/Api/Cdn/GenericModalV2/assets/js/PortalOne.js`;\n const scriptId = `OneIncScript-${isProdEnv ? 'Prod' : 'Dev'}`;\n const scriptAsync = true;\n const scriptDefer = true;\n\n useEffect(() => {\n loadEmbeddedScript({\n scriptAsync,\n scriptDefer,\n scriptId,\n scriptSrc,\n });\n }, [scriptAsync, scriptDefer, scriptId, scriptSrc]);\n};\n\nexport { useOneIncScript };\n","import { useEffect, useCallback } from 'react';\n\nconst ESC_KEY = 27;\n\nconst useOnEscEvent = (callback = () => {}, dependencies = []) => {\n const handleKeyDown = useCallback(({ keyCode }) => {\n if (keyCode === ESC_KEY) {\n callback();\n }\n }, [...dependencies, callback]);\n\n useEffect(() => {\n window.removeEventListener('keydown', handleKeyDown, true);\n window.addEventListener('keydown', handleKeyDown, true);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown, true);\n };\n }, [...dependencies]);\n};\n\nexport { useOnEscEvent };\n","import { useMemo } from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nconst usePartnerNotes = () => {\n const store = useSelector((stores) => stores.quoting, shallowEqual);\n const {\n partners: {\n partnerId,\n data: {\n CustomFields,\n },\n },\n } = store;\n\n const disclaimers = useMemo(() => {\n if (!partnerId) {\n return [];\n }\n\n const disclaimerSection = CustomFields\n .filter((field) => field.Section === 'Disclaimer');\n\n return disclaimerSection || [];\n }, [CustomFields, partnerId]);\n\n return disclaimers;\n};\n\nexport { usePartnerNotes };\n","import { useEffect, useRef } from 'react';\n\n// This hook returns the previous value of an specific sent value\nfunction usePrevious(value) {\n const ref = useRef();\n // Store current value in ref\n useEffect(() => {\n ref.current = value;\n }, [value]);\n // Return previous value (happens before update in useEffect above)\n return ref.current;\n}\n\nexport { usePrevious };\n","import { useMemo } from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport { useRouteMatch } from 'react-router-dom';\nimport { LANDING_URL } from '../routes';\n\nconst useSessionFooter = () => {\n const store = useSelector((stores) => stores.quoting, shallowEqual);\n const {\n data,\n partners: {\n partnerId,\n data: {\n BottomDisclaimer,\n FooterText,\n },\n },\n } = store;\n const { path } = useRouteMatch();\n\n const sessionFooter = useMemo(() => {\n if (partnerId) {\n // if specific disclaimer for quote steps exists\n if (path !== LANDING_URL && BottomDisclaimer) {\n return BottomDisclaimer;\n }\n\n return FooterText;\n }\n\n if (!data || !data.insuranceProduct) {\n return '';\n }\n\n const footerSection = data\n .insuranceProduct.InsuranceInformationSections\n .find((item) => item.Title === 'Footer Text');\n\n return footerSection.InsuranceInformationDetails[0].Text;\n }, [data, partnerId, FooterText, BottomDisclaimer, path]);\n\n return sessionFooter;\n};\n\nexport { useSessionFooter };\n","import { useCallback, useMemo } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport {\n MULTIPET_DISCOUNT,\n ONE_INC_DEFAULT_TOKEN,\n ONE_INC_EMPTY_ACH,\n ONE_INC_EMPTY_CC,\n PAYMENT_TYPE,\n POWERUP_TYPE,\n PetGender,\n PetType,\n PowerUpsRelation,\n} from '../constants';\nimport { appVersion, isProductFPI, phoneMask, useFSCLeads } from '../util';\nimport {\n doPurchaseMultiple,\n purchaseQuotes,\n sendAllPetsFSCLead,\n sendFSCCustomerLead,\n sendFSCPaymentLead,\n sendFSCQuoteLead,\n} from '../actions';\nimport { dataLayerBeginCheckout } from '../gtmDataLayer';\nimport { useTrackingPurchaseComplete } from '../trackingEvents';\nimport { useSessionFooter } from './useSessionFooter';\n\nexport const usePurchase = () => {\n const dispatch = useDispatch();\n const sessionFooter = useSessionFooter();\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n\n const {\n data,\n sessionInformation,\n parameters,\n newCustomer,\n partners: {\n costcoMembership: {\n membershipNumber,\n },\n data: {\n PartnerGuid,\n },\n petPickupDate,\n },\n } = store;\n const { isCustomer } = sessionInformation;\n\n const now = new Date().toISOString().split('T')[0];\n // Today is valid date for user, but not for rate\n const PickupDate = petPickupDate === now ? null : petPickupDate;\n\n const { trackPurchaseComplete } = useTrackingPurchaseComplete();\n\n const getSelectedValues = useCallback((quoteId) => {\n const { quoteSelectedValues } = store;\n\n return quoteSelectedValues.find((item) => item.quoteId === quoteId) || {};\n }, [store]);\n\n const getMutiplePetId = useCallback(() => {\n const productId = store.data?.insuranceProduct.Id;\n\n return isProductFPI(productId) ? 58 : 9;\n }, [store.data]);\n\n const clientIdToSend = useMemo(() => sessionInformation\n .nopCommerceUser?.DiamonClientdId, [sessionInformation]);\n\n /**\n * DTO with quote pet list (InsurancePetQuotes)\n * @return QuotePurchaseDto model\n */\n const getQuotePurchaseDto = useCallback((insurancePetQuotes = []) => {\n const {\n sessionInformation: {\n impersonatingEmail,\n isImpersonating,\n },\n } = store;\n const { address } = newCustomer;\n const { groupCode, insuranceProduct, petQuoteResponseList } = data;\n const { stateAbbr, zipCode } = address;\n const { InsuranceProductFee } = insuranceProduct;\n\n const impersonatingInfo = isImpersonating ? {\n ImpersonatingAdminEmail: impersonatingEmail,\n } : null;\n\n /* eslint-disable max-len */\n /* eslint-disable sort-keys */\n const purchaseDto = {\n ...impersonatingInfo,\n QuotePurchaseDto: {\n CloudClientId: 0,\n EffectiveDate: null,\n EMail: null,\n GroupPartnerCode: groupCode,\n PetState: stateAbbr,\n PetZip: zipCode,\n Error: [],\n FooterText: sessionFooter,\n InsurancePetQuotes: insurancePetQuotes, // quote list\n InsuranceProductId: 2,\n IsMultiplePets: petQuoteResponseList.length > 0,\n IsRated: true,\n PetQuotes: [],\n ProductInfo: 'ProductId : 2 - Name IHC001 - Description : Underwritten by Independence American Insurance Group',\n QuotationId: store.saveQuote.savedQuoteId,\n RatingFromComplete: true,\n NeedToKnows: [\n {\n Title: 'What\\'s Covered',\n NeedToKnowDetails: [\n {\n Text: 'New illnesses and accidents',\n },\n {\n Text: 'Diagnostic tests related to illnesses/accidents',\n },\n {\n Text: 'Prescription medications',\n },\n {\n Text: 'Surgeries, prosthetics, chronic conditions, emergency services, advanced treatments, and much more',\n },\n {\n Text: 'You may visit any licensed veterinarian in the US, Canada, and Puerto Rico.',\n },\n ],\n },\n {\n Title: 'What\\'s Not Covered',\n NeedToKnowDetails: [\n {\n Text: 'Pre-existing conditions',\n },\n {\n Text: 'Routine wellness or preventative care',\n },\n {\n Text: 'Spaying or neutering',\n },\n {\n Text: 'Dental cleanings or procedures not related to an accident',\n },\n {\n Text: 'Prescription food',\n },\n ],\n },\n {\n Title: 'Deductible and Coinsurance',\n NeedToKnowDetails: [\n {\n Text: 'One annual deductible per policy',\n },\n {\n Text: 'Your coinsurance is the difference between your reimbursement percentage and 100%. (For example, a 90% reimbursement would have a 10% coinsurance.)',\n },\n {\n Text: 'The annual deductible will be applied and deducted from covered claims before benefits apply.',\n },\n {\n Text: 'Once the annual deductible has been met, you will be reimbursed at your selected reimbursement amount for the rest of your policy period.',\n },\n ],\n },\n {\n Title: 'Waiting Periods',\n NeedToKnowDetails: [\n {\n Text: 'Waiting periods begin on your policy effective date',\n },\n {\n Text: '3-day waiting period for accident (injury)',\n },\n {\n Text: '14-day waiting period for illness',\n },\n {\n Text: '6-month waiting period for knee conditions',\n },\n ],\n },\n ],\n ImportantDates: [\n {\n Title: '',\n ImportantDateDetails: [\n {\n Text: 'Pre-existing conditions are not covered. For the health.',\n IconRoute: null,\n },\n ],\n },\n ],\n Fees: InsuranceProductFee.map((fee) => ({\n TypeId: fee.InsuranceFeeId,\n Name: fee.InsuranceFee.DisplayName,\n Amount: fee.InsuranceFee.Amount,\n DisplayText: fee.InsuranceFee.DisplayText,\n })),\n PaymentPlans: [\n {\n Id: 1,\n Description: 'Monthly',\n },\n {\n Id: 2,\n Description: 'Annual',\n },\n ],\n GroupPartnerDisplay: null,\n IsEndorsement: false,\n IsZipCodeForQuote: false,\n PickupDate,\n TestEffectiveDate: store.effectiveDateCustom,\n },\n PickupDate,\n };\n\n return purchaseDto;\n }, [PickupDate, data, sessionFooter, store, newCustomer]);\n\n /**\n * Payload with user info, address, etc.\n * @returns Purchase payload complete\n */\n const getQuoteRequestBase = useCallback(({ isRetryPurchase, insurancePetQuotes, includeMultiPetDiscount = false }) => {\n const {\n isMonthlyPlan,\n oneInc,\n partners,\n paymentMethod,\n secondParentFormVisible,\n selectedVeterinarian,\n subId,\n termsAndConditions,\n } = store;\n const { address } = newCustomer;\n const secondParent = secondParentFormVisible\n ? newCustomer.secondParent : {};\n const { insuranceProduct } = data;\n const { stateAbbr, zipCode } = address;\n const { SelectedStateFactor } = insuranceProduct;\n const {\n customCity,\n customStateId,\n isCustomVet,\n nameOfPractice,\n } = selectedVeterinarian;\n const { costcoMembership, isCostco } = partners;\n const defaultHowDidYouHearId = 15;\n\n // when IsElectronicConsent, takes the user selection\n // otherwise, takes consentElectronicDeliveryCheck with default true\n const sendElectronicConsent = termsAndConditions.consentElectronicDeliveryCheck;\n\n let oneIncSrcEft = oneInc.bankAccount;\n let oneIncSrcCC = oneInc.creditCard;\n\n if (oneInc.tokenId === ONE_INC_DEFAULT_TOKEN) {\n oneIncSrcEft = ONE_INC_EMPTY_ACH;\n oneIncSrcCC = ONE_INC_EMPTY_CC;\n }\n\n const paymentDataToSend = {\n OneIncCreditCard: {\n CardExpirationMonth: oneIncSrcCC.cardExpirationMonth,\n CardExpirationYear: oneIncSrcCC.cardExpirationYear,\n CardholderName: oneIncSrcCC.customerName,\n CardType: oneIncSrcCC.cardType,\n LastFourDigits: oneIncSrcCC.lastFourDigits,\n TokenId: oneIncSrcCC.tokenId,\n },\n OneIncEft: {\n LastFourDigits: oneIncSrcEft.lastFourDigits,\n TokenId: oneIncSrcEft.tokenId,\n },\n };\n\n const secondaryBillingAddress = {\n MailAddressLine1: address.street,\n MailAddressLine2: address.street2,\n MailAddressCity: address.city,\n MailAddressState: stateAbbr,\n MailAddressZip: zipCode,\n };\n\n const quotePurchaseDto = getQuotePurchaseDto(insurancePetQuotes);\n\n const quoteRequestBase = {\n ...quotePurchaseDto,\n ...paymentDataToSend,\n ...secondaryBillingAddress,\n AppVersion: appVersion,\n AgentId: parameters.agentId || '',\n QuoteSubId: subId,\n PrimaryFirstName: newCustomer.name,\n PrimaryLastName: newCustomer.lastName,\n PrimaryMobilePhone: phoneMask(newCustomer.phoneNumber),\n PrimaryOtherPhone: null,\n PrimaryEMail: newCustomer.email,\n PrimaryEMailConfirm: newCustomer.email,\n PrimaryPassword: isCustomer ? '' : newCustomer.password,\n PrimaryPasswordConfirm: isCustomer ? '' : newCustomer.password,\n LoginPassword: isCustomer ? newCustomer.password : '',\n HasSecondaryOwner: secondParentFormVisible,\n SecondaryFirstName: secondParent.name || null,\n SecondaryLastName: secondParent.lastName || null,\n SecondaryMobilePhone: phoneMask(secondParent.phoneNumber),\n PetAddressLine1: address.street,\n PetAddressLine2: address.street2,\n PetAddressCity: address.city,\n PetAddressState: stateAbbr,\n PetAddressZip: zipCode,\n MailAddressSameAsPet: paymentMethod.mailAddressSameAsPet,\n HowDidYouHear: '',\n HasManualVet: isCustomVet,\n SelectedVetID: isCustomVet ? null : selectedVeterinarian.Id,\n VetCompany: isCustomVet ? nameOfPractice : null,\n VetCity: isCustomVet ? customCity : null,\n StateId: isCustomVet ? customStateId : String(SelectedStateFactor.StateId),\n SelectedVet: null,\n SelectedVetName: null,\n SelectedVetCode: null,\n VetZip: null,\n VetAddress: null,\n EffectiveDate: null,\n IncludeMultiPetDiscount: includeMultiPetDiscount,\n TestEffectiveDate: store.effectiveDateCustom,\n CloudClientId: 0, // customer ID, default 0\n Referrals: null,\n ElectronicOptOut: false,\n Comment1: 'By default, How Did You Hear Id is 15 = Other',\n HowDidYouHearId: defaultHowDidYouHearId,\n Comment2: 'Payment 0 is monthly, 1 is annual',\n PaymentPlanEnum: isMonthlyPlan ? 0 : 1,\n Comment3: 'ShouldProcessPayment, if false it only submits a Rate, if true we make the actual Issue/Purchase',\n ShouldProcessPayment: true,\n Comment4: 'Payment method 0 is ACH, 1 is CC',\n PaymentMethodEnum:\n paymentMethod.paymentMethodType.value === PAYMENT_TYPE.bank.value ? 0 : 1,\n Comment6: 'ACHAccountTypeEnum 0 checkings, 1 savings',\n Comment5: 'isProduct decides if we use Product'\n + ' configurations, vs regular Products configurations',\n isEBProduct: false,\n IsRetryPurchase: isRetryPurchase,\n SendElectronicConsent: sendElectronicConsent,\n Partner: {\n IsFeeWaived: isCostco ? costcoMembership.isFeeWaived : false,\n MembershipId: membershipNumber,\n MembershipStatus: isCostco ? costcoMembership.membershipStatus : '',\n MembershipTier: isCostco ? costcoMembership.membershipTier : '',\n MembershipType: isCostco ? costcoMembership.membershipTypeName : '',\n MembershipTypeDescription: isCostco ? costcoMembership.membershipType : '',\n PartnerGuid,\n },\n };\n\n return quoteRequestBase;\n }, [\n data,\n getQuotePurchaseDto,\n isCustomer,\n membershipNumber,\n parameters.agentId,\n PartnerGuid,\n store,\n newCustomer,\n ]);\n\n /**\n * List with pet quote with power-up, plan, etc.\n * @returns InsurancePetQuotes list\n */\n const getInsurancePetQuotes = useCallback(() => {\n const {\n partners,\n plans,\n } = store;\n const { address } = newCustomer;\n const { insuranceProduct, petQuoteResponseList } = data;\n const { stateAbbr, zipCode } = address;\n const { InsuranceModifiers, SelectedStateFactor } = insuranceProduct;\n const { isCostco } = partners;\n\n // powerups hidden and seleted id's\n const hideModifiers = InsuranceModifiers\n .filter((insuranceModifer) => insuranceModifer\n .InsuranceModifierTypeId === POWERUP_TYPE\n && !insuranceModifer.IsVisible\n && insuranceModifer.IsSelected)\n .map((insuranceModifer) => ({\n id: insuranceModifer.Id,\n isSelected: true,\n }));\n\n const COSTCO_MEMBER_DISCOUNT = 52;\n const costcoModifiers = isCostco\n ? InsuranceModifiers\n .filter((modifier) => modifier.PMSModifierId === COSTCO_MEMBER_DISCOUNT)\n .map((modifier) => ({\n id: modifier.Id,\n isSelected: true,\n })) : [];\n\n const insurancePetQuotes = [];\n\n petQuoteResponseList.forEach((petQuote) => {\n const { petQuoteId, cloudOrderId } = petQuote;\n const selectedValues = getSelectedValues(petQuoteId);\n\n if (!selectedValues.annualAmountPlan) {\n return;\n }\n\n // pet date of birth (own) default value\n const [m, d, y] = new Date().toLocaleDateString('en-US').split('/');\n const [annualDollar, annnualCents] =\n String(selectedValues.totalAnnual).split('.');\n const [monthlyDollar, monthlyCents] =\n String(selectedValues.totalMontly).split('.');\n const selectedModifiers = petQuote.modifiers || [];\n\n // powerup id's selected, hidden and powerups children\n let allModifiers = [...selectedModifiers, ...hideModifiers, ...costcoModifiers];\n const extraCarePack = InsuranceModifiers.find((item) => item\n .PMSModifierId === PowerUpsRelation.EXTRA_CARE_PACK_PSM_ID);\n\n if (extraCarePack) {\n const extraCarePackSelected = allModifiers\n .find((modifier) => modifier.id === extraCarePack.Id);\n\n const extraCarePackChildrens =\n extraCarePack.BundleInsuranceModifiers.map((child) => ({\n id: child.Id,\n isSelected: extraCarePackSelected\n && extraCarePackSelected.isSelected,\n }));\n\n allModifiers = [\n ...allModifiers,\n ...extraCarePackChildrens,\n ];\n }\n\n insurancePetQuotes.push({\n Id: petQuote.petQuoteId,\n PetName: petQuote.petName,\n IsCat: petQuote.petType === PetType.Cat.value,\n IsFemale: petQuote.gender === PetGender.Female.value,\n BreedName: petQuote.breedName,\n BreedId: petQuote.breedId,\n AgeString: petQuote.petAgeName,\n ActiveMilitary: false,\n DownPayment: 27.99,\n DownPaymentDscr: '1 month premium due today',\n AdminFee: 9.0,\n FullPayCCCharge: 10.0,\n Tax: 0.0,\n ActualDownPayment: 0.0,\n VersionId: 158,\n LobId: SelectedStateFactor.PMSLOBId,\n CompanyId: SelectedStateFactor.PMSCompanyId,\n DOB: '',\n ZipCode: zipCode,\n State: stateAbbr,\n AnnualPayPremium: selectedValues.annualAmountPlan,\n CloudOrderId: cloudOrderId || 0,\n GetAnnualPayAtRate: true,\n NeedsPaymentInfo: true,\n HasWaitingPeriodWaiver: false,\n DisableEndorsements: false,\n PayrollDeduct: false,\n SelectedDeductibleId: selectedValues.deductibleId,\n SelectedReimbursementId: selectedValues.reimbursementId,\n Plans: petQuote.Plans\n .map((plan) => ({\n ...plan,\n CoverageId: plan.Plan,\n })),\n Coverages: insuranceProduct.InsuranceProductCoverages,\n Deductibles: petQuote.Deductibles,\n Reimbursements: petQuote.Reimbursements,\n Modifiers: [\n {\n DisplayName: '',\n ModifierDetails: [\n {\n TitleText: 'Veterinary Exam Fees for Accident and Illness Visits',\n InputText: 'This benefit is to help cover exam or consultation fees associated with the diagnosis and treatment of your pet for an eligible illness or accident. It is not intended to cover exam fees related to routine, wellness, or preventative visits.',\n InformationText: 'This benefit is to help cover exam or consultation fees associated with the diagnosis and treatment of your pet for an eligible illness or accident. It is not intended to cover exam fees related to routine, wellness, or preventative visits.',\n IsSelected: false,\n PMSModifierId: 70422,\n QuestionType: 0,\n FeeAmount: 0.2148,\n IsVisible: true,\n },\n {\n TitleText: 'Take Home Prescriptions',\n InputText: 'Would you like to add Take Home Prescriptions to your policy?',\n InformationText: 'Boost your coverage!.',\n IsSelected: true,\n PMSModifierId: 70423,\n QuestionType: 0,\n FeeAmount: 0.199,\n IsVisible: false,\n },\n {\n TitleText: 'Rehabilitation',\n InputText: 'This benefit applies to covered accidents and illnesses and must be performed or supervised by a licensed veterinarian. Coverage includes underwater treadmill therapy, swimming, therapeutic exercises, range of motion exercises, gait analysis, laser therapy, cryotherapy, and heat therapy.',\n InformationText: 'This benefit applies to covered accidents and illnesses and must be performed or supervised by a licensed veterinarian. Coverage includes underwater treadmill therapy, swimming, therapeutic exercises, range of motion exercises, gait analysis, laser therapy, cryotherapy, and heat therapy.',\n IsSelected: true,\n PMSModifierId: 70424,\n QuestionType: 0,\n FeeAmount: 0.0349,\n IsVisible: false,\n },\n {\n TitleText: 'Holistic and Alternatives',\n InputText: 'Would you like to add Holistic and Alternative fees to your policy?',\n InformationText: 'Boost your coverage!',\n IsSelected: true,\n PMSModifierId: 70425,\n QuestionType: 0,\n FeeAmount: 0.0172,\n IsVisible: false,\n },\n {\n TitleText: 'Extra Care Pack',\n InputText: 'Optional coverage is available for final respects (up to $250 for cremation and burial), lost pet advertising/award, vacation cancellation due to pet emergency, boarding fees, pet theft or loss due to straying (up to $150), and third-party property damage liability (up to $10,000 per policy period and subject to a separate deductible).',\n InformationText: 'Optional coverage is available for final respects (up to $250 for cremation and burial), lost pet advertising/award, vacation cancellation due to pet emergency, boarding fees, pet theft or loss due to straying (up to $150), and third-party property damage liability (up to $10,000 per policy period and subject to a separate deductible).',\n IsSelected: false,\n PMSModifierId: 70427,\n QuestionType: 0,\n FeeAmount: 6.62,\n IsVisible: false,\n },\n ],\n ModifierType: 5,\n },\n {\n DisplayName: '',\n ModifierDetails: [\n {\n TitleText: '',\n InputText: 'Multiple-Pet Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: getMutiplePetId(),\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: true,\n },\n {\n TitleText: '',\n InputText: 'Multi Policy Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 20,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: false,\n },\n {\n TitleText: '',\n InputText: 'Group Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 16,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: false,\n },\n {\n TitleText: '',\n InputText: 'Corporate Partner / Group Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 5,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: true,\n },\n {\n TitleText: '',\n InputText: 'Annual Pay Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 14,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: true,\n },\n {\n TitleText: '',\n InputText: 'Online Referral Partner',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 43,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: true,\n },\n {\n TitleText: '',\n InputText: 'Select Vet Clinic Customer Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 44,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: true,\n },\n {\n TitleText: '',\n InputText: 'Vet Clinic Staff Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 45,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: true,\n },\n {\n TitleText: '',\n InputText: 'Affinity Groups Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 46,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: true,\n },\n {\n TitleText: '',\n InputText: 'IHC and Administrator Employee Discount',\n InformationText: '',\n IsSelected: false,\n PMSModifierId: 47,\n QuestionType: 0,\n FeeAmount: null,\n IsVisible: true,\n },\n ],\n ModifierType: 4,\n },\n ],\n Discounts: [],\n IsServiceDog: false,\n IsExamFees: false,\n IsSpayedNeutered: false,\n VetPast12Months: false,\n // pet tag color default value\n TagColorId: 55,\n // pet date of birth (own) default value\n DateOfBirthGuess: `${y - 1}-${m}-${d}T00:00:00`,\n InvalidCombinationsPlan: [\n {\n DeductibleId: 9,\n ReimbursementId: 1,\n PMSCoverageLimitId: 11,\n },\n {\n DeductibleId: 4,\n ReimbursementId: 1,\n PMSCoverageLimitId: 11,\n },\n {\n DeductibleId: 8,\n ReimbursementId: 1,\n PMSCoverageLimitId: 11,\n },\n {\n DeductibleId: 2,\n ReimbursementId: 1,\n PMSCoverageLimitId: 11,\n },\n ],\n SelectedPlanId: selectedValues.selectedPlan,\n SelectedPlan: plans[selectedValues.selectedPlanIndex]\n .name.toUpperCase(),\n MostPopularPlan: 'PREFERRED',\n MonthlyCost: selectedValues.monthlyAmountPlan,\n AnnualPremium: selectedValues.annualAmountPlan,\n PolicyNumber: null,\n DiamondPolicyId: 0,\n ImportantMessage: null,\n IsAnnual: !selectedValues.isMonthlyPlan,\n WebPreSelectedPlan: null,\n WebPreSelectedReimbursement:\n selectedValues.reimbursementPercentage.replace('%', ''),\n WebPreSelectedDeductible:\n selectedValues.deductibleQuantity.replace('$', ''),\n IsExamFeesAllowed: true,\n IsMilitaryAllowed: true,\n IsVetShelterHumaneDiscountAllowed: true,\n IsHumaneDiscountAllowed: true,\n TotalDue: selectedValues.totalAnnual,\n TotalDueDollars: parseInt(annualDollar, 10),\n TotalDueCents: parseInt(annnualCents || 0, 10),\n MonthlyCostDollars: parseInt(monthlyDollar, 10),\n MonthlyCostCents: parseInt(monthlyCents || 0, 10),\n SelectedDeductibleDscr: selectedValues.deductibleQuantity,\n SelectedReimbursementDscr: selectedValues.reimbursementPercentage,\n SelectedModifiers: allModifiers,\n });\n });\n\n return insurancePetQuotes;\n }, [data, getMutiplePetId, getSelectedValues, store, newCustomer]);\n\n const doPurchase = useCallback(({ isRetryPurchase = false } = {}) => {\n if (store.purchase.loading) {\n return;\n }\n\n if (useFSCLeads && newCustomer.email !== newCustomer.initialEmail) {\n dispatch(sendAllPetsFSCLead());\n dispatch(sendFSCQuoteLead());\n dispatch(sendFSCCustomerLead());\n dispatch(sendFSCPaymentLead());\n }\n\n const insurancePetQuotes = getInsurancePetQuotes();\n const multiPetDiscount = data?.petQuoteResponseList[0].InsuranceModifiers\n .find((modifier) => modifier.PMSModifierId === MULTIPET_DISCOUNT && modifier.IsSelected);\n\n if (insurancePetQuotes.length === 1) {\n const quoteRequestBase = getQuoteRequestBase({\n isRetryPurchase,\n insurancePetQuotes,\n includeMultiPetDiscount: !!multiPetDiscount,\n });\n\n dispatch(purchaseQuotes({\n body: quoteRequestBase,\n clientId: clientIdToSend,\n trackPurchaseComplete,\n }));\n } else {\n const multipleQuoteRequest = insurancePetQuotes.map((petQuote) => getQuoteRequestBase({\n isRetryPurchase,\n insurancePetQuotes: [petQuote],\n includeMultiPetDiscount: !!multiPetDiscount,\n }));\n\n dispatch(doPurchaseMultiple({\n quoteRequests: multipleQuoteRequest,\n clientId: clientIdToSend,\n }));\n }\n\n // GTM\n dataLayerBeginCheckout();\n }, [\n clientIdToSend,\n dispatch,\n getInsurancePetQuotes,\n getQuoteRequestBase,\n store.purchase.loading,\n trackPurchaseComplete,\n data,\n newCustomer,\n ]);\n\n return { doPurchase };\n};\n","/**\n * @Route\n * URL_YOUR_INFO = '/quoting/getquote/yourinfo/'\n *\n * @Component\n * src/components/quoting/yourInfo/YourInfoFooter.js\n *\n * @Description\n * A begin_checkout event represents when the user completes the process of\n * adding all pets, personal information, add a payment method and move\n * forward with processing the quote into a paid policy.\n * This event is fired when the user press the button \"Purchase\" before\n * Confirmation Page Loads.\n * The information comes from the Session Storage store.quoting key.\n * Be careful: It is a nested object that is difficult to process and prone to\n * errors.\n *\n * @Reference\n * https://developers.google.com/tag-manager/ecommerce-ga4?hl=es\n * #measure_a_checkout\n */\nimport { dataLayerEvent, pickupItemsFromSessionStorage } from './dataLayer';\nimport { currencyFormat, useGoogleTagManager } from '../util';\nimport { DATALAYER_EVENT_TYPE } from './constants';\nimport { BILLING_CYCLE_TYPE } from '../constants';\nimport { getBillingCycle, getCoupon, waitForQuotingData } from './utils';\n\nexport const dataLayerBeginCheckout = async () => {\n if (!useGoogleTagManager) {\n return;\n }\n\n // clear the previous ecommerce data object\n dataLayerEvent({ ecommerce: null });\n\n const items = await pickupItemsFromSessionStorage();\n\n const quoting = await waitForQuotingData();\n\n const billingCycle = quoting.isMonthlyPlan\n ? BILLING_CYCLE_TYPE.monthly\n : BILLING_CYCLE_TYPE.annualy;\n\n const summary = quoting.rateSummary.QuoteSummaries.find(\n (item) => item.BillingCycle === billingCycle\n && item.PaymentType === quoting.paymentMethod.paymentMethodType.value,\n ) || { MonthlyPremiumTotal: 0, TodaysTotal: 0 };\n\n const petsList = await items;\n\n const petListWithoutPetQuoteId = petsList.map((item) => {\n const itemCopy = { ...item };\n delete itemCopy.petQuoteId;\n return itemCopy;\n });\n\n const ecommerce = {\n billing_cycle: getBillingCycle(quoting),\n coupon: getCoupon(quoting),\n currency: 'USD',\n items: petListWithoutPetQuoteId,\n language: 'en',\n value: Number(currencyFormat({ value: summary.TodaysTotal })),\n };\n\n dataLayerEvent({\n ecommerce,\n event: DATALAYER_EVENT_TYPE.BEGIN_CHECKOUT,\n language: 'en',\n });\n};\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nimport LandingEn from './translations/landing.en.json';\nimport LandingGer from './translations/landing.ger.json';\nimport PurchaseResultEn from './translations/purchaseResult.en.json';\nimport QuotingEn from './translations/quoting.en.json';\nimport LoginEn from './translations/login.en.json';\nimport EnrrollmentEn from './translations/enrollment.en.json';\nimport CommonEn from './translations/common.en.json';\n\nconst resources = {\n en: {\n common: CommonEn,\n enrollment: EnrrollmentEn,\n landing: LandingEn,\n login: LoginEn,\n purchaseResult: PurchaseResultEn,\n quoting: QuotingEn,\n },\n ger: {\n landing: LandingGer,\n },\n};\n\ni18n\n .use(initReactI18next)\n .init({\n interpolation: {\n escapeValue: false,\n },\n lng: 'en',\n resources,\n });\n\nexport default i18n;\n","import { apiCall, apiCallMGMT } from '../util';\nimport {\n COSTCO_MEMBERSHIP_EDIT_CLICKED,\n COSTCO_MEMBERSHIP_ERROR_MESSAGE_SET,\n COSTCO_MEMBERSHIP_NUMBER_CHANGED,\n COSTCO_MEMBERSHIP_VALIDATED,\n COSTCO_MEMBERSHIP_VALIDATION_FAILED,\n COSTCO_MEMBERSHIP_VALIDATION_STARTED,\n LOADING_QUOTE_DATA_FINISH,\n NOTIFY_ME_EMAIL_VALUES_SAVED,\n PROCEED_WITHOUT_PARTNER_CHANGED,\n} from './types';\nimport {\n logError,\n planChangedByQuoteId,\n rateSummary,\n updateRateQuote,\n} from './quoting';\nimport { AFTER_RATE_TAG } from '../constants';\nimport { sendAllPetsFSCLead } from './leads';\nimport { CUSTOM_PLAN_ID } from '../components/quoting/planSection/constants';\nimport i18n from '../i18n';\nimport { getFeatureFlagFromStorage } from '../utils/featureFlags.utils';\n\nexport function changeCostcoMembershipNumber(membershipNumber) {\n return {\n membershipNumber,\n type: COSTCO_MEMBERSHIP_NUMBER_CHANGED,\n };\n}\n\nconst EXEC_MEMBERSHIP = 'EXEC';\nconst PAYMENT_SUMMARY = 'paymentSummary';\nconst MESSAGE_FIELD_NAME = 'MessageMembershipValidated';\nconst EXECUTIVE_MESSAGE_FIELD_NAME = 'MessageMembershipValidatedExecutive';\nconst EXECUTIVE_BENEFIT_LABEL_FIELD = 'ExecuteMemberBenefitDisplay';\nconst EXECUTIVE_BENEFIT_VALUE_FIELD = 'ExecuteMemberBenefitValue';\nconst EXECUTIVE_BENEFIT_FIELDS = [\n EXECUTIVE_BENEFIT_LABEL_FIELD,\n EXECUTIVE_BENEFIT_VALUE_FIELD,\n];\nconst membershipTypeConfig = {\n EXEC: 2,\n REG: 1,\n};\n\nexport function validateCostcoMembership({\n customerZipCode,\n membershipNumber,\n rateSummaryBody,\n waivableFee,\n useFeeWaived = false,\n useFeeWaivedBackend = false,\n}) {\n return async (dispatch, getState) => {\n try {\n dispatch({\n type: COSTCO_MEMBERSHIP_VALIDATION_STARTED,\n });\n const urlMembership = `api/costco/validatemember/${membershipNumber}`;\n const request = await apiCallMGMT(urlMembership);\n const costcoResponse = await request.json();\n\n if (costcoResponse.valid) {\n if (!costcoResponse.membershipTier\n || !costcoResponse.membershipTierDescription) {\n dispatch(logError({\n action: 'validateCostcoMembership',\n description: 'Missing membership data',\n endpoint: urlMembership,\n response: costcoResponse,\n statusCode: request.status,\n }));\n dispatch({\n error: i18n.t('enrollment:costco.reenter'),\n type: COSTCO_MEMBERSHIP_VALIDATION_FAILED,\n });\n return;\n }\n const {\n quoting: {\n data: rate,\n partners: { data },\n openQuoteGuid,\n },\n } = getState();\n const { CustomFields } = data;\n const { stateAbrv } = rate || {};\n const isExecutive = costcoResponse.membershipTier === EXEC_MEMBERSHIP;\n let isFeeWaived = false;\n let message = '';\n let fields = {};\n\n if (useFeeWaivedBackend) {\n const { QuoteSiteD2CPurchaseV1T174566 } = getFeatureFlagFromStorage();\n const service = QuoteSiteD2CPurchaseV1T174566\n ? 'purchase' : 'api';\n const membershipType = isExecutive ? membershipTypeConfig.EXEC\n : membershipTypeConfig.REG;\n\n const urlConfig = `${service}/Costco/MembershipConfiguration/${\n stateAbrv}/${membershipType}`;\n\n let configRequest = null;\n let configPayload = null;\n\n try {\n configRequest = await apiCall(urlConfig);\n configPayload = await configRequest.json();\n\n if (configPayload.IsValid) {\n isFeeWaived = configPayload.Data.IsEnrollmentFeeWaived;\n message = configPayload.Data.SuccessfulValidationMessage;\n if (isFeeWaived) {\n // Take enrollment fee discount\n const customFields = CustomFields\n .filter((field) => EXECUTIVE_BENEFIT_FIELDS\n .includes(field.Name));\n customFields.forEach((field) => {\n fields[field.Name] = field.Content;\n });\n }\n fields.DetailMessageTitle = configPayload.Data.ExclusiveTitle;\n fields.DetailMessageContent =\n configPayload.Data.Benefits.join(' ');\n } else {\n dispatch(logError({\n action: 'validateCostcoMembership',\n description: configPayload.Message\n || 'Error getting costco configuration',\n endpoint: urlConfig,\n response: configPayload,\n statusCode: configRequest.status,\n }));\n }\n } catch (exception) {\n dispatch(logError({\n action: 'validateCostcoMembership',\n description: exception.toString(),\n endpoint: urlConfig,\n exception,\n response: configPayload,\n statusCode: configRequest?.status,\n }));\n }\n } else {\n let stateIsNoFeeWaived = false;\n if (!useFeeWaived) {\n // There are states where we are not allowed to give enrollment\n // fee waiver to executive members.\n const STATES_NO_FEE_WAIVED = ['MI', 'RI'];\n stateIsNoFeeWaived = STATES_NO_FEE_WAIVED.includes(stateAbrv);\n }\n\n let messageName = MESSAGE_FIELD_NAME;\n isFeeWaived =\n waivableFee > 0 && isExecutive && !stateIsNoFeeWaived;\n fields = {};\n\n if (isFeeWaived) {\n // Take enrollment fee discount and texts\n const customFields = CustomFields\n .filter((field) => field.Section === PAYMENT_SUMMARY);\n customFields.forEach((field) => {\n fields[field.Name] = field.Content;\n });\n messageName = EXECUTIVE_MESSAGE_FIELD_NAME;\n }\n\n const messageField = CustomFields\n .find((field) => field.Name === messageName);\n message = messageField ? messageField.Content : '';\n }\n\n // this variable handle 3 different levels\n // GoldStar - REG\n // Business - REG\n // Executive (GoldStar or Business)\n const membershipTypeName = isExecutive\n ? costcoResponse.membershipTierDescription\n : costcoResponse.membershipTypeDescription.replace(/\\s/, '');\n\n // this variable only is the Type straight (Gold Star / Business)\n const membershipType = costcoResponse.membershipTypeDescription;\n\n dispatch({\n ...fields,\n customerZipCode,\n isFeeWaived,\n membershipStatus: costcoResponse.membershipStatus,\n membershipTier: costcoResponse.membershipTierDescription,\n membershipType,\n membershipTypeName,\n message,\n type: COSTCO_MEMBERSHIP_VALIDATED,\n waivableFee,\n });\n\n dispatch(rateSummary({\n ...rateSummaryBody,\n IsOpenQuote: !!openQuoteGuid,\n Partner: {\n ...rateSummaryBody.Partner,\n IsFeeWaived: isFeeWaived,\n MembershipType: membershipTypeName,\n MembershipTypeDescription: membershipType,\n },\n QuoteGuid: openQuoteGuid || '',\n }));\n } else {\n dispatch({\n error: costcoResponse.errorMessage,\n type: COSTCO_MEMBERSHIP_VALIDATION_FAILED,\n });\n }\n } catch (_) {\n dispatch({\n error: 'Could not validate member ID, please try again',\n type: COSTCO_MEMBERSHIP_VALIDATION_FAILED,\n });\n }\n };\n}\n\nexport function costcoMembershipEditClicked() {\n return {\n type: COSTCO_MEMBERSHIP_EDIT_CLICKED,\n };\n}\n\nexport function costcoMembershipSetErrorMessage(errorMessage) {\n return {\n error: errorMessage,\n type: COSTCO_MEMBERSHIP_ERROR_MESSAGE_SET,\n };\n}\n\nexport function changeProceedWithoutCostcoMembership({\n diamondClientId,\n effectiveDateCustom,\n eMail,\n employerName,\n nopCommerceClientId,\n parameters,\n petQuoteList,\n quoteId,\n}) {\n return async (dispatch, getState) => {\n await dispatch({ type: PROCEED_WITHOUT_PARTNER_CHANGED });\n // Move to custom plan selection all the quotes\n // to avoid mismatching configuration plans\n const { quoting } = getState();\n quoting.quoteSelectedValues.forEach(async (quote) => {\n await dispatch(planChangedByQuoteId({\n planAmount: quote.selectedPlanAmount,\n planId: quote.selectedPlan,\n planPackagedId: CUSTOM_PLAN_ID,\n quoteId: quote.quoteId,\n }));\n });\n\n await dispatch(updateRateQuote({\n diamondClientId,\n effectiveDateCustom,\n eMail,\n employerName,\n nopCommerceClientId,\n parameters,\n petQuoteList,\n quoteId,\n showLoading: true,\n tag: AFTER_RATE_TAG.removePartner,\n }));\n // Remove promocode from FSC\n dispatch(sendAllPetsFSCLead(true));\n };\n}\n\nexport function saveNotifyMeValuesEmail({\n email,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex,\n zipcode,\n}) {\n return {\n type: NOTIFY_ME_EMAIL_VALUES_SAVED,\n valuesEmail: {\n email,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex,\n zipcode,\n },\n };\n}\n\nexport function hideLoading() {\n return { type: LOADING_QUOTE_DATA_FINISH };\n}\n","export default __webpack_public_path__ + \"static/media/close-gray.f983ec60.svg\";","import React, { useCallback, useState } from 'react';\nimport FocusTrap from 'focus-trap-react';\nimport closeIcon from '../../assets/close-gray.svg';\nimport './ModalContainer.css';\nimport { sleep } from '../../util';\n\nconst ModalContainer = ({\n ariaTitle = '',\n cancelable = true,\n classCloseIcon,\n disableClickOutside,\n displayTitleDivider,\n handleOutClick = () => { },\n idPrefix = '',\n idTitle = '',\n isMultiModal,\n show,\n keepInDOM = false,\n title,\n ...rest\n}) => {\n const [bottom, setBottom] = useState(isMultiModal ? '-100vh' : '0');\n const modalDisappear = 'modalDisappear';\n const modalAppear = 'modalAppear';\n const [animationName, setAnimationName] = useState(modalAppear);\n\n const idOuter = `${idPrefix}modalOuter`;\n const dialogId = `${idPrefix}alert_dialog`;\n const closeId = `${idPrefix}closeModal`;\n const containerId = `${idPrefix}modalContainer`;\n\n const resetModalState = useCallback(() => {\n setAnimationName(modalAppear);\n handleOutClick();\n }, [handleOutClick]);\n\n async function handleCloseModal(event) {\n if (disableClickOutside && event.target.id === idOuter) {\n return;\n }\n\n setAnimationName(modalDisappear);\n\n await sleep(400);\n resetModalState();\n }\n\n function handleAnimationEnd() {\n if (animationName === modalDisappear) {\n resetModalState();\n } else {\n setBottom('0');\n }\n }\n\n if (show || keepInDOM) {\n return (\n \n \n\n {/* Focus trap component always needs valid children/content */}\n {show ? (\n \n \n \n \n {title}\n \n\n {displayTitleDivider\n && }\n \n\n <>\n {cancelable\n && (\n \n \n \n )}\n \n\n {rest.children}\n \n \n ) : null}\n \n );\n }\n\n // eventually this return null case should disappear, once all of the\n // modal usages be migrated.\n return null;\n};\n\nexport default ModalContainer;\n","import React, { useRef, useCallback, useContext } from 'react';\nimport { forceFocusElement } from '../util';\n\nconst SavedElementContext = React.createContext();\n\nexport const SavedElementProvider = (({ children }) => {\n const refElement = useRef();\n const refId = useRef();\n\n const clean = useCallback(() => {\n refElement.current = null;\n refId.current = null;\n }, []);\n\n const saveId = useCallback((id) => {\n refId.current = id;\n }, []);\n\n const saveElement = useCallback((element) => {\n if (element) {\n refElement.current = element;\n saveId(element.id);\n }\n }, [saveId]);\n\n const saveElementById = useCallback((id) => {\n const element = document.getElementById(id);\n saveElement(element);\n }, [saveElement]);\n\n const goToSavedElement = useCallback(() => {\n if (!refElement.current && refId.current) {\n forceFocusElement(refId.current);\n } else if (refElement.current && refElement.current.nodeName !== 'BODY') {\n refElement.current.focus();\n }\n }, []);\n\n const goToSavedElementAndForgot = useCallback(() => {\n goToSavedElement();\n clean();\n }, [goToSavedElement, clean]);\n\n return (\n \n {children}\n \n );\n});\n\nexport const useSavedElement = () => useContext(SavedElementContext);\n","import React from 'react';\nimport Lottie from 'react-lottie';\nimport loadingSpinner from '../../assets/loading-spinner.json';\n\nconst FigoLottie = ({\n animationData = loadingSpinner,\n ariaLabel = '',\n ariaRole = 'presentation',\n height = 30,\n loop = true,\n width = 30,\n}) => {\n const defaultOptions = {\n animationData,\n autoplay: true,\n loop,\n rendererSettings: {\n preserveAspectRatio: 'xMidYMid slice',\n },\n };\n\n return (\n \n );\n};\n\nexport default FigoLottie;\n","import React, { useEffect } from 'react';\nimport ModalContainer from './ModalContainer';\nimport loadingBadge from '../../assets/badge-loading.json';\nimport { useSavedElement } from '../../hooks/useSavedElement';\nimport FigoLottie from './FigoLottie';\nimport './FigoLoadingOverlay.css';\n\nconst FigoLoadingOverlay = ({ visible }) => {\n const { goToSavedElementAndForgot } = useSavedElement();\n\n useEffect(() => () => {\n if (visible) {\n goToSavedElementAndForgot();\n }\n }, [visible, goToSavedElementAndForgot]);\n\n return (\n \n
\n \n
\n
\n );\n};\n\nexport default FigoLoadingOverlay;\n","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n} from 'react';\nimport FigoLoadingOverlay\nfrom '../components/common/FigoLoadingOverlay';\nimport { apiCall } from '../util';\nimport { storeFeatureFlags } from '../utils/featureFlags.utils';\n\nconst FeatureFlagContext = createContext();\n\nconst FEATURE_FLAGS_LOADED = 'FEATURE_FLAGS_LOADED';\nconst FEATURE_FLAGS_FAILED = 'FEATURE_FLAGS_FAILED';\nconst FEATURE_FLAGS_REQUESTED = 'FEATURE_FLAGS_REQUESTED';\n\nconst INITIAL_STATE = {\n error: '',\n flags: {},\n loading: false,\n};\n\nfunction reducer(state = INITIAL_STATE, action) {\n switch (action.type) {\n case FEATURE_FLAGS_FAILED:\n return {\n ...state,\n error: '',\n flags: {},\n loading: false,\n };\n case FEATURE_FLAGS_LOADED:\n return {\n ...state,\n error: '',\n flags: action.payload,\n loading: false,\n };\n case FEATURE_FLAGS_REQUESTED:\n return {\n ...state,\n error: action.payload,\n loading: true,\n };\n default:\n return state;\n }\n}\n\nexport const FeatureFlagProvider = ({ children }) => {\n const [state, dispatch] = useReducer(reducer, INITIAL_STATE);\n const {\n flags,\n loading,\n } = state;\n\n const getFeatureFlags = useCallback(async () => {\n try {\n dispatch({ type: FEATURE_FLAGS_REQUESTED });\n\n const response = await apiCall('customer/FeatureFlag');\n const payload = await response.json();\n const d2cFlags = Object.entries(payload)\n .filter(([key]) => key.startsWith('QuoteSites')\n || key.startsWith('QuoteSiteD2C'))\n .reduce((pre, [key, value]) => ({ ...pre, [key]: value }), {});\n dispatch({ payload: d2cFlags, type: FEATURE_FLAGS_LOADED });\n storeFeatureFlags(d2cFlags);\n } catch (error) {\n dispatch({ payload: error, type: FEATURE_FLAGS_FAILED });\n }\n }, [dispatch]);\n\n useEffect(() => {\n getFeatureFlags();\n }, [getFeatureFlags]);\n\n return (\n \n {loading ? : null}\n {children}\n \n );\n};\n\nconst useFeatureFlag = (featureKey) => {\n const context = useContext(FeatureFlagContext);\n if (!context) {\n throw Error('Feature Flag Context not found');\n }\n\n const featureFlags = context;\n const featureFlag = useMemo(\n () => !!featureFlags[featureKey],\n [featureFlags, featureKey],\n );\n return featureFlag;\n};\n\nconst useFeeWaived = () => useFeatureFlag('QuoteSiteD2CFeeWaived');\nconst useFeeWaivedBackend =\n () => useFeatureFlag('QuoteSiteD2CFeeWaivedBackend');\nconst useRedesign =\n () => useFeatureFlag('QuoteSiteD2CRedesignE156301');\nconst useQuoteSiteD2CPurchaseV1T159710 =\n () => useFeatureFlag('QuoteSiteD2CPurchaseV1T159710');\n\nexport {\n useFeeWaived,\n useFeeWaivedBackend,\n useQuoteSiteD2CPurchaseV1T159710,\n useRedesign,\n};\n","import { useCallback, useMemo } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport { rateSummary } from '../actions';\nimport { hideLoading, validateCostcoMembership } from '../actions/partners';\nimport { LOADING_QUOTE_DATA } from '../actions/types';\nimport { PetType } from '../constants';\nimport { useFeeWaived, useFeeWaivedBackend } from './useFeatureFlag';\n\nconst useRateSummary = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const dispatch = useDispatch();\n const isFeeWaived = useFeeWaived();\n const isFeeWaivedBackend = useFeeWaivedBackend();\n const {\n customerZipCode,\n data,\n effectiveDateCustom,\n parameters,\n partners,\n plans,\n quoteSelectedValues,\n sessionInformation: { nopCommerceUser, userEmail },\n openQuoteGuid,\n } = store;\n\n const getSelectedRateBody = useMemo(() => {\n if (!data) {\n return {};\n }\n\n const {\n effectiveDate,\n groupCode,\n groupCodeDscr,\n petQuoteResponseList,\n } = data;\n\n const {\n costcoMembership,\n isCostco,\n partnerId,\n petPickupDate,\n } = partners;\n\n const petQuotes = [];\n\n petQuoteResponseList.forEach((quote) => {\n const selectedValues = quoteSelectedValues.find(\n (item) => item.quoteId === quote.petQuoteId,\n );\n\n if (!selectedValues) {\n return;\n }\n\n const selectedPackagePlan = quote.PrePackagedPlans\n .find((item) => item.Id === selectedValues.selectedPlanPackaged);\n\n let reimbursement = selectedValues.reimbursementId;\n let deductible = selectedValues.deductibleId;\n\n if (selectedPackagePlan) {\n reimbursement = selectedPackagePlan.ReimbursementId;\n deductible = selectedPackagePlan.DeductibleId;\n }\n\n const selectedPlanByIndex = plans[selectedValues.selectedPlanIndex];\n\n petQuotes.push({\n deductible,\n Id: quote.petQuoteId,\n Modifiers: quote.modifiers || [],\n PetAge: quote.petAgeName,\n PetBreed: quote.breedName,\n PetBreedId: quote.breedId,\n PetName: quote.petName,\n PetSex: quote.genderName,\n PetType: quote.petType === PetType.Dog.value\n ? PetType.Dog.name : PetType.Cat.name,\n plan: selectedPlanByIndex.id,\n reimbursement,\n selectedPlanIndex: selectedValues.selectedPlanIndex,\n });\n });\n\n const body = {\n DiamondClientId: nopCommerceUser.DiamonClientdId,\n EffectiveDate: effectiveDate,\n eMail: userEmail || parameters.email,\n employerName: '',\n GroupCode: groupCode,\n GroupCodeDscr: groupCodeDscr,\n IsEb: false,\n IsOpenQuote: !!openQuoteGuid,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n Partner: {\n IsFeeWaived: costcoMembership.isFeeWaived,\n MembershipId: isCostco ? costcoMembership.membershipNumber : '',\n MembershipType: isCostco ? costcoMembership.membershipTypeName : '',\n MembershipTypeDescription: isCostco\n ? costcoMembership.membershipType : '',\n PartnerGuid: partnerId || '',\n },\n PartnerGuid: partnerId || '',\n petQuotes,\n PickupDate: petPickupDate,\n QuoteGuid: openQuoteGuid || '',\n quoteId: 1,\n TestEffectiveDate: effectiveDateCustom,\n ZipCode: customerZipCode,\n };\n\n return body;\n }, [\n data,\n effectiveDateCustom,\n nopCommerceUser.DiamonClientdId,\n nopCommerceUser.CustomerNopCommerceId,\n userEmail,\n parameters.email,\n customerZipCode,\n quoteSelectedValues,\n partners,\n plans,\n openQuoteGuid,\n ]);\n\n const getSelectedRate = useCallback(async () => {\n const {\n costcoMembership: {\n membershipNumber,\n waivableFee,\n zipCode,\n },\n } = partners;\n\n if (membershipNumber && zipCode !== customerZipCode) {\n dispatch({ type: LOADING_QUOTE_DATA });\n\n await dispatch(validateCostcoMembership({\n customerZipCode,\n membershipNumber,\n rateSummaryBody: getSelectedRateBody,\n useFeeWaived: isFeeWaived,\n useFeeWaivedBackend: isFeeWaivedBackend,\n waivableFee,\n }));\n } else {\n await dispatch(rateSummary(getSelectedRateBody));\n }\n\n dispatch(hideLoading());\n }, [\n dispatch,\n getSelectedRateBody,\n partners,\n customerZipCode,\n isFeeWaivedBackend,\n isFeeWaived,\n ]);\n\n return { getSelectedRate, getSelectedRateBody };\n};\n\nexport { useRateSummary };\n","import { useCallback, useEffect, useState } from 'react';\n\nconst TABLET_WIDTH = 1200;\nconst MOBILE_WIDTH = 568;\n\nconst useResponsive = () => {\n const [isTablet, setIsTablet] = useState(window.outerWidth > MOBILE_WIDTH\n && window.outerWidth <= TABLET_WIDTH);\n const [isMobile, setIsMobile] = useState(window.outerWidth <= MOBILE_WIDTH);\n\n const handleResize = useCallback(() => {\n setIsTablet(window.outerWidth > MOBILE_WIDTH\n && window.outerWidth <= TABLET_WIDTH);\n setIsMobile(window.outerWidth <= MOBILE_WIDTH);\n }, []);\n\n useEffect(() => {\n handleResize();\n\n window.addEventListener('resize',\n handleResize);\n\n return () => {\n window.removeEventListener('resize',\n handleResize);\n };\n }, [handleResize]);\n\n return ({\n isMobile,\n isTablet,\n });\n};\n\nexport { useResponsive };\n","import { useTranslation } from 'react-i18next';\nimport i18n from 'i18next';\n\nconst AvailableLanguages = {\n en: 'en',\n ger: 'ger',\n};\n\nconst changeLanguage = (lenguage = AvailableLanguages.en) => {\n i18n.changeLanguage(lenguage);\n};\n\nconst useTranslations = (translationFileName = '', keyPrefixValue = '') => {\n const keyPrefix = keyPrefixValue ? { keyPrefix: keyPrefixValue } : '';\n const { t } = useTranslation(translationFileName, keyPrefix);\n\n return {\n AvailableLanguages,\n changeLanguage,\n t,\n };\n};\n\nexport { useTranslations };\n","import { useCallback, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport {\n BrowserAuthError,\n InteractionRequiredAuthError,\n InteractionStatus,\n} from '@azure/msal-browser';\nimport { useMsal } from '@azure/msal-react';\nimport { b2cPolicies, msalConfig } from '../authConfigB2C';\nimport {\n logError,\n onLoginB2CROPC,\n onLoginB2CROPCFailed,\n onLoginDiamondUser,\n} from '../actions';\nimport { acquireTokenByPassword, delay, getB2CRedirectUrl } from '../util';\nimport { LANDING_URL, URL_ROOT_QUOTE, URL_YOUR_INFO } from '../routes';\n\nconst USERNAME_OR_PASSWORD_ERROR = 'AADB2C90225';\n\nconst useB2CInfo = () => {\n const { accounts, inProgress, instance } = useMsal();\n const [b2cToken, setB2cToken] = useState();\n const dispatch = useDispatch();\n const history = useHistory();\n const [ropcError, setRopcError] = useState('');\n const { t } = useTranslation('login');\n\n const loginB2CROPC = useCallback(async ({ username, password }) => {\n dispatch(onLoginB2CROPC());\n const response = await acquireTokenByPassword({ password, username });\n if (response.error) {\n dispatch(onLoginB2CROPCFailed());\n if (response.error_description.includes(USERNAME_OR_PASSWORD_ERROR)) {\n setRopcError(t('invalidUsernamePassword'));\n return;\n }\n dispatch(logError({\n action: 'loginB2CROPC',\n description: response.error_description,\n endpoint: '',\n response,\n statusCode: '',\n }));\n setRopcError(t('unableToAccess'));\n } else {\n dispatch(onLoginDiamondUser({\n b2cToken: response.access_token || response.id_token,\n email: username,\n }));\n }\n }, [dispatch, t]);\n\n const loginB2CSilent = useCallback(({\n existingEmail = '',\n }) => {\n if (inProgress === InteractionStatus.None && accounts.length > 0) {\n const tokenRequest = {\n account: accounts[0],\n loginHint: existingEmail,\n prompt: 'login',\n };\n\n instance.acquireTokenSilent(tokenRequest).then((tokenResponse) => {\n setB2cToken(tokenResponse.accessToken\n || tokenResponse.idToken);\n instance.setActiveAccount(tokenResponse.account);\n\n dispatch(onLoginDiamondUser({\n b2cToken: tokenResponse.accessToken\n || tokenResponse.idToken,\n email: existingEmail,\n }));\n }).catch(async (e) => {\n if (e instanceof InteractionRequiredAuthError) {\n await instance.acquireTokenRedirect(tokenRequest);\n }\n\n throw e;\n });\n }\n }, [inProgress, accounts, instance, dispatch]);\n\n const loginB2C = useCallback(({\n continueWithoutLogin = () => { },\n existingEmail = '',\n urlState = '',\n }) => {\n let redirectUri = b2cPolicies.authorities.signUpSignIn.redirectUrl;\n const validUrls = [LANDING_URL, URL_ROOT_QUOTE, URL_YOUR_INFO];\n const invalidUrl = validUrls\n .some((url) => window.location.href.toLowerCase().includes(url));\n\n if (invalidUrl) {\n redirectUri = `${getB2CRedirectUrl()}/getQuote`;\n }\n\n const tokenRequest = {\n account: accounts[0],\n loginHint: existingEmail,\n prompt: 'login',\n redirectUri,\n state: urlState,\n };\n\n if (inProgress === InteractionStatus.None) {\n instance.acquireTokenPopup(tokenRequest)\n .then(async (tokenResponse) => {\n setB2cToken(tokenResponse.accessToken\n || tokenResponse.idToken);\n instance.setActiveAccount(tokenResponse.account);\n\n dispatch(onLoginDiamondUser({\n b2cToken: tokenResponse.accessToken\n || tokenResponse.idToken,\n email: existingEmail,\n }));\n await delay(3000);\n history.push(urlState);\n })\n .catch((error) => {\n // On Close Popup\n if (error instanceof BrowserAuthError) {\n if (continueWithoutLogin) {\n continueWithoutLogin();\n }\n }\n\n if (error instanceof InteractionRequiredAuthError) {\n instance\n .acquireTokenPopup(tokenRequest)\n .then(async (tokenResponse) => {\n setB2cToken(tokenResponse.accessToken\n || tokenResponse.idToken);\n instance.setActiveAccount(tokenResponse.account);\n\n dispatch(onLoginDiamondUser({\n b2cToken: tokenResponse.accessToken\n || tokenResponse.idToken,\n email: existingEmail,\n }));\n await delay(3000);\n history.push(urlState);\n });\n }\n });\n }\n }, [accounts, dispatch, history, inProgress, instance]);\n\n const logoutB2C = useCallback(({ logoutUrl = '' }) => {\n const logoutRequest = {\n account: instance.getActiveAccount(),\n authority: msalConfig.auth.authority,\n postLogoutRedirectUri: logoutUrl || msalConfig.auth.postLogoutRedirectUri,\n };\n\n instance.logoutRedirect(logoutRequest);\n }, [instance]);\n\n return {\n b2cToken,\n loginB2C,\n loginB2CROPC,\n loginB2CSilent,\n logoutB2C,\n ropcError,\n setRopcError,\n };\n};\n\nexport { useB2CInfo };\n","import { useEffect } from 'react';\n\nconst gtmAuth = process.env.REACT_APP_GTM_AUTH\n ? `>m_auth=${process.env.REACT_APP_GTM_AUTH}`\n : '';\nconst gtmPreview = process.env.REACT_APP_GTM_ENV\n ? `>m_preview=${process.env.REACT_APP_GTM_ENV}`\n : '';\nconst gtmCookies = gtmPreview ? '>m_cookies_win=x' : '';\n\n/** Injects GTM scripts and noscript for GTM using environments */\nconst useGTM = () => {\n useEffect(() => {\n const scriptTemplate = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({\n 'gtm.start':new Date().getTime(),event:'gtm.js'});\n var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';\n j.async=true;\n j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl+\n '${gtmAuth}${gtmPreview}${gtmCookies}';\n f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','GTM-KKLXW7');`;\n const noscriptTemplate = ``;\n\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptTemplate;\n\n const noscriptEl = document.createElement('noscript');\n noscriptEl.innerHTML = noscriptTemplate;\n\n document.head.insertBefore(scriptEl, document.head.firstChild);\n document.body.insertBefore(noscriptEl, document.body.firstChild);\n\n return () => {\n document.head.removeChild(scriptEl);\n document.body.removeChild(noscriptEl);\n };\n }, []);\n};\n\nexport { useGTM };\n","import { useEffect, useState } from 'react';\nimport {\n FEATURE_FLAGS_LOADED_EVENT_NAME,\n featureFlagsLoadedValidation,\n} from '../utils/featureFlags.utils';\n\nconst useFeatureFlagLoadedValidation = () => {\n const [featureFlagsLoaded, setFeatureFlagsLoaded] = useState(false);\n\n const onFeatureFlagsLoaded = () => {\n setFeatureFlagsLoaded(featureFlagsLoadedValidation());\n };\n\n useEffect(() => {\n window.addEventListener(\n FEATURE_FLAGS_LOADED_EVENT_NAME,\n onFeatureFlagsLoaded,\n );\n\n return () => window.removeEventListener(\n FEATURE_FLAGS_LOADED_EVENT_NAME,\n onFeatureFlagsLoaded,\n true,\n );\n }, []);\n\n return { featureFlagsLoaded };\n};\n\nexport { useFeatureFlagLoadedValidation };\n","export default __webpack_public_path__ + \"static/media/error.cb209d75.svg\";","export default __webpack_public_path__ + \"static/media/done-success.b2bfb5d7.svg\";","export default __webpack_public_path__ + \"static/media/info-i.3e8f31da.svg\";","import React, { useMemo } from 'react';\nimport errorIcon from '../../assets/error.svg';\nimport succesIcon from '../../assets/done-success.svg';\nimport infoIcon from '../../assets/info-i.svg';\nimport './FigoInputMessage.css';\n\nconst TYPE = {\n error: 'error',\n info: 'info',\n success: 'success',\n};\n\nconst FigoInputMessage = ({\n id = '',\n message = '',\n type = TYPE.error,\n}) => {\n const className = useMemo(() => `Figo-input-message-${type\n || 'error'}`, [type]);\n const icon = useMemo(() => {\n switch (type) {\n case TYPE.info:\n return infoIcon;\n case TYPE.success:\n return succesIcon;\n case TYPE.error:\n default:\n return errorIcon;\n }\n }, [type]);\n return (\n
\n {message ? (\n <>\n \"\"\n\n {message}\n \n ) : null}\n
\n );\n};\n\nexport { FigoInputMessage };\n","export default __webpack_public_path__ + \"static/media/lock-square-closed.d61d09d4.svg\";","import React, { forwardRef, useMemo } from 'react';\nimport './FigoInput.css';\nimport { FigoInputMessage } from './FigoInputMessage';\nimport lockIcon from '../../assets/lock-square-closed.svg';\n\nconst SIZES = {\n large: 'large',\n small: 'small',\n xl: 'xl',\n};\n\nconst FigoInput = forwardRef(({\n autocomplete = false,\n containerClassName = '',\n disabled = false,\n error = false,\n hint = '',\n id = '',\n label = '',\n message = '',\n messageType = '',\n name = '',\n onBlur = () => { },\n onChange = () => { },\n onFocus = () => { },\n placeholder = '',\n readOnly = false,\n rightIcon = null,\n size = SIZES.large,\n type = 'text',\n value = '',\n ...inputProps\n}, ref) => {\n const sizeClassName = useMemo(() => `Figo-input-${size}`, [size]);\n\n const rightIconDisplay = useMemo(() => {\n if (rightIcon) {\n return (\n
\n {rightIcon}\n
\n );\n }\n if (readOnly) {\n return \"\";\n }\n return null;\n }, [readOnly, rightIcon]);\n\n const describedbyId = `${id}-message`;\n\n return (\n
\n \n\n {hint ? (\n

\n {hint}\n

\n ) : null}\n\n \n
\n );\n});\n\nexport { FigoInput };\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport {\n NEW_CUSTOMER_CITY_CHANGED,\n NEW_CUSTOMER_LAST_NAME_CHANGED,\n NEW_CUSTOMER_NAME_CHANGED,\n NEW_CUSTOMER_PHONE_CHANGED,\n NEW_CUSTOMER_SECOND_PARENT_LAST_NAME_CHANGED,\n NEW_CUSTOMER_SECOND_PARENT_NAME_CHANGED,\n NEW_CUSTOMER_SECOND_PARENT_NUMBER_CHANGED,\n NEW_CUSTOMER_STATE_CHANGED,\n NEW_CUSTOMER_STREET_CHANGED,\n NEW_CUSTOMER_STREET2_CHANGED,\n NEW_CUSTOMER_ZIP_CODE_CHANGED,\n NEW_CUSTOMER_EMAIL_ERROR_CHANGED,\n NEW_CUSTOMER_EMAIL_CHANGED,\n} from '../../../actions/types';\nimport {\n loadAddressByZipCode,\n newCustomerChanged,\n saveQuote,\n setCurrentQuoteStep,\n toggleSecondPetParentForm,\n toggleYourInfoScrollToTop,\n validateCustomerExists,\n validateCustomerExistsByEmail,\n validateDiamondUser,\n} from '../../../actions';\nimport Shimmer from '../../common/Shimmer';\nimport './PetParentInfo.css';\nimport {\n createEffectiveDate,\n isValidDiamondStreet,\n removeEmojis,\n testContainNumber,\n testOnlyNumber,\n useFSCLeads,\n useROPC,\n useSecondaryPetParent,\n validateEmail,\n} from '../../../util';\nimport {\n QuotingSteps,\n SAVE_QUOTE_TYPE,\n TEN_DIGIT_NUMBER,\n} from '../../../constants';\nimport plusIcon from '../../../assets/plus-circle-icon.svg';\nimport {\n useB2CInfo,\n usePrevious,\n useTranslations,\n} from '../../../hooks';\nimport { URL_YOUR_INFO } from '../../../routes';\nimport { getStateAbbreviation } from '../../../utils/zipcode';\nimport { FigoInput } from '../../common/FigoInput';\n\nconst TYPES = {\n newCustomerEmail: NEW_CUSTOMER_EMAIL_CHANGED,\n petParenStreetAddress: NEW_CUSTOMER_STREET_CHANGED,\n petParenStreetAddress2: NEW_CUSTOMER_STREET2_CHANGED,\n petParentCity: NEW_CUSTOMER_CITY_CHANGED,\n petParentFirstName: NEW_CUSTOMER_NAME_CHANGED,\n petParentLastName: NEW_CUSTOMER_LAST_NAME_CHANGED,\n petParentPhoneNumber: NEW_CUSTOMER_PHONE_CHANGED,\n petParentState: NEW_CUSTOMER_STATE_CHANGED,\n petParentZipCode: NEW_CUSTOMER_ZIP_CODE_CHANGED,\n secondaryPetParentLastName: NEW_CUSTOMER_SECOND_PARENT_LAST_NAME_CHANGED,\n secondaryPetParentMobilePhone: NEW_CUSTOMER_SECOND_PARENT_NUMBER_CHANGED,\n secondaryPetParentName: NEW_CUSTOMER_SECOND_PARENT_NAME_CHANGED,\n};\n\nconst PetParentInfo = ({\n containerRef = null,\n containerSecondaryRef = null,\n focusInputWithError = false,\n sendCustomerLead = () => { },\n validatePetParentInfo,\n}) => {\n const { loginB2C } = useB2CInfo();\n const store = useSelector(({ quoting }) => (quoting), shallowEqual);\n const {\n newCustomer,\n newCustomer: {\n emailError,\n canEditAddress,\n },\n partners: { isCostco },\n sessionInformation: { isLoading, nopCommerceUser },\n } = store;\n\n const { t } = useTranslations('quoting');\n\n const [isMounted, setIsMounted] = useState(false);\n const [nameError, setNameError] = useState('');\n const [lastNameError, setLastNameError] = useState('');\n const [streetError, setStreetError] = useState('');\n const [cityError, setCityError] = useState('');\n const [phoneNumberError, setPhoneNumberError] = useState('');\n const [secondParentNameError, setSecondParentNameError] = useState('');\n const [secondLastNameError, setSecondLastNameError] = useState('');\n const [secondParentPhoneError, setSecondParentPhoneError] = useState('');\n const [isFirstValidation, setIsFirstValidation] = useState(true);\n const petParentNameRef = useRef();\n const firstInputWithErrorRef = useRef();\n const titleRef = useRef();\n const emailRef = useRef(null);\n const dispatch = useDispatch();\n\n useEffect(() => {\n // Move focus to top\n titleRef?.current?.focus();\n }, []);\n\n const isNopComercedDisabled = useMemo(() => {\n if (canEditAddress) {\n return false;\n }\n\n return nopCommerceUser.LoginSuccess\n && nopCommerceUser.CustomerNopCommerceId;\n }, [\n canEditAddress,\n nopCommerceUser.CustomerNopCommerceId,\n nopCommerceUser.LoginSuccess,\n ]);\n\n const defaultStateByZipcode =\n useMemo(() => getStateAbbreviation(newCustomer.address.zipCode),\n [newCustomer.address.zipCode]);\n\n useEffect(() => {\n if (store.customerZipCode !== newCustomer.address.zipCode) {\n dispatch(loadAddressByZipCode(store.customerZipCode));\n }\n }, [\n dispatch,\n store.customerZipCode,\n newCustomer.address.zipCode,\n ]);\n\n useEffect(() => {\n if (store.scrollYourInfoToTop) {\n window.scrollTo(0, 0);\n dispatch(toggleYourInfoScrollToTop(false));\n }\n }, [store.scrollYourInfoToTop, dispatch]);\n\n useEffect(() => {\n if (!isMounted) {\n setIsMounted(true);\n dispatch(setCurrentQuoteStep(QuotingSteps.YourInfo.value));\n }\n }, [isMounted, dispatch]);\n\n useEffect(() => {\n if (!nopCommerceUser.LoginSuccess || !isMounted) {\n return;\n }\n\n setNameError('');\n setLastNameError('');\n setStreetError('');\n setCityError('');\n }, [isMounted, nopCommerceUser]);\n\n useEffect(() => {\n dispatch(newCustomerChanged({\n type: NEW_CUSTOMER_EMAIL_ERROR_CHANGED,\n value: '',\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onValueChanged = (event) => {\n const { id, value } = event.target;\n const cleanValue = removeEmojis(value);\n const containsNumber = testContainNumber(cleanValue);\n\n if (TYPES[id] === NEW_CUSTOMER_CITY_CHANGED\n && containsNumber && cleanValue) {\n return;\n }\n\n dispatch(newCustomerChanged({ type: TYPES[id], value: cleanValue }));\n };\n\n const onInputChangeCallback = (callbackState) => (event) => {\n callbackState('');\n onValueChanged(event);\n };\n\n const onInputFocusEmail = useCallback(() => {\n dispatch(newCustomerChanged({\n type: NEW_CUSTOMER_EMAIL_ERROR_CHANGED,\n value: '',\n }));\n }, [dispatch]);\n\n const onRequiredInputBlur = (errorMessage, setErrorCallBack) => (event) => {\n const { id, value } = event.target;\n dispatch(newCustomerChanged({ type: TYPES[id], value: value.trim() }));\n setErrorCallBack(value.trim() ? '' : errorMessage);\n };\n\n const toggleSecondaryPetParentForm = () => {\n dispatch(toggleSecondPetParentForm(!store.secondParentFormVisible));\n };\n\n const getStreetError = useCallback((value) => {\n let error = value ? '' : t('petParent.streetAddressRequired');\n\n if (value && !isValidDiamondStreet(value)) {\n error = t('petParent.invalidStreetError');\n }\n\n return error;\n }, [t]);\n\n const onStreetInputBlur = useCallback((event) => {\n const { id, value } = event.target;\n\n setStreetError(getStreetError(value));\n dispatch(newCustomerChanged({ type: TYPES[id], value: value.trim() }));\n }, [dispatch, getStreetError]);\n\n const onStreetValueChanged = useCallback((event) => {\n const { id, value } = event.target;\n const cleanValue = removeEmojis(value);\n dispatch(newCustomerChanged({ type: TYPES[id], value: cleanValue }));\n\n setStreetError(isValidDiamondStreet(cleanValue)\n ? '' : t('petParent.invalidStreetError'));\n }, [dispatch, t]);\n\n const onSecondPhoneNumberBlur = (event) => {\n const { value } = event.target;\n const { secondParent } = newCustomer;\n const { lastName, name, phoneNumber } = secondParent;\n\n let error = '';\n\n if (!name.trim() || !lastName.trim() || !phoneNumber.trim()) {\n error = value ? '' : t('petParent.mobileRequired');\n }\n\n if (value.trim().length >= 1) {\n error = TEN_DIGIT_NUMBER.test(value)\n ? '' : t('petParent.invalidPhoneError');\n }\n\n setSecondParentPhoneError(error);\n\n if (!error\n && secondParent.name && !secondParentNameError\n && secondParent.lastName && !secondLastNameError) {\n sendCustomerLead();\n }\n };\n\n const getPhoneError = useCallback((value) => {\n let error = value ? '' : t('petParent.mobileRequired');\n\n if (value) {\n error = TEN_DIGIT_NUMBER.test(value)\n ? '' : t('petParent.invalidPhoneError');\n }\n\n return error;\n }, [t]);\n\n const onPhoneNumberBlur = useCallback((event) => {\n const { value } = event.target;\n setPhoneNumberError(getPhoneError(value));\n }, [getPhoneError]);\n\n const onPhoneNumberChanged = useCallback((event) => {\n const { id, value } = event.target;\n const onlyNumbersValue = testOnlyNumber(value)\n ? value\n : value.replace(/\\D/g, '');\n dispatch(newCustomerChanged({ type: TYPES[id], value: onlyNumbersValue }));\n }, [dispatch]);\n\n const onSecondStreetAddressBlur = useCallback((event) => {\n const { id, value } = event.target;\n dispatch(newCustomerChanged({ type: TYPES[id], value: value.trim() }));\n }, [dispatch]);\n\n const onSecondaryPetInputBlur = (\n errorMessage,\n inputErrorCallBack,\n ) => (event) => {\n const { id, value } = event.target;\n const { secondParent } = newCustomer;\n const { lastName, name, phoneNumber } = secondParent;\n\n let error = '';\n\n if (!name.trim() || !lastName.trim() || !phoneNumber.trim()) {\n error = value ? '' : errorMessage;\n }\n\n inputErrorCallBack(error);\n dispatch(newCustomerChanged({ type: TYPES[id], value: value.trim() }));\n };\n\n const prevEmail = usePrevious(newCustomer.email);\n\n const {\n customerValidationResponse,\n parameters,\n quoteSelectedValues,\n partners: { partnerId, petPickupDate },\n saveQuote: { quoteId },\n } = store;\n\n const {\n groupCode,\n groupCodeDscr,\n petQuoteResponseList,\n zipCode,\n } = store?.data || {};\n\n const previousEmailValidated = usePrevious(customerValidationResponse.email);\n\n useEffect(() => {\n if (!isFirstValidation\n && previousEmailValidated !== customerValidationResponse.email) {\n if (useFSCLeads) {\n const cloudClientId = customerValidationResponse?.id || 0;\n dispatch(saveQuote({\n cloudClientId,\n EffectiveDate: createEffectiveDate(),\n email: newCustomer.email || parameters.email,\n firstName: newCustomer.name || '',\n groupCode,\n groupCodeDscr,\n lastName: newCustomer.lastName || '',\n origin: window.location.origin,\n partnerId,\n petQuoteResponseList,\n pickupDate: petPickupDate,\n promoCode: store.newPet.promoCode,\n quoteId,\n quoteSelectedValues,\n QuoteSubId: store.subId,\n quoteType: SAVE_QUOTE_TYPE.auto,\n zipCode,\n }));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n dispatch,\n customerValidationResponse.email,\n previousEmailValidated,\n isFirstValidation,\n ]);\n\n const onBlurEmail = async (event) => {\n const { value } = event.target;\n let error = value ? '' : t('petParent.emailRequired');\n\n if (value) {\n error = validateEmail(value) ? '' : t('petParent.invalidEmailError');\n }\n\n if (!error) {\n if (isFirstValidation || (!isFirstValidation && prevEmail !== value)) {\n const payload = await validateCustomerExistsByEmail(value);\n const { IsValid, Data } = payload;\n const userAlreadyExists = IsValid && !!Data;\n\n dispatch(validateDiamondUser({\n customerExistsData: Data,\n email: value,\n userAlreadyExists,\n validateCustomer: false,\n }));\n\n if (userAlreadyExists && !useROPC) {\n loginB2C({\n existingEmail: value,\n urlState: URL_YOUR_INFO,\n });\n }\n\n emailRef.current.focus();\n setIsFirstValidation(false);\n }\n }\n\n dispatch(newCustomerChanged({\n type: NEW_CUSTOMER_EMAIL_ERROR_CHANGED,\n value: error,\n }));\n };\n\n function renderSecondaryPetParentToggle() {\n if (useSecondaryPetParent) {\n return (\n \n \n \n\n \n {t('petParent.secondaryPetParent')}\n \n \n\n \n {t('petParent.secondaryDescription')}\n \n \n );\n }\n\n return null;\n }\n\n function validateFields() {\n const nameErrorLocal = newCustomer.name\n ? '' : t('petParent.firstNameRequired');\n setNameError(nameErrorLocal);\n\n const lastNameErrorLocal = newCustomer.lastName\n ? '' : t('petParent.lastNameRequired');\n setLastNameError(lastNameErrorLocal);\n\n const streetErrorLocal = getStreetError(newCustomer.address.street);\n setStreetError(streetErrorLocal);\n\n const cityErrorLocal = newCustomer.address.city\n ? '' : t('petParent.cityRequired');\n setCityError(cityErrorLocal);\n\n const phoneNumberErrorLocal = getPhoneError(newCustomer.phoneNumber);\n setPhoneNumberError(phoneNumberErrorLocal);\n\n if (store.secondParentFormVisible) {\n const secondParentNameErrorLocal = newCustomer.secondParent.name\n ? '' : t('petParent.firstNameRequired');\n setSecondParentNameError(secondParentNameErrorLocal);\n\n const secondLastNameErrorLocal = newCustomer.secondParent.lastName\n ? '' : t('petParent.lastNameRequired');\n setSecondLastNameError(secondLastNameErrorLocal);\n\n const secondPhoneErrorLocal =\n getPhoneError(newCustomer.secondParent.phoneNumber);\n setSecondParentPhoneError(secondPhoneErrorLocal);\n\n if (!secondParentNameErrorLocal\n && !secondLastNameErrorLocal\n && !secondPhoneErrorLocal) {\n dispatch(validateCustomerExists(newCustomer.email));\n }\n } else {\n dispatch(validateCustomerExists(newCustomer.email));\n }\n }\n\n useEffect(() => {\n if (validatePetParentInfo > 0) {\n validateFields();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [validatePetParentInfo]);\n\n useEffect(() => {\n if (focusInputWithError && firstInputWithErrorRef.current) {\n firstInputWithErrorRef.current.focus();\n }\n }, [focusInputWithError]);\n\n const setRef = (error) => (node) => {\n if (error && !firstInputWithErrorRef.current) {\n firstInputWithErrorRef.current = node;\n }\n };\n\n const setFirstNameRef = (error) => (node) => {\n petParentNameRef.current = node;\n setRef(error)(node);\n };\n\n const setEmailRef = (error) => (node) => {\n emailRef.current = node;\n setRef(error)(node);\n };\n\n // clean the ref to be reasigned each render\n firstInputWithErrorRef.current = null;\n\n function renderSecondaryPetParentForm() {\n return (\n \n
\n \n\n \n
\n\n
\n \n
\n \n );\n }\n\n return (\n \n \n {t('petParent.title')}\n \n\n
\n \n\n \n
\n\n
\n \n\n \n
\n\n
\n \n \n \n\n
\n \n \n \n\n \n \n \n
\n
\n\n
\n \n\n \n
\n\n {renderSecondaryPetParentToggle()}\n\n {renderSecondaryPetParentForm()}\n \n );\n};\n\nexport { PetParentInfo };\n","export default __webpack_public_path__ + \"static/media/check.89c76d77.svg\";","import React from 'react';\n\nimport checkedIcon from '../../assets/check.svg';\n\nimport './FakeCheckbox.css';\n\nconst FakeCheckbox = ({ isChecked = false }) => {\n if (isChecked) {\n return (\n \n );\n }\n\n return
;\n};\n\nexport { FakeCheckbox };\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport './PaymentSummary.css';\nimport { togglePaymentPlanFrequency } from '../../../actions';\nimport { currencyFormat } from '../../../util';\nimport TouchableDiv from '../../common/TouchableDiv';\nimport { BILLING_CYCLE_TYPE } from '../../../constants';\nimport { FakeCheckbox } from '../../common/FakeCheckbox';\n\nconst PaymentSummary = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const dispatch = useDispatch();\n const {\n isMonthlyPlan,\n quoteSelectedValues,\n data,\n paymentMethod,\n } = store;\n const { InsuranceProductFee } = data.insuranceProduct;\n const paymentType = paymentMethod.paymentMethodType.value;\n\n function getAnnualyFee() {\n const { annualy } = BILLING_CYCLE_TYPE;\n const fee = InsuranceProductFee\n .find((item) => item.InsuranceFee.BillingCycleType === annualy\n && item.InsuranceFee.PaymentType === paymentType);\n\n return fee;\n }\n\n function getMonthlyFee() {\n const { monthly } = BILLING_CYCLE_TYPE;\n const fee = InsuranceProductFee\n .find((item) => item.InsuranceFee.BillingCycleType === monthly\n && item.InsuranceFee.PaymentType === paymentType);\n\n return fee;\n }\n\n useEffect(() => {\n dispatch(togglePaymentPlanFrequency({ isMonthly: true }));\n }, [dispatch]);\n\n function getTotalMonthlyAmount() {\n const totalMonthlyAmount = quoteSelectedValues\n .reduce((prev, next) => prev + next.totalMontly, 0);\n const [dollar, cent] = currencyFormat({ value: totalMonthlyAmount })\n .split('.');\n\n return { cent: `.${cent}`, dollar };\n }\n\n function getTotalAnnualAmount() {\n const totalAnnualAmount = quoteSelectedValues\n .reduce((prev, next) => prev + next.totalAnnual, 0);\n const [dollar, cent] = currencyFormat({ value: totalAnnualAmount })\n .split('.');\n\n return { cent: `.${cent}`, dollar };\n }\n\n function getMonthlyFeeLegend() {\n const fee = getMonthlyFee();\n\n if (!fee) {\n return '';\n }\n\n const { InsuranceFee } = fee;\n\n return InsuranceFee.DisplayText.replace('{0}', InsuranceFee.Amount);\n }\n\n function getAnnualyFeeLegend() {\n const fee = getAnnualyFee();\n\n if (!fee) {\n return 'Save on any monthly processing fees.';\n }\n\n const { InsuranceFee } = fee;\n\n return InsuranceFee.DisplayText.replace('{0}', InsuranceFee.Amount);\n }\n\n function renderMonthlyFee() {\n const { cent, dollar } = getTotalMonthlyAmount();\n\n return (\n
\n $\n\n \n {dollar}\n \n\n \n {cent}\n \n\n ⁄ month\n
\n );\n }\n\n function renderAnnualFee() {\n const { cent, dollar } = getTotalAnnualAmount();\n return (\n
\n $\n\n \n {dollar}\n \n\n \n {cent}\n \n\n ⁄ year\n
\n );\n }\n\n const onPlaymentPlanChanged = (isMonthly) => () => {\n dispatch(togglePaymentPlanFrequency({ isMonthly }));\n };\n\n const getBillingCycleAriaLabel = (isMonthlyCard = false) => {\n let label = 'Billing cycle annual';\n let quantityAmount = getTotalAnnualAmount;\n let feeLabelLegend = getAnnualyFeeLegend;\n let currentLabelSelected = '';\n let bilingPaymentCycle = 'per year.';\n\n const monthlyLabelSelected =\n isMonthlyPlan && isMonthlyCard ? ' selected.' : ' not selected.';\n const annualLabelSelected =\n !isMonthlyPlan && !isMonthlyCard ? ' selected.' : 'not selected.';\n\n if (isMonthlyCard) {\n label = 'Billing cycle monthly';\n quantityAmount = getTotalMonthlyAmount;\n feeLabelLegend = getMonthlyFeeLegend;\n\n currentLabelSelected = monthlyLabelSelected;\n bilingPaymentCycle = 'per month.';\n } else {\n currentLabelSelected = annualLabelSelected;\n }\n\n const { cent, dollar } = quantityAmount();\n const feeLabel = feeLabelLegend();\n return `${label} ${dollar}${cent} ${bilingPaymentCycle} `\n + `${feeLabel} ${currentLabelSelected}`;\n };\n\n return (\n <>\n

\n Billing Cycle\n

\n\n \n \n
\n
\n Monthly\n\n
\n
\n {renderMonthlyFee()}\n
\n\n
\n \n
\n
\n
\n\n {renderMonthlyFee()}\n\n
\n \n {getMonthlyFeeLegend()}\n \n
\n
\n \n\n \n
\n
\n Annual\n\n
\n
\n {renderAnnualFee()}\n
\n\n
\n \n
\n
\n
\n\n {renderAnnualFee()}\n\n
\n \n {getAnnualyFeeLegend()}\n \n
\n
\n \n
\n \n );\n};\n\nexport default PaymentSummary;\n","export default __webpack_public_path__ + \"static/media/add-card-icon.6dd52195.svg\";","export default __webpack_public_path__ + \"static/media/bank-active.d6956b00.svg\";","export default __webpack_public_path__ + \"static/media/warning.10e72c6e.svg\";","export default __webpack_public_path__ + \"static/media/bank-card-navy.1c9c3e79.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAclBMVEUAAAAz/8wez8wdz8oc0Moc0Msc0M0dz8uA//8e0cscz8o51dBh3doi0Msz08/1/Pz///+27+1G2NPT9fR34t+p7OtE19Nk3tqL5uN24t/B8vDo+vmK5uPA8fD9/v6f6ujd9/f8/v6N5+Ss7etO2dVu4N1G6Bt2AAAACnRSTlMABVWl2fNR3AKKw76XCQAAAAFiS0dEEJWyDSwAAAAHdElNRQfkAhUQNCTHCbOvAAAAn0lEQVQYV22RxxKDMAxE1x2UppBGSCPF//+LOUgGZmBPb95BllcAABjrfAjeWYMhMZEmRVVVTZPUFQBA3Wq9EQsAUdx2x3uhCBid1zAfhJKBLcOOp7OShRO4tG17VengBTpmvqn0CAL3xyhDkUTPifRz6ctDU+nGlUZpy/Kvnvndf4iIkinf7JiZ+UtEFIdCfjnnnBvSQparWywZs3P8AfYeDz7md1yHAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTAyLTIxVDE2OjUyOjM2KzAwOjAwp2sRWAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wMi0yMVQxNjo1MjozNiswMDowMNY2qeQAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/undo-navy.c23ccc83.svg\";","import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport FigoLottie from './FigoLottie';\n\nimport { ONE_INC_PAYMENT_CATEGORY, PAYMENT_TYPE } from '../../constants';\nimport { PAYMENT_METHOD_TYPE_CHANGE } from '../../actions/types';\nimport {\n paymentMethodChanged,\n validateDiamondUser,\n} from '../../actions/quoting';\nimport {\n changeOneIncPaymentUpdate,\n createOneIncSession,\n removeOneIncSession,\n savePaymentMethod,\n savePaymentMethods,\n updatePaymentMethods,\n} from '../../actions/oneInc';\nimport { sleep, useFSCLeads, useTrackingEvents } from '../../util';\n\nimport cardIcon from '../../assets/yourInfo/add-card-icon.svg';\nimport bankAccountIcon from '../../assets/bank-active.svg';\nimport creditCardIcon from '../../assets/bank-card.png';\nimport warningIcon from '../../assets/warning.svg';\nimport creditCardNavyIcon from '../../assets/bank-card-navy.svg';\nimport infoIcon from '../../assets/info.png';\nimport undoIcon from '../../assets/undo-navy.svg';\nimport spinner from '../../assets/spinner.json';\nimport './OneIncModal.css';\nimport {\n useTrackingPaymentMethodSelection,\n useTrackingPaymentMethodAddition,\n} from '../../trackingEvents';\nimport {\n sendAllPetsFSCLead,\n sendFSCCustomerLead,\n sendFSCPaymentLead,\n sendFSCQuoteLead,\n} from '../../actions';\n\nconst OneIncModal = ({ onComplete = () => { }, styleUpdate = false }) => {\n const dispatch = useDispatch();\n const { t } = useTranslation('quoting');\n const store = useSelector(({ quoting }) => ({\n email: quoting.newCustomer.email,\n emailValiated: quoting.newCustomer.emailValidated,\n groupCode: quoting.data.groupCode,\n isCostco: quoting.partners.isCostco,\n newCustomer: quoting.newCustomer,\n oneInc: quoting.oneInc,\n parameters: quoting.parameters,\n partners: quoting.partners,\n paymentMethodType: quoting.paymentMethod.paymentMethodType,\n sessionInformation: quoting.sessionInformation,\n subId: quoting.subId,\n }), shallowEqual);\n const divRef = useRef(null);\n const updateButtonRef = useRef();\n const [loading, setLoading] = useState(false);\n const { nopCommerceUser } = store.sessionInformation;\n const { Address } = nopCommerceUser;\n const renderTwoPaymement = store.oneInc.isTwoDefaults\n && !store.oneInc.customerUpdated;\n const { trackPaymentMethodAddition } = useTrackingPaymentMethodAddition();\n const { trackPaymentMethodSelection } = useTrackingPaymentMethodSelection();\n\n const saveComplete = useCallback((_, data) => {\n setLoading(false);\n dispatch(changeOneIncPaymentUpdate(true));\n dispatch(savePaymentMethod(data));\n dispatch(removeOneIncSession());\n\n if (useTrackingEvents) {\n const isCreditCard =\n data.paymentCategory === ONE_INC_PAYMENT_CATEGORY.creditCard;\n\n trackPaymentMethodAddition({ isCreditCard });\n }\n\n if (useFSCLeads) {\n if (store.newCustomer.email !== store.newCustomer.initialEmail) {\n dispatch(sendAllPetsFSCLead());\n dispatch(sendFSCQuoteLead());\n dispatch(sendFSCCustomerLead());\n }\n dispatch(sendFSCPaymentLead());\n }\n\n const handleComplete = async () => {\n if (onComplete) {\n // await to reducer update with card/bank data\n await sleep(300);\n\n onComplete();\n }\n };\n\n handleComplete();\n }, [dispatch, onComplete, trackPaymentMethodAddition, store.newCustomer]);\n const unLoad = useCallback(() => {\n setLoading(false);\n dispatch(removeOneIncSession());\n if (divRef.current) {\n divRef.current.focus();\n } else if (updateButtonRef.current) {\n updateButtonRef.current.focus();\n }\n }, [dispatch]);\n const onError = useCallback(() => {\n setLoading(false);\n dispatch(removeOneIncSession());\n }, [dispatch]);\n\n useLayoutEffect(() => {\n if (!divRef || !window.$) {\n return;\n }\n\n const initOneIncListener = async () => {\n // wait for jQuery script\n await sleep(300);\n\n if (!window.$) {\n return;\n }\n\n window.$('#portalOneContainer').off();\n\n window.$('#portalOneContainer').on('portalOne.unload', unLoad);\n window.$('#portalOneContainer')\n .on('portalOne.saveComplete', saveComplete);\n window.$('#portalOneContainer').on('portalOne.error', onError);\n };\n\n initOneIncListener();\n }, [\n dispatch,\n divRef,\n onError,\n saveComplete,\n trackPaymentMethodAddition,\n unLoad,\n updateButtonRef,\n ]);\n\n useEffect(() => {\n if (!store.oneInc.portalOneSessionKey || !divRef) {\n return;\n }\n\n if (!window.$) {\n setLoading(false);\n dispatch(removeOneIncSession());\n return;\n }\n\n const billingAddressStreet = Address.City && Address.State\n ? `${Address.AddressLine1} ${Address.AddressLine2}`\n + ` ${Address.City}, ${Address.State}`\n : '';\n\n const params = {\n billingAddressStreet,\n billingZip: Address.ZipCode,\n clientReferenceData1: nopCommerceUser.DiamonClientdId,\n confirmationDisplay: 'false',\n paymentCategory: 'UserSelect',\n policyHolderName: `${nopCommerceUser.FirstName}`\n + ` ${nopCommerceUser.LastName}`,\n sessionId: store.oneInc.portalOneSessionKey,\n };\n\n window.$('#portalOneContainer').portalOne();\n window.$('#portalOneContainer').data('portalOne').savePaymentMethod(params);\n }, [store.oneInc.portalOneSessionKey, Address, nopCommerceUser, dispatch]);\n\n useEffect(() => () => {\n if (window.$ && typeof window.$ === 'function') {\n window.$('#portalOneContainer').off();\n }\n });\n\n const onAddPaymentMethod = useCallback(() => {\n if (!store.emailValiated) {\n dispatch(validateDiamondUser({ email: store.email }));\n return;\n }\n\n setLoading(true);\n dispatch(createOneIncSession());\n }, [dispatch, store.email, store.emailValiated]);\n\n const onDefaultPaymentMethodUpdated = (data) => () => {\n dispatch(updatePaymentMethods(data));\n const paymentMethodSelected = data === ONE_INC_PAYMENT_CATEGORY.bankAccount\n ? PAYMENT_TYPE.bank\n : PAYMENT_TYPE.creditCard;\n\n if (store.paymentMethodType.value !== paymentMethodSelected.value) {\n dispatch(paymentMethodChanged({\n type: PAYMENT_METHOD_TYPE_CHANGE,\n value: paymentMethodSelected,\n }));\n\n if (useTrackingEvents) {\n trackPaymentMethodSelection({\n codeMask: store.parameters.groupCodeDscr,\n email: store.parameters.email,\n isCreditCard: data === ONE_INC_PAYMENT_CATEGORY.creditCard,\n promoCode: store.groupCode || '',\n subId: store.subId.Value,\n });\n if (useFSCLeads) {\n if (store.newCustomer.email !== store.newCustomer.initialEmail) {\n dispatch(sendAllPetsFSCLead());\n dispatch(sendFSCQuoteLead());\n dispatch(sendFSCCustomerLead());\n }\n dispatch(sendFSCPaymentLead());\n }\n }\n }\n };\n\n function renderUpdateButton({ className = '', text, centerButtom = true }) {\n if (loading) {\n return centerButtom\n ? (\n
\n \n
\n ) : (\n \n );\n }\n\n return (\n \n {text}\n \n );\n }\n\n function renderOneItemDetails({\n icon,\n lastFourDigits,\n subTitle,\n title = '',\n }) {\n return (\n
\n
\n \"\"\n\n
\n {title.toUpperCase()}\n\n \n {lastFourDigits}\n \n\n {subTitle}\n
\n
\n\n {renderTwoPaymement\n ? null\n : renderUpdateButton({\n className: 'One-modal-details-button-update ',\n text: t('payment.edit'),\n })}\n
\n );\n }\n\n function renderCreditCardDeatils() {\n if (!store.oneInc.tokenId) {\n return null;\n }\n\n const { creditCard } = store.oneInc;\n\n const subtitle = creditCard.cardExpirationMonth\n ? `Exp. ${creditCard.cardExpirationMonth}/`\n + `${String(creditCard.cardExpirationYear).substring(2)}`\n : '';\n const details = {\n className: 'One-modal-details-image',\n icon: styleUpdate ? creditCardNavyIcon : creditCardIcon,\n lastFourDigits: `Card ending in ${creditCard.lastFourDigits}`,\n subTitle: subtitle,\n title: creditCard.cardType || 'Credit card',\n };\n\n return renderOneItemDetails(details);\n }\n\n function renderBankAccountDetails() {\n if (!store.oneInc.tokenId) {\n return null;\n }\n\n const { bankAccount } = store.oneInc;\n\n const subtitle = bankAccount.accountType;\n const details = {\n className: 'One-modal-details-image',\n icon: bankAccountIcon,\n lastFourDigits: `Account ending in ${bankAccount.lastFourDigits}`,\n subTitle: subtitle,\n title: 'BANK ACCOUNT',\n };\n\n return renderOneItemDetails(details);\n }\n\n function renderCheckBox(checked, isCreditCard, methodData) {\n return (\n
\n \n
\n );\n }\n\n function renderTwoCardDetails() {\n const isCreditCard =\n store.oneInc.paymentCategory === ONE_INC_PAYMENT_CATEGORY.creditCard;\n const { bankAccount, creditCard } = ONE_INC_PAYMENT_CATEGORY;\n\n if (renderTwoPaymement) {\n return (\n
\n
\n
\n {renderCheckBox(!isCreditCard, false, bankAccount)}\n
\n
\n\n
\n
\n {renderCheckBox(isCreditCard, true, creditCard)}\n
\n
\n\n {renderUpdateButton({\n centerButtom: false,\n text: 'Use a different payment method?',\n })}\n
\n );\n }\n\n return isCreditCard\n ? renderCreditCardDeatils() : renderBankAccountDetails();\n }\n\n const onUndoChage = () => {\n const { defaultsPaymentMethod, isTwoDefaults } = store.oneInc;\n\n const isCreditCardDefault = defaultsPaymentMethod.defaultValue\n === ONE_INC_PAYMENT_CATEGORY.creditCard;\n const data = isCreditCardDefault\n ? defaultsPaymentMethod.creditCard : defaultsPaymentMethod.bankAccount;\n\n dispatch(changeOneIncPaymentUpdate(false));\n\n if (isTwoDefaults) {\n dispatch(savePaymentMethods({\n bankAccount: defaultsPaymentMethod.bankAccount,\n creditCard: defaultsPaymentMethod.creditCard,\n paymentCategory: ONE_INC_PAYMENT_CATEGORY.bankAccount,\n }));\n } else {\n dispatch(savePaymentMethod(data));\n }\n };\n\n function renderWarning() {\n const {\n paymentCategory,\n customerUpdated,\n petPaymentMethods,\n } = store.oneInc;\n\n if (!customerUpdated) {\n return null;\n }\n\n const pets = petPaymentMethods\n .filter((item) => item.Value === paymentCategory)\n .map((item) => item.Key);\n let petsNames = '';\n\n if (pets.length === 0) {\n return null;\n }\n\n if (pets.length === 1) {\n petsNames = pets;\n } else if (pets.length === 2) {\n petsNames = pets.join(' and ');\n } else {\n const firtsPets = pets\n .filter((_, index) => index < pets.length - 1).join(', ');\n const endPet = pets[pets.length - 1];\n\n petsNames = `${firtsPets} and ${endPet}`;\n }\n\n const isCreditCard =\n paymentCategory === ONE_INC_PAYMENT_CATEGORY.creditCard;\n const paymentType = isCreditCard ? 'card' : 'bank account';\n\n return (\n
\n \"\"\n\n
\n

\n Proceeding with this new {paymentType} will also update\n the policies for\n {petsNames}.\n

\n\n {!styleUpdate && (\n \n )}\n
\n
\n );\n }\n\n const renderDisclaimer = () => (\n \n For assistance with adding a Payment Method call\n VIP Support at {store.partners.data?.SupportPhoneNumber}\n \n );\n\n const renderButtonText = () => (\n <>\n {styleUpdate\n ? 'Update Payment Method'\n : <>\"\" Add Payment Method}\n \n );\n\n const renderChargeWarning = useCallback(() => store.oneInc.tokenId && (\n
\n \"\"\n\n {t('payment.notChargedYet')}\n
\n ), [store.oneInc.tokenId, t]);\n\n return (\n
\n {store.isCostco && renderDisclaimer()}\n\n {(!store.oneInc.tokenId && nopCommerceUser.DiamonClientdId)\n ? (\n <>\n \n \n {loading\n ? \n : renderButtonText()}\n \n
\n \n ) : null}\n\n {renderTwoCardDetails()}\n\n {renderWarning()}\n\n {renderChargeWarning()}\n \n );\n};\n\nexport { OneIncModal };\n","import { useSelector } from 'react-redux';\nimport { useTracking } from 'react-tracking';\nimport {\n baseRequest,\n customTrackEvent,\n EVENT_TYPE,\n PAYMENT_TYPES_TRACKING,\n} from './baseRequest';\n\nconst useTrackingPaymentMethodAddition = () => {\n const { trackEvent } = useTracking({ }, { dispatch: customTrackEvent });\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n parameters: { groupCodeDscr, email },\n subId,\n } = store;\n\n function trackPaymentMethodAddition({ isCreditCard }) {\n const paymentMethod = isCreditCard\n ? PAYMENT_TYPES_TRACKING.CreditCard : PAYMENT_TYPES_TRACKING.BankAccount;\n\n trackEvent({\n ...baseRequest({\n codeMask: groupCodeDscr,\n email,\n promoCode: data.groupCode || '',\n subId: subId.Value,\n }),\n event: EVENT_TYPE.PAYMENT_METHOD_ADDITION,\n paymentMethod,\n });\n }\n\n return { trackPaymentMethodAddition };\n};\n\nexport { useTrackingPaymentMethodAddition };\n","import { useSelector } from 'react-redux';\nimport { useTracking } from 'react-tracking';\nimport {\n baseRequest,\n customTrackEvent,\n EVENT_TYPE,\n PAYMENT_TYPES_TRACKING,\n} from './baseRequest';\n\nconst useTrackingPaymentMethodSelection = () => {\n const { trackEvent } = useTracking({ }, { dispatch: customTrackEvent });\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n parameters: { groupCodeDscr, email },\n subId,\n } = store;\n\n function trackPaymentMethodSelection({ isCreditCard }) {\n const paymentMethod = isCreditCard\n ? PAYMENT_TYPES_TRACKING.CreditCard : PAYMENT_TYPES_TRACKING.BankAccount;\n\n trackEvent({\n ...baseRequest({\n codeMask: groupCodeDscr,\n email,\n promoCode: data.groupCode || '',\n subId: subId.Value,\n }),\n event: EVENT_TYPE.PAYMENT_METHOD_SELECTION,\n paymentMethod,\n });\n }\n\n return { trackPaymentMethodSelection };\n};\n\nexport { useTrackingPaymentMethodSelection };\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAsCAYAAADIIYBkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJdSURBVHgB7ZnNddpAEMf/swKSozuIjnk5gNKBOBP84gqSVEBcgaGEdIArIHmCs1WCnBQQuYJwFmgns2DysJDs8ACjlfldtMzqsKOdYb4Igjcanelao0fgr/LzDOUl1Kyvf52fD/M2SRRx2anfgODCEhjU/9ntDLJyxfXGlU2KGMSC+l4Q+Fm5AvNHWIhm8rIyhXL7SCGkqJWVKVSISilTY80DWIgiHeHEiRM7QW8lnYGFvAam0cXFdF1We1Wr/4aFMNFQHl/WZaegWVZqT+yHt90PbexI80fQl1zqCgfmRd2M1wrGN9gVUy8xDs5TypjywMeuPIMiBuvNzPQvVmvrlUnQcFdr65VR0GfvJ5M3y3UFmKfpInxUQhm6b25UI84QueZRjZu579RU42aYXfMXbZSZwkI41XcPJY6vpM0RwkKUQrh4Okvn145yFSXJpaQbMSxCes3fom43XK7RWzzFb5SUnjGlszYzrlF+pkS4FEXM6AXNYNL71/Rn9ij7tlfinoD58Kt1czz+RIzh+j7BMt6NJl69LqbF/DmzNd0oAVrBZCR3Vs7JAItJEefXRkTfc+oZ3k8NcwioUB7TLBlsBE1ppN/CHkyMDGk2axt/2rgZJhXRc5WG22DCB1HE0HeKVQQHEZIkXm8EbijjyEuscUzkcBQ+dugicq1Qmhh/cPjxoDnc4muTMW3iCPN59D+HLqKooWEGOT72w8NDQ8dI02g9ZuyLXGXEZwYya/exLcauJdc79KGLKAyaMmfvi0L5XcgcZ4w6naOP5R7NABapjdPwNWvJSFW8jTMeg78FdujPB/JiMAAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/ill-9.fbc34d32.svg\";","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { OneIncModal } from '../../common/OneIncModal';\n\nimport ill9 from '../../../assets/ills/ill-9.svg';\n\nimport './PaymentMethod.css';\n\nconst PaymentMethod = ({\n containerRef = null,\n showError = false,\n}) => {\n const { t } = useTranslation('enrollment');\n return (\n \n

{t('paymentMethod.title')}

\n\n \n\n \n\n {showError ? (\n \n {t('paymentMethod.required')}\n \n ) : null}\n \n );\n};\n\nexport { PaymentMethod };\n","export default __webpack_public_path__ + \"static/media/arrow-right-citron-main.b68c52c6.svg\";","export default __webpack_public_path__ + \"static/media/ill-4.784fd674.svg\";","export default __webpack_public_path__ + \"static/media/next-white.c7433982.svg\";","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\nimport arrowRightIcon from '../../../assets/next-white.svg';\n\nimport './PurchaseStickyBar.css';\n\nconst PurchaseStickyBar = ({\n disabled = false,\n onPurchaseClick = () => { },\n}) => {\n const { t } = useTranslation('quoting');\n const history = useHistory();\n\n const onBackClick = () => {\n history.goBack();\n };\n\n return (\n \n
\n \n {t('purchaseStickyBar.back')}\n \n\n \n {t('purchaseStickyBar.purchase')}\n\n \n \n
\n \n );\n};\n\nexport { PurchaseStickyBar };\n","import React, { useCallback, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport continueToPaymentsArrow\nfrom '../../../assets/arrow-right-citron-main.svg';\nimport ill4 from '../../../assets/ills/ill-4.svg';\n\nimport TouchableDiv from '../../common/TouchableDiv';\nimport FigoLottie from '../../common/FigoLottie';\nimport { PurchaseStickyBar } from './PurchaseStickyBar';\n\nimport { useROPC, useTrackingEvents } from '../../../util';\nimport {\n forceValdationDiamonUser,\n validateDiamondUser,\n validateRecaptchaToken,\n} from '../../../actions';\nimport { useTrackingPurchaseComplete } from '../../../trackingEvents';\nimport {\n URL_PURCHASE,\n URL_PURCHASE_BACKEND_ERROR,\n URL_PURCHASE_ERROR,\n URL_YOUR_INFO,\n} from '../../../routes';\nimport { resetOneInInformation } from '../../../actions/oneInc';\nimport {\n useB2CInfo,\n useInjectScript,\n usePurchase,\n useRedesign,\n} from '../../../hooks';\n\nimport './YourInfoFooter.css';\nimport { RECAPTCHA_PARTNER_ORIGIN } from '../../../partners/partners.constants';\nimport { getPartnerData } from '../../../partners/partners.util';\n\n// https://developers.google.com/recaptcha/docs/v3\nconst RECAPTCHA_SRC = 'https://www.google.com/recaptcha/api.js'\n + `?render=${process.env.REACT_APP_RECAPTCHA_KEY}`;\n\nconst YourInfoFooter = ({\n handleContinuePurchaseClick = () => { },\n isPurchaseValid = false,\n isSecondStep = false,\n petCloudLoginSuccess,\n}) => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const history = useHistory();\n const dispatch = useDispatch();\n const isRedesign = useRedesign();\n const {\n customerValidationLoading,\n purchase,\n recaptcha,\n searchParameters,\n sessionInformation,\n petsWithQuoteError,\n } = store;\n const { isCustomer, nopCommerceUser, userEmail } = sessionInformation;\n const { loginB2C } = useB2CInfo();\n const { doPurchase } = usePurchase();\n\n const scriptRecaptchaLoaded = useInjectScript({\n id: 'reCAPTCHAv3',\n src: RECAPTCHA_SRC,\n });\n\n const { trackPurchaseComplete } = useTrackingPurchaseComplete();\n\n useEffect(() => {\n if (purchase.error && !purchase.success) {\n history.push(URL_PURCHASE_BACKEND_ERROR);\n\n return;\n }\n\n if (!purchase.error && purchase.success) {\n if (useTrackingEvents) {\n const effectiveDate =\n store.effectiveDateCustom || store.data.effectiveDate;\n trackPurchaseComplete({\n effectiveDate,\n policies: store.purchase.policyNumbers,\n });\n }\n\n const goToPurchaseScreen = async () => {\n const url = purchase.incompletePurchases?.length > 0\n ? URL_PURCHASE_ERROR : URL_PURCHASE;\n\n await dispatch(resetOneInInformation());\n history.push(url);\n };\n\n goToPurchaseScreen();\n }\n }, [\n history,\n purchase.success,\n purchase.error,\n purchase.incompletePurchases,\n store,\n trackPurchaseComplete,\n dispatch,\n ]);\n\n const handleReturnToPlansClick = useCallback(() => {\n const url = `/quoting/getQuote${searchParameters}`;\n history.push(url);\n }, [history, searchParameters]);\n\n function renderContentButton() {\n const title = isSecondStep ? 'Purchase' : 'Continue';\n const className = isSecondStep ? 'Your-info-continue-to-payments-arrow'\n : 'Your-info-continue-to-step-arrow';\n\n if (customerValidationLoading || recaptcha.loading) {\n return (\n \n );\n }\n\n return (\n <>\n {title}\n\n \n \n );\n }\n\n const onContinueWithoutLoginClick = ({ url = '' }) => () => {\n history.push(url);\n };\n\n function forceNopCommerUser() {\n dispatch(forceValdationDiamonUser(userEmail));\n }\n\n const handleOnPurchaseQuote = () => {\n const {\n newCustomer,\n partners,\n } = store;\n const { email, emailValidated } = newCustomer;\n const { costcoMembership, isCostco } = partners;\n\n if (isRedesign && petsWithQuoteError.length) {\n window.scrollTo(0, 0);\n return;\n }\n\n if (!emailValidated) {\n dispatch(validateDiamondUser({\n email,\n }));\n return;\n }\n\n if (handleContinuePurchaseClick && !customerValidationLoading) {\n handleContinuePurchaseClick();\n }\n\n if (!isSecondStep && !petCloudLoginSuccess) {\n return;\n }\n\n if (!isSecondStep || !isPurchaseValid) {\n return;\n }\n\n if (!nopCommerceUser.LoginSuccess && isCustomer && !useROPC) {\n forceNopCommerUser();\n\n loginB2C({\n continueWithoutLogin: onContinueWithoutLoginClick({\n url: URL_YOUR_INFO,\n }),\n existingEmail: userEmail,\n urlState: URL_YOUR_INFO,\n });\n\n return;\n }\n\n if (isCostco && !costcoMembership.isValid) {\n return;\n }\n\n if (!isPurchaseValid || store.purchase.loading) {\n return;\n }\n\n doPurchase();\n };\n\n async function onSubmit(token) {\n const { partners } = store;\n const { partnerId } = partners;\n const { loading } = store.recaptcha;\n\n if (loading) {\n return;\n }\n\n let origin = RECAPTCHA_PARTNER_ORIGIN.d2c;\n\n if (partnerId) {\n origin = getPartnerData(partnerId)?.recaptchaOrigin\n || RECAPTCHA_PARTNER_ORIGIN.d2c;\n }\n\n const isValidToken = await dispatch(validateRecaptchaToken({\n origin,\n token,\n user: userEmail,\n }));\n\n if (isValidToken) {\n handleOnPurchaseQuote();\n }\n }\n\n const handleSubmit = () => {\n if (window.grecaptcha) {\n window.grecaptcha.ready(() => {\n window.grecaptcha\n .execute(process.env.REACT_APP_RECAPTCHA_KEY, { action: 'submit' })\n .then(onSubmit);\n });\n }\n };\n\n function renderContinuePurchasePaymentButton() {\n if (isSecondStep && !store.oneInc.tokenId) {\n return null;\n }\n\n if (!scriptRecaptchaLoaded) {\n return null;\n }\n\n return (\n <>\n {isSecondStep\n ? (\n \n {renderContentButton()}\n \n ) : (\n \n {renderContentButton()}\n \n )}\n \n );\n }\n\n if (isSecondStep) {\n return (\n \n );\n }\n\n return (\n <>\n \n
\n \n \n ↵  \n \n\n \n Back to Customize\n \n \n\n {renderContinuePurchasePaymentButton()}\n\n {isSecondStep && (\n \n )}\n
\n \n \n );\n};\n\nexport { YourInfoFooter };\n","import { useEffect, useMemo, useState } from 'react';\nimport { loadEmbeddedScript } from '../util';\n\nconst useInjectScript = ({ id, src }) => {\n const [isLoaded, setLoaded] = useState(false);\n const scriptSrc = useMemo(() => (src), [src]);\n const scriptId = useMemo(() => (id), [id]);\n const scriptAsync = true;\n const scriptDefer = true;\n\n function onLoad() {\n setLoaded(true);\n }\n\n useEffect(() => {\n loadEmbeddedScript({\n onLoadCallback: onLoad,\n scriptAsync,\n scriptDefer,\n scriptId,\n scriptSrc,\n });\n\n return () => {\n document.getElementById(scriptId).remove();\n };\n }, [scriptAsync, scriptDefer, scriptId, scriptSrc]);\n\n return isLoaded;\n};\n\nexport { useInjectScript };\n","import React from 'react';\nimport './Checkbox.css';\n\nconst Checkbox = ({\n ariaProps,\n checked = false,\n children,\n className = '',\n containerClassName = '',\n error = false,\n errorClasName = '',\n errorMessage = '',\n id = '',\n isRounded = false,\n keepSpaceError = false,\n name = '',\n onClick = () => { },\n readOnly = false,\n}) => (\n
\n \n \n\n

\n {children}\n

\n \n\n \n {error && errorMessage}\n \n
\n);\n\nexport default Checkbox;\n","import React, { useEffect } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport Checkbox from '../../common/Checkbox';\nimport {\n AGREE_TERMS_AND_CONDITION_CHANGED,\n CONSENT_ELECTRONIC_DELIVERY_CHANGED,\n UNDERSTAND_CONDITIONS_CHANGED,\n} from '../../../actions/types';\nimport {\n termsAndCondModalVisibleChanged,\n validateTermsAndConditions,\n} from '../../../actions/quoting';\nimport { ELECTRONIC_DELIVERY_NOTICE } from '../../../constants';\nimport { useElectronicConsent } from '../../../util';\nimport './TermsAndConditionsCheckbox.css';\nimport './TermsAndConditions.css';\n\nconst TermsAndConditions = ({\n containerRef = null,\n triggerValidation,\n}) => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const { rateSummary: { PetQuotes } } = store;\n const {\n agreeTermsAndConditionCheck,\n agreeTermsAndConditionError,\n consentElectronicDeliveryCheck,\n understandConditionCheck,\n understandConditionError,\n } = store.termsAndConditions;\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (triggerValidation) {\n dispatch(validateTermsAndConditions());\n }\n }, [triggerValidation, dispatch]);\n\n function isElectronicConsent() {\n if (PetQuotes && PetQuotes[0]) {\n return PetQuotes[0].IsElectronicConsent;\n }\n\n return false;\n }\n\n function handleAgreeTermsClick() {\n dispatch({ type: AGREE_TERMS_AND_CONDITION_CHANGED });\n }\n\n function handleConsentDeliveryClick() {\n dispatch({ type: CONSENT_ELECTRONIC_DELIVERY_CHANGED });\n }\n\n function handleUnderstandConditionClick() {\n dispatch({ type: UNDERSTAND_CONDITIONS_CHANGED });\n }\n\n function handleTermsAndConditionsModalOpen() {\n const categoryId = 8;\n const visible = true;\n dispatch(termsAndCondModalVisibleChanged({ categoryId, visible }));\n }\n\n function handleUnderstandConditionModalOpen() {\n const categoryId = 9;\n const visible = true;\n dispatch(termsAndCondModalVisibleChanged({ categoryId, visible }));\n }\n\n function renderElectronicConsent() {\n if (useElectronicConsent || isElectronicConsent()) {\n return (\n \n I consent to \n \n electronic delivery\n \n {' of my policy documents'}\n \n );\n }\n\n return null;\n }\n\n return (\n <>\n \n \n I agree to the \n \n terms and conditions\n \n \n\n \n I understand that \n \n pre-existing conditions \n \n will not be covered\n \n\n {renderElectronicConsent()}\n \n \n );\n};\n\nexport default TermsAndConditions;\n","export default __webpack_public_path__ + \"static/media/dog-selected.980867b1.svg\";","export default __webpack_public_path__ + \"static/media/cat-selected.c80ef450.svg\";","import React from 'react';\nimport dogTag from '../../assets/dog-selected.svg';\nimport catTag from '../../assets/cat-selected.svg';\nimport { PetType } from '../../constants';\n\nconst TagPetCover = ({ petType }) => {\n function getTagImagen() {\n if (petType === PetType.Dog.value) {\n return dogTag;\n }\n\n return catTag;\n }\n\n return (\n \n );\n};\n\nexport default TagPetCover;\n","import React from 'react';\nimport './PartnerDiscountCallout.css';\n\nconst PartnerDiscountCallout = ({\n membershipImage,\n messageTitle,\n messageContent,\n}) => (\n
\n
\n \n
\n\n
\n \n {messageTitle}\n \n\n \n {messageContent}\n \n
\n
\n);\n\nexport { PartnerDiscountCallout };\n","export default __webpack_public_path__ + \"static/media/plus.7fd9c25f.svg\";","export default __webpack_public_path__ + \"static/media/substract.e9b7cb33.svg\";","import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport TagPetCover from '../../common/TagPetCover';\nimport {\n BILLING_CYCLE_TYPE,\n EXECUTIVE_MEMBERSHIP_TYPE_NAME,\n POWERUP_TYPE,\n} from '../../../constants';\nimport { currencyFormat } from '../../../util';\nimport { PartnerDiscountCallout } from './PartnerDiscountCallout';\nimport { useTranslations } from '../../../hooks';\nimport expandIcon from '../../../assets/yourInfo/plus.svg';\nimport collapseIcon from '../../../assets/yourInfo/substract.svg';\nimport './PaymentBreakdown.css';\n\nconst BreakdownItem = ({ label, value, bold = false, toBottom = false }) => (\n \n {label}\n\n {value}\n \n);\n\nconst PetBreakdown = ({ isMonthlyPlan = false, quoteRate }) => {\n const { t } = useTranslation('enrollment');\n const [isExpanded, setIsExpanded] = useState(true);\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const {\n data,\n partners: {\n costcoMembership: {\n isFeeWaived,\n executeMemberBenefitDisplay,\n executeMemberBenefitWaivedAmount,\n feeWaivedMessageContent,\n feeWaivedMessageTitle,\n },\n data: {\n MembershipValidation,\n },\n isCostco,\n },\n paymentMethod: { paymentMethodType },\n petTags,\n quoteSelectedValues,\n rateSummary,\n } = store;\n const quote = quoteSelectedValues\n .find((pet) => pet.quoteId === quoteRate.petQuoteId);\n const petTag =\n petTags.find((item) => item.petQuoteId === quote.quoteId) || {};\n\n const handleExpanded = useCallback(() => {\n setIsExpanded((prevExpanded) => !prevExpanded);\n }, []);\n\n const modifiersMapped = useMemo(() => {\n const modifiers = quoteRate.InsuranceModifiers || [];\n const powerUpsFilter = modifiers\n .filter((modifier) => modifier.InsuranceModifierTypeId === POWERUP_TYPE\n && modifier.IsVisible)\n .map((powerUp) => ({\n id: powerUp.Id,\n label: powerUp.TitleText,\n value: powerUp.IsSelected\n ? t('paymentBreakdown.included')\n : t('paymentBreakdown.notIncluded'),\n }));\n\n return powerUpsFilter;\n }, [quoteRate, t]);\n\n const { InsuranceProductFee } = data.insuranceProduct;\n\n const oneTimeFee = useMemo(() => {\n const { oneTime } = BILLING_CYCLE_TYPE;\n\n const fee = InsuranceProductFee\n .find((item) => item.InsuranceFee.BillingCycleType === oneTime);\n\n return fee;\n }, [InsuranceProductFee]);\n\n const installmentFee = useMemo(() => {\n const { annualy, monthly } = BILLING_CYCLE_TYPE;\n const billingCycle = isMonthlyPlan ? monthly : annualy;\n const fee = InsuranceProductFee\n .find((item) => item.InsuranceFee.BillingCycleType === billingCycle\n && item.InsuranceFee.PaymentType === paymentMethodType.value);\n\n return fee;\n }, [InsuranceProductFee, isMonthlyPlan, paymentMethodType.value]);\n\n const applyDiscount = useMemo(() => isCostco\n && oneTimeFee && isFeeWaived, [isCostco, isFeeWaived, oneTimeFee]);\n\n const taxes = useMemo(() => {\n const quoteSummary = rateSummary.PetQuotes\n .find((item) => item.PetQuoteId === quoteRate.petQuoteId) || {};\n return isMonthlyPlan\n ? quoteSummary.MonthlyTaxes\n : quoteSummary.AnnualTaxes;\n }, [isMonthlyPlan, quoteRate, rateSummary]);\n\n const taxesItems = useMemo(() => {\n if (!taxes) {\n return null;\n }\n\n return (\n taxes.map((item) => (\n \n ))\n );\n }, [taxes]);\n\n const taxesReduced = useMemo(() => {\n if (!taxes) {\n return 0;\n }\n\n return taxes.reduce((prev, next) => (prev + next.Amount), 0);\n }, [taxes]);\n\n const total = useMemo(() => {\n const { annualAmountPlan, monthlyAmountPlan } = quote;\n const taxesTotal = taxesReduced;\n let oneTimeAmount = 0;\n let installmentAmount = 0;\n\n if (oneTimeFee && !isFeeWaived) {\n oneTimeAmount = oneTimeFee.InsuranceFee.Amount;\n }\n\n if (installmentFee) {\n installmentAmount = installmentFee.InsuranceFee.Amount;\n }\n\n const baseTotal = isMonthlyPlan ? monthlyAmountPlan : annualAmountPlan;\n\n return baseTotal + installmentAmount + oneTimeAmount + taxesTotal;\n }, [\n installmentFee,\n isFeeWaived,\n isMonthlyPlan,\n oneTimeFee,\n quote,\n taxesReduced,\n ]);\n\n const executiveMembership = useMemo(() => (MembershipValidation\n ? MembershipValidation.MembershipTypes?.find(\n (membership) => membership.Name === EXECUTIVE_MEMBERSHIP_TYPE_NAME,\n ) : null), [MembershipValidation]);\n\n const petContainerId = `petbreakdown-${quoteRate.petQuoteId}`;\n\n return (\n \n \n \n \n \n\n \n \n \n {petTag.petName}\n \n\n \n {quoteRate.breedName} | {quoteRate.petAgeName}\n  | {quoteRate.genderName}\n \n \n\n \n \n \n\n \n
\n
\n \n {t('paymentBreakdown.planSummary')}\n \n\n \n \n\n \n\n \n\n {modifiersMapped.map((modifier) => (\n \n ))}\n \n
\n\n
\n \n {isMonthlyPlan\n ? t('paymentBreakdown.monthlyCostBreakdown')\n : t('paymentBreakdown.annualCostBreakdown')}\n \n\n \n \n\n {installmentFee && (\n \n )}\n\n {oneTimeFee && (\n \n )}\n\n {applyDiscount && (\n \n )}\n\n {taxesItems}\n\n \n \n
\n
\n\n {feeWaivedMessageContent && (\n
\n \n
\n )}\n \n \n );\n};\n\nconst PaymentBreakdown = () => {\n const { t } = useTranslations('quoting');\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const {\n data,\n isMonthlyPlan,\n } = store;\n\n return (\n \n

{t('petPolicies')}

\n\n {data.petQuoteResponseList.map((quoteRate) => (\n \n ))}\n \n );\n};\n\nexport default PaymentBreakdown;\n","export default __webpack_public_path__ + \"static/media/discount-tag.6fed4478.svg\";","import React, { useCallback, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport infoIcon from '../../assets/info.png';\n\nimport './TooltipDiscount.css';\n\nconst TooltipDiscount = () => {\n const { t } = useTranslation('quoting');\n const [tooltipVisible, setTooltipVisible] = useState(false);\n\n const handleHoverIn = useCallback(() => {\n setTooltipVisible(true);\n }, []);\n\n const handleHoverOut = useCallback(() => {\n setTooltipVisible(false);\n }, []);\n\n const handleClick = useCallback(() => {\n setTooltipVisible((prev) => !prev);\n }, []);\n\n const contentContent = () => {\n if (!tooltipVisible) {\n return null;\n }\n\n return (\n
\n \n {t('costco.tooltip')}\n \n\n
\n
\n );\n };\n\n return (\n
\n \n {t('costco.discountInfo')}\n \n\n
\n {contentContent()}\n
\n
\n );\n};\n\nexport { TooltipDiscount };\n","import React, { useEffect, useRef, useState } from 'react';\nimport { doNothing } from '../../util';\n\nconst HtmlContent = ({\n classNameContainer = '',\n content = '',\n elementId = '',\n elementType = 'div',\n}) => {\n const [contentLoaded, setContentLoaded] = useState();\n const ref = useRef();\n\n useEffect(() => {\n if (ref.current && !contentLoaded && content) {\n const elementExists = document.getElementById(elementId);\n\n if (elementExists) {\n doNothing();\n return;\n }\n\n const htmlContent = content;\n const htmlContainer = document.createElement(elementType);\n htmlContainer.classList.add(classNameContainer);\n htmlContainer.innerHTML = htmlContent;\n htmlContainer.setAttribute('id', elementId);\n ref.current.appendChild(htmlContainer);\n setContentLoaded(true);\n }\n }, [\n classNameContainer,\n content,\n contentLoaded,\n document,\n elementId,\n elementType,\n ref,\n ]);\n\n return (\n
\n );\n};\n\nexport { HtmlContent };\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport discountTag from '../../assets/landing/discount-tag.svg';\nimport { TooltipDiscount } from './TooltipDiscount';\n\nimport './CostcoPartnerDiscountLabel.css';\nimport Shimmer from '../common/Shimmer';\nimport { HtmlContent } from '../common';\n\nconst Label = ({ discountLabel }) => (\n \n);\n\nconst CostcoPartnerDiscountLabel = ({ discountLabel }) => {\n const store = useSelector((stores) => stores.quoting);\n const { t } = useTranslation('quoting');\n\n const { data, quoteSelectedValues } = store;\n const { stateAbrv } = data || {};\n\n const partnerAnnualSavings = quoteSelectedValues\n .map((item) => item.partnerAnnualSaving).filter((item) => !!item);\n\n const discountTotal = partnerAnnualSavings\n .reduce((prev, next) => prev + next, 0);\n\n const showDecimals = discountTotal % 1 > 0;\n\n return (\n
\n \n\n
\n
\n {stateAbrv && stateAbrv !== 'TN' && (\n <>\n \n\n
\n\n \n
\n \n\n {t('costco.estimatedSavings')}\n
\n\n
\n \n {t('costco.savings', {\n discount: showDecimals\n ? discountTotal.toFixed(2) : discountTotal,\n })}\n \n
\n \n
\n
\n );\n};\n\nexport { CostcoPartnerDiscountLabel };\n","import React from 'react';\nimport './GenericPartnerDiscountLabel.css';\n\nconst GenericPartnerDiscountLabel = ({ logo, label, brandName = 'brand' }) => (\n
\n
\n {logo\n ? (\n \n ) : null}\n\n {label ? {label} : null}\n
\n
\n);\n\nexport { GenericPartnerDiscountLabel };\n","import React, { useCallback, useMemo } from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport {\n CostcoPartnerDiscountLabel,\n} from '../components/quoting/CostcoPartnerDiscountLabel';\nimport { useCostcoTN, useGoodDogTN } from '../util';\nimport {\n GenericPartnerDiscountLabel,\n} from '../components/quoting/GenericPartnerDiscountLabel';\nimport { useGoodDogData } from './useGoodDogData';\nimport { CUSTOMER_SERVICE_PHONE_NUMBER } from '../constants';\n\nexport const usePartnersData = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const goodDogData = useGoodDogData();\n const {\n data,\n isCostco,\n isGoodDog,\n isUSAA,\n loading,\n partnerId,\n } = store?.partners;\n\n const useTennesseeValidations = useMemo(() => {\n if (isCostco) {\n return useCostcoTN;\n }\n\n if (isGoodDog) {\n return useGoodDogTN;\n }\n\n return false;\n }, [isCostco, isGoodDog]);\n\n const renderCardPlanHeader = useCallback(() => {\n if (isCostco) {\n return (\n
\n \n
\n );\n }\n\n if (data?.Logo || data?.DiscountLabel) {\n return (\n
\n \n
\n );\n }\n\n return null;\n }, [data, isCostco]);\n\n const supportPhoneNumber = useMemo(() => {\n if (data && data?.SupportPhoneNumber) {\n return data.SupportPhoneNumber;\n }\n return CUSTOMER_SERVICE_PHONE_NUMBER;\n }, [data]);\n\n return {\n data,\n goodDogData,\n isCostco,\n isGoodDog,\n isPartner: !!partnerId,\n isUSAA,\n loading,\n renderCardPlanHeader,\n supportPhoneNumber,\n useTennesseeValidations,\n };\n};\n","import React, { useCallback } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { saveNewPetPickupDate, updateRateQuote } from '../actions';\nimport { validatePickupDate, validatePickupDate7Days } from './partners.util';\n\nexport const useGoodDogData = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const dispatch = useDispatch();\n const { petPickupDate } = store?.partners;\n\n const isPickupDateValid = React\n .useMemo(() => validatePickupDate(petPickupDate), [petPickupDate]);\n\n const isPickupDateValid7Days = React\n .useMemo(() => validatePickupDate7Days(petPickupDate), [petPickupDate]);\n\n const onPetPickupDateChange = useCallback(({ target }) => {\n const { value } = target;\n\n validatePickupDate(value);\n\n dispatch(saveNewPetPickupDate(value));\n }, [dispatch]);\n\n const updateRateByPickupDate = useCallback(() => {\n const petQuoteList = store.data.petQuoteResponseList;\n const petSelected = petQuoteList.find((pet) => (\n pet.petQuoteId === store.petQuoteSelected));\n\n const {\n parameters,\n guidData,\n sessionInformation: { nopCommerceUser, userEmail },\n } = store;\n\n dispatch(updateRateQuote({\n diamondClientId: nopCommerceUser.DiamonClientdId,\n effectiveDateCustom: '',\n eMail: userEmail || parameters.email,\n employerName: '',\n guidPayload: guidData,\n modifiers: petSelected.modifiers,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n parameters,\n petQuoteList,\n promoCode: store.data.groupCode,\n quoteId: petSelected.petQuoteId,\n showLoading: true,\n }));\n }, [dispatch, store]);\n\n return {\n isPickupDateValid,\n isPickupDateValid7Days,\n onPetPickupDateChange,\n petPickupDate,\n updateRateByPickupDate,\n };\n};\n","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { usePartnersData } from '../../../partners/usePartnersData';\n\nimport discountTag from '../../../assets/landing/discount-tag.svg';\n\nimport './DiscountApplied.css';\n\nconst DiscountTagItem = ({ item }) => (\n
\n \n\n {item.Description}\n
\n);\n\nconst DiscountApplied = ({ isSecondStep = false }) => {\n const { t } = useTranslation('quoting');\n const classNameContainer = `Discount-applied-container${isSecondStep\n ? '-your-info' : ''}`;\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const { isCostco, isGoodDog, isUSAA } = usePartnersData();\n const { rateSummary } = store;\n\n if (rateSummary.AllDiscounts.length === 0) {\n return null;\n }\n\n return (\n
\n

\n {t((isGoodDog || isUSAA) ? 'discountDisclaimer' : 'discount',\n { count: rateSummary.AllDiscounts.length })}\n {isCostco ? '¹' : ''}\n

\n\n
\n {rateSummary.AllDiscounts.map((item, index) => (\n \n ))}\n
\n
\n );\n};\n\nexport default DiscountApplied;\n","export default __webpack_public_path__ + \"static/media/calendar-icon-deep-blue.838d34d2.svg\";","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport moment from 'moment';\n\nimport { currencyFormat } from '../../../util';\nimport { BILLING_CYCLE_TYPE } from '../../../constants';\nimport calendarIcon from '../../../assets/yourInfo/calendar-icon-deep-blue.svg';\n\nconst YourFirstPayment = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const {\n data,\n isMonthlyPlan,\n paymentMethod: { paymentMethodType },\n rateSummary: { QuoteSummaries },\n } = store;\n const { effectiveDate } = data;\n const day = moment(effectiveDate).format('D');\n const ordinalDay = moment(effectiveDate).format('Do');\n\n function getTotal() {\n const billingCycle = isMonthlyPlan\n ? BILLING_CYCLE_TYPE.monthly : BILLING_CYCLE_TYPE.annualy;\n const paymentType = paymentMethodType.value;\n const summary = QuoteSummaries\n .find((item) => item.BillingCycle === billingCycle\n && item.PaymentType === paymentType)\n || { MonthlyPremiumTotal: 0, TodaysTotal: 0 };\n\n return {\n monthlyTotal: currencyFormat({ value: summary.MonthlyPremiumTotal }),\n todaysTotal: currencyFormat({ value: summary.TodaysTotal }),\n };\n }\n\n function getTotalText() {\n if (isMonthlyPlan) {\n return (\n <>\n {'Your account will be charged '}\n\n
\n {`$${getTotal().monthlyTotal} \n on the `}\n\n \n {`${ordinalDay} of each month.`}\n \n
\n \n );\n }\n return 'Your policy will renew one year from the effective date.';\n }\n\n function getCalendarClass() {\n if (!isMonthlyPlan) {\n return 'Your-info-calendar-three';\n }\n\n return day > 9\n ? 'Your-info-calendar-two' : 'Your-info-calendar-one';\n }\n\n function getDaysCalendar() {\n return isMonthlyPlan ? day : 365;\n }\n\n return (\n
\n
\n
\n \"\"\n\n \n {getDaysCalendar()}\n \n
\n\n

\n {getTotalText()}\n

\n
\n\n
\n Today's total\n\n \n ${getTotal().todaysTotal}\n \n
\n
\n );\n};\n\nexport { YourFirstPayment };\n","import React, { useMemo } from 'react';\nimport FigoLottie from './FigoLottie';\nimport whiteSpinner from '../../assets/loading-whites.json';\nimport navySpinner from '../../assets/loading-navys.json';\nimport mintSpinner from '../../assets/loading-mints.json';\nimport loadingSpinner from '../../assets/loading-spinner.json';\nimport './LoadingButton.css';\n\nconst colors = {\n MINT: 'mint',\n NAVY: 'navy',\n WHITE: 'white',\n};\n\nconst LoadingButton = ({\n ariaLabel = '',\n buttonEvents,\n children,\n className,\n isLoading,\n loadingColor = colors.NAVY,\n submit,\n}) => {\n const animationData = useMemo(() => {\n switch (loadingColor) {\n case colors.WHITE:\n return whiteSpinner;\n case colors.MINT:\n return mintSpinner;\n case colors.NAVY:\n return navySpinner;\n default:\n return loadingSpinner;\n }\n }, [loadingColor]);\n\n let content = children;\n if (isLoading) {\n content = (\n \n );\n }\n\n return (\n
\n \n {content}\n \n
\n );\n};\n\nexport { LoadingButton };\n","import React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport {\n costcoMembershipEditClicked,\n changeCostcoMembershipNumber,\n changeProceedWithoutCostcoMembership,\n validateCostcoMembership,\n} from '../../../../actions/partners';\nimport { useRateSummary } from '../../../../hooks/useRateSummary';\nimport { LoadingButton } from '../../../common/LoadingButton';\nimport { BILLING_CYCLE_TYPE } from '../../../../constants';\nimport './CostcoMembershipValidator.css';\nimport { useFeeWaived, useFeeWaivedBackend } from '../../../../hooks';\n\nconst COSTCO_URL = 'https://www.costco.com';\nconst FIND_MEMBERSHIP_URL = 'https://customerservice.costco.com/app/'\n + 'answers/detail/a_id/7897/~/where-can-i-find-my-membership-number%3F';\n\nexport const CostcoMembershipValidator = ({ goToCustomize = () => { } }) => {\n const membershipInputRef = useRef();\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const dispatch = useDispatch();\n const { getSelectedRateBody } = useRateSummary();\n const isFeeWaived = useFeeWaived();\n const isFeeWaivedBackend = useFeeWaivedBackend();\n\n const {\n customerZipCode,\n data: {\n insuranceProduct: {\n InsuranceProductFee,\n },\n petQuoteResponseList,\n },\n partners: {\n costcoMembership: {\n editing,\n error,\n isValid,\n loading,\n membershipNumber,\n membershipTypeName,\n message,\n waivableFee,\n },\n data: {\n MembershipValidation: {\n MembershipTypes,\n },\n PartnerGuid: partnerGuid,\n },\n },\n parameters,\n sessionInformation: { nopCommerceUser, userEmail },\n } = store;\n\n const membershipTypes = useMemo(() => {\n if (membershipTypeName) {\n return MembershipTypes\n .filter((membership) => membership.Name === membershipTypeName);\n }\n\n return [...MembershipTypes];\n }, [MembershipTypes, membershipTypeName]);\n\n const waivableFeeMemo = useMemo(() => {\n const { oneTime } = BILLING_CYCLE_TYPE;\n\n const insuranceProduct = InsuranceProductFee\n .find((Fee) => Fee.InsuranceFee.BillingCycleType === oneTime);\n if (insuranceProduct) {\n return insuranceProduct.InsuranceFee.Amount;\n }\n\n return 0;\n }, [InsuranceProductFee]);\n\n const callValidateCostcoMembership = useCallback(() => {\n if (loading) {\n return;\n }\n\n dispatch(validateCostcoMembership({\n customerZipCode,\n membershipNumber,\n partnerGuid,\n rateSummaryBody: getSelectedRateBody,\n useFeeWaived: isFeeWaived,\n useFeeWaivedBackend: isFeeWaivedBackend,\n waivableFee: waivableFeeMemo,\n }));\n }, [\n customerZipCode,\n dispatch,\n getSelectedRateBody,\n loading,\n membershipNumber,\n partnerGuid,\n waivableFeeMemo,\n isFeeWaived,\n isFeeWaivedBackend,\n ]);\n\n useEffect(() => {\n if (!loading && isValid && waivableFee !== waivableFeeMemo) {\n callValidateCostcoMembership();\n }\n }, [\n isValid,\n callValidateCostcoMembership,\n loading,\n waivableFee,\n waivableFeeMemo,\n ]);\n\n useEffect(() => {\n if (editing && membershipNumber) {\n const { current } = membershipInputRef;\n if (current) {\n current.focus();\n current.select();\n }\n }\n }, [editing]);\n\n function handleMembershipValidation(event) {\n event.preventDefault();\n\n if (editing) {\n callValidateCostcoMembership();\n } else {\n dispatch(costcoMembershipEditClicked());\n }\n }\n\n function handleMembershipNumberChanged(event) {\n const { value } = event.target;\n\n dispatch(changeCostcoMembershipNumber(value));\n }\n\n const handleProceedWithoutCostcoMembership = async () => {\n await dispatch(changeProceedWithoutCostcoMembership({\n diamondClientId: nopCommerceUser.DiamonClientdId,\n effectiveDateCustom: store.effectiveDateCustom,\n eMail: userEmail || parameters.email,\n isProceedWithoutPartner: true,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n parameters,\n petQuoteList: petQuoteResponseList,\n quoteId: store.petQuoteSelected,\n }));\n goToCustomize();\n };\n\n function renderButton() {\n let content = Validate;\n let className = 'Costco-membership-button';\n\n if (!editing) {\n content = Edit;\n className = 'Costco-membership-edit-button';\n }\n\n return (\n \n {content}\n \n );\n }\n\n return (\n
\n

Costco Membership

\n\n

\n A valid Costco member ID is required. If you are not a Costco member or\n your membership has expired, please visit \n\n \n Costco.com\n \n\n  to purchase or renew your membership.\n

\n\n \n
\n \n Costco Membership Number\n\n \n \n\n {renderButton()}\n
\n\n \n {error}\n \n \n\n
\n {membershipTypes\n .map((membership) => (\n \n ))}\n\n \n {message}\n \n
\n\n {editing && (\n <>\n \n Where can I find my Costco Membership Number?\n \n\n

\n Proceed without Costco discount? \n\n \n Click here\n \n

\n \n )}\n
\n );\n};\n","export default __webpack_public_path__ + \"static/media/calendar-icon.4dc7cd57.svg\";","import { setSessionStorage } from '../util';\n\nconst KEY_IS_OPEN_QUOTE = 'KEY_IS_OPEN_QUOTE';\n\nexport function setIsOpenQuote(value) {\n setSessionStorage({ data: value, key: KEY_IS_OPEN_QUOTE });\n}\n\nexport function isOpenQuote() {\n return !!sessionStorage.getItem(KEY_IS_OPEN_QUOTE);\n}\n","import moment from 'moment';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport calendarIcon from '../../../../assets/yourInfo/calendar-icon.svg';\nimport { isOpenQuote } from '../../../../utils/storage';\n\nimport './ImportantDatesNewDesign.css';\n\nconst DISCLAIMER_TEXT_ID = 3;\n\nconst ImportantDatesNewDesign = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const contentRef = useRef();\n const [contentLoaded, setContentLoaded] = useState();\n const { t } = useTranslation('quoting');\n\n const {\n data: {\n insuranceProduct: {\n InsuranceInformationSections,\n },\n },\n } = store;\n\n useEffect(() => {\n const isNotLoaded = contentRef.current && !contentLoaded;\n\n if (isNotLoaded && InsuranceInformationSections) {\n const disclaimerText = InsuranceInformationSections\n .find((item) => item.InsuranceInformationTypeId === DISCLAIMER_TEXT_ID)\n || { InsuranceInformationDetails: [{}] };\n\n const htmlContent = disclaimerText.InsuranceInformationDetails[0].Text;\n const htmlContainer = document.createElement('div');\n htmlContainer.innerHTML = htmlContent;\n\n setContentLoaded(true);\n contentRef.current.appendChild(htmlContainer);\n }\n }, [contentLoaded, InsuranceInformationSections]);\n\n const getEffectiveDate = () => {\n const { data: { effectiveDate } } = store;\n const openQuote = isOpenQuote();\n\n if (!openQuote) {\n return effectiveDate;\n }\n\n // TODO: work arround, effective date wrong when opening saved quote\n return moment(Date.now()).add(1, 'days');\n };\n\n function renderImportantDatesList() {\n const { data } = store;\n const importantDates = data.insuranceProduct.InsuranceWaitingPeriods;\n\n const effectiveDate = getEffectiveDate();\n\n return importantDates.map((date) => {\n const dateText = moment(effectiveDate)\n .add(date.Units, date.IsMonth ? 'months' : 'days')\n .format('MMMM D, YYYY');\n\n return (\n \n \n\n
\n \n {date.InsuranceWaitingPeriodType\n && date.InsuranceWaitingPeriodType.Name}\n \n\n \n {dateText}\n \n
\n \n );\n });\n }\n\n return (\n
\n

\n {t('importantDates.title')}\n

\n\n
\n {renderImportantDatesList()}\n
\n\n \n
\n );\n};\n\nexport { ImportantDatesNewDesign };\n","export default __webpack_public_path__ + \"static/media/ill-14.adc9a1f2.svg\";","import React from 'react';\n\nimport ill14 from '../../../assets/ills/ill-14.svg';\n\nimport './YourInfoFloatingImages.css';\n\nconst YourInfoFloatingImages = ({\n isLoggedIn = false,\n isSecondStep = false,\n}) => (\n <>\n {isSecondStep && (\n \n )}\n \n);\n\nexport { YourInfoFloatingImages };\n","import React from 'react';\nimport './loading.css';\n\nconst Loading = ({ border = '8px', color = '#2fb3b4', size = '64px' }) => {\n const style = {\n border: `${border} solid ${color}`,\n borderColor: `${color} transparent transparent transparent`,\n height: size,\n width: size,\n };\n\n return (\n
\n
\n\n
\n\n
\n\n
\n
\n );\n};\n\nexport default Loading;\n","import React, { useEffect, useState } from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport Loading from '../../common/Loading';\nimport { PetGender, PetType } from '../../../constants';\n\nimport './Prop103DisclaimerText.css';\nimport { apiCall } from '../../../util';\nimport { getQuoteClientType } from '../../../partners/partners.util';\n\nconst PLAN_VALUES = [{\n name: 'Essential',\n value: 5000,\n}, {\n name: 'Preferred',\n value: 10000,\n}, {\n name: 'Ultimate',\n value: null,\n}];\n\nconst QuoteLinks = ({ comparableQuote }) => {\n const { t } = useTranslation('quoting');\n const quotes = comparableQuote?.quotes || [];\n\n return (\n <>\n {quotes.map((item) => (\n <>\n \n {t('clickHere', {\n name: quotes.length === 1 ? '' : `(${item.petName})`,\n })}\n \n\n {quotes.length === 1 ? ' ' : ', '}\n \n ))}\n \n );\n};\n\n/**\n * Prop 103 requires Insurers in California to inform a client when there are\n * comparable plans to the one they are quoting for at a lower price.\n *\n * @link sdk https://github.com/petpartners/IPG.Prop103\n */\nexport const Prop103DisclaimerText = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const [comparableQuote, setComparableQuote] = useState({\n displayLink: false,\n quotes: [{ linkUrl: '', petName: '' }],\n });\n const [isQuoteLoading, setQuoteLoading] = useState(false);\n\n const { petQuoteResponseList, zipCode } = store.data;\n const { isLoading, newCustomer, quoteSelectedValues, partners } = store;\n\n const logProp103Request = React.useCallback(({\n apiUrl,\n body,\n message,\n response,\n statusCode,\n }) => {\n apiCall('api/Quote/P3/Log', {\n headers: {\n 'X-Client-Name': getQuoteClientType(partners),\n },\n post: {\n Endpoint: apiUrl,\n Message: message,\n Request: body,\n Response: response,\n statusCode,\n },\n });\n }, [partners]);\n\n const payloadQuote = React.useMemo(() => {\n const quotesData = quoteSelectedValues.map((quoteSelected) => {\n const quote = petQuoteResponseList\n .find((item) => item.petQuoteId === quoteSelected.quoteId);\n\n if (!quote) {\n return {};\n }\n\n const quotePlan = quote.Plans\n .find((item) => item.Plan === quoteSelected.selectedPlan);\n const quotePrice = quotePlan.RatingOptions\n .find((item) => item.DeductibleId === quoteSelected.deductibleId\n && item.ReimbursementId === quoteSelected.reimbursementId);\n const annualLimit = PLAN_VALUES\n .find((item) => item.name === quotePlan.PlanName);\n const reimbursement =\n +quoteSelected.reimbursementPercentage.replace('%', '');\n const years = quote.petAgeName.includes('months')\n ? 0 : quote.petAgeName.replace(/[a-z]/g, '').trim();\n\n return {\n accidentOnly: false,\n annualLimit: annualLimit?.value,\n breedId: `${quote.breedId}`,\n deductible: +quoteSelected.deductibleQuantity\n .replace('$', '').replace(',', ''),\n email: newCustomer.email,\n gender: quote.gender === PetGender.Male.value ? 0 : 1,\n petAge: +years,\n petName: quoteSelected.petName,\n petType: quote.petType === PetType.Dog.value ? 'dog' : 'cat',\n premiumMonthly: quotePrice.MonthlyPremium,\n reimbursement: reimbursement / 100,\n requestingInsurer: 'figo',\n zipCode,\n };\n });\n\n return quotesData;\n }, [\n newCustomer.email,\n petQuoteResponseList,\n quoteSelectedValues,\n zipCode,\n ]);\n\n useEffect(() => {\n if (isLoading) {\n return;\n }\n\n setQuoteLoading(true);\n\n if (window.apiClient) {\n const promises = payloadQuote\n .map((data) => new Promise((resolve, reject) => {\n window.apiClient.makeRequest(data)\n .then((response) => {\n const { apiUrl, errorMsg, statusCode } = response;\n const displayLink = response.data?.displayLink || '';\n const linkUrl = response.data?.linkUrl || '';\n\n logProp103Request({\n apiUrl,\n body: data,\n message: errorMsg,\n response,\n statusCode,\n });\n resolve({ displayLink, linkUrl, petName: data.petName });\n }).catch((error) => { reject(error); });\n }));\n\n Promise.all(promises).then((quotes) => {\n const quotesToDisplay = quotes.filter((item) => item.displayLink);\n const displayLink = quotesToDisplay.length > 0;\n\n if (displayLink) {\n setComparableQuote({ displayLink: true, quotes: quotesToDisplay });\n }\n\n setQuoteLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoading, zipCode]);\n\n if (isQuoteLoading) {\n return (\n
\n \n
\n );\n }\n\n if (!comparableQuote.displayLink) {\n return null;\n }\n\n return (\n

\n ,\n }}\n i18nKey=\"californiaDisclaimer\"\n ns=\"quoting\"\n />\n

\n );\n};\n","export default __webpack_public_path__ + \"static/media/close-arrow.1af2cc71.svg\";","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { fetchTemporaryMessage } from '../../actions';\nimport closeIcon from '../../assets/close-arrow.svg';\nimport './TemporaryMessage.css';\n\nconst TemporaryMessage = ({ sticky = false, positionBottom = 0 }) => {\n const [isVisible, setIsVisible] = useState(true);\n const { t } = useTranslation('quoting');\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n const {\n temporaryMessageData,\n partners: { isCostco },\n } = store;\n\n useEffect(() => {\n dispatch(fetchTemporaryMessage(isCostco));\n }, [dispatch, isCostco]);\n\n const handleCloseClick = () => {\n setIsVisible(false);\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 0);\n };\n\n if (!isVisible || !temporaryMessageData?.Message) {\n return null;\n }\n\n return (\n \n \n\n \n
\n );\n};\n\nexport { TemporaryMessage };\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport {\n CUSTOMER_SERVICE_EMAIL,\n CUSTOMER_SERVICE_MSG_NUMBER,\n CUSTOMER_SERVICE_PHONE_NUMBER,\n} from '../../constants';\nimport './QuestionsSection.css';\n\nconst QuestionsSection = ({\n isQuote = false,\n isLogin = false,\n isPurchase = false,\n}) => {\n const store = useSelector((stores) => stores.quoting);\n const { partners: { data, isCostco, isUSAA } } = store;\n\n const { t } = useTranslations('quoting', 'questionsSection');\n let title = t('questions');\n let supportPhoneNumber = `${CUSTOMER_SERVICE_PHONE_NUMBER}.`;\n let supportDesc = t('supportDesc');\n let supportSchedule = t('supportSchedule');\n let extraNumber = '';\n let supportDesc2 = '';\n const emailDesc = t('emailDesc');\n\n if (isCostco) {\n title = t('vipSupport');\n supportPhoneNumber = data.SupportPhoneNumber;\n supportDesc = data.SupportLabel;\n supportSchedule = data.SupportSchedule;\n }\n\n if (isUSAA) {\n supportPhoneNumber = data.SupportPhoneNumber;\n }\n\n if (isPurchase) {\n title = t('contactUs');\n supportDesc = t('call');\n supportPhoneNumber = CUSTOMER_SERVICE_PHONE_NUMBER;\n supportDesc2 = t('text');\n extraNumber = CUSTOMER_SERVICE_MSG_NUMBER;\n supportSchedule = t('supportSchedule');\n }\n\n return (\n \n
\n

{title}

\n
\n\n
\n

\n {supportDesc}\n\n  \n\n \n {supportPhoneNumber}\n \n

\n\n {supportDesc2 && (\n

\n {supportDesc2}
{extraNumber}\n

\n )}\n\n

\n {supportSchedule}\n

\n\n {isPurchase && (\n

\n {emailDesc}\n\n
\n\n \n {CUSTOMER_SERVICE_EMAIL}\n \n

\n )}\n
\n \n );\n};\n\nexport { QuestionsSection };\n","import React from 'react';\nimport errorIcon from '../../assets/error.svg';\nimport infoIcon from '../../assets/info-i.svg';\nimport './Message.css';\n\nconst Message = ({ message = '', type = 'error', show = false }) => (\n \n {show ? (\n <>\n \"\"\n\n {message}\n \n ) : ''}\n \n);\n\nexport { Message };\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { Message } from '../common/Message';\n\nconst IncompleteSelectionError = () => {\n const { t } = useTranslation('common');\n const store = useSelector(({ quoting }) => quoting);\n const {\n powerUpErrors,\n petsWithQuoteError,\n petQuoteSelected,\n } = store;\n\n const show = useMemo(() => {\n if (petsWithQuoteError.length === 1\n && petsWithQuoteError.includes(petQuoteSelected)) {\n return powerUpErrors.length > 0;\n }\n return !!petsWithQuoteError.length;\n }, [petQuoteSelected, petsWithQuoteError, powerUpErrors.length]);\n\n return (\n \n );\n};\n\nexport { IncompleteSelectionError };\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { Message } from '../common/Message';\nimport { usePartnersData } from '../../partners/usePartnersData';\nimport { QUOTE_MAX_SIZE } from '../../constants';\n\nconst QuoteSizeWarning = () => {\n const { t } = useTranslation('common');\n const store = useSelector(({ quoting }) => quoting);\n const { supportPhoneNumber } = usePartnersData();\n const { data } = store;\n\n const show = useMemo(() => data\n && data?.petQuoteResponseList.length >= QUOTE_MAX_SIZE, [data]);\n\n return (\n \n );\n};\n\nexport { QuoteSizeWarning };\n","import React, {\n useState,\n useEffect,\n useMemo,\n useCallback,\n useRef,\n} from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { useIsAuthenticated } from '@azure/msal-react';\n\nimport { PetParentInfo } from './PetParentInfo';\nimport PlanSummary from './PaymentSummary';\nimport { PaymentMethod } from './PaymentMethod';\nimport { YourInfoFooter } from './YourInfoFooter';\nimport TermsAndConditions from './TermsAndConditions';\nimport PaymentBreakdown from './PaymentBreakdown';\nimport DiscountApplied from './DiscountApplied';\nimport { YourFirstPayment } from './YourFirstPayment';\nimport {\n CostcoMembershipValidator,\n} from './PartnersCustomFields/CostcoMembershipValidator';\nimport {\n ImportantDatesNewDesign,\n} from './important-dates/ImportantDatesNewDesign';\n\nimport {\n PAYMENT_TYPE,\n YOUR_INFO_STEPS,\n TEN_DIGIT_NUMBER,\n STICKY_BAR_HEIGHT_SECOND_STEP,\n DEFAULT_STICKY_BAR_HEIGHT,\n} from '../../../constants';\nimport {\n createDiamondClient,\n sendAllPetsFSCLead,\n sendFSCCustomerLead,\n sendFSCQuoteLead,\n validateDiamondUser,\n yourInfoStepChanged,\n} from '../../../actions';\n\nimport {\n loadAmericanStates,\n validateCustomerExistsByEmail,\n} from '../../../actions/quoting';\n\nimport { costcoMembershipSetErrorMessage } from '../../../actions/partners';\n\nimport {\n useB2CInfo,\n useOneIncScript,\n useRateSummary,\n useRedesign,\n useTranslations,\n} from '../../../hooks';\nimport {\n getElementOffsetTop,\n isRoutingNumberValid,\n isValidCardCVV,\n isValidCardExpirationDate,\n isValidCardNumber,\n isValidDiamondStreet,\n useOneInc,\n forceFocusElement,\n useFSCLeads,\n useROPC,\n} from '../../../util';\nimport { usePartnersData } from '../../../partners/usePartnersData';\n\nimport { YourInfoFloatingImages } from './YourInfoFloatingImages';\nimport { Prop103DisclaimerText } from './Prop103DisclaimerText';\nimport { pickupDateMin } from '../../../partners/partners.util';\n\nimport './YourInfoContent.css';\nimport { TemporaryMessage } from '../TemporaryMessage';\nimport { QuestionsSection } from '../QuestionsSection';\nimport { IncompleteSelectionError } from '../IncompleteSelectionError';\nimport { QuoteSizeWarning } from '../QuoteSizeWarning';\n\nconst PICKUP_DATE_MIN = pickupDateMin();\n\nconst YourInfoContent = () => {\n const dispatch = useDispatch();\n const history = useHistory();\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const { getSelectedRate } = useRateSummary();\n const { t } = useTranslations('quoting');\n const {\n americanStates,\n newCustomer,\n paymentMethod,\n sessionInformation,\n termsAndConditions,\n yourInfoStep,\n oneInc: { tokenId },\n partners: { costcoMembership },\n searchParameters,\n } = store;\n const { isCustomer, nopCommerceUser } = sessionInformation;\n const [\n validateTermsAndConditions,\n setValidateTermsAndConditions,\n ] = useState(0);\n const [validatePetParentInfo, setValidatePetParentInfo] = useState(0);\n const [validatePetCloudLogin, setValidatePetCloudLogin] = useState(0);\n const isSecondStep = yourInfoStep === YOUR_INFO_STEPS.secondStep;\n const [yourVeterinarianRef, setYourVeterinarianRef] = useState(null);\n const isAuthenticated = useIsAuthenticated();\n const isRedesign = useRedesign();\n\n const {\n isPartner,\n isCostco,\n isGoodDog,\n goodDogData: {\n isPickupDateValid,\n isPickupDateValid7Days,\n onPetPickupDateChange,\n petPickupDate,\n updateRateByPickupDate,\n },\n renderCardPlanHeader,\n } = usePartnersData();\n\n const { loginB2C } = useB2CInfo();\n const location = useLocation();\n\n const renderCostcoMembershipValidator = isCostco\n && store.partners.data.MembershipValidation;\n\n useOneIncScript();\n\n useEffect(() => {\n if (isSecondStep) {\n forceFocusElement('newCustomerPasswordConfirm');\n }\n }, [isSecondStep]);\n\n useEffect(() => {\n async function validateCustomerB2C() {\n if (newCustomer.email\n && !sessionInformation.nopCommerceUser.LoginSuccess\n && !isAuthenticated) {\n const payload = await validateCustomerExistsByEmail(newCustomer.email);\n const { IsValid, Data } = payload;\n const userAlreadyExists = IsValid && !!Data;\n\n dispatch(validateDiamondUser({\n customerExistsData: Data,\n email: newCustomer.email,\n userAlreadyExists,\n validateCustomer: false,\n }));\n\n if (userAlreadyExists && !useROPC) {\n const currentUrl = `${location.pathname}${location.search}`;\n loginB2C({\n existingEmail: newCustomer.email,\n urlState: currentUrl,\n });\n }\n }\n }\n\n validateCustomerB2C();\n getSelectedRate();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const { bankAccount, creditDebit } = paymentMethod;\n\n const [scrollTermCondition, setScrollTermCondition] = useState(false);\n const termConditionsRef = useRef();\n\n const [scrollPaymentMethod, setScrollPaymentMethod] = useState(false);\n const paymentMethodRef = useRef();\n const [showPaymentMethodError, setShowPaymentMethodError] = useState(false);\n\n const [scrollPetParentInfo, setScrollPetParentInfo] = useState(false);\n const [goToFirstErrorInput, setGoToFirstErrorInput] = useState(false);\n const petParentInfoRef = useRef();\n const [redirectToCustomize, setRedirectToCustomize] = useState(false);\n\n const [\n scrollPetParentInfoSecond,\n setScrollPetParentInfoSecond,\n ] = useState(false);\n const petParentInfoSecondRef = useRef();\n\n const useProp103 = useMemo(() => {\n if (store.isLoading || store.petRemovedLoading) {\n return false;\n }\n\n if (!store.data) {\n return false;\n }\n\n return store.data.SiteMessages\n .find((item) => item.Name === 'PROP103') || false;\n }, [store.data, store.isLoading, store.petRemovedLoading]);\n\n const bankValidations = useOneInc\n || (bankAccount.accountNumber.trim().length\n && isRoutingNumberValid(paymentMethod.bankAccount.routingNumber.trim())\n && paymentMethod.bankAccount.accountNumberConfirmation.trim().length\n && (paymentMethod.bankAccount.accountNumber\n === paymentMethod.bankAccount.accountNumberConfirmation));\n const creditCardValidations = useOneInc\n || (isValidCardCVV(creditDebit.cardCvv.trim())\n && isValidCardNumber(creditDebit.cardNumber.trim().replace(/-/g, ''))\n && isValidCardExpirationDate(creditDebit.expirationDate\n .trim()\n .replace(/\\//g, ''))\n && creditDebit.nameOnCard.trim().length);\n const isPaymentMethodValid = useOneInc\n || (paymentMethod.paymentMethodType.value === PAYMENT_TYPE.bank.value\n ? bankValidations : creditCardValidations);\n\n const pickupDateValid = isGoodDog\n ? (isPickupDateValid && isPickupDateValid7Days)\n : true;\n\n const isTermsAndConditionsValid =\n termsAndConditions.agreeTermsAndConditionCheck\n && termsAndConditions.understandConditionCheck;\n const isPetParentInfoValid = newCustomer.name.trim().length\n && newCustomer.lastName.trim().length\n && newCustomer.phoneNumber.trim().length\n && TEN_DIGIT_NUMBER.test(newCustomer.phoneNumber.trim())\n && (!isCostco || (isCostco && costcoMembership.isValid))\n && newCustomer.address.city.trim().length\n && newCustomer.address.street.trim().length\n && isValidDiamondStreet(newCustomer.address.street.trim())\n && pickupDateValid;\n const isSecondParentInfoValid =\n !store.secondParentFormVisible\n || (store.secondParentFormVisible\n && newCustomer.secondParent.name.trim().length\n && newCustomer.secondParent.lastName.trim().length\n && newCustomer.secondParent.phoneNumber.trim().length\n && TEN_DIGIT_NUMBER.test(newCustomer.secondParent.phoneNumber.trim()));\n const isNewCustomerValid = newCustomer.email.trim().length\n && !newCustomer.emailError.trim().length;\n\n const isSecondBillingAddressValid = useOneInc\n || paymentMethod.mailAddressSameAsPet\n || (!paymentMethod.mailAddressSameAsPet && (\n !paymentMethod.billingAddress.cityError.length\n && !paymentMethod.billingAddress.stateError.length\n && !paymentMethod.billingAddress.streetError.length\n && !paymentMethod.billingAddress.zipError.length\n && paymentMethod.billingAddress.city.trim().length\n && paymentMethod.billingAddress.state.trim().length\n && paymentMethod.billingAddress.street.trim().length\n && paymentMethod.billingAddress.zip.trim().length\n ));\n\n const petCloudLoginSuccess = isNewCustomerValid || isCustomer;\n\n const isPurchaseValid = isTermsAndConditionsValid\n && isPaymentMethodValid\n && isSecondBillingAddressValid\n && isPetParentInfoValid\n && isSecondParentInfoValid\n && petCloudLoginSuccess\n && (!isCostco || (isCostco && costcoMembership.message))\n && tokenId;\n\n useEffect(() => {\n if (americanStates.length <= 0) {\n dispatch(loadAmericanStates());\n }\n }, [americanStates, dispatch]);\n\n useEffect(() => {\n if (isSecondStep && yourVeterinarianRef) {\n window.scrollTo({\n behavior: 'smooth',\n top: yourVeterinarianRef.offsetTop - 100,\n });\n } else if (!yourVeterinarianRef) {\n const element = document.getElementById('yourVeterinarianRef');\n setYourVeterinarianRef(element);\n }\n }, [yourVeterinarianRef, setYourVeterinarianRef, isSecondStep]);\n\n useEffect(() => {\n if (scrollTermCondition) {\n window.scrollTo({\n behavior: 'smooth',\n top: termConditionsRef.current.offsetTop,\n });\n setScrollTermCondition(false);\n }\n }, [scrollTermCondition]);\n\n useEffect(() => {\n if (scrollPaymentMethod) {\n window.scrollTo({\n behavior: 'smooth',\n top: paymentMethodRef.current.offsetTop,\n });\n setScrollPaymentMethod(false);\n }\n }, [scrollPaymentMethod]);\n\n useEffect(() => {\n if (scrollPetParentInfo) {\n window.scrollTo({\n behavior: 'smooth',\n top: petParentInfoRef.current.offsetTop,\n });\n setScrollPetParentInfo(false);\n setGoToFirstErrorInput(true);\n }\n }, [scrollPetParentInfo]);\n\n useEffect(() => {\n if (goToFirstErrorInput) {\n setGoToFirstErrorInput(false);\n }\n }, [goToFirstErrorInput]);\n\n useEffect(() => {\n if (scrollPetParentInfoSecond) {\n window.scrollTo({\n behavior: 'smooth',\n top: petParentInfoSecondRef.current.offsetTop,\n });\n setScrollPetParentInfoSecond(false);\n setGoToFirstErrorInput(true);\n }\n }, [scrollPetParentInfoSecond]);\n\n useEffect(() => {\n if (redirectToCustomize) {\n const url = `/quoting/getQuote${searchParameters}`;\n history.push(url);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [redirectToCustomize]);\n\n const goToCustomize = useCallback(() => {\n setRedirectToCustomize(true);\n }, []);\n\n const sendCustomerLead = useCallback(() => {\n if (useFSCLeads) {\n if (newCustomer.email !== newCustomer.initialEmail) {\n dispatch(sendAllPetsFSCLead());\n dispatch(sendFSCQuoteLead());\n }\n dispatch(sendFSCCustomerLead());\n }\n }, [dispatch, newCustomer]);\n\n function createCustomer() {\n if (isCustomer && nopCommerceUser.DiamonClientdId) {\n return;\n }\n\n const {\n newCustomer: {\n address,\n email,\n name,\n lastName,\n phoneNumber,\n },\n } = store;\n\n dispatch(createDiamondClient({\n address: address.street,\n city: address.city,\n clientId: nopCommerceUser.DiamonClientdId,\n email,\n firstName: name,\n lastName,\n phoneNumber,\n stateAbbreviation: address.stateAbbr,\n stateName: address.state,\n zipCode: address.zipCode,\n }));\n }\n\n useEffect(() => {\n if (tokenId) {\n setShowPaymentMethodError(false);\n }\n }, [tokenId]);\n\n const handleContinuePurchaseClick = () => {\n if (isSecondStep) {\n setValidateTermsAndConditions(validateTermsAndConditions + 1);\n }\n setValidatePetParentInfo(validatePetParentInfo + 1);\n setValidatePetCloudLogin(validatePetCloudLogin + 1);\n\n if (!isPetParentInfoValid) {\n setScrollPetParentInfo(true);\n } else if (!isSecondParentInfoValid) {\n setScrollPetParentInfoSecond(true);\n } else if (!tokenId && isSecondStep) {\n setScrollPaymentMethod(true);\n setShowPaymentMethodError(true);\n } else if (!isTermsAndConditionsValid && isSecondStep) {\n setScrollTermCondition(true);\n }\n\n if (isPetParentInfoValid && isSecondParentInfoValid\n && petCloudLoginSuccess) {\n createCustomer();\n\n if (!isSecondStep) {\n sendCustomerLead();\n if (useFSCLeads && isCostco) {\n // Update FSC quote with membership\n dispatch(sendFSCQuoteLead());\n }\n }\n dispatch(yourInfoStepChanged(YOUR_INFO_STEPS.secondStep));\n }\n\n if (!isPurchaseValid) {\n let offsetTop;\n\n if (isCostco\n && !costcoMembership.message) {\n offsetTop = getElementOffsetTop('costcoMembershipValidator', 300);\n const errorMessage = 'Please validate member id to proceed';\n dispatch(costcoMembershipSetErrorMessage(errorMessage));\n } else if (!petCloudLoginSuccess) {\n offsetTop = getElementOffsetTop('newCustomerLogin', 300);\n } else if (!isPaymentMethodValid) {\n offsetTop = getElementOffsetTop('paymentMethod', 300);\n } else if (!isSecondBillingAddressValid) {\n offsetTop = getElementOffsetTop('billingAddressSwitch', 300);\n }\n\n if (offsetTop) {\n window.scrollTo({ behavior: 'smooth', top: offsetTop });\n }\n }\n };\n\n const handleOnPetPickupDate = async ({ target }) => {\n await onPetPickupDateChange({ target });\n };\n\n const onBurPetPickupDate = () => {\n if (pickupDateValid) {\n updateRateByPickupDate();\n }\n };\n\n return (\n
\n \n {isPartner ? renderCardPlanHeader() : null}\n\n
\n {isRedesign ? (\n <>\n \n\n \n \n ) : null}\n\n \n\n {renderCostcoMembershipValidator && (\n \n )}\n\n {isGoodDog && (\n
\n

{t('goodDog.title')}

\n\n

{t('goodDog.subtitle')}

\n\n

{t('goodDog.subtitle2')}

\n\n
\n \n {t('petPickupDate')}\n\n \n \n\n \n {!isPickupDateValid7Days && t('goodDog.pickupDateError')}\n {!isPickupDateValid && t('goodDog.invalidDate')}\n \n\n

\n {t('goodDog.questions')}\n

\n
\n
\n )}\n
\n\n \n\n {isSecondStep && (\n\n
\n \n\n \n\n \n\n {useProp103 && }\n\n \n\n \n\n \n\n \n
\n )}\n\n
\n \n
\n
\n\n \n\n \n
\n );\n};\n\nexport { YourInfoContent };\n","export default __webpack_public_path__ + \"static/media/arrow-down-deep-blue-main.b8be934e.svg\";","import React, { forwardRef } from 'react';\nimport './ScrollableDiv.css';\n\nconst ScrollableDiv = forwardRef((props, ref) => (\n \n {props.children}\n
\n));\n\nexport default ScrollableDiv;\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport ArrowDown from '../../assets/arrow-down-deep-blue-main.svg';\nimport TouchableDiv from './TouchableDiv';\nimport Shimmer from './Shimmer';\nimport ScrollableDiv from './ScrollableDiv';\nimport {\n saveNewPetBreed,\n saveNewPetAge,\n} from '../../actions/quoting';\nimport { removeEmojis } from '../../util';\n\nimport './DropdownAddPet.css';\n\nconst SPACE_KEY = 32;\nconst DOWN_KEY = 40;\nconst LEFT_KEY = 37;\nconst RIGHT_KEY = 39;\nconst UP_KEY = 38;\nconst INPUT_NODE = 'INPUT';\n\nfunction handleKeyDown(event) {\n const ignoredKeys = [DOWN_KEY, LEFT_KEY, RIGHT_KEY,\n UP_KEY];\n if (event.target.nodeName !== INPUT_NODE) {\n ignoredKeys.push(SPACE_KEY);\n }\n if (ignoredKeys.indexOf(event.keyCode) > -1) {\n event.preventDefault();\n }\n}\n\nconst DropdownAddPet = ({\n isLanding,\n items = [],\n petAgeRef = null,\n petBreedRef = null,\n placeholder = '',\n requiredError,\n showShimmer,\n title,\n type = '',\n withInput = false,\n}) => {\n const [open, setOpen] = useState(false);\n const [searchInput, setSearchInput] = useState('');\n const [error, setError] = useState(false);\n const [itemsFiltered, setItemsFiltered] = useState([]);\n const [itemSelectedId, setItemSelectedId] = useState(0);\n const store = useSelector((stores) => stores.quoting);\n const dispatch = useDispatch();\n const searchRef = useRef(null);\n const dropdownHeaderRef = petAgeRef || petBreedRef;\n const selectedItemRef = useRef(null);\n const containerItemRef = useRef(null);\n const showError = error || requiredError;\n const id = title.replace(/ /g, '-');\n\n const currentSelection = useMemo(() => {\n if (type === 'breed') {\n return store.newPet.petBreed || 'None';\n }\n return store.newPet.petAge || 'None';\n }, [store.newPet.petBreed, store.newPet.petAge, type]);\n\n useEffect(() => {\n setItemsFiltered(items);\n }, [items]);\n\n function setActiveDescendant(currentRef) {\n if (currentRef && selectedItemRef.current) {\n const selectedItemId = selectedItemRef.current.getAttribute('id');\n currentRef.setAttribute('aria-activedescendant', selectedItemId);\n }\n }\n\n useEffect(() => {\n const { current: dropdownCurrent } = dropdownHeaderRef;\n const { current: inputCurrent } = searchRef;\n if (open) {\n if (inputCurrent) {\n inputCurrent.focus();\n setActiveDescendant(inputCurrent);\n }\n\n window.addEventListener('keydown', handleKeyDown, true);\n }\n\n return () => {\n if (open) {\n window.removeEventListener('keydown', handleKeyDown, true);\n dropdownCurrent?.focus();\n }\n };\n }, [dropdownHeaderRef, searchRef, open]);\n\n useEffect(() => {\n if (withInput) {\n setSearchInput('');\n }\n }, [withInput, store.newPet.petType]);\n\n function scrollItemListToView() {\n if (selectedItemRef.current) {\n containerItemRef.current.scrollTo(\n 0, selectedItemRef.current.offsetTop - 5,\n );\n }\n }\n\n useEffect(() => {\n scrollItemListToView();\n setActiveDescendant(!withInput\n ? dropdownHeaderRef.current\n : searchRef.current);\n }, [dropdownHeaderRef, withInput, itemSelectedId]);\n\n async function filterItems(inputSearch) {\n if (type === 'age') {\n const ageDataFiltered =\n items.filter((element) => element.Description\n .toUpperCase().includes(inputSearch.toUpperCase()));\n\n setItemsFiltered(ageDataFiltered);\n\n if (ageDataFiltered[0]) {\n await setItemSelectedId(ageDataFiltered[0].Id);\n containerItemRef.current?.scrollTo(0, 0);\n scrollItemListToView();\n }\n } else {\n const breedDataFiltered =\n items.filter((element) => element.BreedName\n .toUpperCase().includes(inputSearch.toUpperCase()));\n\n setItemsFiltered(breedDataFiltered);\n\n if (breedDataFiltered[0]) {\n await setItemSelectedId(breedDataFiltered[0].Id);\n containerItemRef.current?.scrollTo(0, 0);\n scrollItemListToView();\n }\n }\n }\n\n function toggle() {\n setOpen(!open);\n }\n\n function handleDropDownContainer(event) {\n if (event.target.id === `addPetDropdownContainer${id}`\n || event.target.id === `${id}SearchInput`) {\n toggle();\n }\n }\n\n const handleOnClickItem = (item) => (event) => {\n setError(false);\n\n if (event && event.type === 'click') {\n toggle();\n }\n\n if (type === 'age') {\n dispatch(saveNewPetAge(item.Description));\n setError(item.Id === 1);\n } else {\n setSearchInput(item.BreedName);\n\n dispatch(saveNewPetBreed({\n petBreed: item.BreedName,\n petBreedId: item.Id,\n }));\n }\n };\n\n const handleOnKeyPressItem = (item) => (event) => {\n const { key } = event;\n if (key === 'Enter' || key === ' ') {\n handleOnClickItem(item)();\n }\n };\n\n function handleSearchInputChanged(event) {\n const cleanValue = removeEmojis(event.target.value);\n setSearchInput(cleanValue);\n if (withInput) {\n filterItems(cleanValue.trim());\n scrollItemListToView();\n }\n }\n\n const handleArrowKeyPressed = () => (event) => {\n const { keyCode } = event;\n const ENTER_KEY = 13;\n const ESC_KEY = 27;\n const TAB_KEY = 9;\n\n switch (keyCode) {\n case UP_KEY:\n case DOWN_KEY: {\n const factor = keyCode === UP_KEY ? -1 : 1;\n const temp = itemsFiltered\n .findIndex((element) => element.Id === itemSelectedId);\n if (itemsFiltered[temp + factor]) {\n const newId = itemsFiltered[temp + factor].Id;\n setItemSelectedId(newId);\n }\n\n break;\n }\n\n case ENTER_KEY: {\n const item = itemsFiltered\n .find((element) => element.Id === itemSelectedId);\n\n if (item && open) {\n handleOnClickItem(item)();\n if (withInput) {\n toggle();\n }\n }\n\n break;\n }\n\n case ESC_KEY: {\n setOpen(false);\n if (dropdownHeaderRef.current) {\n dropdownHeaderRef.current.focus();\n }\n\n break;\n }\n\n case TAB_KEY: {\n setOpen(false);\n\n break;\n }\n\n default: {\n break;\n }\n }\n };\n\n function handleOutsideClick() {\n setOpen(false);\n }\n\n function handleInputFocus() {\n setOpen(true);\n }\n\n function renderSearchInput({ className = '', valueToShow }) {\n const PLACEHOLDERS = ['Required', 'Start typing to search...'];\n const isPlaceHolder = PLACEHOLDERS.includes(valueToShow);\n\n return (\n \n );\n }\n\n function renderHeaderDropdown() {\n if (!open) {\n let className = '';\n let valueToShow = title;\n if (type === 'age') {\n className = store.newPet.petAge\n ? 'Dropdown-selected-item-text'\n : 'Dropdown-selected-item-placeholder';\n valueToShow = store.newPet.petAge || placeholder;\n } else {\n className = store.newPet.petBreed\n ? 'Dropdown-selected-item-text'\n : 'Dropdown-selected-item-placeholder';\n valueToShow = store.newPet.petBreed || placeholder;\n }\n\n if (withInput) {\n return renderSearchInput({ className, valueToShow });\n }\n\n return

{valueToShow}

;\n }\n\n if (withInput) {\n return renderSearchInput({ className: '' });\n }\n\n return (\n

{store.newPet.petAge || title}

\n );\n }\n\n const isSelected = (item) => {\n if (withInput) {\n return item.BreedName === store.newPet.petBreed;\n }\n return item.Description === store.newPet.petAge;\n };\n\n const ItemList = ({ item }) => (\n \n \n {item.BreedName || item.Description}\n \n \n );\n\n const ItemListNotFoundText = () => {\n let notFoundText = 'Getting breed list';\n\n if (!showShimmer) {\n notFoundText = store.newPet.petType.value >= 0 ? 'No matches found'\n : 'Please select Pet Type to view breeds';\n }\n\n return (\n \n {notFoundText}\n \n );\n };\n\n const ItemListNotFound = () => (\n
  • \n \n \n \n
  • \n );\n\n function renderItems() {\n if (!open) {\n return null;\n }\n\n const resultsNotFound = !itemsFiltered || itemsFiltered.length === 0;\n\n return (\n \n \n {resultsNotFound ? \n : itemsFiltered\n .map((item) => (\n \n ))}\n \n \n );\n }\n\n function renderErrorMessage() {\n let textError = '';\n if (showError) {\n textError = requiredError\n ? `${title} is required`\n : 'Sorry, Figo does not insure pets'\n + ' under 8 weeks old. Check back in with us soon!';\n }\n\n return (\n \n {textError}\n \n );\n }\n\n function getAriaPropsForDiv() {\n const ariaProps = {\n 'aria-labelledby': `label${id}`,\n title: `${currentSelection} selected`,\n };\n if (!withInput) {\n return {\n ...ariaProps,\n 'aria-activedescendant': '',\n 'aria-controls': 'dd-options',\n 'aria-haspopup': 'listbox',\n role: 'combobox',\n };\n }\n return ariaProps;\n }\n\n function renderOverlayComponent() {\n if (open) {\n return (\n \n );\n }\n\n return null;\n }\n\n function renderContainer({ children }) {\n const classNameShimmer = `Dropdown-header\n ${showError && 'Dropdown-header-error'}`;\n\n if (withInput) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n }\n\n return (\n
    \n
    \n {title}\n
    \n\n {renderOverlayComponent()}\n\n \n {placeholder}\n \n\n {renderContainer({\n children: (\n <>\n
    \n {renderHeaderDropdown()}\n
    \n\n \n \n
    \n \n ),\n })}\n\n {renderItems()}\n\n {renderErrorMessage()}\n
    \n );\n};\n\nexport { DropdownAddPet };\n","export default __webpack_public_path__ + \"static/media/dog-active.26b8bf62.svg\";","export default __webpack_public_path__ + \"static/media/dog-inactive.de69077d.svg\";","export default __webpack_public_path__ + \"static/media/cat-active.c374a270.svg\";","export default __webpack_public_path__ + \"static/media/cat-inactive.ecb4822b.svg\";","import React from 'react';\n\nconst SpecieSelectorItem = ({\n handleSpecieSelected = () => { },\n isSelected = false,\n label = '',\n petIcon = null,\n petInactiveIcon = null,\n petSpeciesRef = null,\n}) => {\n function specieIcon() {\n if (isSelected) {\n return petIcon;\n }\n\n return petInactiveIcon;\n }\n\n return (\n \n \n\n {label}\n \n );\n};\n\nexport { SpecieSelectorItem };\n","import React from 'react';\n\nimport dogIcon from '../../../assets/dog-active.svg';\nimport dogInactiveIcon from '../../../assets/dog-inactive.svg';\nimport catIcon from '../../../assets/cat-active.svg';\nimport catInactiveIcon from '../../../assets/cat-inactive.svg';\n\nimport { SpecieSelectorItem } from './SpecieSelectorItem';\n\nconst AddPetSpecieSelector = ({\n catSelected = {},\n dogSelected = {},\n dogSpeciesRef = null,\n error = '',\n handleCatSelected = () => { },\n handleDogSelected = () => { },\n InputError = () => { },\n}) => (\n
    \n Pet Type\n\n
    \n
    \n \n\n \n
    \n\n \n
    \n
    \n);\n\nexport { AddPetSpecieSelector };\n","import React from 'react';\n\nconst AddPetGenderSelector = ({\n error = '',\n handleFemaleGenderSelected = () => { },\n handleMaleGenderSelected = () => { },\n InputError = () => { },\n maleGenderRef = null,\n petGenderSelected = {},\n}) => (\n
    \n Gender\n
    \n \n Male\n \n\n \n Female\n \n
    \n\n \n
    \n);\n\nexport { AddPetGenderSelector };\n","import React, { useState, useRef } from 'react';\nimport { useResponsive } from '../../hooks/useResponsive';\n\nimport './TooltipContainer.css';\n\nconst TooltipContainer = ({\n arrowPaddingLeft,\n arrowPosition = 'center',\n backgroundColor,\n children,\n description = '',\n styleContent = {},\n}) => {\n const { isMobile } = useResponsive();\n const [tooltipVisible, setTooltipVisible] = useState(false);\n const containerRef = useRef();\n\n const containerLocation = () => {\n if (!containerRef.current) {\n return {};\n }\n\n const { clientHeight } = containerRef.current;\n\n return {\n left: isMobile ? '-60px' : '0px',\n opacity: tooltipVisible ? 1 : 0,\n top: `-${clientHeight}px`,\n };\n };\n\n const handleHoverIn = () => {\n setTooltipVisible(true);\n };\n\n const handleHoverOut = () => {\n setTooltipVisible(false);\n };\n\n function arrowStyle() {\n const arrowLocation = isMobile ? 'end' : arrowPosition;\n\n switch (arrowLocation) {\n case 'end':\n return 'Tooltip-arrow-end';\n\n case 'center':\n return 'Tooltip-arrow-center';\n\n case 'start':\n return 'Tooltip-arrow-start';\n\n default:\n return 'Tooltip-arrow-center';\n }\n }\n\n function renderTooltip() {\n return (\n \n \n {description}\n
    \n\n \n \n
    \n \n );\n }\n\n return (\n
    \n {renderTooltip()}\n\n \n <>\n {children}\n \n
    \n \n );\n};\n\nexport default TooltipContainer;\n","export default __webpack_public_path__ + \"static/media/tooltip-good-dog.c177e13a.svg\";","import React, {\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { DropdownAddPet } from '../DropdownAddPet';\nimport FigoLottie from '../FigoLottie';\nimport Shimmer from '../Shimmer';\n\nimport {\n PRIVACY_POLICY_LINK,\n PetGender,\n PetType,\n TERMS_OF_USE_LINK_GENERAL,\n} from '../../../constants';\nimport { AddPetSpecieSelector } from './AddPetSpecieSelector';\nimport {\n saveNewPetType,\n saveNewPetSex,\n changeTermsAndPolicyCheckbox,\n} from '../../../actions/quoting';\nimport { AddPetGenderSelector } from './AddPetGenderSelector';\nimport { usePartnersData } from '../../../partners/usePartnersData';\nimport TooltipContainer from '../TooltipContainer';\nimport Checkbox from '../Checkbox';\n\nimport GoodDogInfoIcon from '../../../assets/tooltip-good-dog.svg';\nimport { pickupDateMin } from '../../../partners/partners.util';\n\nconst PICKUP_DATE_MIN = pickupDateMin();\n\nconst AddPetForm = ({\n ageError = '',\n breedError = '',\n emailError = '',\n getQuote = false,\n handleEmail = () => { },\n handleOnCancelClick = () => { },\n handlePetNameChange = () => { },\n handlePromoCodeChange = () => { },\n handleSubmitPetForm = () => { },\n handleZipcodeChange = () => { },\n InputError = () => { },\n isEditing = false,\n onBlurEmail = () => { },\n onBlurPetName = () => { },\n onBlurPromoCode = () => { },\n onBlurZipcode = () => { },\n onFocusEmail = () => { },\n onFocusPetName = () => { },\n onFocusZipcode = () => { },\n onKeyPress = () => { },\n onPetPickupDateChange = () => { },\n petAgeRef = null,\n petBreedRef = null,\n petEmailRef = null,\n petGenderError = '',\n petGenderRef = null,\n petNameError = '',\n petNameRef = null,\n petPickupDateRef = null,\n petTypeError = '',\n petTypeRef = null,\n petZipcodeRef = null,\n setPetGenderError = () => { },\n setPetTypeError = () => { },\n setTermsPolicyError = () => { },\n show,\n termsPolicyError = false,\n zipCodeError = '',\n}) => {\n const store = useSelector((stores) => stores.quoting);\n const {\n acceptedTermsAndPolicy,\n ageData,\n sessionInformation,\n newPet: {\n breedCat,\n breedDog,\n email,\n groupCodeDscr,\n petAge,\n petBreed,\n petName,\n petSex,\n petType,\n promoCode,\n zipcode,\n },\n parameters,\n } = store;\n const {\n isGoodDog,\n isPartner,\n goodDogData: { petPickupDate, isPickupDateValid },\n } = usePartnersData();\n\n const { t } = useTranslation('quoting');\n const dispatch = useDispatch();\n const showShimmer = !ageData && !breedDog.length && !breedCat.length;\n const shimmerWidth = (getQuote || showShimmer) ? { width: '100%' } : {};\n const promoDesc = parameters.groupCodeDscr || '';\n\n const breedList = useMemo(() => {\n if (petType.value === PetType.None.value) {\n return [];\n }\n\n return petType.value === PetType.Dog.value ? breedDog : breedCat;\n }, [petType, breedDog, breedCat]);\n\n const hasCodeGroupDscr = useMemo(() => (groupCodeDscr && getQuote),\n [getQuote, groupCodeDscr]);\n\n const dogSelected = petType.value === PetType.Dog.value\n ? {\n label: 'Dog Selected',\n selected: true,\n } : {\n label: 'Dog UnSelected',\n selected: false,\n };\n\n const catSelected = petType.value === PetType.Cat.value\n ? {\n label: 'Cat Selected',\n selected: true,\n } : {\n label: 'Cat UnSelected',\n selected: false,\n };\n\n const petGenderSelected = () => {\n if (petSex.value === PetGender.None.value) {\n return {\n femaleGender: {\n className: '',\n label: `${PetGender.Female.name} Gender UnSelected`,\n selected: false,\n },\n maleGender: {\n className: '',\n label: `${PetGender.Male.name} Gender UnSelected`,\n selected: false,\n },\n };\n }\n\n return (\n petSex.value === PetGender.Male.value\n ? {\n femaleGender: {\n className: '',\n label: `${PetGender.Female.name} Gender UnSelected`,\n selected: false,\n },\n maleGender: {\n className: ' Modal-add-pet-gender-selector-item-selected',\n label: `${PetGender.Male.name} Gender Selected`,\n selected: true,\n },\n } : {\n femaleGender: {\n className: ' Modal-add-pet-gender-selector-item-selected',\n label: `${PetGender.Female.name} Gender Selected`,\n selected: true,\n },\n maleGender: {\n className: '',\n label: `${PetGender.Male.name} Gender UnSelected`,\n selected: false,\n },\n });\n };\n\n const onCancelClick = useCallback((event) => {\n event.preventDefault();\n\n handleOnCancelClick();\n }, [handleOnCancelClick]);\n\n const onChangeAcceptTerms = useCallback(() => {\n dispatch(changeTermsAndPolicyCheckbox(!acceptedTermsAndPolicy));\n setTermsPolicyError(true);\n }, [dispatch, acceptedTermsAndPolicy, setTermsPolicyError]);\n\n useEffect(() => {\n if (store.message === '' && !getQuote && show) {\n petNameRef.current.focus();\n }\n }, [\n petNameRef,\n store.message,\n getQuote,\n show,\n ]);\n\n function zipCodeEditable() {\n if (sessionInformation.nopCommerceUser.LoginSuccess) {\n return false;\n }\n\n return getQuote || (isEditing\n && store && store.data.petQuoteResponseList.length === 1);\n }\n\n const getZipCodeValue = useCallback(() => {\n if (getQuote || isEditing) {\n return zipcode;\n }\n\n return parameters && parameters.petZipCode;\n }, [getQuote, isEditing, parameters, zipcode]);\n\n const progressIdCount = useMemo(() => {\n const valuesArray = [{\n input: 'petName',\n value: petName,\n },\n {\n input: 'petType',\n value: petType.name,\n },\n {\n input: 'petGender',\n value: petSex.name,\n },\n {\n input: 'zipCode',\n value: getZipCodeValue(),\n },\n {\n input: 'user-email',\n value: email,\n },\n {\n input: 'AgeSearchInput',\n value: petAge || '',\n },\n {\n input: 'BreedSearchInput',\n value: petBreed || '',\n }];\n\n return valuesArray.filter((item) => item.value === '').length;\n }, [\n email,\n getZipCodeValue,\n petAge,\n petBreed,\n petName,\n petSex.name,\n petType.name,\n ]);\n\n const progressQueue = useMemo(\n () => t('progressQueueText', {\n count: progressIdCount,\n numberOfFields: progressIdCount,\n }),\n [progressIdCount, t],\n );\n\n const promoCodeMemo = useMemo(() => {\n if (groupCodeDscr) {\n return groupCodeDscr;\n }\n\n return promoCode || '';\n }, [groupCodeDscr, promoCode]);\n\n function renderButtons() {\n if (getQuote) {\n return (\n <>\n \n \n ),\n term: (\n \n ),\n }}\n i18nKey=\"termsAndPrivacy\"\n ns=\"quoting\"\n />\n \n\n \n {t('getQuote')}\n \n\n \n {progressQueue}\n

    \n \n );\n }\n\n let ariaLabel = isEditing ? 'Continue' : 'Save';\n let buttonContent = isEditing ? 'Continue' : 'Save';\n\n if (sessionInformation.validateZipCodeLoading) {\n ariaLabel = 'Loading';\n\n buttonContent = (\n \n );\n }\n\n return (\n <>\n \n {t('cancel')}\n \n\n \n {buttonContent}\n \n\n \n {progressQueue}\n

    \n \n );\n }\n\n const handleDogSelected = useCallback((event) => {\n event.preventDefault();\n\n if (petType !== PetType.Dog) {\n dispatch(saveNewPetType(PetType.Dog));\n }\n\n setPetTypeError('');\n }, [dispatch, petType, setPetTypeError]);\n\n const handleCatSelected = useCallback((event) => {\n event.preventDefault();\n\n if (petType !== PetType.Cat) {\n dispatch(saveNewPetType(PetType.Cat));\n }\n\n setPetTypeError('');\n }, [dispatch, petType, setPetTypeError]);\n\n const handleFemaleGenderSelected = useCallback((event) => {\n event.preventDefault();\n\n dispatch(saveNewPetSex(PetGender.Female));\n setPetGenderError('');\n }, [dispatch, setPetGenderError]);\n\n const handleMaleGenderSelected = useCallback((event) => {\n event.preventDefault();\n\n dispatch(saveNewPetSex(PetGender.Male));\n setPetGenderError('');\n }, [dispatch, setPetGenderError]);\n\n function renderPetNameToolTips() {\n if (!isGoodDog) {\n return null;\n }\n\n return (\n \n \"\"\n \n\n );\n }\n\n function renderPickupDateToolTips() {\n if (!isGoodDog) {\n return null;\n }\n\n return (\n \n \"\"\n \n\n );\n }\n\n return (\n
    \n \n \n {t('petName')}\n\n {renderPetNameToolTips()}\n\n \n \n\n \n \n\n \n \n \n\n \n \n \n\n {getQuote && isGoodDog && (\n \n \n {t('petPickupDate')}\n\n {renderPickupDateToolTips()}\n\n \n \n\n \n \n\n )}\n \n \n \n\n \n \n \n\n \n \n {t('zipCode')}\n\n \n\n \n\n \n \n\n {getQuote\n && (\n \n \n {t('email')}\n\n \n \n\n \n \n )}\n\n {!isPartner && !hasCodeGroupDscr && (\n \n \n {t('promoCode')}\n\n \n \n\n \n \n )}\n\n \n {renderButtons()}\n \n \n );\n};\n\nexport { AddPetForm };\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { useMsal } from '@azure/msal-react';\nimport FocusTrap from 'focus-trap-react';\nimport queryString from 'query-string';\n\nimport { AddPetForm } from './AddPetForm';\n\nimport {\n addPet,\n changeGoodDogComingSoonModal,\n continueWithoutLogin,\n inAppStarted,\n loadAgeData,\n loadBreedData,\n noDiamondClientIdError,\n saveNewPetEmail,\n saveNewPetName,\n saveNewPetPromoCode,\n saveNewPetZipCode,\n saveSelectedEditPetModal,\n saveUpdatedPet,\n updatePet,\n validateCustomerExistsByEmail,\n validateZipCodeComingSoon,\n validZipCode,\n} from '../../../actions/quoting';\n\nimport { getStateAbbreviation } from '../../../utils/zipcode';\n\nimport {\n useB2CInfo,\n useOnEscEvent,\n useSavedElement,\n useTranslations,\n} from '../../../hooks';\nimport {\n forceFocusElement,\n removeEmojis,\n testOnlyNumber,\n useCostcoTN,\n useGoodDogTN,\n useMarketingChannel,\n useROPC,\n validateEmail,\n} from '../../../util';\nimport {\n MARKETING_CHANNEL,\n MAX_PET_NAME_LENGTH,\n PetGender,\n PetType,\n POWERUP_TYPE,\n USER_ROLL_LIST,\n} from '../../../constants';\n\nimport './ModalAddPet.css';\nimport { usePartnersData } from '../../../partners/usePartnersData';\nimport { saveNotifyMeValuesEmail } from '../../../actions/partners';\nimport { LANDING_URL } from '../../../routes';\n\nconst ModalAddPet = ({\n getQuote = false,\n handleCloseModalAddPet = () => { },\n isEditing = false,\n partnerRowInformation = {\n detailMessage: { Content: '' },\n membersInfo: [],\n },\n show = false,\n validateOnMount,\n}) => {\n const location = useLocation();\n const history = useHistory();\n const [firstMount, setFirstMount] = useState(true);\n const [petTypeError, setPetTypeError] = useState('');\n const [petGenderError, setPetGenderError] = useState('');\n const [petNameError, setPetNameError] = useState('');\n const [emailError, setEmailError] = useState('');\n const [zipCodeError, setZipcodeError] = useState('');\n const [ageError, setAgeError] = useState(false);\n const [breedError, setBreedError] = useState(false);\n const [validating, setValidating] = useState(false);\n const [termsPolicyError, setTermsPolicyError] = useState(false);\n const [isFocusTrapActive, setIsFocusTrapActive] = useState(false);\n const { loginB2C, logoutB2C } = useB2CInfo();\n const { accounts } = useMsal();\n\n const { t } = useTranslations('landing');\n const {\n goodDogData: {\n isPickupDateValid,\n onPetPickupDateChange,\n petPickupDate,\n },\n isCostco,\n isGoodDog,\n } = usePartnersData();\n\n const handleKeyDown = useCallback((event) => {\n const TAB_KEY = 9;\n\n if (event.keyCode === TAB_KEY && !getQuote) {\n setIsFocusTrapActive(true);\n }\n }, [getQuote]);\n\n const store = useSelector((stores) => stores.quoting);\n const {\n acceptedTermsAndPolicy,\n ageData,\n data,\n parameters,\n partners,\n petQuoteSelected,\n sessionInformation,\n sessionInformation: {\n validateZipCodeLoading,\n },\n subId,\n utmParams,\n newPet: {\n email,\n groupCodeDscr,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex,\n petType,\n promoCode,\n zipcode,\n },\n petUpdated,\n } = store;\n\n const dispatch = useDispatch();\n const dogSpeciesRef = useRef(null);\n const maleGenderRef = useRef(null);\n const petNameRef = useRef(null);\n const petPickupDateRef = useRef(null);\n const petAgeRef = useRef(null);\n const petBreedRef = useRef(null);\n const petZipcodeRef = useRef(null);\n const petEmailRef = useRef(null);\n const { goToSavedElementAndForgot } = useSavedElement();\n\n const quoteSelected = store.data?.petQuoteResponseList\n .find((item) => item.petQuoteId === petQuoteSelected);\n\n useEffect(() => {\n if (firstMount && show) {\n dispatch(loadBreedData());\n dispatch(loadAgeData());\n\n if (accounts.length && getQuote) {\n logoutB2C({ logoutUrl: LANDING_URL });\n }\n\n setFirstMount(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n accounts.length,\n ageData,\n dispatch,\n firstMount,\n getQuote,\n show,\n ]);\n\n function getQuteButtonEnabled() {\n if (!ageData) {\n return false;\n }\n\n return (parameters.email || email) && zipcode && petName\n && petBreed && petBreedId && petAge && petAge !== ageData[0].Description\n && !petNameError && !emailError && !zipCodeError\n && !petTypeError && petType.value !== PetType.None.value\n && !petGenderError && petSex.value !== PetGender.None.value;\n }\n\n const getBodyForQuote = useCallback((isEditingPet) => {\n const { data: { petQuoteResponseList }, effectiveDateCustom } = store;\n\n // pets from rate quote response (now including URL pet)\n const currentPets = petQuoteResponseList\n .map((petQuote) => (\n {\n cloudOrderId: petQuote.cloudOrderId || 0,\n Id: petQuote.petQuoteId,\n Modifiers: petQuote.modifiers,\n PetAge: petQuote.petAgeName,\n PetBreed: petQuote.breedName,\n PetBreedId: petQuote.breedId,\n PetName: petQuote.petName,\n PetSex: petQuote.genderName,\n PetType: petQuote.petType === PetType.Dog.value\n ? PetType.Dog.name : PetType.Cat.name,\n }\n ));\n\n const higherId = Math.max(...petQuoteResponseList\n .map((quote) => quote.petQuoteId));\n\n const newPetIdAdded = higherId + 1;\n\n if (!isEditingPet) {\n // current pet for add\n const { insuranceProduct: { InsuranceModifiers } } = data;\n const modifiers = InsuranceModifiers\n .filter(\n (modifier) => modifier.InsuranceModifierTypeId === POWERUP_TYPE\n && modifier.IsVisible,\n )\n .map((item) => ({\n id: item.Id,\n isSelected: null,\n }));\n\n currentPets.push({\n Id: newPetIdAdded,\n Modifiers: modifiers,\n PetAge: petAge,\n PetBreed: petBreed,\n PetBreedId: petBreedId,\n PetName: petName,\n PetSex: petSex.name,\n PetType: petType.name,\n });\n }\n\n const quoteId = isEditingPet ? petQuoteSelected : newPetIdAdded;\n\n const body = {\n EffectiveDate: null,\n GroupCode: promoCode,\n GroupCodeDscr: parameters.groupCodeDscr,\n petQuotes: currentPets,\n quoteId,\n QuoteSubId: subId,\n TestEffectiveDate: effectiveDateCustom,\n ZipCode: parameters.petZipCode,\n };\n\n return body;\n }, [\n data,\n parameters.groupCodeDscr,\n parameters.petZipCode,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petQuoteSelected,\n petSex.name,\n petType.name,\n promoCode,\n store,\n subId,\n ]);\n\n useEffect(() => {\n const { nopCommerceUser, userEmail } = sessionInformation;\n\n if (petUpdated) {\n const body = {\n ...getBodyForQuote(true),\n DiamondClientId: nopCommerceUser.DiamonClientdId,\n eMail: userEmail || parameters.email,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n };\n\n dispatch(updatePet({ body, isCostco, update: isEditing }));\n handleCloseModalAddPet();\n setFirstMount(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n dispatch,\n getBodyForQuote,\n isCostco,\n parameters.email,\n petUpdated,\n sessionInformation,\n ]);\n\n useOnEscEvent(() => {\n handleCloseModalAddPet();\n setTimeout(goToSavedElementAndForgot, 0.01);\n }, []);\n\n useEffect(() => {\n setAgeError(false);\n }, [petAge]);\n\n useEffect(() => {\n setBreedError(false);\n }, [petBreed]);\n\n const handlePetNameChange = useCallback((event) => {\n const petNameTyped = removeEmojis(event.target.value);\n if (petNameTyped.length <= MAX_PET_NAME_LENGTH) {\n dispatch(saveNewPetName(petNameTyped));\n setPetNameError(!petNameTyped);\n }\n }, [dispatch]);\n\n const onFocusPetName = useCallback(() => {\n setPetNameError('');\n }, []);\n\n const handleZipcodeChange = useCallback((event) => {\n const { value } = event.target;\n const newValue = testOnlyNumber(value) ? value : zipcode;\n\n dispatch(saveNewPetZipCode(newValue));\n }, [dispatch, zipcode]);\n\n const handlePromoCodeChange = useCallback((event) => {\n const promoCodeTyped = event.target.value;\n dispatch(saveNewPetPromoCode(removeEmojis(promoCodeTyped)));\n }, [dispatch]);\n\n const handleEmail = useCallback((event) => {\n const { value } = event.target;\n\n dispatch(saveNewPetEmail(removeEmojis(value)));\n }, [dispatch]);\n\n const handleOnCancelClick = useCallback(() => {\n handleCloseModalAddPet();\n dispatch(saveSelectedEditPetModal(false));\n setTimeout(goToSavedElementAndForgot, 0.01);\n }, [dispatch, goToSavedElementAndForgot, handleCloseModalAddPet]);\n\n const isValidZipCode = useCallback(async (showLoading = false) => {\n const zipValid = await dispatch(validZipCode({ showLoading, zipcode }));\n\n return zipValid;\n }, [dispatch, zipcode]);\n\n const onFocusEmail = useCallback(() => {\n setEmailError('');\n }, []);\n\n const onBlurEmail = useCallback(() => {\n let message = 'Email is required';\n\n if (email) {\n message = validateEmail(email) ? '' : 'Invalid email';\n }\n\n setEmailError(message);\n }, [email]);\n\n const areTermsRejected = useCallback(() => {\n setTermsPolicyError(!acceptedTermsAndPolicy);\n return !acceptedTermsAndPolicy;\n }, [acceptedTermsAndPolicy]);\n\n const handleEnterPress = useCallback((event) => {\n if (event.key === 'Enter') {\n onBlurEmail();\n }\n }, [onBlurEmail]);\n\n const onFocusZipcode = useCallback(() => {\n setZipcodeError('');\n }, []);\n\n const onBlurZipcode = useCallback(async () => {\n let message = 'Zip code is required';\n\n if (zipcode) {\n if (zipcode.length < 5) {\n message = 'Invalid zip code';\n } else {\n const zipCodeValidate = await isValidZipCode();\n\n message = zipCodeValidate ? '' : 'Invalid zip code';\n }\n }\n\n setZipcodeError(message);\n }, [isValidZipCode, zipcode]);\n\n const onBlurPetName = useCallback(() => {\n const newPetName = petName.split(' ').filter((item) => !!item).join(' ');\n dispatch(saveNewPetName(newPetName));\n const message = petName.length ? '' : 'Pet\\'s name is required';\n setPetNameError(message);\n }, [dispatch, petName]);\n\n function setFocusOnErrorField() {\n if (petType.value === PetType.None.value && dogSpeciesRef.current) {\n dogSpeciesRef.current.focus();\n return;\n }\n\n if (petSex.value === PetGender.None.value && maleGenderRef.current) {\n maleGenderRef.current.focus();\n return;\n }\n\n if (!petName && petNameRef.current) {\n petNameRef.current.focus();\n return;\n }\n\n if (!petAge && petAgeRef.current) {\n petAgeRef.current.focus();\n return;\n }\n\n if (!petBreed && petBreedRef.current) {\n petBreedRef.current.focus();\n return;\n }\n\n if ((!zipcode || zipCodeError) && petZipcodeRef.current) {\n petZipcodeRef.current.focus();\n return;\n }\n\n if (!email && petEmailRef.current) {\n petEmailRef.current.focus();\n }\n }\n\n function doFormValidations() {\n setAgeError(!petAge);\n setBreedError(!petBreed);\n onBlurPetName();\n onBlurZipcode();\n onBlurEmail();\n setPetTypeError(petType.value === PetType.None.value\n ? 'Pet type must be selected in order to proceed' : '');\n setPetGenderError(petSex.value === PetGender.None.value\n ? 'Pet gender must be selected in order to proceed' : '');\n areTermsRejected();\n\n setFocusOnErrorField();\n }\n\n useEffect(() => {\n if (getQuote && validateOnMount) {\n doFormValidations();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getQuote, validateOnMount]);\n\n const onBlurPromoCode = useCallback(() => {\n const newPromoCode =\n promoCode?.split(' ').filter((item) => !!item).join(' ');\n dispatch(saveNewPetPromoCode(newPromoCode));\n }, [dispatch, promoCode]);\n\n function validateFields() {\n return petName\n && (petSex.value !== PetType.None.value)\n && petBreed\n && petBreedId\n && petAge\n && (zipcode && !zipCodeError)\n && (ageData && petAge !== ageData[0].Description);\n }\n\n const handleOnSaveClick = async () => {\n const { sessionInformation: { nopCommerceUser, userEmail } } = store;\n if (handleCloseModalAddPet) {\n doFormValidations();\n\n if (validateFields()) {\n window.scrollTo(0, 0);\n\n if (isEditing) {\n const zipValid = await isValidZipCode(true);\n\n if (!zipValid) {\n setZipcodeError('Invalid zip code');\n\n return;\n }\n\n if (isCostco && useCostcoTN) {\n const validZipCodeComingSoon = await dispatch(\n validateZipCodeComingSoon({ zipcode }),\n );\n\n const isAvailableZipCode = !sessionInformation.showComingSoonModal\n && validZipCodeComingSoon;\n\n if (!isAvailableZipCode) {\n handleOnCancelClick();\n dispatch(saveNotifyMeValuesEmail({\n email,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex: petSex.name,\n zipcode,\n }));\n\n return;\n }\n }\n\n dispatch(saveUpdatedPet());\n } else {\n const body = getBodyForQuote(isEditing);\n const bodyWithDiamondClientId = {\n ...body,\n DiamondClientId: nopCommerceUser.DiamonClientdId,\n eMail: userEmail || parameters.email,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n };\n dispatch(addPet(bodyWithDiamondClientId));\n setFirstMount(true);\n handleCloseModalAddPet();\n }\n }\n }\n };\n\n const onContinueWithoutLoginClick = ({ urlQuoting = '' }) => () => {\n dispatch(continueWithoutLogin());\n history.push(urlQuoting);\n };\n\n const onClickGetQuote = async () => {\n if (validating) {\n return;\n }\n\n setValidating(true);\n\n if (!getQuteButtonEnabled()) {\n doFormValidations();\n setValidating(false);\n return;\n }\n\n const zipValid = await isValidZipCode();\n\n if (!zipValid) {\n setZipcodeError('Invalid zip code');\n\n setValidating(false);\n return;\n }\n\n if (areTermsRejected()) {\n setValidating(false);\n return;\n }\n\n const { partnerId } = partners;\n const { query } = queryString.parseUrl(location.search);\n const agentIdParam = query.agentId ? { agentId: query.agentId } : {};\n\n if (query.inLoginApp) {\n dispatch(inAppStarted());\n }\n\n let quote = {\n ...utmParams,\n ...agentIdParam,\n email,\n id: '1',\n partnerGuid: partnerId || '',\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex: petSex.name,\n petType: petType.name,\n petZipCode: zipcode,\n };\n\n if (promoCode) {\n quote = {\n ...quote,\n groupCode: promoCode,\n groupCodeDscr: groupCodeDscr || '',\n };\n }\n\n if (subId && subId.Name && subId.Value) {\n quote[subId.Name] = subId.Value;\n }\n\n if (isGoodDog) {\n const pickupDateValid = isGoodDog ? isPickupDateValid : false;\n\n if (!pickupDateValid) {\n setValidating(false);\n\n return;\n }\n\n quote = {\n ...quote,\n // TestEffectiveDate: petPickupDate, // WIP: good dog\n petPickupDate, // WIP: good dog\n };\n }\n\n if (isCostco && useCostcoTN) {\n const validZipCodeComingSoon = await dispatch(\n validateZipCodeComingSoon({ zipcode }),\n );\n\n const isAvailableZipCode = !sessionInformation.showComingSoonModal\n && validZipCodeComingSoon;\n\n if (!isAvailableZipCode) {\n setValidating(false);\n dispatch(saveNotifyMeValuesEmail({\n email,\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex: petSex.name,\n zipcode,\n }));\n\n return;\n }\n }\n\n const payload = await validateCustomerExistsByEmail(email);\n const { IsValid, Data } = payload;\n let userAlreadyExists = IsValid && !!Data;\n\n if (useMarketingChannel && !useROPC) {\n userAlreadyExists = IsValid\n && Data?.MarketingChannelId === MARKETING_CHANNEL.Figo;\n }\n let hasCustomerRoll = false;\n\n if (IsValid && typeof Data === 'object') {\n hasCustomerRoll = !!Data.CustomerRoles\n .find((roll) => USER_ROLL_LIST.includes(roll));\n }\n\n if (userAlreadyExists && !hasCustomerRoll) {\n // users with no roll or diamondCliendId: 0 need call customer service.\n // WPI: Petclout Free user?\n\n dispatch(noDiamondClientIdError('User without customer roll'));\n setValidating(false);\n return;\n }\n\n const quoteBase = queryString.stringify(quote);\n const urlQuoting = `/quoting/getQuote?${quoteBase}`;\n\n setValidating(false);\n if (userAlreadyExists) {\n if (useROPC) {\n const urlLogin = `/login?${quoteBase}`;\n history.push(urlLogin, { hasPassword: Data?.HasPassword ?? true });\n } else {\n loginB2C({\n continueWithoutLogin: onContinueWithoutLoginClick({ urlQuoting }),\n existingEmail: email,\n urlState: urlQuoting,\n });\n }\n } else {\n window.open(urlQuoting, '_self');\n }\n };\n\n const handleSubmitPetForm = (event) => {\n event.preventDefault();\n\n if (isGoodDog && useGoodDogTN) {\n const stateAbbr = getStateAbbreviation(zipcode);\n\n if (stateAbbr === 'TN') {\n setValidating(false);\n\n dispatch(changeGoodDogComingSoonModal(true));\n return;\n }\n }\n\n if (getQuote) {\n onClickGetQuote();\n return;\n }\n\n if (validateZipCodeLoading) {\n return;\n }\n\n forceFocusElement(`plan${quoteSelected.Plan}Container`);\n handleOnSaveClick();\n };\n\n const InputError = useCallback(({ error, className = '' }) => (\n \n {error}\n \n ), []);\n\n function getTitle() {\n if (getQuote) {\n return (\n
    \n {t('modalAddPet.getQuote')}\n
    \n );\n }\n\n return isEditing ? t('modalAddPet.editPet') : t('modalAddPet.addPet');\n }\n\n useEffect(() => {\n window.addEventListener('keydown', handleKeyDown, true);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown, true);\n setIsFocusTrapActive(false);\n };\n }, [handleKeyDown]);\n\n return (\n \n \n

    \n {getTitle()}\n

    \n\n
    \n\n \n Tell us a little bit about your pet\n \n\n \n\n {!isEditing && (\n

    \n {partnerRowInformation?.detailMessage?.Content}\n

    \n )}\n \n
    \n );\n};\n\nexport { ModalAddPet };\n","import React, { useCallback, useMemo } from 'react';\n\nimport { useSelector, useDispatch } from 'react-redux';\nimport dogIconActive from '../../assets/dog-selected.svg';\nimport catIconActive from '../../assets/cat-selected.svg';\nimport loadingSpinner from '../../assets/loading-spinner.json';\nimport doneSpinner from '../../assets/loading-check-white.json';\n\nimport { PetType } from '../../constants';\nimport { useOnEscEvent, useRedesign, useSavedElement } from '../../hooks';\nimport { saveSelectedRemovePetModal, removePet } from '../../actions';\nimport { forceFocusElement } from '../../util';\n\nimport FigoLottie from '../common/FigoLottie';\nimport './ModalRemovePet.css';\n\nconst ModalRemovePet = () => {\n const store = useSelector((stores) => stores.quoting);\n const {\n data,\n newCustomer: { lastName, name },\n parameters,\n petQuoteSelected,\n petRemovedLoading,\n petRemovedSuccess,\n petToRemove,\n sessionInformation: { nopCommerceUser, userEmail },\n } = store;\n const { petName, petType } = petToRemove;\n const dispatch = useDispatch();\n const { goToSavedElementAndForgot } = useSavedElement();\n const isRedesign = useRedesign();\n\n const fullName = useMemo(() => {\n if (nopCommerceUser.FirstName) {\n return `${nopCommerceUser.FirstName} ${nopCommerceUser.LastName}`;\n }\n\n return `${name} ${lastName}`;\n }, [\n lastName,\n name,\n nopCommerceUser.FirstName,\n nopCommerceUser.LastName,\n ]);\n\n const description = `Are you sure you want to remove \n ${petName} from your insurance quote?`;\n\n const focusDropdown = (newQuoteId) => () => {\n forceFocusElement(isRedesign\n ? `pet-${newQuoteId}`\n : `petQuoteDropDownItem${newQuoteId}-header`);\n };\n\n const handleRemovePetClick = () => {\n if (petRemovedLoading) {\n return;\n }\n\n const petQuoteList = data.petQuoteResponseList\n .filter((element) => element.petQuoteId !== petQuoteSelected);\n const newPetQuoteSelected = petQuoteList[\n petQuoteList.length - 1].petQuoteId;\n const newQuoteSelectedValues = store.quoteSelectedValues\n .filter((element) => element.quoteId !== petQuoteSelected);\n\n const petSelected = petQuoteList.find((pet) => (\n pet.petQuoteId === newPetQuoteSelected));\n\n dispatch(removePet({\n diamondClientId: nopCommerceUser.DiamonClientdId,\n effectiveDateCustom: store.effectiveDateCustom,\n eMail: userEmail || parameters.email,\n employerName: fullName,\n modifiers: petSelected.modifiers,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n parameters,\n petQuoteList,\n promoCode: store.newPet.promoCode,\n quoteId: newPetQuoteSelected,\n quoteSelectedValues: newQuoteSelectedValues,\n removePetIds: [petQuoteSelected],\n toggleOpen: focusDropdown(newPetQuoteSelected),\n }));\n };\n\n const handleCancelRemovePetClick = useCallback(() => {\n dispatch(saveSelectedRemovePetModal(false));\n setTimeout(goToSavedElementAndForgot, 0.01);\n }, [dispatch, goToSavedElementAndForgot]);\n\n useOnEscEvent(() => {\n handleCancelRemovePetClick();\n }, []);\n\n function renderContentButton() {\n if (!petRemovedLoading && !petRemovedSuccess) {\n return 'Remove';\n }\n\n const animationData = petRemovedLoading ? loadingSpinner : doneSpinner;\n\n return (\n \n );\n }\n\n return (\n
    \n \n\n

    Remove Pet

    \n\n {description}\n\n
    \n \n\n \n {renderContentButton()}\n \n
    \n
    \n );\n};\n\nexport default ModalRemovePet;\n","import React, { useEffect, useRef } from 'react';\nimport './MultiModalInfo.css';\n\nconst MultiModalInfoItemMenu = ({\n id = '',\n onClick = () => { },\n selected = false,\n title = '',\n}) => {\n const buttonRef = useRef(null);\n\n function handleClick() {\n if (onClick) {\n onClick(id);\n }\n }\n\n useEffect(() => {\n if (selected) {\n buttonRef.current.focus();\n }\n }, [selected]);\n\n return (\n \n \n {title}\n \n \n );\n};\n\nexport default MultiModalInfoItemMenu;\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useEnrollmentflag } from '../../util';\nimport './MultiModalInfo.css';\n\nconst MultiModalInfoItemContent = ({\n bulletIcon = null,\n customStyle = { subtitleStyle: '', titleStyle: '' },\n icon = null,\n isBold = false,\n isNotCovered = false,\n singleItem = false,\n subtitle = '',\n title = '',\n value = '',\n}) => {\n const titleRef = useRef();\n const subtitleRef = useRef();\n const [contentLoaded, setContentLoaded] = useState();\n\n useEffect(() => {\n if (titleRef.current && !contentLoaded) {\n let htmlContent = title;\n let htmlContainer = document.createElement('div');\n htmlContainer.innerHTML = htmlContent;\n titleRef.current.appendChild(htmlContainer);\n\n htmlContent = subtitle;\n htmlContainer = document.createElement('div');\n htmlContainer.innerHTML = htmlContent;\n subtitleRef.current.appendChild(htmlContainer);\n\n setContentLoaded(true);\n }\n }, [contentLoaded, subtitle, title]);\n\n const iconClassname = useMemo(() => {\n let iconStyle = `Multi-modal-info-content-row-icon\n ${isNotCovered ? ' Multi-modal-info-content-row-cross-icon' : ''}`;\n\n if (!icon) {\n return 'Multi-modal-info-element-gone';\n }\n\n if (bulletIcon) {\n iconStyle += ' Multi-modal-info-content-row-bullet';\n }\n\n return iconStyle;\n }, [bulletIcon, icon, isNotCovered]);\n\n return (\n \n
    \n {!useEnrollmentflag && (\n \n )}\n\n \n\n \n {value}\n \n
    \n\n
    \n \n
    \n \n );\n};\n\nexport default MultiModalInfoItemContent;\n","export default __webpack_public_path__ + \"static/media/figo-logo-shield.1586f746.svg\";","import React, { useMemo, useRef, useState } from 'react';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport ModalContainer from './ModalContainer';\nimport ScrollableDiv from './ScrollableDiv';\nimport MultiModalInfoItemMenu from './MultiModalInfoItemMenu';\nimport MultiModalInfoItemContent\nfrom './MultiModalInfoItemContent';\nimport figoLogo from '../../assets/figo-logo-shield.svg';\nimport {\n multiModalCustomContenCleared,\n needToKnowModalVisibleChanged,\n petCoPayModalVisibleChanged,\n termsAndCondModalVisibleChanged,\n wellnessVisibleChanged,\n} from '../../actions/quoting';\nimport { MODAL_RELATION_LIST, RED_BACKGROUND } from '../../constants';\nimport { useResponsive, useOnEscEvent } from '../../hooks';\nimport {\n delay,\n useElectronicConsent,\n useEnrollmentflag,\n} from '../../util';\nimport Shimmer from './Shimmer';\nimport './MultiModalInfo.css';\n\nconst ELECTRONIC_CONSENT_MODAL_ID = 10;\n\nconst MultiModalInfo = ({\n menuSelected = 0,\n modalId = 0,\n show = false,\n keepInDOM = false,\n id = '',\n}) => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const sideMenuRef = useRef();\n const dispatch = useDispatch();\n const {\n multiModalCustomData,\n multiModalData,\n multiModalUserSelection: { needToKnowIdSelected },\n rateSummary: { PetQuotes },\n } = store;\n const {\n NEED_TO_KNOW_MODAL_ID,\n PET_CO_PAY_MODAL_ID,\n TERMS_AND_COND_MODAL_ID,\n WELLNESS_MODAL_ID,\n } = MODAL_RELATION_LIST;\n const { isTablet } = useResponsive();\n const [isVisible, setIsVisible] = useState(false);\n const WHATS_NOT_COVERED_ID = 2;\n\n function isElectronicConsent() {\n if (PetQuotes && PetQuotes[0]) {\n return PetQuotes[0].IsElectronicConsent;\n }\n\n return false;\n }\n\n const handleDelayShimmer = async () => {\n await delay(300);\n setIsVisible(false);\n };\n\n function handleMenuItemClick(categoryId) {\n const visible = true;\n\n switch (modalId) {\n case NEED_TO_KNOW_MODAL_ID:\n dispatch(needToKnowModalVisibleChanged({ categoryId, visible }));\n break;\n\n case PET_CO_PAY_MODAL_ID:\n dispatch(petCoPayModalVisibleChanged({ categoryId, visible }));\n break;\n\n case TERMS_AND_COND_MODAL_ID:\n dispatch(termsAndCondModalVisibleChanged({ categoryId, visible }));\n break;\n\n case WELLNESS_MODAL_ID:\n dispatch(wellnessVisibleChanged({ categoryId, visible }));\n break;\n\n default:\n break;\n }\n\n setIsVisible(true);\n handleDelayShimmer();\n }\n\n function getModalTitle() {\n if (multiModalData.InsuranceMultiModalSectionDtoList.length) {\n const data = multiModalData.InsuranceMultiModalSectionDtoList\n .find((element) => element.Id === modalId);\n\n return data ? data.SectionName : '';\n }\n\n return '';\n }\n\n function getCategoryList() {\n if (multiModalCustomData) {\n return multiModalCustomData.category;\n }\n\n if (multiModalData.InsuranceMultiModalSectionDtoList.length) {\n const categoryList = multiModalData\n .InsuranceMultiModalSectionDtoList\n .find((element) => element.Id === modalId) || {};\n\n if (useElectronicConsent) {\n if (modalId === TERMS_AND_COND_MODAL_ID\n && !isElectronicConsent()) {\n return categoryList.InsuranceMultiModalCategoryDtoList\n .filter((element) => element.Id !== ELECTRONIC_CONSENT_MODAL_ID);\n }\n }\n\n return categoryList.InsuranceMultiModalCategoryDtoList;\n }\n\n return [];\n }\n\n const categoryList = getCategoryList() || [];\n\n function getHeaderTitle() {\n if (multiModalCustomData) {\n return multiModalCustomData.title;\n }\n\n const categoryContent = categoryList\n .find((element) => element.Id === menuSelected) || {};\n return categoryContent.CategoryHeader;\n }\n\n function getCategoryContent() {\n if (multiModalCustomData) {\n return multiModalCustomData.content;\n }\n\n const menuContentList = multiModalData.InsuranceMultiModalSectionDtoList;\n\n if (menuContentList.length) {\n let menuContent;\n const menuContentCagegoryList = menuContentList\n .find((element) => element.Id === modalId);\n\n if (menuContentCagegoryList) {\n menuContent = menuContentCagegoryList.InsuranceMultiModalCategoryDtoList\n .find((element) => element.Id === menuSelected);\n }\n\n if (menuContent) {\n return menuContent.InsuranceMultiModalItemsDtoList;\n }\n }\n\n return [];\n }\n\n const subtitle = useMemo(() => {\n const categoryContent = categoryList\n .find((element) => element.Id === menuSelected) || {};\n return categoryContent.SubTitle;\n }, [categoryList, menuSelected]);\n\n const headerTitle = getHeaderTitle();\n const categoryContent = getCategoryContent();\n\n function onCloseModal() {\n if (multiModalCustomData) {\n dispatch(multiModalCustomContenCleared());\n return;\n }\n\n const visible = false;\n\n switch (modalId) {\n case NEED_TO_KNOW_MODAL_ID: {\n dispatch(needToKnowModalVisibleChanged({\n categoryId: needToKnowIdSelected,\n visible,\n }));\n break;\n }\n\n case PET_CO_PAY_MODAL_ID:\n dispatch(petCoPayModalVisibleChanged({ visible }));\n break;\n\n case TERMS_AND_COND_MODAL_ID:\n dispatch(termsAndCondModalVisibleChanged({ visible }));\n break;\n\n case WELLNESS_MODAL_ID:\n dispatch(wellnessVisibleChanged({ visible }));\n break;\n\n default:\n break;\n }\n }\n\n useOnEscEvent(() => {\n onCloseModal();\n }, []);\n\n function renderSideMenu() {\n return categoryList.map((item) => {\n if (WELLNESS_MODAL_ID !== modalId) {\n return (\n \n );\n }\n\n return (\n \n );\n });\n }\n\n function renderModalContent() {\n return categoryContent.map((element) => (\n \n ));\n }\n\n return (\n \n
    \n \n \n\n {getModalTitle()}\n\n \n {renderSideMenu()}\n \n
    \n\n \n \n \n\n \n {headerTitle}\n \n\n {subtitle && (\n \n {subtitle}\n \n )}\n\n
      \n {renderModalContent()}\n
    \n \n
    \n \n \n \n );\n};\n\nexport default MultiModalInfo;\n","import React, { useState } from 'react';\nimport {\n currencyFormat,\n testNumberWithDecimal,\n validateEmail,\n} from '../../util';\nimport './InputWithError.css';\n\nconst REQUERID_ERROR = 'This is a required field.';\nconst EMAIL_FORMAT_ERROR = 'Invalid email.';\n\nconst InputWithError = ({\n absoluteButtonContent = '',\n ariaProps,\n autoComplete = 'new-password',\n containerClass = '',\n disabled = false,\n forwardRef,\n id,\n inputClass = '',\n isCurrency = false,\n label = '',\n labelClass = '',\n labelContainerClass = '',\n labelError,\n labelErrorClass = '',\n onAbsoluteBtnClick = () => { },\n onBlur,\n onChange,\n onFocus,\n placeholder = '',\n required,\n showError = false,\n type = 'text',\n value,\n ...props\n}) => {\n const [internalError, setInternalError] = useState('');\n const [showInternalError, setShowInternalError] = useState(false);\n\n function validateValue(event) {\n const { target } = event;\n\n if (required && !target.value) {\n setInternalError(REQUERID_ERROR);\n setShowInternalError(true);\n\n return;\n }\n\n if (type === 'email'\n && !validateEmail(target.value)) {\n setInternalError(EMAIL_FORMAT_ERROR);\n setShowInternalError(true);\n }\n }\n\n function showLabelError() {\n if (showError) {\n return labelError;\n }\n\n return internalError;\n }\n\n function handleOnchange(event) {\n const { target } = event;\n\n if (isCurrency && !testNumberWithDecimal(target.value)) {\n return;\n }\n\n if (onChange) {\n onChange(event);\n }\n }\n\n function handleOnblur(event) {\n const { target } = event;\n const eventFormated = {\n ...event,\n target: {\n ...event.target,\n value: isCurrency\n ? currencyFormat({ value: target.value })\n : target.value,\n },\n };\n\n if (onBlur) {\n onBlur(eventFormated);\n }\n\n validateValue(eventFormated);\n }\n\n function handleOnFocus(event) {\n const { target } = event;\n const eventFormated = {\n ...event,\n target: {\n ...event.target,\n value: isCurrency\n ? target.value.replace('$', '')\n : target.value,\n },\n };\n\n if (onFocus) {\n onFocus(eventFormated);\n }\n\n setShowInternalError(false);\n }\n\n return (\n
    \n \n\n \n {showLabelError()}\n \n\n {absoluteButtonContent ? (\n \n {absoluteButtonContent}\n \n ) : null}\n
    \n );\n};\n\nexport default InputWithError;\n","export default __webpack_public_path__ + \"static/media/inbox-and-docs.eb1c9270.svg\";","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport ModalContainer from '../common/ModalContainer';\nimport InputWithError from '../common/InputWithError';\nimport FigoLottie from '../common/FigoLottie';\n\nimport InboxIcon from '../../assets/inbox-and-docs.svg';\n\nimport { createEffectiveDate, validateEmail } from '../../util';\n\nimport { saveQuote, saveQuoteMobileVisibleChanged } from '../../actions';\n\nimport './SaveYourQuoteModal.css';\nimport { usePartnersData } from '../../partners/usePartnersData';\n\nconst SaveYourQuoteModal = () => {\n const store = useSelector((stores) => stores.quoting);\n const { saveQuote: { isSavingQuote, saveQuoteMobileModalVisible } } = store;\n const dispatch = useDispatch();\n const [firstName, setFirstName] = useState('');\n const [firstNameError, setFirstNameError] = useState('');\n const [lastName, setLastName] = useState('');\n const [lastNameError, setLastNameError] = useState('');\n const [email, setEmail] = useState('');\n const [emailError, setEmailNameError] = useState('');\n const { goodDogData: { petPickupDate } } = usePartnersData();\n\n useEffect(() => {\n if (store.parameters.email) {\n setEmail(store.parameters.email);\n }\n }, [store.parameters.email]);\n\n const anyError = firstNameError || lastNameError || emailError\n || !firstName || !lastName || !email;\n\n function validateFirstName(value) {\n setFirstName(value);\n setFirstNameError(value ? null : 'Required field');\n }\n\n function handleFirstNameChanged(event) {\n const { target: { value } } = event;\n validateFirstName(value);\n }\n\n function handleFirstNameBlur() {\n const newValue = firstName.split(' ').filter((item) => !!item).join(' ');\n validateFirstName(newValue);\n }\n\n function validateLastName(value) {\n setLastName(value);\n setLastNameError(value ? null : 'Required field');\n }\n\n function handleLastNameChanged(event) {\n const { target: { value } } = event;\n validateLastName(value);\n }\n\n function handleLastNameBlur() {\n const newValue = lastName.split(' ').filter((item) => !!item).join(' ');\n validateLastName(newValue);\n }\n\n function validateEmailAddress(value) {\n setEmail(value);\n let error = value ? '' : 'Required field';\n\n if (!error) {\n error = !validateEmail(value) ? 'Invalid email.' : '';\n }\n setEmailNameError(error);\n }\n\n function handleEmailChanged(event) {\n const { target: { value } } = event;\n validateEmailAddress(value);\n }\n\n function handleCloseModal() {\n if (isSavingQuote) {\n return;\n }\n\n setFirstNameError(null);\n setLastNameError(null);\n setEmailNameError(null);\n dispatch(saveQuoteMobileVisibleChanged(false));\n }\n\n function handleSaveClick() {\n if (isSavingQuote) {\n return;\n }\n\n validateFirstName(firstName);\n validateLastName(lastName);\n validateEmailAddress(email);\n\n if (anyError) {\n return;\n }\n\n const {\n customerValidationResponse,\n data: {\n groupCode,\n groupCodeDscr,\n petQuoteResponseList,\n zipCode,\n },\n } = store;\n const { quoteSelectedValues, partners: { partnerId } } = store;\n // TODO: this allways 0\n const cloudClientId = customerValidationResponse?.id || 0;\n const { origin } = window.location;\n\n dispatch(saveQuote({\n cloudClientId,\n EffectiveDate: createEffectiveDate(),\n email,\n firstName,\n groupCode,\n groupCodeDscr,\n lastName,\n origin,\n partnerId,\n petQuoteResponseList,\n pickupDate: petPickupDate,\n promoCode: store.newPet.promoCode,\n quoteSelectedValues,\n QuoteSubId: store.subId,\n zipCode,\n }));\n }\n\n function renderContentButton() {\n if (isSavingQuote) {\n return (\n \n );\n }\n\n return 'Save';\n }\n\n return (\n \n
    \n \n\n

    \n Save your quote\n

    \n\n \n Not ready? No problem. We’ll send the\n quote to your email for easy access later.\n \n\n \n\n \n\n \n\n
    \n \n Cancel\n \n\n \n {renderContentButton()}\n \n
    \n
    \n \n );\n};\n\nexport { SaveYourQuoteModal };\n","import React from 'react';\nimport InboxIcon from '../../assets/inbox-and-docs.svg';\nimport { useOnEscEvent } from '../../hooks';\nimport ModalContainer from '../common/ModalContainer';\nimport './SidebarSaveQuoteModalConfirmation.css';\n\nconst SidebarSaveQuoteModalConfirmation = (props) => {\n function handleOnClick(event) {\n if (props.handleOnClick) {\n props.handleOnClick(event);\n }\n }\n\n useOnEscEvent(() => {\n handleOnClick();\n }, []);\n\n return (\n \n
    \n \n\n \n

    \n Quote Saved\n

    \n
    \n\n
    \n \n All set! An email with a link to your saved quote has been sent.\n \n
    \n\n \n \n \n );\n};\n\nexport default SidebarSaveQuoteModalConfirmation;\n","export default __webpack_public_path__ + \"static/media/clouds-icon-citron.e3c5580a.svg\";","export default __webpack_public_path__ + \"static/media/ill-7.cf0ef9cb.svg\";","export default __webpack_public_path__ + \"static/media/coming-soon-icon.ac2eb950.svg\";","export default __webpack_public_path__ + \"static/media/close-custom-modal.17cc2e05.svg\";","import React from 'react';\nimport ModalContainer from './ModalContainer';\nimport closeIconCustomModal from '../../assets/close-custom-modal.svg';\nimport './CustomModal.css';\n\nconst CustomModal = ({\n buttonText,\n children,\n description,\n disableClickOutside,\n displayButton,\n handleOutClick,\n id,\n imageSrc,\n imgAlt,\n onButtonClick,\n title,\n visible,\n}) => (\n \n
    \n \n\n {title}\n\n

    \n {description}\n

    \n\n {children}\n\n {displayButton && (\n \n \n {buttonText}\n \n \n )}\n
    \n \n);\n\nexport { CustomModal };\n","import React, { useEffect, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport cloudsIcon from '../../assets/clouds-icon-citron.svg';\nimport successIcon from '../../assets/ills/ill-7.svg';\nimport comingSoonIcon from '../../assets/coming-soon-icon.svg';\nimport { CustomModal } from '../common/CustomModal';\nimport FigoLottie from '../common/FigoLottie';\nimport InputWithError from '../common/InputWithError';\nimport { CUSTOMER_SERVICE_PHONE_NUMBER_COMING_SOON } from '../../constants';\nimport './ComingSoonModal.css';\nimport {\n COMING_SOON_ERROR_MODAL_CLOSED,\n COMING_SOON_MODAL_CLOSED,\n COMING_SOON_SUCCESS_MODAL_CLOSED,\n NEW_CUSTOMER_RESET_EMAIL,\n ZIP_CODE_VALIDATION_FAILED,\n} from '../../actions/types';\nimport { newCustomerChanged, notifyMeEmailQuote } from '../../actions/quoting';\nimport { validateEmail } from '../../util';\nimport { URL_COSTCO } from '../../routes';\n\nconst ComingSoonModal = () => {\n const dispatch = useDispatch();\n const history = useHistory();\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const {\n newCustomer: {\n address,\n email,\n },\n sessionInformation: {\n notifyMeButtonLoading,\n showComingSoonModal,\n showErrorComingSoonModal,\n showSuccessComingSoonModal,\n },\n partners: {\n isCostco,\n notifyMeEmail,\n },\n } = store;\n const modalVisible = showComingSoonModal && isCostco;\n const [modalEmail, setModalEmail] = useState(email);\n const [modalEmailError, setModalEmailError] = useState('');\n const location = useLocation();\n\n useEffect(() => {\n if (showComingSoonModal) {\n setModalEmail(notifyMeEmail.email || email);\n }\n }, [showComingSoonModal, notifyMeEmail.email, email]);\n\n function setInitialEmail(initialEmail) {\n setModalEmail(initialEmail);\n }\n\n function onBlurEmail(value) {\n let error = value ? '' : 'Email Address is required';\n\n if (modalEmail) {\n error = validateEmail(modalEmail) ? '' : 'Invalid email address';\n }\n setModalEmailError(error);\n }\n\n function handleEmailChanged(event) {\n const { target: { value } } = event;\n setModalEmail(value);\n }\n\n function onFocusEmail() {\n setModalEmailError('');\n }\n\n function renderPrimaryButtonText() {\n if (notifyMeButtonLoading) {\n return (\n \n );\n }\n\n return Notify me;\n }\n\n const resetEmailLogin = location.pathname.includes('quoting/getQuote');\n\n const handleCloseModal = (elementId) => () => {\n let type = null;\n const { invalidQuote } = notifyMeEmail;\n\n switch (elementId) {\n case 'ComingSoonModal':\n setInitialEmail(notifyMeEmail.email);\n type = COMING_SOON_MODAL_CLOSED;\n break;\n case 'SuccessComingSoonModal':\n type = COMING_SOON_SUCCESS_MODAL_CLOSED;\n break;\n case 'ErrorComingSoonModal':\n type = COMING_SOON_ERROR_MODAL_CLOSED;\n break;\n default: {\n break;\n }\n }\n\n if (invalidQuote) {\n history.push(URL_COSTCO);\n return;\n }\n\n if (type) {\n dispatch({ type });\n }\n\n if (resetEmailLogin) {\n dispatch(newCustomerChanged({\n type: NEW_CUSTOMER_RESET_EMAIL,\n value: true,\n }));\n }\n };\n\n function errorModalButtonClick() {\n dispatch({ type: ZIP_CODE_VALIDATION_FAILED });\n }\n\n function renderErrorModal() {\n const errorMessage = `Sorry, we're unable to process this request.\n Please try again or contact Customer Service\n at ${CUSTOMER_SERVICE_PHONE_NUMBER_COMING_SOON}.`;\n\n return (\n \n );\n }\n\n function renderSuccessModal() {\n const successMessage =\n `We’ll be in contact when this offering is available in\n your state.`;\n\n return (\n \n );\n }\n\n async function onSubmitEmail(event) {\n event.preventDefault();\n\n onBlurEmail(modalEmail);\n\n if (modalEmailError || modalEmail === '') {\n return;\n }\n\n const { stateAbbr } = address;\n const {\n partners: { comingSoonZipcode, partnerId },\n } = store;\n const {\n petAge,\n petBreed,\n petBreedId,\n petName,\n petSex,\n } = notifyMeEmail;\n\n await dispatch(notifyMeEmailQuote({\n age: petAge,\n breed: petBreed,\n email: modalEmail,\n gender: petSex,\n partnerId,\n petBreedId,\n petName,\n state: stateAbbr,\n zipCode: comingSoonZipcode,\n }));\n\n setInitialEmail(notifyMeEmail.email);\n }\n\n function renderComingSoonModal() {\n if (modalVisible) {\n const modalDescription = `Sign up to be notified when this offering is\n available to Costco members in your state!`;\n\n return (\n <>\n \n \n
    \n
    \n Email\n \n
    \n\n \n \n {renderPrimaryButtonText()}\n \n \n
    \n \n \n\n {renderSuccessModal()}\n\n {renderErrorModal()}\n \n );\n }\n\n return null;\n }\n\n return renderComingSoonModal();\n};\n\nexport { ComingSoonModal };\n","export default __webpack_public_path__ + \"static/media/next-citron.b68c52c6.svg\";","import React, { useState, createContext, useContext } from 'react';\n\nconst StickyBarHeightContext = createContext({\n setStickyBarHeight: () => {},\n stickyBarHeight: 0,\n});\n\nexport const useStickyBarHeight = () => useContext(StickyBarHeightContext);\n\nexport const StickyBarHeightProvider = ({ children }) => {\n const [stickyBarHeight, setStickyBarHeight] = useState(0);\n return (\n \n {children}\n \n );\n};\n","import React, { useEffect, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport queryString from 'query-string';\n\nimport {\n changeGoodDogComingSoonModal,\n saveQuote,\n sendFSCQuoteLead,\n setPowerUpErrors,\n toggleYourInfoScrollToTop,\n validateAllPetsPowerups,\n} from '../../../actions';\n\nimport { getStateAbbreviation } from '../../../utils/zipcode';\nimport { usePartnersData } from '../../../partners/usePartnersData';\n\nimport arrowRightIcon from '../../../assets/next-citron.svg';\n\nimport { URL_ROOT_QUOTE, URL_YOUR_INFO } from '../../../routes';\nimport {\n createEffectiveDate,\n currencyFormat,\n removeDuplicates,\n useFSCLeads,\n useGoodDogTN,\n validatePowerupsSelected,\n} from '../../../util';\nimport { dataLayerAddToCart } from '../../../gtmDataLayer';\nimport './PriceStickyBar.css';\nimport { TemporaryMessage } from '../TemporaryMessage';\nimport { useStickyBarHeight } from '../../landing/StickyBarHeightProvider';\nimport { QuotingSteps, SAVE_QUOTE_TYPE } from '../../../constants';\nimport { useRedesign } from '../../../hooks';\n\nconst PriceStickyBar = () => {\n const store = useSelector(({ quoting }) => quoting);\n const {\n currentQuoteStep,\n customerZipCode,\n data,\n isMonthlyPlan,\n quoteSelectedValues,\n petQuoteSelected,\n utmParams,\n } = store;\n\n const location = useLocation();\n const { t } = useTranslation('quoting');\n const dispatch = useDispatch();\n const history = useHistory();\n const isRedesign = useRedesign();\n const { setStickyBarHeight } = useStickyBarHeight();\n const ref = useRef(null);\n const isSecondStep = currentQuoteStep === QuotingSteps.YourInfo.value;\n\n const stickyBarRef = useRef(null);\n const { isGoodDog } = usePartnersData();\n\n const adjustMainContentPadding = () => {\n const mainContent = document.querySelector('.App');\n\n if (!mainContent || !stickyBarRef.current) return;\n\n const barHeight = stickyBarRef.current.offsetHeight;\n\n mainContent.style.paddingBottom = `${barHeight}px`;\n };\n\n useEffect(() => {\n if (isSecondStep) {\n const mainContent = document.querySelector('.App');\n mainContent.style.paddingBottom = '0px';\n }\n\n adjustMainContentPadding();\n\n const resizeObserver = new ResizeObserver(() => {\n if (isSecondStep) {\n const mainContent = document.querySelector('.App');\n mainContent.style.paddingBottom = '0px';\n }\n\n adjustMainContentPadding();\n });\n const { current } = stickyBarRef;\n\n if (current) {\n resizeObserver.observe(stickyBarRef.current);\n }\n\n return () => {\n if (current) {\n resizeObserver.unobserve(current);\n }\n };\n }, [isSecondStep, stickyBarRef]);\n\n useEffect(() => {\n const handleResize = () => {\n if (ref.current) {\n setStickyBarHeight(ref.current.offsetHeight);\n }\n };\n\n handleResize();\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [setStickyBarHeight]);\n\n const nextStepLabel = useMemo(() => {\n if (location.pathname.toLocaleLowerCase() === URL_ROOT_QUOTE) {\n return t('priceStickyBar.stepsDescription.enrollment');\n }\n\n if (location.pathname.toLocaleLowerCase() === URL_YOUR_INFO) {\n return t('priceStickyBar.stepsDescription.continue');\n }\n\n return t('priceStickyBar.stepsDescription.purchase');\n }, [location, t]);\n\n const quoteTotal = useMemo(() => {\n const allQuotes = removeDuplicates(quoteSelectedValues, 'quoteId').reduce(\n (previous, current) => {\n if (!isMonthlyPlan) {\n return previous + current.totalAnnual;\n }\n\n return previous + current.totalMontly;\n },\n 0,\n );\n\n if (!allQuotes) {\n return '0.00';\n }\n\n return currencyFormat({ value: allQuotes });\n }, [quoteSelectedValues, isMonthlyPlan]);\n\n const numberOfPets = useMemo(() => {\n if (data && data.petQuoteResponseList) {\n return data.petQuoteResponseList.length;\n }\n\n return 0;\n }, [data]);\n\n const onContinueClick = () => {\n const petQuoteRateItem = data.petQuoteResponseList\n .find((pqRateItem) => pqRateItem.petQuoteId === petQuoteSelected);\n const powerUpValidation = validatePowerupsSelected(petQuoteRateItem);\n const allPetsAreValid = dispatch(validateAllPetsPowerups());\n if (!powerUpValidation.isValid) {\n dispatch(setPowerUpErrors(powerUpValidation.modifierIdNotSelectedList));\n return;\n }\n if (isRedesign && !allPetsAreValid) {\n return;\n }\n if (isGoodDog && useGoodDogTN) {\n const stateAbbr = getStateAbbreviation(customerZipCode);\n\n if (stateAbbr === 'TN') {\n dispatch(changeGoodDogComingSoonModal(true));\n return;\n }\n }\n\n dispatch(toggleYourInfoScrollToTop(true));\n\n // GTM\n dataLayerAddToCart();\n\n if (useFSCLeads) {\n dispatch(sendFSCQuoteLead());\n\n const {\n customerValidationResponse,\n newCustomer,\n parameters,\n partners: { partnerId, petPickupDate },\n saveQuote: { quoteId },\n } = store;\n const { groupCode, groupCodeDscr, petQuoteResponseList, zipCode } = data;\n const cloudClientId = customerValidationResponse?.id || 0;\n dispatch(\n saveQuote({\n cloudClientId,\n EffectiveDate: createEffectiveDate(),\n email: newCustomer.email || parameters.email,\n firstName: newCustomer.name || '',\n groupCode,\n groupCodeDscr,\n lastName: newCustomer.lastName || '',\n origin: window.location.origin,\n partnerId,\n petQuoteResponseList,\n pickupDate: petPickupDate,\n promoCode: store.newPet.promoCode,\n quoteId,\n quoteSelectedValues,\n QuoteSubId: store.subId,\n quoteType: SAVE_QUOTE_TYPE.auto,\n zipCode,\n }),\n );\n }\n history.push({\n pathname: URL_YOUR_INFO,\n search: queryString.stringify(utmParams),\n });\n };\n\n if (location.pathname.toLocaleLowerCase() === URL_YOUR_INFO) {\n return null;\n }\n\n return (\n \n \n\n
    \n
    \n ${quoteTotal}/mo\n\n \n {t('priceStickyBar.petsIncluded', {\n count: numberOfPets,\n numberOfPets,\n })}\n \n
    \n\n \n {t('priceStickyBar.continueButton', { nextStepLabel })}\n\n \n \n
    \n \n );\n};\n\nexport { PriceStickyBar };\n","/* eslint-disable sort-keys */\n/**\n * @Route\n * URL_ROOT_QUOTE = '/quoting/getquote'\n *\n * @Component\n * src/components/quoting/purchase/PriceStickyBar.js\n *\n * @Description\n * A add_to_cart event represents when the user submit the selection of a plan\n * and power ups for all added pets and continues to next step.\n * This event is fired when the user press the button \"Continue: Your info\".\n * The information comes from the Session Storage store.quoting key.\n * Be careful: It is a nested object that is difficult to process and prone to\n * errors.\n *\n * @Reference\n * https://developers.google.com/tag-manager/ecommerce-ga4?hl=es\n * #add_a_product_to_a_shopping_cart\n */\n\nimport { dataLayerEvent, pickupItemsFromSessionStorage } from './dataLayer';\nimport { useGoogleTagManager } from '../util';\nimport { DATALAYER_EVENT_TYPE } from './constants';\nimport { getCoupon, waitForQuotingData } from './utils';\n\nexport const dataLayerAddToCart = async () => {\n if (!useGoogleTagManager) {\n return;\n }\n\n // clear the previous ecommerce data object\n dataLayerEvent({ ecommerce: null });\n\n const items = await pickupItemsFromSessionStorage();\n\n const quoting = await waitForQuotingData();\n\n items.forEach((item) => {\n dataLayerEvent({\n ecommerce: {\n coupon: getCoupon(quoting),\n currency: 'USD',\n items: [item],\n language: 'en',\n value: item.price,\n },\n event: DATALAYER_EVENT_TYPE.ADD_TO_CART,\n language: 'en',\n });\n });\n};\n","import moment from 'moment';\nimport React, { forwardRef } from 'react';\nimport DatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport {\n effectiveDateCustomChanged,\n updateRateQuote,\n} from '../../actions/quoting';\nimport { isProdEnv } from '../../util';\nimport './EffectiveDateCustom.css';\n\nconst EffectiveDateCustom = ({ name }) => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const { data, effectiveDateCustom, petQuoteSelected } = store;\n const dispatch = useDispatch();\n const selectedDateFormated =\n effectiveDateCustom ? new Date(`${effectiveDateCustom}T00:00:00`) : null;\n\n function doReRate(newDate) {\n const petQuoteList = data.petQuoteResponseList;\n const petSelected = petQuoteList.find((pet) => (\n pet.petQuoteId === petQuoteSelected));\n\n const {\n parameters,\n guidData,\n sessionInformation: { nopCommerceUser, userEmail },\n } = store;\n\n dispatch(updateRateQuote({\n diamondClientId: nopCommerceUser.DiamonClientdId,\n effectiveDateCustom: newDate,\n eMail: userEmail || parameters.email,\n employerName: name,\n guidPayload: guidData,\n modifiers: petSelected.modifiers,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n parameters,\n petQuoteList,\n promoCode: data.groupCode,\n quoteId: petSelected.petQuoteId,\n showLoading: true,\n }));\n }\n\n function onDatePickerChange(newDate) {\n let date = newDate;\n if (newDate) {\n date = moment(newDate).format('YYYY-MM-DD');\n }\n\n dispatch(effectiveDateCustomChanged(date));\n\n doReRate(date);\n }\n\n const CustomInput = forwardRef(({ value, onClick }, ref) => (\n \n {value}\n \n ));\n\n if (isProdEnv) {\n return null;\n }\n\n return (\n
    \n \n Effective date (only for testing)\n \n\n \n )}\n isClearable\n onChange={onDatePickerChange}\n placeholderText=\"Effective date test\"\n selected={selectedDateFormated}\n />\n
    \n );\n};\n\nexport { EffectiveDateCustom };\n","import React from 'react';\nimport { useTranslations } from '../../hooks/useTranslations';\n\nimport './WhatsCoveredLink.css';\n\nconst WhatsCoveredLink = ({\n ariaControls = '',\n className = '',\n icon = null,\n id = 'whatsCoveredLink',\n isHeader,\n onClick = () => { },\n text = '',\n}) => {\n const { t } = useTranslations('quoting', 'powerUpsSection');\n\n return (\n \n {icon && (\n \n )}\n\n \n {text || t('whatsCovered')}\n

    \n \n );\n};\n\nexport { WhatsCoveredLink };\n","export default __webpack_public_path__ + \"static/media/info-blue-light.31bf9bc5.svg\";","export default __webpack_public_path__ + \"static/media/info-white.f49e784f.svg\";","export default __webpack_public_path__ + \"static/media/circle-check.2a8cb1b9.svg\";","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport checkIcon from '../../../assets/powerUps/circle-check.svg';\nimport { usePowerupsRadioButtons } from '../../../util';\nimport { usePartnersData } from '../../../partners/usePartnersData';\nimport './PowerUpTitle.css';\n\nconst PowerUpTitle = ({\n addedLabel = '',\n children,\n id = '',\n localSelected,\n title,\n}) => {\n const { t } = useTranslation('quoting');\n\n const { isCostco } = usePartnersData();\n\n return (\n \n
    \n

    \n {(usePowerupsRadioButtons && !isCostco) ? (\n \n {t('powerUpsSection.optional')}\n \n ) : null}\n\n {title}\n

    \n\n {children}\n
    \n\n {!usePowerupsRadioButtons && localSelected && (\n
    \n \"\"\n\n {addedLabel}\n
    \n )}\n \n );\n};\n\nexport { PowerUpTitle };\n","import React from 'react';\nimport './Switch.css';\n\nconst Switch = ({\n active,\n ariaProps,\n customClassname,\n label,\n onClick,\n switchBallColor = '#fff',\n switchRef,\n}) => {\n function handleButtonClick() {\n onClick();\n }\n\n function renderClassName() {\n if (active) {\n return 'Switch-active-container';\n }\n\n return 'Switch-inactive-container';\n }\n\n function renderBallPositionClassName() {\n if (active) {\n return 'Switch-position-active';\n }\n\n return 'Switch-position-inactive';\n }\n\n return (\n
    \n \n \n \n\n {label}\n
    \n );\n};\n\nexport default Switch;\n","export default __webpack_public_path__ + \"static/media/radio-selected.c57aca0a.svg\";","export default __webpack_public_path__ + \"static/media/radio-deselected.b6bf8260.svg\";","import React from 'react';\nimport selectedRadio from '../../assets/radio-selected.svg';\nimport deselectedRadio from '../../assets/radio-deselected.svg';\nimport './RadioButton.css';\n\nconst RadioButton = ({\n children,\n name = '',\n id = '',\n checked = false,\n onChange = () => { },\n}) => (\n // Disabled rule 'cause this structure replace the htmlFor attr\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n \n);\n\nexport { RadioButton };\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\n\nimport infoSelected from '../../../assets/info-blue-light.svg';\nimport info from '../../../assets/info-white.svg';\n\nimport { WhatsCoveredLink } from '../WhatsCoveredLink';\nimport { PowerUpTitle } from './PowerUpTitle';\nimport Switch from '../../common/Switch';\n\nimport {\n currencyFormat,\n isPaycheck,\n usePowerupsRadioButtons,\n} from '../../../util';\n\nimport './PowerUpCard.css';\nimport { RadioButton } from '../../common/RadioButton';\nimport { useResponsive } from '../../../hooks';\nimport { removePowerupIdError } from '../../../actions';\nimport { usePartnersData } from '../../../partners/usePartnersData';\n\nconst PowerUpCard = ({\n ariaLabel = '',\n bundleCoverageClick = () => { },\n bundleModifierAdd = () => { },\n bundleModifierCheckSelection = () => { },\n content,\n error = false,\n handleAddPowerup,\n handleRemovePowerup,\n hideInfoImage,\n onClickWhatsCovered,\n petQuoteSelected,\n powerUpInfo,\n price,\n selected = null,\n startingText,\n title,\n}) => {\n const { t } = useTranslation('quoting');\n const [isMounted, setMounted] = useState(false);\n const [localSelected, setLocalSelected] = useState(selected);\n const switchRef = useRef(null);\n const { isMobile } = useResponsive();\n const dispatch = useDispatch();\n const { isCostco } = usePartnersData();\n\n useEffect(() => {\n setLocalSelected(selected);\n }, [petQuoteSelected, selected]);\n\n useEffect(() => {\n if (!isMounted) {\n setMounted(true);\n }\n }, [isMounted]);\n\n const handleInfoPowerup = ({ powerUp }) => () => {\n if (powerUp.PMSModifierId) {\n onClickWhatsCovered();\n }\n };\n\n function renderInfoImage() {\n if (hideInfoImage) {\n return null;\n }\n\n return (\n \n );\n }\n\n const handleAddPowerupCallback = useCallback((event) => {\n if (!localSelected && handleAddPowerup) {\n handleAddPowerup(event);\n }\n\n if (error) {\n dispatch(removePowerupIdError(powerUpInfo.Id));\n }\n }, [dispatch, error, handleAddPowerup, localSelected, powerUpInfo.Id]);\n\n const handleRemovePowerupCallback = useCallback((event) => {\n if ((localSelected || localSelected === null) && handleRemovePowerup) {\n handleRemovePowerup(event);\n if (!usePowerupsRadioButtons) {\n switchRef.current.focus();\n }\n }\n if (error) {\n dispatch(removePowerupIdError(powerUpInfo.Id));\n }\n }, [dispatch, error, handleRemovePowerup, localSelected, powerUpInfo.Id]);\n\n const onClick = useCallback((event) => {\n if (!localSelected) {\n handleAddPowerupCallback(event);\n }\n\n if (localSelected) {\n handleRemovePowerupCallback(event);\n }\n }, [\n handleAddPowerupCallback,\n handleRemovePowerupCallback,\n localSelected,\n ]);\n\n function renderPowerupPrice() {\n if (String(price) === '0.00') {\n return null;\n }\n\n return (\n
    \n \n {startingText}${String(price).split('.')[0]}.{String(price)\n .split('.')[1]}{isPaycheck\n ? t('powerUpsSection.paymentCycle.payCheck')\n : t('powerUpsSection.paymentCycle.monthly')}\n \n
    \n );\n }\n\n const handleAddPowerupOption = useCallback((event) => {\n if (!localSelected) {\n handleAddPowerupCallback(event);\n }\n }, [\n handleAddPowerupCallback,\n localSelected,\n ]);\n\n const handleRemovePowerupOption = useCallback((event) => {\n if (localSelected || localSelected === null) {\n handleRemovePowerupCallback(event);\n }\n }, [\n handleRemovePowerupCallback,\n localSelected,\n ]);\n\n function renderOptions() {\n const contentModifiers = powerUpInfo.BundleInsuranceModifiers\n ?.filter((modifier) => modifier.IsVisible && modifier.IsActive);\n\n if (contentModifiers && contentModifiers.length) {\n const bundleModifiers = [...contentModifiers].reverse();\n\n return bundleModifiers.map((item, index) => (\n = 2\n ? bundleModifierAdd(\n {\n isSelected: !bundleModifierCheckSelection(item.Id),\n powerUp: item,\n },\n )\n : handleAddPowerupOption}\n >\n
    \n \n {t('powerUpsSection.yesPowerup', {\n powerup: `${powerUpInfo.TitleText} ${item.TitleText}`,\n })}\n\n \n ${currencyFormat({ value: item.FeeAmount })}\n\n {isMobile\n ? t('powerUpsSection.paymentCycle.monthly')\n : t('powerUpsSection.paymentCycle.monthlyLong')}\n \n \n\n \n
    \n \n ));\n }\n\n return (\n \n \n {t('powerUpsSection.yesPowerup', { powerup: powerUpInfo.TitleText })}\n\n \n ${currencyFormat({ value: price })}\n\n {isMobile\n ? t('powerUpsSection.paymentCycle.monthly')\n : t('powerUpsSection.paymentCycle.monthlyLong')}\n \n \n \n );\n }\n\n return (\n \n
    \n \n {usePowerupsRadioButtons\n ? renderInfoImage()\n : renderPowerupPrice()}\n \n\n
    \n
    \n {content}\n\n \n {usePowerupsRadioButtons\n ? (\n <>\n {renderOptions()}\n\n \n {t('powerUpsSection.noPowerup')}\n \n \n )\n : (\n <>\n {renderInfoImage()}\n\n \n \n )}\n\n \n {error ? t('powerUpsSection.required', {\n powerup: `${isCostco ? '' : t('powerUpsSection.optional')}`\n + ` ${title}`,\n }) : ''}\n \n
    \n \n
    \n \n \n );\n};\n\nexport { PowerUpCard };\n","export default __webpack_public_path__ + \"static/media/pet-protect-copay-active.3e1f28b5.svg\";","export default __webpack_public_path__ + \"static/media/pet-protect-copay.c6d3f5d7.svg\";","export default __webpack_public_path__ + \"static/media/info-deep-blue-citron.733df8b2.svg\";","import React, { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslations } from '../../../hooks';\n\nimport ModalContainer from '../../common/ModalContainer';\n\nimport ActiveCopayImg\nfrom '../../../assets/powerUps/pet-protect-copay-active.svg';\n\nimport './PowerUpCoPayModal.css';\n\nconst PowerUpCoPayModal = ({ handleContinue, handleNeverMind }) => {\n const { t } = useTranslations('quoting', 'powerUpsSection.petCoPay');\n const store = useSelector(({ quoting }) => quoting);\n const { togglePetCoPayModalVisible } = store;\n\n const onConfirmCallback = useCallback(() => {\n handleNeverMind();\n handleContinue();\n }, [handleNeverMind, handleContinue]);\n\n return (\n \n
    \n \"\"\n\n {t('title')}\n\n {t('subtitle')}\n\n

    {t('text')}

    \n\n \n {t('continue')}\n \n\n \n {t('cancel')}\n \n
    \n \n );\n};\n\nexport { PowerUpCoPayModal };\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useTranslations } from '../../../hooks';\nimport { WhatsCoveredLink } from '../WhatsCoveredLink';\nimport Shimmer from '../../common/Shimmer';\nimport Switch from '../../common/Switch';\n\nimport ActiveCopayImg\nfrom '../../../assets/powerUps/pet-protect-copay-active.svg';\nimport CopayImg from '../../../assets/powerUps/pet-protect-copay.svg';\nimport InfoImage from '../../../assets/info-deep-blue-citron.svg';\n\nimport {\n petCoPayModalVisibleChanged,\n togglePetCoPayModalVisibleChanged,\n} from '../../../actions';\nimport {\n MODAL_DEFAULT_CATEGORY,\n MODAL_RELATION_LIST,\n} from '../../../constants';\n\nimport './PowerUpCoPay.css';\nimport { PowerUpCoPayModal } from './PowerUpCoPayModal';\n\nconst SPACE_KEY = 32;\n\nconst PowerUpCoPay = ({\n handleAddPowerup,\n handleRemovePowerup,\n multiModalData,\n powerUp,\n selected,\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslations('quoting', 'powerUpsSection');\n const [localSelected, setLocalSelected] = useState(selected);\n const switchRef = useRef(null);\n const {\n InformationText,\n TitleText,\n } = powerUp;\n\n const { PET_CO_PAY_MODAL_ID } = MODAL_RELATION_LIST;\n const { PET_CO_PAY_DEF_CATEGORY_ID } = MODAL_DEFAULT_CATEGORY;\n\n useEffect(() => {\n setLocalSelected(selected);\n }, [selected]);\n\n const handleAddPowerupCallback = useCallback((event) => {\n if (!localSelected && handleAddPowerup) {\n handleAddPowerup(event);\n }\n }, [handleAddPowerup, localSelected]);\n\n const handleRemovePowerupCallback = useCallback((event) => {\n if (localSelected && handleRemovePowerup) {\n handleRemovePowerup(event);\n switchRef.current.focus();\n }\n }, [handleRemovePowerup, localSelected]);\n\n const onCancelCallback = useCallback(() => {\n dispatch(togglePetCoPayModalVisibleChanged({ visible: false }));\n }, [dispatch]);\n\n const onClick = useCallback((event) => {\n if (localSelected) {\n handleRemovePowerupCallback(event);\n } else {\n dispatch(togglePetCoPayModalVisibleChanged({ visible: true }));\n }\n }, [\n dispatch,\n handleRemovePowerupCallback,\n localSelected,\n ]);\n\n const onClickHowItWorks = useCallback(() => {\n let categoryId = 1;\n\n if (multiModalData.InsuranceMultiModalSectionDtoList) {\n const categoryList = multiModalData\n .InsuranceMultiModalSectionDtoList\n .find((element) => element.Id === PET_CO_PAY_MODAL_ID);\n\n if (categoryList) {\n categoryId = categoryList\n .InsuranceMultiModalCategoryDtoList\n .find((sub) => sub.Id === PET_CO_PAY_DEF_CATEGORY_ID).Id;\n }\n }\n\n dispatch(petCoPayModalVisibleChanged({ categoryId, visible: true }));\n }, [\n dispatch,\n multiModalData.InsuranceMultiModalSectionDtoList,\n PET_CO_PAY_DEF_CATEGORY_ID,\n PET_CO_PAY_MODAL_ID,\n ]);\n\n function handleEnterPress(event) {\n if (event.key === 'Enter' || event.keyCode === SPACE_KEY) {\n onClickHowItWorks();\n }\n }\n\n const HowItWorks = () => (\n \n \n\n \n \n );\n\n return (\n \n \n\n \n {TitleText}\n\n \n \n\n \n {InformationText}\n\n \n \n\n \n \n );\n};\n\nexport { PowerUpCoPay };\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n multiModalCustomContenChanged,\n powerUpSelected,\n removePowerupIdError,\n resetPowerUpAriaLabel,\n updatePowerUp,\n wellnessVisibleChanged,\n} from '../../../actions';\n\nimport Checkbox from '../../common/Checkbox';\nimport { WhatsCoveredLink } from '../WhatsCoveredLink';\nimport { PowerUpCard } from './PowerUpCard';\nimport { PowerUpCoPay } from './PowerUpCoPay';\nimport { HtmlContent } from '../../common';\n\nimport {\n useCalculatePlanPrice,\n useResponsive,\n useTranslations,\n} from '../../../hooks';\nimport {\n currencyFormat,\n scrollToElement,\n sleep,\n useCustomPlanPills,\n usePowerupsRadioButtons,\n} from '../../../util';\nimport { getStateAbbreviation } from '../../../utils/zipcode';\n\nimport {\n calculateCoverageFee,\n findSelectedModifier,\n isWellnessFPI,\n} from './utils';\nimport {\n POWERUP_TYPE,\n PowerUpsRelation,\n WELLNESS_COVERAGE_LIMIT_FPI,\n WELLNESS_MULTIMODAL_ID,\n MODAL_RELATION_LIST,\n} from '../../../constants';\n\nimport infoSelected from '../../../assets/info-blue-light.svg';\nimport info from '../../../assets/info-white.svg';\n\nimport './PowerUpSection.css';\n\nconst PowerUpSection = ({\n currentZipCode,\n petQuote,\n quoteSelected,\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslations('quoting', 'powerUpsSection');\n const { isMobile } = useResponsive();\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n multiModalData,\n newCustomer: { lastName, name },\n parameters,\n petQuoteSelected,\n rateSummary,\n powerUpErrors,\n powerUpErrorsScroll,\n sessionInformation: { nopCommerceUser, userEmail },\n } = store;\n let wellnessText = t('startingPrice.wellness');\n\n const { WELLNESS_MODAL_ID } = MODAL_RELATION_LIST;\n\n const {\n EXTRA_CARE_PACK_PSM_ID,\n PER_INCIDENT_CO_PAY,\n WELLNESS_DENTAL_PSM_ID,\n WELLNESS_PSM_ID,\n } = PowerUpsRelation;\n\n const perIncidentCoPayPowerup = useMemo(() => {\n if (data) {\n const { insuranceProduct: { InsuranceModifiers } } = data;\n\n return InsuranceModifiers\n .find((modifier) => modifier.InsuranceModifierTypeId === POWERUP_TYPE\n && modifier.IsVisible\n && modifier.PMSModifierId === PER_INCIDENT_CO_PAY);\n }\n\n return null;\n }, [data, PER_INCIDENT_CO_PAY]);\n\n useEffect(() => {\n if (powerUpErrors.length > 0 && powerUpErrorsScroll) {\n const [powerupIdToScroll] = powerUpErrors;\n scrollToElement(`Powerup-card-section-${powerupIdToScroll}`);\n }\n }, [powerUpErrors, powerUpErrorsScroll]);\n\n function getPetName() {\n if (quoteSelected) {\n const petNameFactor = 27;\n if (quoteSelected.petName.length < petNameFactor\n || quoteSelected.petName.includes(' ')) {\n return `${quoteSelected.petName}${t('titlePlan')}`;\n }\n\n return `${quoteSelected.petName\n .slice(0, petNameFactor)}...${t('titlePlan')}`;\n }\n\n return t('namePlaceHolder');\n }\n\n const fullName = useMemo(() => {\n if (nopCommerceUser.FirstName) {\n return `${nopCommerceUser.FirstName} ${nopCommerceUser.LastName}`;\n }\n\n return `${name} ${lastName}`;\n }, [\n lastName,\n name,\n nopCommerceUser.FirstName,\n nopCommerceUser.LastName,\n ]);\n\n const addOrUpdatePowerUp = ({ base = [], toAdd = [] }) => {\n if (toAdd.length === 0) {\n return base;\n }\n\n let newBase = [...base];\n const [add, ...rest] = toAdd;\n\n const findItem = newBase.find((item) => item.id === add.id);\n\n if (findItem) {\n newBase = base.map((item) => {\n if (item.id === add.id) {\n return add;\n }\n\n return item;\n });\n } else {\n newBase.push(add);\n }\n\n return addOrUpdatePowerUp({ base: newBase, toAdd: rest });\n };\n\n const handleAddPowerup = ({ isSelected = null, powerUp }) => () => {\n const { Id } = powerUp;\n const { insuranceProduct: { InsuranceModifiers } } = data;\n const previosQuoteModifiers = (petQuote.modifiers || []);\n\n dispatch(powerUpSelected({\n id: Id,\n isSelected,\n quoteId: petQuoteSelected,\n }));\n if (powerUp.BenefitParentId) {\n dispatch(removePowerupIdError(powerUp.BenefitParentId));\n }\n\n let allModifiers = InsuranceModifiers\n .filter((modifier) => modifier.InsuranceModifierTypeId === POWERUP_TYPE\n && modifier.IsVisible)\n .map((item) => ({ id: item.Id, isSelected: null }));\n\n previosQuoteModifiers.forEach((quoteModifier) => {\n const findItem = allModifiers\n .find((item) => item.id === quoteModifier.id);\n\n if (!findItem) {\n allModifiers = [\n ...allModifiers,\n { id: quoteModifier.id, isSelected: null },\n ];\n }\n });\n\n let modifiers = allModifiers.map((item) => {\n if (item.id === Id) {\n return { id: Id, isSelected };\n }\n\n const currentModifier = previosQuoteModifiers\n .find((petModifier) => petModifier.id === item.id)\n || { isSelected: null };\n\n return {\n ...item,\n isSelected: currentModifier.isSelected,\n };\n });\n\n const wellnessPowerUp = InsuranceModifiers\n .find((modifier) => modifier.InsuranceModifierTypeId === POWERUP_TYPE\n && modifier.IsVisible && modifier.PMSModifierId === WELLNESS_PSM_ID);\n const isFPI = wellnessPowerUp && isWellnessFPI({\n insuranceProductId: data.insuranceProduct.Id,\n powerUp: wellnessPowerUp,\n });\n\n if (isFPI) {\n const wellnessFather = { id: wellnessPowerUp.Id, isSelected };\n const wellnessChildrens = wellnessPowerUp.BundleInsuranceModifiers\n .map((child) => {\n if (child.PMSModifierId === WELLNESS_DENTAL_PSM_ID\n || child.Id === Id) {\n return { id: child.Id, isSelected };\n }\n\n return { id: child.Id, isSelected: null };\n });\n\n if (wellnessChildrens.find((child) => child.id === Id)) {\n modifiers = modifiers\n .filter((element) => element.id !== wellnessPowerUp.Id);\n // any wellness clidren is selected\n modifiers = addOrUpdatePowerUp({\n base: modifiers,\n toAdd: [...wellnessChildrens, wellnessFather],\n });\n } else {\n // add previous wellness powerups selected\n const wellnessChildrensIds = wellnessChildrens.map((child) => child.id);\n const previousWellness = previosQuoteModifiers\n .filter((prevModifier) => wellnessChildrensIds\n .includes(prevModifier.id));\n\n modifiers = addOrUpdatePowerUp({ base: modifiers, previousWellness });\n }\n }\n\n if (powerUp.PMSModifierId === WELLNESS_PSM_ID) {\n // Wellness IHC\n const childsWellness = wellnessPowerUp.BundleInsuranceModifiers\n .map((element) => ({ id: element.Id, isSelected }));\n\n modifiers = addOrUpdatePowerUp({\n base: modifiers,\n toAdd: childsWellness,\n });\n }\n\n if (perIncidentCoPayPowerup) {\n const { isSelected: isPicpSelected } =\n modifiers.find((item) => item.id === perIncidentCoPayPowerup.Id);\n\n const chidlrenPICP = perIncidentCoPayPowerup.BundleInsuranceModifiers\n .map((element) => ({ id: element.Id, isSelected: isPicpSelected }));\n\n modifiers = addOrUpdatePowerUp({ base: modifiers, toAdd: chidlrenPICP });\n }\n\n dispatch(updatePowerUp({\n diamondClientId: nopCommerceUser.DiamonClientdId,\n effectiveDateCustom: store.effectiveDateCustom,\n eMail: userEmail || parameters.email,\n employerName: fullName,\n id: Id,\n isSelected,\n modifiers,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n parameters,\n petQuoteList: data.petQuoteResponseList,\n promoCode: data.groupCode,\n quoteId: store.petQuoteSelected,\n showLoading: true,\n }));\n };\n\n function getPowerUpPrice(powerUp) {\n return calculateCoverageFee({\n data,\n petQuote,\n petQuoteSelected,\n powerUp,\n quoteSelected,\n });\n }\n\n const powerUpSelectedHandle = (id) => {\n const { modifiers } = data.petQuoteResponseList\n .find((item) => item.petQuoteId === petQuoteSelected) || {};\n\n if (!modifiers || !modifiers.length) {\n return null;\n }\n\n const modifier = modifiers.find((item) => item.id === id);\n\n return modifier && modifier.isSelected;\n };\n\n function getFirstCategoryId(menuId, subnMenuId = null) {\n let categoryId = 1;\n\n if (multiModalData.InsuranceMultiModalSectionDtoList) {\n const categoryList = multiModalData\n .InsuranceMultiModalSectionDtoList\n .find((element) => element.Id === menuId);\n\n if (categoryList) {\n categoryId = categoryList\n .InsuranceMultiModalCategoryDtoList\n .find((sub) => sub.Id === subnMenuId || !subnMenuId).Id;\n }\n }\n\n return categoryId;\n }\n\n const handleSeeWhatsCovered = (powerup) => () => {\n const wellnessTypeFromEvent =\n WELLNESS_COVERAGE_LIMIT_FPI.BASIC.includes(powerup.CoverageLimitId)\n ? WELLNESS_MULTIMODAL_ID.BASIC\n : WELLNESS_MULTIMODAL_ID.PLUS;\n\n const visible = true;\n const categoryId =\n getFirstCategoryId(WELLNESS_MODAL_ID, wellnessTypeFromEvent);\n dispatch(wellnessVisibleChanged({ categoryId, visible }));\n };\n\n const onClickWhatsCovered = (powerUp) => () => {\n const multiModalContent = powerUp.OptionalBenefitsDetailsItem;\n\n if (multiModalContent && multiModalContent.length) {\n dispatch(multiModalCustomContenChanged({\n category: powerUp.TitleText,\n content: multiModalContent,\n title: powerUp.AppText,\n visible: true,\n }));\n\n return;\n }\n\n const contentModifiers = powerUp.BundleInsuranceModifiers\n .filter((modifier) => modifier.IsVisible && modifier.IsActive);\n const selectedModifier = contentModifiers\n .find((item) => item.IsSelected);\n const defaultModifier = contentModifiers[0];\n\n const powerupInfo = selectedModifier || defaultModifier;\n if (!powerupInfo) {\n return;\n }\n\n handleSeeWhatsCovered(selectedModifier || defaultModifier)();\n };\n\n const checkboxWellnessPrefix = 'checkboxWellness';\n const { quoteSelected: quoteValues } = useCalculatePlanPrice();\n\n const ariaLabel = useMemo(() => {\n const { petName, total } = quoteValues;\n\n if (!rateSummary.pricesChanged && !rateSummary.powerUpChanged) {\n return '';\n }\n\n let label = '';\n\n if (rateSummary.pricesChanged && rateSummary.powerUpChanged) {\n label = `Updated premium for ${petName} is\n $${total} per month`;\n }\n\n return label;\n }, [quoteValues, rateSummary.powerUpChanged, rateSummary.pricesChanged]);\n\n useEffect(() => {\n async function resetAriaLabel() {\n if (ariaLabel !== '') {\n await sleep(5000);\n dispatch(resetPowerUpAriaLabel());\n }\n }\n\n resetAriaLabel();\n }, [ariaLabel, dispatch]);\n\n function renderContent(powerUp) {\n if (!usePowerupsRadioButtons && isWellnessFPI({\n insuranceProductId: data.insuranceProduct.Id,\n powerUp,\n })) {\n const contentModifiers = powerUp.BundleInsuranceModifiers\n .filter((modifier) => modifier.IsVisible && modifier.IsActive);\n\n if (!contentModifiers || !contentModifiers.length\n || contentModifiers.length === 0) {\n return null;\n }\n\n return (\n
    \n
    \n {powerUp.InformationText}\n\n {contentModifiers.map((item, index) => {\n const contentModifierSelected = (petQuote.modifiers || [])\n .find((element) => element.id === item.Id);\n const isSelected = contentModifierSelected\n ? contentModifierSelected.isSelected : false;\n const elementId = `${checkboxWellnessPrefix}${item.Id}`;\n\n if (isSelected) {\n wellnessText = t('startingPrice.plus');\n }\n\n return (\n \n
    \n \n \n \n {item.TitleText}\n \n  - ${currencyFormat(\n { value: item.FeeAmount },\n )}{t('paymentCycle.monthly')} \n {item.InputText} ${item.MaximumAnnualBenefit}\n \n \n
    \n\n \n
    \n );\n })}\n \n
    \n );\n }\n\n return (\n \n );\n }\n\n function handleToggle({ isSelected = null, powerUp }) {\n if (isWellnessFPI({\n insuranceProductId: data.insuranceProduct.Id,\n powerUp,\n })) {\n const contentModifiers = powerUp.BundleInsuranceModifiers\n .filter((modifier) => modifier.IsVisible && modifier.IsActive);\n const selectedModifier = contentModifiers.find((item) => item.IsSelected);\n const defaultModifier = contentModifiers[0];\n\n if (!selectedModifier) {\n const isChecked = findSelectedModifier({\n id: defaultModifier.Id,\n modifiers: petQuote.modifiers || [],\n });\n\n return handleAddPowerup({\n isSelected: isSelected === false && isChecked === null\n ? false : !isChecked,\n powerUp: defaultModifier || [],\n });\n }\n\n const isChecked = findSelectedModifier({\n id: selectedModifier.Id,\n modifiers: petQuote.modifiers,\n });\n\n return handleAddPowerup({\n isSelected: !isChecked,\n powerUp: selectedModifier,\n });\n }\n\n return handleAddPowerup({ isSelected, powerUp });\n }\n\n function renderPowerUps() {\n if (!store.data) {\n return null;\n }\n\n const quote = store.data.petQuoteResponseList\n .find((pet) => pet.petQuoteId === quoteSelected.quoteId);\n\n if (!quote) {\n return null;\n }\n\n const powerUps = quote.InsuranceModifiers.filter((modifier) => modifier\n .InsuranceModifierTypeId === POWERUP_TYPE && modifier.IsVisible\n && modifier.PMSModifierId !== PER_INCIDENT_CO_PAY);\n\n return (\n <>\n {powerUps.map((powerUp) => {\n // TODO this goes against my principles but they (osvaldo)\n // want it that way FPA-9556\n if (powerUp.PMSModifierId === EXTRA_CARE_PACK_PSM_ID\n && getStateAbbreviation(currentZipCode) === 'PA') {\n return (<>);\n }\n\n const isWellness = isWellnessFPI({\n insuranceProductId: data.insuranceProduct.Id,\n powerUp,\n });\n\n return (\n \n );\n })}\n \n );\n }\n\n const Title = () => (\n
    \n
    \n

    \n {`${t('powerUp')} ${getPetName()}`}\n

    \n\n

    \n {t('descriptionPt1')}\n\n
    \n\n {` ${t('descriptionPt2')}`}\n

    \n
    \n
    \n );\n\n function renderCoPay() {\n if (!store.data || !perIncidentCoPayPowerup) {\n return null;\n }\n\n return (\n \n );\n }\n\n return (\n
    \n {renderCoPay()}\n\n \n\n {renderPowerUps()}\n </div>\n );\n};\n\nexport { PowerUpSection };\n","export default __webpack_public_path__ + \"static/media/ill-10.799a0cc7.svg\";","import React, { useCallback } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport {\n saveSelectedAddPetModal,\n setPowerUpErrors,\n} from '../../../actions';\nimport ill10 from '../../../assets/ills/ill-10.svg';\nimport { useRedesign, useTranslations } from '../../../hooks';\n\nimport plusIcon from '../../../assets/plus-circle-icon.svg';\n\nimport './MyPetsContainer.css';\nimport { useEnrollmentflag, validatePowerupsSelected } from '../../../util';\nimport { QUOTE_MAX_SIZE } from '../../../constants';\n\nconst ADD_PET_ID = 'btn-add-anohter-pet';\n\nconst MyPetsContainer = () => {\n const { t } = useTranslations('quoting', 'myPets');\n const dispatch = useDispatch();\n const isRedesign = useRedesign();\n const buttonRef = React.useRef(null);\n const {\n data,\n petQuoteSelected,\n } = useSelector(({ quoting }) => quoting, shallowEqual);\n\n const handleAddPetClick = useCallback(() => {\n buttonRef.current?.blur();\n\n const petQuoteRateItem = data.petQuoteResponseList\n .find((pqRateItem) => pqRateItem.petQuoteId === petQuoteSelected);\n const powerUpValidation = validatePowerupsSelected(petQuoteRateItem);\n if (!powerUpValidation.isValid) {\n dispatch(setPowerUpErrors(powerUpValidation.modifierIdNotSelectedList));\n return;\n }\n\n dispatch(saveSelectedAddPetModal(true));\n }, [data, dispatch, petQuoteSelected]);\n\n function renderTitle() {\n return (\n <>\n <button\n ref={buttonRef}\n aria-controls=\"addAnotherPetModalmodalContainer\"\n aria-label={useEnrollmentflag ? t('addAnotherPet') : t('addPet')}\n className={useEnrollmentflag\n ? 'My-pets-add-pet-button-enrollment'\n : 'My-pets-add-pet-button'}\n id={ADD_PET_ID}\n onClick={handleAddPetClick}\n onKeyPress={handleAddPetClick}\n type=\"button\"\n >\n <img\n alt=\"\"\n className=\"My-pets-add-icon\"\n src={plusIcon}\n />\n\n <span className=\"My-pets-add-pet-button-text\">\n {useEnrollmentflag ? t('addAnotherPet') : t('addPet')}\n </span>\n </button>\n\n <section aria-label={t('addPetDiscountDetails')}>\n <span className=\"My-pets-discount\">\n {t('discount')}\n </span>\n </section>\n </>\n );\n }\n\n return (\n <div className=\"My-pets-container\">\n <div className=\"My-pets-title-container\">\n {!isRedesign\n || (isRedesign && data?.petQuoteResponseList?.length < QUOTE_MAX_SIZE)\n ? renderTitle()\n : null}\n </div>\n\n {useEnrollmentflag && (\n <img\n alt=\"\"\n aria-hidden\n className=\"Quote-content-image-10 No-mobile No-tablet\"\n src={ill10}\n />\n )}\n </div>\n );\n};\n\nexport { MyPetsContainer };\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport './CardPlanMainHeaderCompany.css';\nimport { useTranslation } from 'react-i18next';\n\nconst CardPlanMainHeaderCompany = ({ isPartner, isHeader }) => {\n const store = useSelector(({ quoting }) => quoting);\n const { petQuoteSelected, quoteSelectedValues } = store;\n const location = useLocation();\n const isYourInfo = location.pathname.includes('/yourinfo');\n const { t } = useTranslation('quoting');\n\n const quoteSelected = quoteSelectedValues\n .find((item) => item.quoteId === petQuoteSelected)\n || { petName: 'Pet Name' };\n\n function getPetName() {\n if (quoteSelected) {\n const petNameFactor = 15;\n\n if (quoteSelected.petName.length < petNameFactor) {\n return `${quoteSelected.petName}'s Plan`;\n }\n\n return `${quoteSelected.petName.slice(0, petNameFactor)}...'s Plan`;\n }\n\n return 'N/A';\n }\n\n const PetName = () => (\n <h1\n aria-hidden={isHeader}\n className={'Card-plan-header-title '\n + `${(!isPartner && !isHeader)\n ? 'Pet-parent-title-header-partner' : ''}`\n + ' Pet-parent-title-header-partner-less-margin'}\n >\n {getPetName()}\n </h1>\n );\n\n const YourInfoComponent = () => (\n <h1 aria-hidden=\"true\" className=\"Pet-parent-title-header\">\n {t('petParent.title')}\n </h1>\n );\n\n return isYourInfo ? <YourInfoComponent /> : <PetName />;\n};\n\nexport default CardPlanMainHeaderCompany;\n","export default __webpack_public_path__ + \"static/media/ill-12.ba22879b.png\";","import React, { useMemo } from 'react';\nimport { useDispatch, shallowEqual, useSelector } from 'react-redux';\nimport { needToKnowModalVisibleChanged } from '../../actions/quoting';\nimport { MODAL_RELATION_LIST } from '../../constants';\nimport './NeedToKnowNewDesign.css';\nimport ill12 from '../../assets/ills/ill-12.png';\nimport { useTranslations } from '../../hooks/useTranslations';\n\nfunction NeedToKnowNewDesign({\n isEnrollment = false,\n classContainer = '',\n}) {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const {\n multiModalData,\n } = store;\n const { t } = useTranslations('quoting');\n const dispatch = useDispatch();\n const { NEED_TO_KNOW_MODAL_ID } = MODAL_RELATION_LIST;\n\n const enrollmentClass = useMemo(() => (isEnrollment\n ? 'Need-to-know-innered-card-enrollment' : ''), [isEnrollment]);\n\n const handleOnclick = (categoryId) => () => {\n dispatch(needToKnowModalVisibleChanged({ categoryId, visible: true }));\n };\n\n function getMenuList() {\n if (multiModalData.InsuranceMultiModalSectionDtoList.length) {\n return multiModalData\n .InsuranceMultiModalSectionDtoList\n .find((element) => element.Id === NEED_TO_KNOW_MODAL_ID)\n .InsuranceMultiModalCategoryDtoList;\n }\n\n return [];\n }\n\n function getTitle() {\n if (multiModalData.InsuranceMultiModalSectionDtoList.length) {\n return multiModalData.InsuranceMultiModalSectionDtoList\n .find((element) => element.Id === NEED_TO_KNOW_MODAL_ID)\n .SectionName;\n }\n\n return '';\n }\n\n const NeedToKnowRow = ({ id, title }) => (\n <button\n className=\"Need-To-Know-link-container\"\n id={`needToKnowRow${id}`}\n onClick={handleOnclick(id)}\n type=\"button\"\n >\n <span className=\"Need-To-Know-Help-link-text\">\n {title}\n </span>\n </button>\n );\n\n return (\n <section\n aria-label={t('needToKnow')}\n className=\"Need-To-Know-container-section\"\n >\n <div className={'Need-To-Know-container'\n + ` ${enrollmentClass} ${classContainer}`}\n >\n <div className=\"Need-To-Know-titleContainer\">\n <h1 className=\"Need-To-Know-title\">{getTitle()}</h1>\n <img\n alt=\"a vet with a dog\"\n className=\"Need-To-Know-Desktop-Image\"\n src={ill12}\n />\n </div>\n\n <div className=\"Need-To-Know-links-container\">\n <ul className=\"Need-to-know-links-list\">\n {getMenuList().map((element) => (\n <li key={String(element.Id)}>\n <NeedToKnowRow\n id={element.Id}\n title={element.CategoryHeader}\n />\n </li>\n ))}\n </ul>\n </div>\n </div>\n </section>\n );\n}\n\nexport default NeedToKnowNewDesign;\n","export default __webpack_public_path__ + \"static/media/ill-16.91e29308.svg\";","import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { saveQuoteMobileVisibleChanged, setPowerUpErrors } from '../../actions';\n\nimport ill16 from '../../assets/ills/ill-16.svg';\n\nimport './SaveYourQuoteButton.css';\nimport { useEnrollmentflag, validatePowerupsSelected } from '../../util';\n\nconst SaveYourQuoteButton = () => {\n const dispatch = useDispatch();\n const { t } = useTranslation('quoting');\n const {\n data,\n petQuoteSelected,\n } = useSelector(({ quoting }) => quoting, shallowEqual);\n\n const handleSaveYourQuote = useCallback(() => {\n const petQuoteRateItem = data.petQuoteResponseList\n .find((pqRateItem) => pqRateItem.petQuoteId === petQuoteSelected);\n const powerUpValidation = validatePowerupsSelected(petQuoteRateItem);\n if (!powerUpValidation.isValid) {\n dispatch(setPowerUpErrors(powerUpValidation.modifierIdNotSelectedList));\n return;\n }\n dispatch(saveQuoteMobileVisibleChanged(true));\n }, [data, dispatch, petQuoteSelected]);\n\n return (\n <section\n aria-label={t('saveQuoteDetails')}\n className=\"Save-your-quote-button-container\"\n >\n <span>{t('saveQuote.notReady')}</span>\n\n <button\n aria-controls=\"saveYourQuotemodalContainer\"\n className=\"Card-plan-footer-email-your-quote-button\"\n id=\"saveYourQuoteTabletButton\"\n onClick={handleSaveYourQuote}\n type=\"button\"\n >\n {t('saveQuote.sendQuote')}\n </button>\n\n {!useEnrollmentflag && (\n <img\n alt=\"\"\n aria-hidden\n className=\"Quote-content-image-2 No-tablet\"\n src={ill16}\n />\n )}\n </section>\n );\n};\n\nexport { SaveYourQuoteButton };\n","export default __webpack_public_path__ + \"static/media/plus-icon.dd2e6cd2.svg\";","export default __webpack_public_path__ + \"static/media/less-icon.30e63239.svg\";","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport plusIcon from '../../assets/plus-icon.svg';\nimport lessIcon from '../../assets/less-icon.svg';\n\nimport './WhatFigoCovers.css';\n\nconst CoveredElements = ({ ariaLabel }) => {\n const [activeIndexes, setActiveIndexes] = useState([]);\n\n const store = useSelector((coverage) => coverage.quoting);\n const whatsCovered = store.data?.CoverageInformation?.WhatsCovered || [];\n\n const toggleAccordion = (index) => {\n setActiveIndexes((prevActiveIndexes) => {\n if (prevActiveIndexes.includes(index)) {\n return prevActiveIndexes.filter((i) => i !== index);\n }\n return [...prevActiveIndexes, index];\n });\n };\n\n return (\n <div aria-label={ariaLabel} className=\"what-figo-covers-box\">\n <ul>\n {whatsCovered.map((coverage) => (\n <li key={String(coverage.Id)} className=\"what-figo-covers-item\">\n <button\n aria-controls={`whatsCovered${coverage.Id}`}\n aria-expanded={activeIndexes.includes(coverage.Id)}\n className={`${activeIndexes.includes(coverage.Id)\n ? 'Like-span what-figo-covers-item-order-opened'\n : 'Like-span what-figo-covers-item-order'}`}\n onClick={() => toggleAccordion(coverage.Id)}\n type=\"button\"\n >\n <span\n aria-label={coverage.Title}\n className=\"what-figo-covers-boxitem\"\n >\n <img\n alt=\"\"\n className=\"what-figo-covers-icon\"\n src={coverage.Icon}\n />\n\n <p className=\"what-figo-covers-item-title\">{coverage.Title}</p>\n </span>\n\n <img\n alt=\"\"\n className=\"what-figo-covers-plus-less-icon\"\n src={activeIndexes.includes(coverage.Id) ? lessIcon : plusIcon}\n />\n </button>\n\n <div\n className={`what-figo-covers-accordion-content ${\n activeIndexes.includes(coverage.Id)\n ? '' : 'what-figo-covers-accordion-content-hidden'}`}\n id={`whatsCovered${coverage.Id}`}\n >\n <p className=\"what-figo-covers-text\">{coverage.Text}</p>\n </div>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nexport default CoveredElements;\n","import React from 'react';\nimport { useTranslations } from '../../hooks';\nimport CoveredElements from './WhatFigoCoversAccordion';\nimport './WhatFigoCovers.css';\n\nconst WhatFigoCovers = () => {\n const { t } = useTranslations('quoting', 'whatFigoCovers');\n\n return (\n <div className=\"what-figo-covers-container\">\n <div className=\"what-figo-covers-box\">\n <h1 className=\"what-figo-covers-title\">\n {t('title')}\n </h1>\n\n <p className=\"what-figo-covers-subtitle-description\">\n {t('subtitle')}\n </p>\n </div>\n\n <CoveredElements ariaLabel={t('details')} />\n </div>\n );\n};\n\nexport default WhatFigoCovers;\n","export default __webpack_public_path__ + \"static/media/ill-5.82cd4e57.svg\";","import React from 'react';\n\nimport ill5 from '../../assets/ills/ill-5.svg';\n\nimport './QuotingFloatingImages.css';\n\nconst QuotingFloatingImages = () => (\n <>\n <img\n alt=\"\"\n aria-hidden\n className=\"Quote-content-image-1\"\n src={ill5}\n />\n </>\n);\n\nexport { QuotingFloatingImages };\n","export default __webpack_public_path__ + \"static/media/info-deep-blue.d05249c3.svg\";","import React, { useState, useRef } from 'react';\nimport infoIcon from '../../assets/info-deep-blue.svg';\nimport './IconTooltip.css';\n\nexport const TOOL_TIP_POSITION = {\n center: {\n containerArrowPosition: 'Icon-tooltip-arrow-container-center',\n left: -115,\n },\n end: {\n containerArrowPosition: 'Icon-tooltip-arrow-container-end',\n left: -204,\n },\n start: {\n containerArrowPosition: 'Icon-tooltip-arrow-container-start',\n left: -24,\n },\n};\n\nconst IconTooltip = ({\n backgroundColor = 'var(--blue-main)',\n borderColor = '#000',\n containerClassName,\n description,\n descriptionClassName,\n icon,\n position = TOOL_TIP_POSITION.center,\n name = '',\n}) => {\n const [tooltipVisible, setTooltipVisible] = useState(false);\n const iconRef = useRef();\n const id = `tooltip-${name.replace(' ', '-')}`;\n\n const containerLocation = () => {\n if (!iconRef.current) {\n return {};\n }\n\n const { offsetTop, offsetLeft } = iconRef.current;\n\n const top = offsetTop - 128;\n const left = offsetLeft + position.left;\n return { left: `${left}px`, top: `${top}px` };\n };\n\n function handleHoverIn() {\n setTooltipVisible(true);\n }\n\n function handleHoverOut() {\n setTooltipVisible(false);\n }\n\n function handleVisibility() {\n if (tooltipVisible) {\n handleHoverOut();\n } else {\n handleHoverIn();\n }\n }\n\n function renderTooltip() {\n if (!tooltipVisible) {\n return null;\n }\n\n return (\n <div\n className=\"Icon-tooltip-main-container\"\n id={id}\n role=\"tooltip\"\n style={containerLocation()}\n >\n <div\n className={'Icon-tooltip-description-container '\n + `${containerClassName}`}\n style={{\n backgroundColor,\n borderColor,\n borderStyle: 'solid',\n borderWidth: 1,\n }}\n >\n <span className={`Icon-tooltip-description ${descriptionClassName}`}>\n {description}\n </span>\n </div>\n\n <div className={'Icon-tooltip-arrow-container '\n + `${position.containerArrowPosition}`}\n >\n <div\n className=\"Icon-tooltip-arrow-down-border\"\n style={{\n borderTopColor: `${borderColor || backgroundColor}`,\n borderTopStyle: 'solid',\n borderTopWidth: '10px',\n }}\n />\n\n <div\n className=\"Icon-tooltip-arrow-down\"\n style={{ borderTop: `10px solid ${backgroundColor}` }}\n />\n </div>\n </div>\n );\n }\n\n return (\n <>\n {renderTooltip()}\n\n <button\n aria-describedby={id}\n aria-label={tooltipVisible ? description : ''}\n aria-live={tooltipVisible ? 'assertive' : null}\n className=\"Icon-tooltip-icon-button\"\n onBlur={handleHoverOut}\n onClick={handleVisibility}\n type=\"button\"\n >\n <img\n ref={iconRef}\n alt=\"info\"\n className=\"Icon-tooltip-icon-default\"\n onMouseEnter={handleHoverIn}\n onMouseLeave={handleHoverOut}\n src={icon || infoIcon}\n />\n </button>\n </>\n );\n};\n\nexport default IconTooltip;\n","export default __webpack_public_path__ + \"static/media/info.686816dd.svg\";","export default __webpack_public_path__ + \"static/media/select-arrows.535202ad.svg\";","import React from 'react';\n\nconst DropdownItemList = React.forwardRef(({\n disabled = false,\n id,\n item,\n itemSelectedId,\n listSize = 0,\n onClick = () => { },\n onKeyDown = () => { },\n onKeyPress = () => { },\n selected = false,\n}, ref) => (\n <li\n ref={ref}\n aria-disabled={disabled}\n aria-selected={selected}\n aria-setsize={listSize}\n className=\"Dropdown-common-list-item-container\"\n data-disabled={disabled}\n data-selected={!!ref}\n id={id || `dropdownItem${item.value}`}\n onClick={onClick}\n onKeyDown={onKeyDown}\n onKeyPress={onKeyPress}\n role=\"option\"\n tabIndex={-1}\n >\n <span\n className={`Dropdown-common-list-item ${item.value === itemSelectedId\n && 'Dropdown-common-list-item-selected'}`}\n tabIndex={-1}\n >\n {item.label}\n </span>\n </li>\n));\n\nexport { DropdownItemList };\n","export default __webpack_public_path__ + \"static/media/arrow-down-gray.50258532.svg\";","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\nimport { removeEmojis } from '../../util';\n\nimport ScrollableDiv from './ScrollableDiv';\nimport { DropdownItemList } from './DropdownItemList';\nimport { BROWSERS, useGetNavigator } from '../../hooks';\n\nimport arrowDown from '../../assets/arrow-down-gray.svg';\n\nimport './Dropdown.css';\n\nconst SPACE_KEY = 32;\nconst DOWN_KEY = 40;\nconst LEFT_KEY = 37;\nconst RIGHT_KEY = 39;\nconst UP_KEY = 38;\nconst INPUT_NODE = 'INPUT';\n\nconst IGNORED_KEYS_BASE = [DOWN_KEY, LEFT_KEY, RIGHT_KEY, UP_KEY];\n\nfunction handleKeyDown(event) {\n const ignoredKeys = [...IGNORED_KEYS_BASE];\n if (event.target.nodeName !== INPUT_NODE) {\n ignoredKeys.push(SPACE_KEY);\n }\n if (ignoredKeys.indexOf(event.keyCode) > -1) {\n event.preventDefault();\n }\n}\n\nconst Dropdown = ({\n ariaLabelledBy = '',\n containerClassName = '',\n disableArrowAnimation = false,\n dropdownIcon,\n error = '',\n headerClassName = '',\n idPostfix = '',\n items = [],\n listClassName = '',\n noFoundItemsText = 'No matches found',\n onBlur = () => { },\n onFocus = () => { },\n onItemSelected = () => { },\n petParentInfo,\n placeholder = '',\n title = '',\n valueSelected = { label: '', value: '' },\n withInput = false,\n}) => {\n const [open, setOpen] = useState(false);\n const [searchInput, setSearchInput] = useState('');\n const [itemsFiltered, setItemsFiltered] = useState([]);\n const [itemSelectedId, setItemSelectedId] = useState(() => (valueSelected\n ? valueSelected.value : 1));\n const searchRef = useRef();\n const dropdownHeaderRef = useRef();\n const containerItemRef = useRef();\n const selectedItemRef = useRef(null);\n const pressedKeys = useRef('');\n const browser = useGetNavigator();\n\n const currentSelection = useMemo(() => valueSelected.label\n || 'None', [valueSelected]);\n\n useEffect(() => {\n setItemsFiltered(items);\n }, [items]);\n\n function setActiveDescendant(currentRef) {\n if (currentRef && selectedItemRef.current) {\n const selectedItemId = selectedItemRef.current.getAttribute('id');\n currentRef.setAttribute('aria-activedescendant', selectedItemId);\n }\n }\n\n useEffect(() => {\n const { current: dropdownCurrent } = dropdownHeaderRef;\n const { current: inputCurrent } = searchRef;\n if (open) {\n if (inputCurrent) {\n inputCurrent.focus();\n setActiveDescendant(inputCurrent);\n }\n\n window.addEventListener('keydown', handleKeyDown, true);\n }\n\n return () => {\n if (open) {\n window.removeEventListener('keydown', handleKeyDown, true);\n dropdownCurrent?.focus();\n pressedKeys.current = '';\n }\n };\n }, [dropdownHeaderRef, open]);\n\n useEffect(() => {\n if (withInput) {\n setSearchInput('');\n }\n }, [withInput]);\n\n function scrollItemListToView() {\n if (selectedItemRef.current) {\n containerItemRef.current.scrollTo(\n 0, selectedItemRef.current.offsetTop - 5,\n );\n }\n }\n\n useEffect(() => {\n scrollItemListToView();\n setActiveDescendant(!withInput\n ? dropdownHeaderRef.current\n : searchRef.current);\n }, [dropdownHeaderRef, withInput, itemSelectedId]);\n\n async function filterItems(inputSearch) {\n const dataFiltered =\n items.filter((element) => element.label\n .toUpperCase().includes(inputSearch.toUpperCase()));\n\n setItemsFiltered(dataFiltered);\n\n if (dataFiltered[0]) {\n await setItemSelectedId(dataFiltered[0].value);\n if (containerItemRef.current) {\n containerItemRef.current.scrollTo(0, 0);\n scrollItemListToView();\n }\n }\n }\n\n function toggle() {\n setOpen(!open);\n }\n\n function handleDropdownClick(event) {\n if (event.target.id === `dropdown${idPostfix}`) {\n toggle();\n }\n }\n\n const handleOnClickItem = (item) => (event) => {\n if (item.disabled) {\n return;\n }\n\n if (event && event.type === 'click') {\n toggle();\n }\n\n setItemSelectedId(item.value);\n onItemSelected(item);\n };\n\n const handleOnKeyPressItem = (item) => (event) => {\n const { key } = event;\n if (key === 'Enter' || key === ' ') {\n handleOnClickItem(item)();\n }\n };\n\n function handleSearchInputChanged(event) {\n const cleanValue = removeEmojis(event.target.value);\n setSearchInput(cleanValue);\n if (withInput) {\n filterItems(cleanValue.trim());\n scrollItemListToView();\n }\n }\n\n function handleArrowKeyPressed(event) {\n const { keyCode, key } = event;\n const ENTER_KEY = 13;\n const ESC_KEY = 27;\n const TAB_KEY = 9;\n\n switch (keyCode) {\n case UP_KEY:\n case DOWN_KEY: {\n if (!open) {\n event.preventDefault();\n\n toggle();\n break;\n }\n\n const factor = keyCode === UP_KEY ? -1 : 1;\n const temp = itemsFiltered\n .findIndex((element) => element.value === itemSelectedId);\n if (itemsFiltered[temp + factor]) {\n const newId = itemsFiltered[temp + factor].value;\n setItemSelectedId(newId);\n }\n\n break;\n }\n\n case ENTER_KEY: {\n const item = itemsFiltered\n .find((element) => element.value === itemSelectedId);\n\n if (item && open) {\n handleOnClickItem(item)();\n }\n toggle();\n\n break;\n }\n\n case SPACE_KEY: {\n if (!withInput) {\n toggle();\n event.preventDefault();\n }\n break;\n }\n\n case ESC_KEY: {\n setOpen(false);\n if (dropdownHeaderRef.current) {\n dropdownHeaderRef.current.focus();\n }\n\n setItemSelectedId(valueSelected.value);\n break;\n }\n\n case TAB_KEY: {\n setOpen(false);\n\n break;\n }\n\n default: {\n if (open) {\n pressedKeys.current = pressedKeys.current.length >= 2\n ? key\n : pressedKeys.current + key;\n const newItem = itemsFiltered.find((item) => String(item.label)\n .toUpperCase().startsWith(pressedKeys.current.toUpperCase()));\n if (newItem) {\n setItemSelectedId(newItem.value);\n }\n }\n break;\n }\n }\n }\n\n function handleOutsideClick() {\n setOpen(false);\n }\n\n function handleInputFocus() {\n setOpen(true);\n }\n\n function renderSearchInput(valueToShow) {\n const isPlaceHolder = valueToShow === placeholder;\n\n return (\n <input\n ref={searchRef}\n aria-activedescendant=\"\"\n aria-autocomplete=\"list\"\n aria-controls=\"dd-options\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n autoComplete=\"off\"\n className=\"Dropdown-common-search-input\"\n id={`${idPostfix}Dropdown`}\n onChange={handleSearchInputChanged}\n onClick={handleDropdownClick}\n onFocus={handleInputFocus}\n onKeyDown={handleArrowKeyPressed}\n placeholder={`${open ? 'Search' : title}`}\n role=\"combobox\"\n style={{ color: isPlaceHolder ? '#6d7579' : '#3d484d' }}\n value={valueToShow || searchInput}\n />\n );\n }\n\n function renderHeaderDropdown() {\n if (!open) {\n let className = 'Dropdown-common-selected-item-placeholder';\n let valueToShow = placeholder || title;\n\n if (valueSelected.label) {\n className = 'Dropdown-common-selected-item-text';\n valueToShow = valueSelected.label;\n }\n\n if (withInput) {\n return renderSearchInput(valueToShow);\n }\n\n return <p className={className}>{valueToShow}</p>;\n }\n\n if (withInput) {\n return renderSearchInput();\n }\n\n return (\n <p>{valueSelected.label || title}</p>\n );\n }\n\n const isSelected = (item) => item.value === valueSelected.value;\n\n function getDropdownId(item) {\n return `dropdown-item-${idPostfix}-${item}`;\n }\n\n function renderItems() {\n const resultsNotFound = !itemsFiltered || itemsFiltered.length === 0;\n\n return (\n <ScrollableDiv\n ref={containerItemRef}\n ariaProps={{\n 'aria-hidden': !open,\n }}\n className={`Dropdown-list ${!open ? 'Dropdown-list-hidden' : ''}`\n + ` ${listClassName}`}\n >\n <ul\n aria-labelledby={`dropdown${idPostfix}`}\n aria-live={resultsNotFound ? 'polite' : 'off'}\n id={`dd-options-${idPostfix}`}\n role=\"listbox\"\n >\n {resultsNotFound ? (\n <li key={0} className=\"Dropdown-common-list-item-container\">\n <span className=\"Dropdown-common-list-item\">\n {noFoundItemsText}\n </span>\n </li>\n ) : itemsFiltered.map((item) => (\n <DropdownItemList\n key={item.value}\n ref={item.value === itemSelectedId ? selectedItemRef : null}\n disabled={item.disabled}\n id={getDropdownId(item.value)}\n item={item}\n listSize={itemsFiltered.length}\n onClick={handleOnClickItem(item)}\n onKeyDown={handleArrowKeyPressed}\n onKeyPress={handleOnKeyPressItem(item)}\n selected={isSelected(item)}\n />\n ))}\n </ul>\n </ScrollableDiv>\n );\n }\n\n function getAriaPropsForDiv() {\n let ariaProps = {\n 'aria-expanded': open,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-required': true,\n title: `${currentSelection} selected`,\n };\n\n if (!withInput) {\n if (browser === BROWSERS.safari) {\n ariaProps = {\n ...ariaProps,\n 'aria-owns': `dd-options-${idPostfix}`,\n };\n }\n\n return {\n ...ariaProps,\n 'aria-activedescendant': '',\n 'aria-controls': `dd-options-${idPostfix}`,\n 'aria-haspopup': 'listbox',\n role: 'combobox',\n };\n }\n return ariaProps;\n }\n\n return (\n <div\n className={'Dropdown-common-container '\n + `${petParentInfo ? ' Pet-parent-dropdown-container' : ''}`\n + ` ${containerClassName}`}\n data-open={open}\n >\n {open && (\n <div\n aria-hidden=\"true\"\n className=\"Dropdown-common-list-overlay-container\"\n onClick={handleOutsideClick}\n onKeyDown={handleOutsideClick}\n role=\"button\"\n tabIndex={-1}\n />\n )}\n\n <div\n ref={dropdownHeaderRef}\n className={`Dropdown-common-header ${headerClassName}`}\n id={`dropdown${idPostfix}`}\n onBlur={onBlur}\n onClick={handleDropdownClick}\n onFocus={onFocus}\n onKeyDown={handleArrowKeyPressed}\n role=\"button\"\n tabIndex={0}\n {...getAriaPropsForDiv()}\n >\n <div className={`Dropdown-common-selected-item\n ${petParentInfo ? ' Pet-parent-dropdown-selected-item' : ''}`}\n >\n {renderHeaderDropdown()}\n </div>\n\n <div\n className=\"Dropdown-common-arrow-container No-clicked\"\n id=\"arrowContainer\"\n >\n <img\n alt=\"\"\n aria-hidden=\"true\"\n className={'Dropdown-common-arrow-closed '\n + `${open && !disableArrowAnimation\n ? 'Dropdown-common-arrow-open' : ''}`}\n src={dropdownIcon || arrowDown}\n />\n </div>\n </div>\n\n {renderItems()}\n\n <span\n aria-label={error && error.replace('This', title)}\n aria-live=\"polite\"\n className=\"Dropdown-common-header-error-message\"\n >\n {error}\n </span>\n </div>\n );\n};\n\nexport { Dropdown };\n","export default __webpack_public_path__ + \"static/media/check.3d3bd0d5.svg\";","import React, { useCallback, useMemo } from 'react';\nimport checkIcon from '../../../assets/plans/check.svg';\nimport './SelectorPill.css';\n\nconst SelectorPill = ({\n checked = false,\n disabled = false,\n itemExtraData,\n label = '',\n name = '',\n onChange = () => { },\n value = '',\n}) => {\n const id = useMemo(() => label.replace(/[^A-Za-z0-9]/g, ''), [label]);\n\n const handleChange = useCallback(() => {\n onChange({ ...itemExtraData, label, value });\n }, [onChange, itemExtraData, label, value]);\n\n return (\n <label\n aria-label={`${label} ${name}`}\n aria-live={checked ? 'polite' : 'off'}\n className=\"Selector-pill-wrapper\"\n data-checked={checked}\n data-disabled={disabled}\n htmlFor={`${id}-${name}`}\n >\n <input\n aria-disabled={disabled}\n checked={checked}\n className=\"Selector-pill-button\"\n id={`${id}-${name}`}\n name={name}\n onChange={handleChange}\n type=\"radio\"\n value={value}\n />\n\n {checked && <img alt=\"\" src={checkIcon} />}\n\n {label}\n </label>\n );\n};\n\nexport { SelectorPill };\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { recalculateTotalPrices } from '../../../actions';\n\nimport infoIcon from '../../../assets/plans/info.svg';\nimport IconTooltip, { TOOL_TIP_POSITION } from '../../common/IconTooltip';\n\nimport { SelectorPill } from './SelectorPill';\nimport './SelectorPills.css';\n\n// WIP: FPA-12516 this POC needs PO/client approval\nexport const SelectorPills = ({\n items = [{ disabled: false, item: {}, value: '' }],\n onChange = () => { },\n position = TOOL_TIP_POSITION.start,\n title,\n tooltipDescription,\n value,\n}) => {\n const dispatch = useDispatch();\n\n const onOptionClick = useCallback((item) => {\n if (item.disabled) {\n return;\n }\n\n onChange(item);\n dispatch(recalculateTotalPrices());\n }, [dispatch, onChange]);\n\n const titleForId = title.replace(/\\s/g, '-');\n\n return (\n <fieldset className=\"Selector-pills-container\">\n <span className=\"Selector-pills-title\" id={`${titleForId}-label`}>\n <legend>{title}</legend>\n\n {tooltipDescription && (\n <IconTooltip\n backgroundColor=\"var(--citron-shade-3)\"\n description={tooltipDescription}\n icon={infoIcon}\n name={title}\n position={position}\n />\n )}\n </span>\n\n <div className=\"Selector-pills-options\">\n {items.map((item) => (\n <SelectorPill\n key={item.value}\n checked={value.value === item.id}\n disabled={item.disabled}\n itemExtraData={item}\n label={item.value}\n name={title.replace(' ', '')}\n onChange={onOptionClick}\n value={item.id}\n />\n ))}\n </div>\n </fieldset>\n );\n};\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { recalculateTotalPrices } from '../../../actions';\n\nimport infoIcon from '../../../assets/plans/info.svg';\nimport arrowsIcon from '../../../assets/plans/select-arrows.svg';\nimport { Dropdown } from '../../common/Dropdown';\nimport IconTooltip, { TOOL_TIP_POSITION } from '../../common/IconTooltip';\n\nimport './SelectorCombo.css';\nimport { useCustomPlanPills } from '../../../util';\nimport { SelectorPills } from './SelectorPills';\n\nconst SelectorCombobox = ({\n items = [{ disabled: false, item: {}, value: '' }],\n onChange = () => { },\n position = TOOL_TIP_POSITION.start,\n title,\n tooltipDescription,\n value,\n}) => {\n const dispatch = useDispatch();\n\n const onOptionClick = (item) => {\n if (item.disabled) {\n return;\n }\n\n onChange(item);\n dispatch(recalculateTotalPrices());\n };\n\n const titleForId = title.replace(/\\s/g, '-');\n\n return (\n <div className=\"Selector-compo-container\">\n <div>\n <span className=\"Selector-compo-title\" id={`${titleForId}-label`}>\n {title}\n\n {tooltipDescription && (\n <IconTooltip\n backgroundColor=\"var(--citron-shade-3)\"\n description={tooltipDescription}\n icon={infoIcon}\n name={title}\n position={position}\n />\n )}\n </span>\n </div>\n\n <Dropdown\n ariaLabelledBy={`${titleForId}-label`}\n containerClassName=\"Selector-custom-container\"\n disableArrowAnimation\n dropdownIcon={arrowsIcon}\n idPostfix={titleForId}\n items={items.map((item) => ({\n ...item,\n label: item.value,\n value: item.id,\n }))}\n listClassName=\"Selector-custom-container-list\"\n onItemSelected={onOptionClick}\n title={title}\n valueSelected={value}\n />\n </div>\n );\n};\n\nconst SelectorCombo = (props) => (useCustomPlanPills\n ? <SelectorPills {...props} />\n : <SelectorCombobox {...props} />);\n\nexport { SelectorCombo };\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n useCustomPlanPills,\n useTrackingEvents,\n} from '../../../util';\nimport {\n changeDeductibleLegend,\n saveDeductibleSelected,\n saveSelectedReimbursement,\n selectedPlan,\n} from '../../../actions';\nimport {\n useTrackingDeductibleSelection,\n useTrackingPlanSelection,\n useTrackingReimbursementSelection,\n} from '../../../trackingEvents';\n\nimport { TOOL_TIP_POSITION } from '../../common/IconTooltip';\nimport { SelectorCombo } from './SelectorCombo';\nimport './DeductibleReimbursement.css';\n\nconst ULTIMATE_PLAN = 2;\n\nexport const DeductibleReimbursement = ({\n containerClass = '',\n isEssentialSelected = false,\n plans,\n quoteSelected,\n}) => {\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n const { t } = useTranslation('quoting');\n\n const [deductibles, setDeductibles] = useState([]);\n const [reimbursements, setReimbursements] = useState([]);\n const { trackReimbursementSelection } = useTrackingReimbursementSelection();\n const { trackDeductibleSelection } = useTrackingDeductibleSelection();\n const { trackPlanSelection } = useTrackingPlanSelection();\n\n const plansItems = useMemo(\n () => (plans.map((item) => ({\n ...item,\n id: item.Plan,\n value: item.MaxAnnual,\n }))),\n [plans],\n );\n\n const isUltimateSelected = quoteSelected.selectedPlanIndex\n === ULTIMATE_PLAN;\n\n const updateDeductible = useCallback(({ id, value }) => {\n dispatch(saveDeductibleSelected({ description: value, id }));\n }, [dispatch]);\n\n const updateReimbursement = useCallback(() => {\n const plan = plans.find((item) => item.Plan === quoteSelected.selectedPlan);\n\n const ratingOptions = plan.RatingOptions\n .filter((rating) => rating.DeductibleId === quoteSelected.deductibleId);\n const reimbursementsFilter = ratingOptions\n .filter((item) => item.DeductibleId === quoteSelected.deductibleId)\n .map((item) => ({\n available: !item.Invalid,\n description: item.ReimbursementName,\n id: item.ReimbursementId,\n }));\n const reimbursementAvailable = reimbursementsFilter\n .reverse().find((item) => item.available);\n const { description, id } = reimbursementAvailable;\n\n dispatch(saveSelectedReimbursement({ description, id }));\n }, [dispatch, plans, quoteSelected.selectedPlan, quoteSelected.deductibleId]);\n\n const onReimbursementChange = useCallback(({ id, label }) => {\n dispatch(saveSelectedReimbursement({ description: label, id }));\n\n if (useTrackingEvents) {\n trackReimbursementSelection({\n reimbursement: label,\n reimbursementId: id,\n });\n }\n }, [dispatch, trackReimbursementSelection]);\n\n const onDeductibleChange = useCallback(({ id, label }) => {\n updateDeductible({ id, value: label });\n\n if (useTrackingEvents) {\n trackDeductibleSelection({ deductible: label, deductibleId: id });\n }\n }, [trackDeductibleSelection, updateDeductible]);\n\n const onCoverageChange = useCallback(({ MaxAnnual, Plan }) => {\n dispatch(selectedPlan({\n planAmount: MaxAnnual,\n planId: Plan,\n planPackagedId: -1,\n }));\n\n const index = plans\n .findIndex((item) => item.Plan === Plan);\n\n if (useTrackingEvents) {\n trackPlanSelection({ planIndex: index, planLimit: MaxAnnual });\n }\n }, [dispatch, plans, trackPlanSelection]);\n\n useEffect(() => {\n if (plans && !plans.length) {\n return;\n }\n\n const {\n deductibleId,\n reimbursementId,\n reimbursementPercentage,\n } = quoteSelected;\n\n const plan = plans.find((item) => item.Plan === quoteSelected.selectedPlan);\n\n const ratingOptions = plan.RatingOptions\n .filter((rating) => rating.ReimbursementId === reimbursementId);\n const deductiblesFilter = ratingOptions\n .filter((item) => item.ReimbursementId === reimbursementId)\n .map((item) => ({\n available: !item.Invalid,\n disabled: item.Invalid,\n id: item.DeductibleId,\n value: item.DeductibleName,\n }));\n const deductiblesAvailables =\n deductiblesFilter.filter((item) => item.available);\n const currentDeductible =\n deductiblesFilter.find((item) => item.id === deductibleId) || {};\n let deductibleLegend = '';\n\n if (!deductiblesAvailables.length) {\n updateReimbursement();\n return;\n }\n\n if (deductiblesAvailables.length < deductiblesFilter.length) {\n const names = deductiblesAvailables.map((item) => item.value);\n\n let nameLegend = '';\n\n if (names.length === 1) {\n nameLegend = names.join(t(' and '));\n } else {\n names.forEach((item, index) => {\n const concat = names.length - 1 === index ? ' and ' : ', ';\n\n nameLegend = nameLegend\n ? `${nameLegend}${concat}${item}` : ` ${item}`;\n });\n }\n\n deductibleLegend = `${reimbursementPercentage} `\n + 'reimbursement is available with deductibles of'\n + ` ${nameLegend}`;\n }\n\n dispatch(changeDeductibleLegend(deductibleLegend));\n\n if (!currentDeductible.available) {\n updateDeductible(\n [...deductiblesFilter].reverse().find((item) => item.available),\n );\n }\n\n setDeductibles(deductiblesFilter);\n }, [\n dispatch,\n plans,\n quoteSelected,\n t,\n updateDeductible,\n updateReimbursement,\n ]);\n\n useEffect(() => {\n if (plans && !plans.length) {\n return;\n }\n\n const plan = plans.find((item) => item.Plan === quoteSelected.selectedPlan);\n\n const ratingOptions = plan.RatingOptions\n .filter((rating) => rating.DeductibleId === quoteSelected.deductibleId);\n const reimbursementsFilter = ratingOptions\n .filter((item) => item.DeductibleId === quoteSelected.deductibleId)\n .map((item) => ({\n disabled: item.Invalid,\n id: item.ReimbursementId,\n value: item.ReimbursementName,\n }));\n\n // FIX ME, fix some plan (ultimate), blocking 100% reimbursement\n // const lastReimbursement =\n // reimbursementsFilter[reimbursementsFilter.length - 1] || {};\n // const reimbursement100Locked = plan.RatingOptions\n // .filter((rating) => rating.ReimbursementId === lastReimbursement.id)\n // .reduce((prev, next) => prev && next.Invalid, true);\n\n // setValidateSelector(!reimbursement100Locked);\n // FIX ME, fix some plan (ultimate), blocking 100% reimbursement\n\n setReimbursements(reimbursementsFilter);\n }, [plans, quoteSelected.deductibleId, quoteSelected.selectedPlan]);\n\n const headsUpClass = useCustomPlanPills\n ? 'Deductible-legend' : 'Prepackaged-plan-hands-up';\n\n if (!quoteSelected.selectedPlanPackaged\n || quoteSelected.selectedPlanPackaged > 0) {\n return isEssentialSelected ? (\n <p aria-live=\"polite\" className={headsUpClass}>\n {t('prepackagedPlans.headsUp')}\n </p>\n ) : null;\n }\n\n const deductibleLegendClass = useCustomPlanPills\n ? 'Deductible-legend' : 'Deductible-legend-text';\n\n const deductibleLegendContainer = useCustomPlanPills\n ? 'Deductible-legend-div' : 'Deductible-legend-text-div';\n\n return (\n <>\n <div\n className={useCustomPlanPills\n ? 'Deductible-reimbursement-container'\n : 'DeductibleReimbursement-container'}\n >\n <div\n className={'DeductibleReimbursement-container-div'\n + `${useCustomPlanPills\n ? ' Deductible-reimbursement-wrapper' : ''} ${containerClass}`}\n >\n <SelectorCombo\n items={plansItems}\n onChange={onCoverageChange}\n title={t('prepackagedPlans.annualCoverage')}\n tooltipDescription={t('prepackagedPlans.annualCoverageToooltip')}\n value={{\n label: quoteSelected.selectedPlanAmount,\n value: quoteSelected.selectedPlan,\n }}\n />\n\n {useCustomPlanPills && (\n <p aria-live=\"polite\" className={headsUpClass}>\n {isEssentialSelected && t('prepackagedPlans.headsUp')}\n </p>\n )}\n\n <SelectorCombo\n items={deductibles}\n onChange={onDeductibleChange}\n title={t('prepackagedPlans.deductible')}\n tooltipDescription={t('prepackagedPlans.reimbursementTooltip')}\n value={{\n label: quoteSelected.deductibleQuantity,\n value: quoteSelected.deductibleId,\n }}\n />\n\n {useCustomPlanPills && (\n <span aria-live=\"polite\" className={deductibleLegendClass}>\n {store.deductibleLegend}\n </span>\n )}\n\n <SelectorCombo\n items={reimbursements}\n onChange={onReimbursementChange}\n position={TOOL_TIP_POSITION.start}\n title={t('prepackagedPlans.reimbursement')}\n tooltipDescription={t('prepackagedPlans.deductibleTooltip')}\n value={{\n label: quoteSelected.reimbursementPercentage,\n value: quoteSelected.reimbursementId,\n }}\n />\n\n {useCustomPlanPills && (\n <span aria-live=\"polite\" className={deductibleLegendClass}>\n {isUltimateSelected\n && t('prepackagedPlans.100ReimbursementNoAvailable')}\n </span>\n )}\n </div>\n </div>\n\n {!useCustomPlanPills && (\n <>\n <p aria-live=\"polite\" className={headsUpClass}>\n {isEssentialSelected && t('prepackagedPlans.headsUp')}\n </p>\n\n <div className={deductibleLegendContainer}>\n <span aria-live=\"polite\" className={deductibleLegendClass}>\n {store.deductibleLegend}\n </span>\n\n <span aria-live=\"polite\" className={deductibleLegendClass}>\n {isUltimateSelected\n && t('prepackagedPlans.100ReimbursementNoAvailable')}\n </span>\n </div>\n </>\n )}\n </>\n );\n};\n","import { useSelector } from 'react-redux';\nimport { useTracking } from 'react-tracking';\nimport {\n baseRequest,\n customTrackEvent,\n EVENT_TYPE,\n getCurrentPrice,\n getPetPowerups,\n getPlanLimit,\n getQuotePlanInfo,\n} from './baseRequest';\nimport { PetType } from '../constants';\nimport { getAgeInYears } from '../util';\n\nconst useTrackingReimbursementSelection = () => {\n const { trackEvent } = useTracking({ }, { dispatch: customTrackEvent });\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n parameters: { groupCodeDscr, email },\n petQuoteSelected,\n quoteSelectedValues,\n subId,\n } = store;\n\n function getDeductibleUpdated({\n currentDeductibleId,\n currentPet,\n planId,\n reimbursementId,\n }) {\n const ONE_HUNDRED_PERCENT_ID = 1;\n const response = { description: '', id: 0 };\n\n if (reimbursementId === ONE_HUNDRED_PERCENT_ID) {\n const currentCombination = currentPet.Plans[planId].RatingOptions\n .filter((rating) => rating.DeductibleId === currentDeductibleId\n && rating.ReimbursementId === reimbursementId);\n\n if (currentCombination.length && currentCombination[0].Invalid) {\n const ratingOptions = currentPet.Plans[planId].RatingOptions\n .filter((rating) => rating.ReimbursementId === reimbursementId);\n\n const deductiblesFilter = ratingOptions\n .filter((item) => item.ReimbursementId === reimbursementId)\n .map((item) => ({\n available: !item.Invalid,\n description: item.DeductibleName,\n id: item.DeductibleId,\n }));\n\n const deductibleAvailable = deductiblesFilter\n .reverse().find((item) => item.available);\n\n response.id = deductibleAvailable.id;\n response.description = deductibleAvailable.description;\n }\n }\n\n return response;\n }\n\n function trackReimbursementSelection({\n reimbursement,\n reimbursementId,\n }) {\n const currentPet = data.petQuoteResponseList\n .find((element) => element.petQuoteId === petQuoteSelected);\n\n const petQuoteInf = getQuotePlanInfo({\n petId: currentPet.petQuoteId,\n quoteSelectedValues,\n });\n\n const modifierList = data.insuranceProduct.InsuranceModifiers;\n const petQuotePowerups = getPetPowerups({ currentPet, modifierList });\n\n const { selectedPlanIndex } =\n quoteSelectedValues.find((pt) => pt.quoteId === petQuoteSelected);\n\n const price = getCurrentPrice({\n currentPet,\n petIdSelected: petQuoteSelected,\n planIndex: selectedPlanIndex,\n quoteSelectedValues,\n reimbursementIdParam: reimbursementId,\n });\n\n const newDeductible = getDeductibleUpdated({\n currentDeductibleId: petQuoteInf.deductibleId,\n currentPet,\n planId: petQuoteInf.selectedPlanIndex,\n reimbursementId,\n });\n\n const petInfo = {\n age: getAgeInYears(currentPet.petAgeName),\n breed: currentPet.breedName,\n gender: currentPet.genderName.toLowerCase(),\n name: currentPet.petName,\n quote: {\n annual_premium: price.AnnualPremium,\n deductible: newDeductible.description || petQuoteInf.deductible,\n extra_care: petQuotePowerups.extraCarePack,\n limit: getPlanLimit(petQuoteInf.monthlyLimit),\n monthly_premium: price.MonthlyPremium,\n reimbursement,\n vet_fees: petQuotePowerups.vetFees,\n wellness: petQuotePowerups.wellness,\n },\n species: currentPet.petType === PetType.Dog.value ? 'dog' : 'cat',\n zip: data.zipCode,\n };\n\n trackEvent({\n ...baseRequest({\n codeMask: groupCodeDscr,\n email,\n promoCode: data.groupCode || '',\n subId: subId.Value,\n }),\n event: EVENT_TYPE.REIMBURSEMENT_SELECTION,\n pet: petInfo,\n });\n }\n\n return { trackReimbursementSelection };\n};\n\nexport { useTrackingReimbursementSelection };\n","import { useSelector } from 'react-redux';\nimport { useTracking } from 'react-tracking';\nimport { PetType } from '../constants';\nimport { getAgeInYears } from '../util';\nimport {\n baseRequest,\n customTrackEvent,\n EVENT_TYPE,\n getCurrentPrice,\n getPetPowerups,\n getPlanLimit,\n getQuotePlanInfo,\n} from './baseRequest';\n\nconst useTrackingDeductibleSelection = () => {\n const { trackEvent } = useTracking({ }, { dispatch: customTrackEvent });\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n parameters: { groupCodeDscr, email },\n petQuoteSelected,\n quoteSelectedValues,\n subId,\n } = store;\n\n function trackDeductibleSelection({\n deductible,\n deductibleId,\n }) {\n const currentPet = data.petQuoteResponseList\n .find((element) => element.petQuoteId === petQuoteSelected);\n\n const petQuoteInf = getQuotePlanInfo({\n petId: currentPet.petQuoteId,\n quoteSelectedValues,\n });\n\n const modifierList = data.insuranceProduct.InsuranceModifiers;\n const petQuotePowerups = getPetPowerups({ currentPet, modifierList });\n\n const { selectedPlanIndex } =\n quoteSelectedValues.find((pt) => pt.quoteId === petQuoteSelected);\n\n const price = getCurrentPrice({\n currentPet,\n deductibleIdParam: deductibleId,\n petIdSelected: petQuoteSelected,\n planIndex: selectedPlanIndex,\n quoteSelectedValues,\n });\n\n const petInfo = {\n age: getAgeInYears(currentPet.petAgeName),\n breed: currentPet.breedName,\n gender: currentPet.genderName.toLowerCase(),\n name: currentPet.petName,\n quote: {\n annual_premium: price.AnnualPremium,\n deductible,\n extra_care: petQuotePowerups.extraCarePack,\n limit: getPlanLimit(petQuoteInf.monthlyLimit),\n monthly_premium: price.MonthlyPremium,\n reimbursement: petQuoteInf.reimbursement,\n vet_fees: petQuotePowerups.vetFees,\n wellness: petQuotePowerups.wellness,\n },\n species: currentPet.petType === PetType.Dog.value ? 'dog' : 'cat',\n zip: data.zipCode,\n };\n\n trackEvent({\n ...baseRequest({\n codeMask: groupCodeDscr,\n email,\n promoCode: data.groupCode || '',\n subId,\n }),\n event: EVENT_TYPE.DEDUCTIBLE_SELECTION,\n pet: petInfo,\n });\n }\n\n return { trackDeductibleSelection };\n};\n\nexport { useTrackingDeductibleSelection };\n","import React, { useMemo } from 'react';\n\nimport { currencyFormat, useCustomPlanPills } from '../../../util';\nimport { CUSTOM_PLAN_ID } from './constants';\n\nimport './PrepackagedPlanCard.css';\nimport { DeductibleReimbursement } from '../customPlanSection';\n\nconst PrepackagedPlanCard = ({\n activeIcon,\n billingCycleLabel = '',\n bottomDisclaimer = '',\n description = '',\n inactiveIcon,\n isEssentialSelected = false,\n maxAnnual,\n name = '',\n onPlanChange = () => { },\n planId = CUSTOM_PLAN_ID,\n planPackagedId,\n plans = [],\n price = 0,\n quoteSelected,\n selected = false,\n}) => {\n const isCustom = planPackagedId === CUSTOM_PLAN_ID;\n\n const priceParts = useMemo(() => {\n const [integer, decimal] = currencyFormat({ value: price })\n .split('.');\n\n return {\n decimal,\n integer: parseInt(integer, 10),\n total: price,\n };\n }, [price]);\n\n function handleClick() {\n onPlanChange({\n planAmount: maxAnnual || quoteSelected.selectedPlanAmount,\n planId: isCustom ? quoteSelected.selectedPlan : planId,\n planPackagedId: planPackagedId || CUSTOM_PLAN_ID,\n });\n }\n\n const ariaPlanLabel = useMemo(() => {\n if (!priceParts.integer) {\n return '';\n }\n\n if (isCustom && !selected) {\n return `${name} plan card not selected`;\n }\n\n const billingCycleLecture = billingCycleLabel.replace('/', '');\n\n const label = `${name} plan card `\n + `${selected ? 'selected' : 'not selected'}. `\n + `${description} `\n + `$${priceParts.integer}.${priceParts.decimal} `\n + `per ${billingCycleLecture}`;\n\n return label;\n }, [billingCycleLabel, description, isCustom, name, priceParts, selected]);\n\n return (\n <div className=\"Prepackaged-plan-card\" data-checked={selected}>\n <button\n aria-label={ariaPlanLabel}\n className=\"Like-span\"\n id={`plan${planPackagedId || planId}Container`}\n onClick={handleClick}\n type=\"button\"\n >\n <div className=\"Prepackaged-plan-data\">\n <div className=\"Prepackaged-plan-name\">\n <img alt=\"\" src={selected ? activeIcon : inactiveIcon} />\n\n <span>{name}</span>\n </div>\n\n {description && (\n <p className=\"Prepackaged-plan-desc\">\n {description}\n </p>\n )}\n </div>\n\n {(!isCustom || (isCustom && selected)) && (\n <div className=\"Prepackaged-plan-price\">\n <span className=\"Prepackaged-plan-super\">$</span>\n\n <span>{priceParts.integer}</span>\n\n <span className=\"Prepackaged-plan-super\">\n .{priceParts.decimal}\n </span>\n\n <span className=\"Prepackaged-plan-sub\">{billingCycleLabel}</span>\n </div>\n )}\n </button>\n\n {useCustomPlanPills && isCustom && selected && (\n <DeductibleReimbursement\n containerClass={bottomDisclaimer ? '' : 'Margin-bottom-24'}\n isEssentialSelected={isEssentialSelected}\n plans={plans}\n quoteSelected={quoteSelected}\n />\n )}\n\n {useCustomPlanPills && isCustom && selected && bottomDisclaimer && (\n <span className=\"Prepackaged-bottom-disclaimer\">\n {bottomDisclaimer}\n </span>\n )}\n </div>\n );\n};\n\nexport { PrepackagedPlanCard };\n","export default __webpack_public_path__ + \"static/media/custom-inactive.7a0eb152.svg\";","export default __webpack_public_path__ + \"static/media/custom-active.0c3fe4f8.svg\";","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { PrepackagedPlanCard } from './PrepackagedPlanCard';\nimport { WhatsCoveredLink } from '../WhatsCoveredLink';\n\nimport customInactive from '../../../assets/plans/custom-inactive.svg';\nimport customActive from '../../../assets/plans/custom-active.svg';\n\nimport {\n isPaycheck,\n useCustomPlanPills,\n useTrackingEvents,\n} from '../../../util';\nimport { MODAL_RELATION_LIST } from '../../../constants';\nimport {\n CUSTOM_PLAN_ID,\n prepackagedPlansIcons,\n WHATS_COVERED_LINK_ID,\n} from './constants';\nimport {\n needToKnowModalVisibleChanged,\n saveDeductibleSelected,\n saveSelectedReimbursement,\n selectedPlan,\n} from '../../../actions';\nimport { useCalculatePlanPrice, usePrevious } from '../../../hooks';\nimport { useTrackingPlanSelection } from '../../../trackingEvents';\nimport './PrepackagedPlanCard.css';\n\nconst { NEED_TO_KNOW_MODAL_ID } = MODAL_RELATION_LIST;\n\n// TODO: paycheck only\nconst billingCycleLabel = {\n desktop: isPaycheck ? 'Per Paycheck' : 'Monthly Premium',\n mobile: isPaycheck ? '/paycheck' : '/month',\n};\n\nexport const PlansSection = () => {\n const { t } = useTranslation('quoting');\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n const { trackPlanSelection } = useTrackingPlanSelection();\n\n const { multiModalData } = store;\n\n const [ESSENTIAL_PLAN] =\n useMemo(() => store.plans, [store.plans]);\n\n const { quoteSelected, plansPackaged, plans } = useCalculatePlanPrice();\n\n const [planIdSelected, setPlanIdSelected] =\n useState(quoteSelected.selectedPlanPackaged);\n const prevPlanIdSelected = usePrevious(planIdSelected);\n\n const isCustomPlanSelected = quoteSelected.selectedPlanPackaged\n === CUSTOM_PLAN_ID;\n\n const isEssentialSelected = quoteSelected.selectedPlanIndex\n === ESSENTIAL_PLAN.index;\n\n function getFirstCategoryId(menuId, subnMenuId = null) {\n let categoryId = 1;\n\n if (multiModalData.InsuranceMultiModalSectionDtoList) {\n const categoryList = multiModalData\n .InsuranceMultiModalSectionDtoList\n .find((element) => element.Id === menuId);\n\n if (categoryList) {\n categoryId = categoryList\n .InsuranceMultiModalCategoryDtoList\n .find((sub) => sub.Id === subnMenuId || !subnMenuId).Id;\n }\n }\n\n return categoryId;\n }\n\n function showWhatCoverageModal() {\n const categoryId = getFirstCategoryId(NEED_TO_KNOW_MODAL_ID);\n dispatch(needToKnowModalVisibleChanged({ categoryId, visible: true }));\n }\n\n function getAriaLabelSelected(isSelected = true) {\n const { petName, total } = quoteSelected;\n\n if (!total) {\n return '';\n }\n\n let label = '';\n if (isSelected && planIdSelected !== prevPlanIdSelected) {\n label = `Updated premium for ${petName} is\n $${total} per month`;\n }\n\n return label;\n }\n\n const onChangePrepackagedPlan = useCallback((plan) => ({\n planId,\n planAmount,\n planPackagedId,\n }) => {\n dispatch(selectedPlan({ planAmount, planId, planPackagedId }));\n dispatch(saveSelectedReimbursement({\n description: plan.reimbursementName,\n id: plan.ReimbursementId,\n }));\n dispatch(saveDeductibleSelected({\n description: plan.deductibleName,\n id: plan.DeductibleId,\n }));\n\n if (useTrackingEvents) {\n const planIndex = plans\n .findIndex((item) => item.Plan === planId);\n if (quoteSelected.selectedPlanIndex !== planIndex) {\n trackPlanSelection({ planIndex, planPrice: planAmount });\n }\n }\n }, [dispatch, plans, quoteSelected.selectedPlanIndex, trackPlanSelection]);\n\n const onChangeCustomPlan = useCallback(({\n planAmount,\n planId,\n planPackagedId,\n }) => {\n dispatch(selectedPlan({ planAmount, planId, planPackagedId }));\n\n if (useTrackingEvents) {\n const planIndex = plans\n .findIndex((item) => item.Plan === planId);\n if (quoteSelected.selectedPlanPackaged\n !== CUSTOM_PLAN_ID) {\n trackPlanSelection({ planIndex, planPrice: planAmount });\n }\n }\n }, [dispatch, plans, quoteSelected.selectedPlanPackaged, trackPlanSelection]);\n\n useEffect(() => {\n setPlanIdSelected(quoteSelected.selectedPlanPackaged);\n }, [quoteSelected.selectedPlanPackaged]);\n\n const customPlanDisclaimer = useMemo(() => {\n if (!store.petQuoteSelected || !store.data\n || !store.data.petQuoteResponseList) {\n return '';\n }\n\n const byPet = store.data.petQuoteResponseList\n .find((pet) => pet.petQuoteId === store.petQuoteSelected);\n\n return byPet?.PrepackagedPlanDisclaimer;\n }, [store.petQuoteSelected, store.data]);\n\n return (\n <>\n <p className=\"Card-plan-main-text\">\n {t('prepackagedPlans.text')}\n </p>\n\n <WhatsCoveredLink\n ariaControls=\"seeWhatWeCovermodalContainer\"\n className=\"Powerup-see-whats-covered-link-main-container-plans\"\n id={WHATS_COVERED_LINK_ID}\n onClick={showWhatCoverageModal}\n text={t('prepackagedPlans.coverage')}\n />\n\n <div className=\"Card-plan-main-prepackaged-plans\">\n {!useCustomPlanPills && (\n <div aria-live=\"polite\" className=\"Card-plan-main-log\" role=\"log\">\n {getAriaLabelSelected()}\n </div>\n )}\n\n {plansPackaged.map((plan, index) => (\n <PrepackagedPlanCard\n key={String(plan.Id)}\n activeIcon={prepackagedPlansIcons[index].active}\n billingCycleLabel={billingCycleLabel.mobile}\n description={plan.Description}\n inactiveIcon={prepackagedPlansIcons[index].inactive}\n maxAnnual={plan.maxAnnual}\n name={plan.Name}\n onPlanChange={onChangePrepackagedPlan(plan)}\n planId={plan.PlanId}\n planPackagedId={plan.Id}\n price={plan.monthlyPrice}\n selected={quoteSelected.selectedPlanPackaged === plan.Id}\n />\n ))}\n\n <PrepackagedPlanCard\n activeIcon={customActive}\n billingCycleLabel={billingCycleLabel.mobile}\n bottomDisclaimer={customPlanDisclaimer}\n inactiveIcon={customInactive}\n isEssentialSelected={isEssentialSelected}\n name={t('prepackagedPlans.customPlan')}\n onPlanChange={onChangeCustomPlan}\n planId={quoteSelected.selectedPlan}\n planPackagedId={CUSTOM_PLAN_ID}\n plans={plans}\n price={quoteSelected.totalMontly}\n quoteSelected={quoteSelected}\n selected={isCustomPlanSelected}\n />\n </div>\n </>\n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslations } from '../../hooks';\nimport './WhatsNotCovered.css';\n\nconst WhatsNotCovered = () => {\n const { t } = useTranslations('quoting', 'whatsNotCovered');\n\n const store = useSelector((coverage) => coverage.quoting);\n const notCovered = store.data?.CoverageInformation?.NotCovered || [];\n\n return (\n <div className=\"Whats-not-covered-container\">\n <div className=\"Whats-not-covered-first-box\">\n <h1 className=\"Whats-not-covered-title\">{t('title')}</h1>\n </div>\n\n <div className=\"Whats-not-covered-second-box\">\n <ul className=\"Whats-not-covered-second-item\">\n {notCovered.map((item) => (\n <li key={String(item.Id)} className=\"Whats-not-covered-item\">\n <div className=\"Whats-not-covered-boxitem\">\n <img alt=\"\" src={item.Icon} />\n\n <p>{item.Title}</p>\n </div>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n\nexport { WhatsNotCovered };\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { useTranslations } from '../../hooks';\nimport { needToKnowModalVisibleChanged } from '../../actions/quoting';\nimport './SeeFullCoverage.css';\n\nconst SeeFullCoverage = ({ isVisible = true }) => {\n const { t } = useTranslations('quoting', 'fullCoverage');\n const dispatch = useDispatch();\n\n const handleButtonClick = () => {\n dispatch(\n needToKnowModalVisibleChanged({ visible: true }),\n );\n };\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <div className=\"See-full-coverage-details-container\">\n <button\n aria-controls=\"seeWhatWeCovermodalContainer\"\n aria-label={`${t('title')}`}\n onClick={handleButtonClick}\n type=\"button\"\n >\n <h2 className=\"See-full-coverage-details-title\">\n {t('title')}\n </h2>\n </button>\n\n <div\n className=\"See-full-coverage-details-underline\"\n role=\"presentation\"\n />\n </div>\n );\n};\n\nexport { SeeFullCoverage };\n","import React, { useEffect, useState, useMemo } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useIsAuthenticated } from '@azure/msal-react';\nimport { useLocation } from 'react-router-dom';\n\nimport {\n extoleQuoteUUIDSave,\n setCurrentQuoteStep,\n validateCustomerExistsByEmail,\n validateDiamondUser,\n} from '../../actions';\nimport {\n isPaycheck,\n useCustomEffectiveDate,\n useCustomPlanPills,\n useEnrollmentflag,\n useROPC,\n} from '../../util';\nimport { AFTER_RATE_TAG, QuotingSteps } from '../../constants';\nimport {\n useB2CInfo,\n useCallbackAfterRate,\n useExtole,\n useRateSummary,\n useRedesign,\n useResponsive,\n} from '../../hooks';\n\nimport { EffectiveDateCustom } from '../common/EffectiveDateCustom';\nimport { PowerUpSection } from './powerups/PowerUpSection';\nimport DiscountApplied from './yourInfo/DiscountApplied';\nimport { MyPetsContainer } from './myPets/MyPetsContainer';\nimport CardPlanMainHeaderCompany from './CardPlanMainHeaderCompany';\nimport NeedToKnowNewDesign from './NeedToKnowNewDesign';\nimport { SaveYourQuoteButton } from './SaveYourQuoteButton';\nimport WhatFigoCovers from './WhatFigoCovers';\nimport { QuotingFloatingImages } from './QuotingFloatingImages';\nimport { PlansSection } from './planSection';\nimport { DeductibleReimbursement } from './customPlanSection';\nimport { WhatsNotCovered } from './WhatsNotCovered';\nimport { SeeFullCoverage } from './SeeFullCoverage';\nimport { useTranslations } from '../../hooks/useTranslations';\n\nimport './CardPlanMain.css';\nimport { usePartnersData } from '../../partners/usePartnersData';\nimport { IncompleteSelectionError } from './IncompleteSelectionError';\nimport { QuoteSizeWarning } from './QuoteSizeWarning';\n\nconst CardPlanMain = () => {\n const store = useSelector(({ quoting }) => quoting);\n const { t } = useTranslations('quoting');\n const extoleEvents = useExtole();\n const dispatch = useDispatch();\n const { isMobile, isTablet } = useResponsive();\n const isRedesign = useRedesign();\n const {\n isLoading,\n newCustomer: {\n email,\n lastName,\n name,\n },\n parameters,\n petQuoteSelected,\n quoteSelectedValues,\n sessionInformation: { nopCommerceUser },\n } = store;\n const { isPartner, renderCardPlanHeader } = usePartnersData();\n const isAuthenticated = useIsAuthenticated();\n const { loginB2C } = useB2CInfo();\n const location = useLocation();\n\n const fullName = useMemo(() => {\n if (nopCommerceUser.FirstName) {\n return `${nopCommerceUser.FirstName} ${nopCommerceUser.LastName}`;\n }\n\n return `${name} ${lastName}`;\n }, [\n lastName,\n name,\n nopCommerceUser.FirstName,\n nopCommerceUser.LastName,\n ]);\n\n const ESSENTIAL_PLAN = useMemo(() => store.plans[0], [store.plans]);\n\n const quoteSelected = quoteSelectedValues\n .find((item) => item.quoteId === petQuoteSelected)\n || { petName: 'Pet Name' };\n\n let plans = [];\n let petQuote = null;\n\n if (store.data) {\n petQuote = store.data.petQuoteResponseList\n .find((item) => item.petQuoteId === petQuoteSelected);\n\n plans = petQuote ? petQuote.Plans : [];\n }\n\n const [isMounted, setIsMounted] = useState(false);\n const [currentZipCode, setCurrentZipCode] = useState('');\n const { petZipCode } = parameters;\n\n useEffect(() => {\n if (!isMounted || currentZipCode !== petZipCode) {\n setIsMounted(true);\n dispatch(setCurrentQuoteStep(QuotingSteps.SelectPlan.value));\n setCurrentZipCode(petZipCode);\n }\n }, [\n currentZipCode,\n dispatch,\n isMounted,\n petZipCode,\n ]);\n\n useEffect(() => {\n async function validateCustomerB2C() {\n if (!nopCommerceUser.LoginSuccess && email\n && !isAuthenticated && parameters) {\n const payload = await validateCustomerExistsByEmail(email);\n const { IsValid, Data } = payload;\n const userAlreadyExists = IsValid && !!Data;\n\n dispatch(validateDiamondUser({\n customerExistsData: Data,\n email,\n userAlreadyExists,\n validateCustomer: false,\n }));\n if (userAlreadyExists) {\n if (!useROPC) {\n const currentUrl = `${location.pathname}${location.search}`;\n loginB2C({\n existingEmail: email,\n urlState: currentUrl,\n });\n }\n }\n }\n }\n\n validateCustomerB2C();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (store.extoleQuoteUUID || isLoading) {\n return;\n }\n\n extoleEvents.sendQuoteSubmittedEvent();\n dispatch(extoleQuoteUUIDSave(true));\n }, [dispatch, isLoading, extoleEvents, store.data, store.extoleQuoteUUID]);\n\n const { getSelectedRate } = useRateSummary();\n\n useCallbackAfterRate(() => {\n getSelectedRate();\n }, [\n AFTER_RATE_TAG.createRate,\n AFTER_RATE_TAG.addPet,\n AFTER_RATE_TAG.removePet,\n AFTER_RATE_TAG.removePartner,\n AFTER_RATE_TAG.loadByOrderId,\n ]);\n\n const NeedToKnowSection = () => {\n if (useEnrollmentflag && (isMobile || isTablet)) {\n return <NeedToKnowNewDesign />;\n }\n\n return null;\n };\n\n return (\n <div\n className={'App-card-plan-main-container '\n + 'Card-plan-main-container-elevated'\n + ' App-card-plan-main-container-bg'}\n >\n <div\n className={`${useEnrollmentflag\n ? 'Card-plan-main-container-enrollment '\n : 'Card-plan-main-container '}`}\n >\n {renderCardPlanHeader()}\n\n {isRedesign ? (\n <>\n <QuoteSizeWarning />\n\n <IncompleteSelectionError />\n </>\n ) : null}\n\n <section\n aria-label={t('cardPlanHeader')}\n className=\"Card-plan-header-section\"\n >\n <div className=\"Card-plan-header-title-container\">\n <CardPlanMainHeaderCompany isPartner={isPartner} />\n </div>\n </section>\n\n <PlansSection />\n\n {isPaycheck ? (\n <span className=\"Deductible-legend-text\">\n Based on 24 pay periods\n </span>\n ) : null}\n\n {!useCustomPlanPills && (\n <DeductibleReimbursement\n isEssentialSelected={quoteSelected.selectedPlanIndex\n === ESSENTIAL_PLAN.index}\n plans={plans}\n quoteSelected={quoteSelected}\n />\n )}\n\n {useCustomEffectiveDate && <EffectiveDateCustom name={fullName} />}\n\n <DiscountApplied />\n\n <PowerUpSection\n currentZipCode={currentZipCode}\n petQuote={petQuote}\n quoteSelected={quoteSelected}\n />\n\n <MyPetsContainer />\n\n {useEnrollmentflag && !isLoading\n && (\n <>\n <WhatFigoCovers />\n\n <WhatsNotCovered />\n\n <SeeFullCoverage isVisible={!isMobile && !isTablet} />\n </>\n )}\n\n <SaveYourQuoteButton />\n\n <NeedToKnowSection />\n </div>\n\n <QuotingFloatingImages />\n\n {!useEnrollmentflag && <NeedToKnowNewDesign />}\n </div>\n );\n};\n\nexport default CardPlanMain;\n","import React from 'react';\n\nimport CardPlanMain from './CardPlanMain';\nimport { QuestionsSection } from './QuestionsSection';\n\nimport './QuoteContent.css';\n\nconst QuoteContent = () => (\n <div className=\"Quote-content\">\n <CardPlanMain />\n\n <QuestionsSection isQuote />\n </div>\n);\n\nexport { QuoteContent };\n","export default __webpack_public_path__ + \"static/media/sync-clouds-citron.d804aa9d.svg\";","import React, { useEffect, useRef, useMemo } from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport {\n hideCustomerWelcomeMessage,\n modalCustomerWelcomeVisibleChanged,\n reRateByNopCommerCustomer,\n selectedPlan,\n setPowerUpErrors,\n validateAllPetsPowerups,\n} from '../../actions';\nimport syncIcon from '../../assets/sync-clouds-citron.svg';\nimport { forceFocusElement, validatePowerupsSelected } from '../../util';\nimport ModalContainer from './ModalContainer';\nimport './ModalCustomerWelcome.css';\nimport { CUSTOM_PLAN_ID } from '../quoting/planSection/constants';\nimport { useCallbackAfterRate, useRedesign } from '../../hooks';\nimport { AFTER_RATE_TAG } from '../../constants';\n\nlet isMounted = false;\nconst ModalCustomerWelcome = ({ goTo, isSecondStep = false }) => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const location = useLocation();\n const locationParams = new URLSearchParams(location?.search || '');\n const { t } = useTranslation('quoting');\n\n const dispatch = useDispatch();\n const {\n data,\n isLoading,\n modalCustomerWelcomeVisible,\n parameters,\n petQuoteSelected,\n quoteSelectedValues,\n sessionInformation,\n subId,\n } = store;\n const { nopCommerceUser, userEmail } = sessionInformation;\n const buttonRef = useRef(null);\n const isRedesign = useRedesign();\n const ESSENTIAL_PLAN = store.plans[0];\n const PREFERRED_PLAN = store.plans[1];\n const ULTIMATE_PLAN = store.plans[2];\n\n const isNewZipcode = useMemo(\n () => (parameters.petZipCode !== nopCommerceUser.Address?.ZipCode),\n [parameters.petZipCode, nopCommerceUser.Address],\n );\n\n useEffect(() => {\n if (!isMounted) {\n isMounted = true;\n }\n\n return () => dispatch(hideCustomerWelcomeMessage());\n }, [dispatch]);\n\n useEffect(() => {\n if (!isMounted || !nopCommerceUser.LoginSuccess) {\n return;\n }\n\n if (sessionInformation.showWelcomeMessage || isNewZipcode) {\n dispatch(modalCustomerWelcomeVisibleChanged(true));\n }\n }, [\n dispatch,\n isNewZipcode,\n nopCommerceUser.LoginSuccess,\n sessionInformation,\n ]);\n\n useEffect(() => {\n if (modalCustomerWelcomeVisible && !isLoading && buttonRef.current) {\n buttonRef.current.focus();\n }\n }, [isLoading, modalCustomerWelcomeVisible]);\n\n function handleCloseFocus() {\n const quoteSelected = quoteSelectedValues\n .find((item) => item.quoteId === petQuoteSelected)\n || { petName: 'Pet Name' };\n\n switch (quoteSelected.selectedPlanIndex) {\n case ESSENTIAL_PLAN.index:\n forceFocusElement(`ESSENTIAL${ESSENTIAL_PLAN.index}`);\n break;\n\n case PREFERRED_PLAN.index:\n forceFocusElement(`PREFERRED${PREFERRED_PLAN.index}`);\n break;\n\n case ULTIMATE_PLAN.index:\n forceFocusElement(`ULTIMATE${ULTIMATE_PLAN.index}`);\n break;\n\n default:\n forceFocusElement(`PREFERRED${PREFERRED_PLAN.index}`);\n break;\n }\n }\n\n useCallbackAfterRate(() => {\n if (isSecondStep) {\n const petQuoteRateItem = data.petQuoteResponseList\n .find((pqRateItem) => pqRateItem.petQuoteId === petQuoteSelected);\n const powerUpValidation = validatePowerupsSelected(petQuoteRateItem);\n if (!powerUpValidation.isValid) {\n dispatch(setPowerUpErrors(powerUpValidation.modifierIdNotSelectedList));\n if (isRedesign) {\n window.scrollTo(0, 0);\n }\n }\n }\n }, [AFTER_RATE_TAG.newZipCode]);\n\n const onClickGotIt = async () => {\n const { FirstName, LastName } = nopCommerceUser;\n dispatch(modalCustomerWelcomeVisibleChanged(false));\n\n await dispatch(reRateByNopCommerCustomer({\n diamondClientId: nopCommerceUser.DiamonClientdId,\n effectiveDateCustom: store.effectiveDateCustom,\n eMail: userEmail || parameters.email,\n employerName: `${FirstName} ${LastName}`,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n parameters,\n petQuoteResponseList: data.petQuoteResponseList,\n promoCode: store.newPet.promoCode,\n subId: subId && subId.Name && subId.Value ? subId : {},\n zipCode: nopCommerceUser.Address.ZipCode,\n }));\n dispatch(validateAllPetsPowerups());\n\n // TODO: This is a workaround for an issue on backend\n // that should be fixed on their side but will take some time\n if (locationParams.get('isCostco')) {\n const quoteSelected = quoteSelectedValues\n .find((item) => item.quoteId === petQuoteSelected)\n || { petName: 'Pet Name' };\n dispatch(selectedPlan({\n planAmount: quoteSelected.selectedPlanAmount,\n planId: quoteSelected.selectedPlan,\n planPackagedId: CUSTOM_PLAN_ID,\n }));\n }\n\n handleCloseFocus();\n\n if (goTo) {\n goTo();\n }\n };\n\n function renderContent() {\n if (!isNewZipcode) {\n return (\n <p>\n {t('welcomeModal.currentZipcode')}\n </p>\n );\n }\n\n return (\n <p>\n {t('welcomeModal.newZipcode', {\n zipCode: nopCommerceUser.Address.ZipCode,\n })}\n </p>\n );\n }\n\n return (\n <ModalContainer\n cancelable={false}\n show={modalCustomerWelcomeVisible && !isLoading}\n >\n <div className=\"Flex Column Modal-customer-welcome-container\">\n <img\n alt=\"\"\n className=\"Modal-login-user-subscription-bubbles-image\"\n src={syncIcon}\n />\n\n <h1 className=\"Modal-login-user-subscription-title\">\n {t('welcomeModal.welcomeBack')}\n </h1>\n\n {renderContent()}\n\n <button\n ref={buttonRef}\n className=\"Modal-customer-welcome-got-it\"\n onClick={onClickGotIt}\n type=\"button\"\n >\n <span className=\"Modal-customer-got-it-text\">\n {t('welcomeModal.gotIt')}\n </span>\n </button>\n </div>\n </ModalContainer>\n );\n};\n\nexport default ModalCustomerWelcome;\n","import React, { useState, createRef, useEffect, useCallback } from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport {\n newCustomerChanged,\n resetLoginFailMessage,\n} from '../../actions';\nimport syncClouds from '../../assets/sync-clouds-citron.svg';\nimport FigoLottie from './FigoLottie';\nimport InputWithError from './InputWithError';\nimport TouchableDiv from './TouchableDiv';\nimport { NEW_CUSTOMER_RESET_EMAIL } from '../../actions/types';\n\nimport './ModalCustomerLogin.css';\nimport { useB2CInfo } from '../../hooks';\nimport { useROPC } from '../../util';\n\nconst ModalCustomerLogin = ({\n emailUser,\n isModal = true,\n onForgotPassword,\n onDismiss = () => { },\n}) => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const {\n sessionInformation,\n newCustomer: { resetEmail },\n customerValidationResponse: { hasPassword },\n } = store;\n const [password, setPassword] = useState('');\n const [email, setEmail] = useState(emailUser);\n const dispatch = useDispatch();\n const passwordInput = createRef(null);\n\n const { loginB2CROPC, setRopcError, ropcError } = useB2CInfo();\n\n useEffect(() => {\n if (resetEmail) {\n setEmail('');\n dispatch(newCustomerChanged({\n type: NEW_CUSTOMER_RESET_EMAIL,\n value: false,\n }));\n }\n }, [dispatch, resetEmail]);\n\n useEffect(() => {\n if (!hasPassword && useROPC) {\n onForgotPassword();\n }\n }, [hasPassword, onForgotPassword]);\n\n function renderPrimaryButtonText() {\n if (sessionInformation.loadingLogin) {\n return (\n <FigoLottie\n height={30}\n width={30}\n />\n );\n }\n\n return <span>Login </span>;\n }\n\n const onChangePassword = useCallback((event) => {\n const { target: { value } } = event;\n\n setPassword(value);\n }, []);\n\n const onSubmitLogin = (event) => {\n event.preventDefault();\n\n if (!password && passwordInput && passwordInput.current) {\n passwordInput.current.focus();\n passwordInput.current.blur();\n return;\n }\n\n if (sessionInformation.loadingLogin) {\n return;\n }\n\n loginB2CROPC({ password, username: email });\n };\n\n function showPasswordOrUserError() {\n const {\n nopCommerceUser: { LoginMessage, LoginSuccess },\n } = sessionInformation;\n\n if (!LoginSuccess && LoginMessage) {\n return LoginMessage;\n }\n\n if (ropcError) {\n return ropcError;\n }\n\n return '';\n }\n\n const onFocusPassword = useCallback(() => {\n dispatch(resetLoginFailMessage());\n setRopcError('');\n }, [dispatch, setRopcError]);\n\n const onChangeEmail = useCallback((event) => {\n const { target } = event;\n\n setEmail(target.value);\n }, []);\n\n return (\n <div className={'Flex Column '\n + `${isModal ? 'Modal-login-user-subscription-container' : 'No-tablet'}`}\n >\n <img\n alt=\"\"\n aria-hidden\n className=\"Modal-login-img\"\n src={syncClouds}\n />\n\n <span className={isModal\n ? 'Modal-login-user-subscription-title'\n : 'Modal-login-user-subscription-title-get-quote'}\n >\n {isModal ? 'We’ve met before' : 'Login to your account'}\n </span>\n\n <p className={'Modal-login-user-subscription-description '\n + `${isModal ? '' : 'No-modal-login-user-subscription-description'}`}\n >\n {isModal\n ? `We notice that you already have a Pet Cloud account\n with ${email}. Please log into your account to complete purchase.`\n : `We noticed you already have a Pet Cloud account. \n You may qualify for a multi-pet discount!`}\n </p>\n\n <form\n aria-busy={sessionInformation.loadingLogin}\n className={'Modal-login-user-button-container'\n + `${isModal ? '' : ' No-modal-login-user-button-container'}`}\n onSubmit={onSubmitLogin}\n >\n\n {!isModal && (\n <div className=\"Login-input-email-container\">\n <span className=\"Login-input-text\">Email</span>\n <InputWithError\n containerClass=\"Login-input-container-class\"\n id=\"inpEmailUser\"\n inputClass=\"Login-input-email\"\n onChange={onChangeEmail}\n placeholder=\"Email\"\n type=\"email\"\n value={email}\n />\n </div>\n )}\n\n <div\n className={'Login-input-password-general-container'\n + `${isModal ? ''\n : ' Login-input-password-general-container-no-modal'}`}\n >\n <div className={'Login-input-password-container'\n + `${isModal ? '' : ' Login-input-password-container-no-modal'}`}\n >\n <div className=\"Row Inter-medium-13 Modal-login-user-input-headers\">\n <span className=\"Login-input-text\" id=\"inpPasswordUser-label\">\n Password\n </span>\n\n <TouchableDiv\n className=\"Btn Text-mint\"\n id=\"btnForgotPassword\"\n onClick={onForgotPassword}\n >\n <span className=\"Text-mint No-clicked\">\n Forgot?\n </span>\n </TouchableDiv>\n </div>\n\n <InputWithError\n ariaProps={{\n 'aria-labelledby': 'inpPasswordUser-label',\n }}\n autoComplete=\"new-password\"\n containerClass=\"Login-input-container-class\"\n disabled={sessionInformation.loadingLogin}\n forwardRef={passwordInput}\n id=\"inpPasswordUser\"\n inputClass={'Login-input-password'\n + ` ${isModal ? '' : 'Login-input-password-no-modal'}`}\n labelError={showPasswordOrUserError()}\n onChange={onChangePassword}\n onFocus={onFocusPassword}\n required\n showError={!!showPasswordOrUserError()}\n type=\"password\"\n value={password}\n />\n </div>\n\n <button\n aria-busy={sessionInformation.loadingLogin}\n aria-label={sessionInformation.loadingLogin ? 'Loading' : 'Login'}\n aria-live={sessionInformation.loadingLogin ? 'polite' : 'off'}\n className={'Modal-login-user-subscription-primary-button'\n + ` ${isModal ? ''\n : 'No-modal-login-user-subscription-primary-button'}`}\n onClick={onSubmitLogin}\n type=\"submit\"\n >\n <span\n className=\"Modal-login-user-subscription-primary-button-text\"\n >\n {renderPrimaryButtonText()}\n </span>\n </button>\n </div>\n </form>\n\n {isModal && (\n <span className=\"Modal-login-user-footer-container\">\n {'Prefer a new account? '}\n\n <TouchableDiv\n className=\"Inline Btn\"\n id=\"btnNewAccount\"\n onClick={onDismiss}\n >\n <span className=\"No-clicked Modal-login-click-here\">\n Click here.\n </span>\n </TouchableDiv>\n </span>\n )}\n </div>\n );\n};\n\nexport default ModalCustomerLogin;\n","import React, { useCallback, useEffect } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport ModalContainer from './ModalContainer';\nimport { forgetPasswordVisibleChanged, setAsHasPassword } from '../../actions';\n\nimport './ModalForgetPassword.css';\n\nconst ModalForgetPassword = ({ onModalClosed = () => { } }) => {\n const { t } = useTranslation('login');\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n const dispatch = useDispatch();\n const {\n sessionInformation: { forgetPasswordModalVisible },\n customerValidationResponse: { hasPassword },\n } = store;\n\n useEffect(() => {\n if (forgetPasswordModalVisible) {\n setTimeout(() => window\n .open(process.env.REACT_APP_PETCLOUD_URL, '__blank'), 1000);\n }\n }, [forgetPasswordModalVisible]);\n\n const handleCloseModal = useCallback(() => {\n dispatch(forgetPasswordVisibleChanged({ visible: false }));\n dispatch(setAsHasPassword());\n onModalClosed();\n }, [dispatch, onModalClosed]);\n\n return (\n <ModalContainer\n cancelable={false}\n show={forgetPasswordModalVisible}\n >\n <div className=\"Modal-forget-password-container\">\n <span className=\"Modal-forget-password-title\">\n {hasPassword\n ? t('forgotPassword.titleReset')\n : t('forgotPassword.titleSet')}\n </span>\n\n <span className=\"Modal-forget-password-description Inter-regular-16\">\n {t('forgotPassword.redirection', {\n action: hasPassword ? t('restore') : t('set'),\n })}\n\n <br aria-hidden />\n\n <Trans\n components={{\n a: (\n <a\n aria-label={t('privacyLink')}\n className=\"Modal-add-pet-links Modal-add-pet-link-margin\"\n href={process.env.REACT_APP_PETCLOUD_URL}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n />\n ),\n }}\n i18nKey=\"forgotPassword.retry\"\n ns=\"login\"\n />\n </span>\n\n <div className=\"Modal-forget-password-footer-container\">\n <button\n className={'Modal-forget-password-button-footer-reset '\n + 'Inter-semi-bold-16'}\n onClick={handleCloseModal}\n type=\"button\"\n >\n {t('forgotPassword.ok')}\n </button>\n </div>\n </div>\n </ModalContainer>\n );\n};\n\nexport default ModalForgetPassword;\n","export default __webpack_public_path__ + \"static/media/alert-hydrant.854ddfcd.svg\";","import React, { useMemo } from 'react';\nimport './RoundButton.css';\n\nconst RoundButton = ({\n children,\n onClick = () => { },\n submit = false,\n primary = false,\n}) => {\n const className = useMemo(() => {\n let cn = 'Round-button';\n if (primary) {\n cn = cn.concat(' Round-button-primary');\n }\n\n return cn;\n }, [primary]);\n\n return (\n <button\n className={className}\n onClick={onClick}\n type={submit ? 'submit' : 'button'}\n >\n <span>{children}</span>\n </button>\n );\n};\n\nexport { RoundButton };\n","import React, { useCallback, useMemo } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport syncCloud from '../../../../assets/sync-clouds-citron.svg';\nimport alertIcon from '../../../../assets/alert-hydrant.svg';\nimport catIcon from '../../../../assets/cat-selected.svg';\nimport dogIcon from '../../../../assets/dog-selected.svg';\n\nimport ModalContainer from '../../../common/ModalContainer';\nimport { RoundButton } from '../../../common/RoundButton';\n\nimport { usePartnersData } from '../../../../partners/usePartnersData';\nimport {\n AFTER_RATE_TAG,\n CUSTOMER_SERVICE_PHONE_NUMBER,\n PetGender,\n} from '../../../../constants';\nimport { closeDuplicatedPurchasesModal, removePet } from '../../../../actions';\nimport './DuplicatedPurchasesModal.css';\nimport { scrollToElement } from '../../../../util';\nimport { useCallbackAfterRate, useRateSummary } from '../../../../hooks';\n\nconst PetRow = ({ name = '', policyNumber = '', isCat = false }) => {\n const { t } = useTranslation('enrollment');\n return (\n <li className=\"Duplicated-purchases-modal-pet\">\n <img\n alt={t(`duplicatedPurchases.${isCat ? 'altCat' : 'altDog'}`)}\n src={isCat ? catIcon : dogIcon}\n />\n\n <div>\n <span className=\"Duplicated-purchases-modal-pet-name\">{name}</span>\n\n <span>\n {policyNumber\n ? t('duplicatedPurchases.policyNumber', { policyNumber })\n : t('duplicatedPurchases.noPolicy')}\n </span>\n </div>\n </li>\n );\n};\n\nconst IdenticalPurchases = ({ onClose = () => { }, pets = [] }) => {\n const { t } = useTranslation('enrollment');\n const { data } = usePartnersData();\n\n const handleContinue = useCallback(() => {\n window.open(process.env.REACT_APP_PETCLOUD_URL, '_blank');\n }, []);\n\n return (\n <>\n <img alt=\"\" src={syncCloud} />\n\n <h1>{t('duplicatedPurchases.identical.title')}</h1>\n\n <div className=\"Duplicated-purchases-modal-text\">\n {t('duplicatedPurchases.identical.message', {\n pets: pets.map((pet) => pet.PetName),\n })}\n </div>\n\n <ul className=\"Duplicated-purchases-modal-list\">\n {pets.map((pet) => (\n <PetRow\n isCat={pet.IsCat}\n name={pet.PetName}\n policyNumber={pet.PolicyNumber}\n />\n ))}\n </ul>\n\n <div className=\"Duplicated-purchases-modal-text\">\n {t('duplicatedPurchases.identical.action')}\n </div>\n\n <br aria-hidden />\n\n <div className=\"Duplicated-purchases-modal-text\">\n <Trans\n components={{\n b: (\n <b />\n ),\n }}\n i18nKey=\"duplicatedPurchases.support\"\n ns=\"enrollment\"\n values={{\n phone: data?.SupportPhoneNumber\n || CUSTOMER_SERVICE_PHONE_NUMBER,\n }}\n />\n </div>\n\n <div className=\"Duplicated-purchase-modal-actions\">\n <RoundButton onClick={onClose}>\n {t('duplicatedPurchases.back')}\n </RoundButton>\n\n <RoundButton onClick={handleContinue} primary>\n {t('duplicatedPurchases.petCloud')}\n </RoundButton>\n </div>\n </>\n );\n};\n\nconst PartialIdenticalPurchases = ({\n onClose = () => { },\n duplicatedPets = [],\n notDuplicatedPets = [],\n}) => {\n const { t } = useTranslation('enrollment');\n const { data } = usePartnersData();\n const store = useSelector(({ quoting }) => quoting);\n const dispatch = useDispatch();\n\n const {\n data: rateData,\n quoteSelectedValues,\n sessionInformation: { nopCommerceUser, userEmail },\n parameters,\n newCustomer: { lastName, name },\n } = store;\n\n const fullName = useMemo(() => {\n if (nopCommerceUser.FirstName) {\n return `${nopCommerceUser.FirstName} ${nopCommerceUser.LastName}`;\n }\n\n return `${name} ${lastName}`;\n }, [\n lastName,\n name,\n nopCommerceUser.FirstName,\n nopCommerceUser.LastName,\n ]);\n\n const handleContinue = useCallback(() => {\n if (store.petRemovedLoading) {\n return;\n }\n\n if (!duplicatedPets.length) {\n onClose();\n return;\n }\n\n const petQuotesToRemove = rateData.petQuoteResponseList.filter((pet) => {\n const duplicatedCoincidence = duplicatedPets\n .find((duplicatedPet) => duplicatedPet.PetName === pet.petName\n && duplicatedPet.BreedName === pet.breedName\n && duplicatedPet.IsFemale\n === (pet.gender === PetGender.Female.value));\n\n return !!duplicatedCoincidence;\n });\n\n const newPetQuoteList = rateData.petQuoteResponseList.filter((pet) => {\n const duplicatedCoincidence = duplicatedPets\n .find((duplicatedPet) => duplicatedPet.PetName === pet.petName\n && duplicatedPet.BreedName === pet.breedName\n && duplicatedPet.IsFemale\n === (pet.gender === PetGender.Female.value));\n\n return !duplicatedCoincidence;\n });\n\n const newQuoteSelectedValues = quoteSelectedValues\n .filter((qsv) => !petQuotesToRemove\n .map((pqtr) => pqtr.petQuoteId).includes(qsv.quoteId));\n\n const newPetQuoteSelected = newPetQuoteList[\n newPetQuoteList.length - 1].petQuoteId;\n\n const newPetSelected = newPetQuoteList\n .find((pet) => pet.petQuoteId === newPetQuoteSelected);\n\n dispatch(removePet({\n diamondClientId: nopCommerceUser.DiamonClientdId,\n effectiveDateCustom: store.effectiveDateCustom,\n eMail: userEmail || parameters.email,\n employerName: fullName,\n modifiers: newPetSelected.modifiers,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n parameters,\n petQuoteList: newPetQuoteList,\n promoCode: store.newPet.promoCode,\n quoteId: newPetQuoteSelected,\n quoteSelectedValues: newQuoteSelectedValues,\n removePetIds: petQuotesToRemove.map((pet) => pet.petQuoteId),\n showLoading: true,\n }));\n onClose();\n scrollToElement('payment-breakdown');\n }, [\n dispatch,\n duplicatedPets,\n fullName,\n nopCommerceUser, onClose,\n parameters,\n quoteSelectedValues,\n rateData,\n store.effectiveDateCustom,\n store.newPet.promoCode,\n userEmail,\n store.petRemovedLoading,\n ]);\n\n return (\n <>\n <img alt=\"\" src={alertIcon} />\n\n <h1>{t('duplicatedPurchases.partial.title')}</h1>\n\n <div className=\"Duplicated-purchases-modal-text\">\n {t('duplicatedPurchases.partial.messageDuplicated', {\n pets: duplicatedPets.map((pet) => pet.PetName),\n })}\n </div>\n\n <ul\n className={'Duplicated-purchases-modal-list'\n + ' Duplicated-purchases-modal-list-duplicated'}\n >\n {duplicatedPets.map((pet, index) => (\n <PetRow\n key={`${String(index)}-${pet.petName}`}\n isCat={pet.IsCat}\n name={pet.PetName}\n policyNumber={pet.PolicyNumber}\n />\n ))}\n </ul>\n\n <div className=\"Duplicated-purchases-modal-text\">\n {t('duplicatedPurchases.partial.messageNew', {\n pets: notDuplicatedPets.map((pet) => pet.PetName),\n })}\n </div>\n\n <ul\n className={'Duplicated-purchases-modal-list'\n + ' Duplicated-purchases-modal-list-new'}\n >\n {notDuplicatedPets.map((pet, index) => (\n <PetRow\n key={`${String(index)}-${pet.petName}`}\n isCat={pet.IsCat}\n name={pet.PetName}\n policyNumber={pet.PolicyNumber}\n />\n ))}\n </ul>\n\n <div className=\"Duplicated-purchases-modal-text\">\n {t('duplicatedPurchases.partial.action', {\n pets: notDuplicatedPets.map((pet) => pet.PetName),\n })}\n </div>\n\n <br aria-hidden />\n\n <div className=\"Duplicated-purchases-modal-text\">\n <Trans\n components={{\n b: (\n <b />\n ),\n }}\n i18nKey=\"duplicatedPurchases.support\"\n ns=\"enrollment\"\n values={{\n phone: data?.SupportPhoneNumber\n || CUSTOMER_SERVICE_PHONE_NUMBER,\n }}\n />\n </div>\n\n <div className=\"Duplicated-purchase-modal-actions\">\n <RoundButton onClick={onClose}>\n {t('duplicatedPurchases.back')}\n </RoundButton>\n\n <RoundButton onClick={handleContinue} primary>\n {t('duplicatedPurchases.continue')}\n </RoundButton>\n </div>\n </>\n );\n};\n\nconst DuplicatedPurchasesModal = () => {\n const {\n duplicatedPets,\n duplicatedPetsModalVisible,\n notDuplicatedPets,\n } = useSelector(({ quoting }) => ({\n duplicatedPets: quoting.purchase.duplicatedPets,\n duplicatedPetsModalVisible: quoting.purchase.duplicatedPetsModalVisible,\n notDuplicatedPets: quoting.purchase.notDuplicatedPets,\n }), shallowEqual);\n const dispatch = useDispatch();\n\n const { getSelectedRate } = useRateSummary();\n\n useCallbackAfterRate(() => {\n getSelectedRate();\n }, [AFTER_RATE_TAG.removePet]);\n\n const duplicated = useMemo(() => duplicatedPets\n .filter((pet) => pet.IsDuplicated && pet.PolicyNumber), [duplicatedPets]);\n\n const isIdenticalPurchase = useMemo(() => (duplicated.length\n && !notDuplicatedPets.length), [duplicated, notDuplicatedPets]);\n\n const handleClose = useCallback(() => {\n dispatch(closeDuplicatedPurchasesModal());\n }, [dispatch]);\n\n return (\n <ModalContainer\n handleOutClick={handleClose}\n show={duplicatedPetsModalVisible}\n >\n <div className=\"Duplicated-purchases-modal\">\n {isIdenticalPurchase\n ? <IdenticalPurchases onClose={handleClose} pets={duplicated} />\n : (\n <PartialIdenticalPurchases\n duplicatedPets={duplicated}\n notDuplicatedPets={notDuplicatedPets}\n onClose={handleClose}\n />\n )}\n </div>\n </ModalContainer>\n );\n};\n\nexport { DuplicatedPurchasesModal };\n","import React from 'react';\n\nimport { useTranslation } from 'react-i18next';\nimport { UNDERWRITING_LINK } from '../../../constants';\nimport { usePartnersData } from '../../../partners/usePartnersData';\nimport './css/HeaderUnderwriting.css';\n\nconst HeaderUnderwriting = () => {\n const { t } = useTranslation('common');\n const { supportPhoneNumber } = usePartnersData();\n\n return (\n <div className=\"Header-underwriting\">\n <span>\n <span className=\"Header-underwriting-call\">{t('header.call')}</span>\n\n <a href={`tel:${supportPhoneNumber}`}>\n {supportPhoneNumber}\n </a>\n </span>\n\n |\n\n <a href={UNDERWRITING_LINK} rel=\"noopener noreferrer\" target=\"_blank\">\n {t('header.underwriting')}\n </a>\n </div>\n );\n};\n\nexport { HeaderUnderwriting };\n","import React from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTranslations } from '../../../hooks';\nimport { currencyFormat } from '../../../util';\nimport './css/QuotingHeader.css';\n\nconst MyQuote = ({\n isMonthlyPlan = true,\n isPaycheck = false,\n myQuoteFlatCorner = false,\n quoteSelectedValues = [],\n}) => {\n const { t } = useTranslations('enrollment');\n const location = useLocation();\n const isYourInfo = location.pathname.includes('/yourinfo');\n\n function getQuoteTotal() {\n const allQuotes = quoteSelectedValues\n .reduce((previous, current) => {\n if (isYourInfo && !isMonthlyPlan) {\n return previous + current.totalAnnual;\n }\n\n return previous + current.totalMontly;\n }, 0);\n\n if (!allQuotes) {\n return { decimal: '00', integer: 0 };\n }\n\n const quoteTotal = currencyFormat({ value: allQuotes });\n const [integer, decimal] = quoteTotal.toString().split('.');\n\n return { decimal, integer };\n }\n\n function renderQuoteTotal() {\n const quoteTotal = getQuoteTotal();\n\n return (\n <>\n <span className=\"Quoting-header-quote-currency-small\">$</span>\n\n <span\n className=\"Quoting-header-quote-currency-big\"\n >\n {quoteTotal.integer}\n </span>\n\n <span\n className=\"Quoting-header-quote-currency-small\"\n >\n .{quoteTotal.decimal}\n </span>\n </>\n );\n }\n\n /* TODO: paycheck only */\n function renderQuoteFrecuency() {\n if (isPaycheck) {\n return '/ paycheck';\n }\n\n return isYourInfo && !isMonthlyPlan ? '/ year' : '/ month';\n }\n\n return (\n <div className=\"Quoting-header-quote-total-wrapper\">\n <div className={`Quoting-header-quote-total-container\n ${myQuoteFlatCorner && 'Quoting-header-quote-total-flat'}`}\n >\n <h2 className=\"Quoting-header-my-quote\">\n {t('myQuote')}\n </h2>\n\n <div className=\"Quoting-header-quote-currency-container\">\n <div className=\"Quoting-header-quote-currency\">\n {renderQuoteTotal()}\n </div>\n\n <span className=\"Quoting-header-quote-monthly\">\n {renderQuoteFrecuency()}\n </span>\n </div>\n </div>\n </div>\n );\n};\n\nexport { MyQuote };\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { QuotingSteps } from '../../../constants';\nimport TouchableDiv from '../../common/TouchableDiv';\nimport { isPaycheck } from '../../../util';\nimport './css/QuotingHeader.css';\n\nconst QuotingStepsComponent = ({\n currentQuoteStep = 1,\n figoSmallLogoVisible = false,\n}) => {\n const { t } = useTranslation('common');\n const searchParameters =\n useSelector(({ quoting }) => quoting.searchParameters);\n const match = useRouteMatch();\n const history = useHistory();\n\n const handleStepClick = (stepClicked) => () => {\n if (isPaycheck\n || currentQuoteStep > QuotingSteps.YourInfo.value\n ) {\n return;\n }\n\n const isValidNavigation = stepClicked < currentQuoteStep;\n if (!isValidNavigation) {\n return;\n }\n\n let module = '';\n\n switch (stepClicked) {\n case QuotingSteps.SelectPlan.value:\n module = searchParameters;\n break;\n\n case QuotingSteps.YourInfo.value:\n module = '/yourinfo/';\n break;\n\n default: {\n module = '';\n break;\n }\n }\n\n history.push(`${match.url}${module}`);\n };\n\n function getAriaLabel(step) {\n const { name, value } = step;\n\n let selectedText = '';\n if (currentQuoteStep > value) {\n selectedText = t('stepper.completed');\n } else if (currentQuoteStep === value) {\n selectedText = t('stepper.current');\n }\n\n return t('stepper.step', {\n name,\n status: selectedText,\n value,\n });\n }\n\n const secondLineClassName = useMemo(() => {\n if (currentQuoteStep < QuotingSteps.YourInfo.value) {\n return '';\n }\n if (currentQuoteStep >= QuotingSteps.Welcome.value) {\n return 'step-progress-line-full';\n }\n return 'step-progress-line-half';\n }, [currentQuoteStep]);\n\n return (\n <div className={`Quoting-header-container-steps-container\n ${figoSmallLogoVisible ? 'Steps-container-fixed' : ''}`}\n >\n <TouchableDiv\n ariaProps={{\n 'aria-disabled': currentQuoteStep < QuotingSteps.SelectPlan.value\n || currentQuoteStep === QuotingSteps.Welcome.value,\n 'aria-label': getAriaLabel(QuotingSteps.SelectPlan),\n }}\n className=\"Quoting-header-step-container\"\n id=\"stepHeaderSelectPlan\"\n onClick={handleStepClick(QuotingSteps.SelectPlan.value)}\n >\n <div\n className=\"Quoting-header-step-circle\n Quoting-header-step-circle-completed\"\n >\n <span className=\"Quoting-header-step-number\">\n {QuotingSteps.SelectPlan.value}\n </span>\n </div>\n\n <span className=\"Quoting-header-step-text\">\n {QuotingSteps.SelectPlan.name}\n </span>\n </TouchableDiv>\n\n <div\n className={'step-progress-line '\n + `${currentQuoteStep > QuotingSteps.SelectPlan.value\n ? 'step-progress-line-full'\n : 'step-progress-line-half'}`}\n />\n\n <TouchableDiv\n ariaProps={{\n 'aria-disabled': currentQuoteStep < QuotingSteps.YourInfo.value\n || currentQuoteStep === QuotingSteps.Welcome.value,\n 'aria-label': getAriaLabel(QuotingSteps.YourInfo),\n }}\n className=\"Quoting-header-step-container\"\n id=\"stepHeaderYourInfo\"\n onClick={handleStepClick(QuotingSteps.YourInfo.value)}\n >\n <div className={'Quoting-header-step-circle '\n + ` ${currentQuoteStep >= QuotingSteps.YourInfo.value\n ? 'Quoting-header-step-circle-completed'\n : ''}`}\n >\n <span className=\"Quoting-header-step-number\">\n {QuotingSteps.YourInfo.value}\n </span>\n </div>\n\n <span className=\"Quoting-header-step-text\">\n {QuotingSteps.YourInfo.name}\n </span>\n </TouchableDiv>\n\n <div\n className={'step-progress-line '\n + `${secondLineClassName}`}\n />\n\n <TouchableDiv\n ariaProps={{\n 'aria-disabled': currentQuoteStep < QuotingSteps.Welcome.value,\n 'aria-label': getAriaLabel(QuotingSteps.Welcome),\n }}\n className=\"Quoting-header-step-container\"\n id=\"stepHeaderWelcome\"\n onClick={handleStepClick(QuotingSteps.Welcome.value)}\n >\n <div className={'Quoting-header-step-circle '\n + ` ${currentQuoteStep >= QuotingSteps.Welcome.value\n ? 'Quoting-header-step-circle-completed'\n : ''}`}\n >\n <span className=\"Quoting-header-step-number\">\n {QuotingSteps.Welcome.value}\n </span>\n </div>\n\n <span className=\"Quoting-header-step-text\">\n {QuotingSteps.Welcome.name}\n </span>\n </TouchableDiv>\n </div>\n );\n};\n\nexport { QuotingStepsComponent };\n","export default __webpack_public_path__ + \"static/media/add.59970a0b.svg\";","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgRemove(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 15C11.6421 15 15 11.6421 15 7.5C15 3.35786 11.6421 0 7.5 0C3.35786 0 0 3.35786 0 7.5C0 11.6421 3.35786 15 7.5 15Z\",\n fill: \"#E6F972\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.7143 8.03578C11.0102 8.03578 11.25 7.79594 11.25 7.50007C11.25 7.2042 11.0102 6.96436 10.7143 6.96436H4.28571C3.98985 6.96436 3.75 7.2042 3.75 7.50007C3.75 7.79594 3.98985 8.03578 4.28571 8.03578H10.7143Z\",\n fill: \"#01313D\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRemove);\nexport default __webpack_public_path__ + \"static/media/remove.dd00660f.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/arrow-down.d19e560c.svg\";","export default __webpack_public_path__ + \"static/media/cat-placeholder.70219175.svg\";","export default __webpack_public_path__ + \"static/media/dog-placeholder.c14a0533.svg\";","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgEditPencilCitron(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.25 9.62204L5.72472 13.8462L12.5 6.48703L7.99743 2.30769L1.25 9.62204ZM14.1038 1.64372L13.2191 0.826828C12.2431 -0.0721642 10.8715 -0.269204 10.1586 0.389647L8.75 1.68887L13.1691 5.76923L14.5777 4.4659C15.2907 3.81115 15.0798 2.54476 14.1038 1.64372ZM0 15H5L0 10.3846V15Z\",\n fill: \"#E6F972\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEditPencilCitron);\nexport default __webpack_public_path__ + \"static/media/edit-pencil-citron.ab69eb90.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\n\nimport FigoLottie from '../../common/FigoLottie';\n\nimport addIcon from '../../../assets/ddPetSelector/add.svg';\nimport arrowDown from '../../../assets/ddPetSelector/arrow-down.svg';\nimport catPlaceHolder from '../../../assets/ddPetSelector/cat-placeholder.svg';\nimport dogPlaceHolder from '../../../assets/ddPetSelector/dog-placeholder.svg';\nimport { ReactComponent as RemoveIcon }\nfrom '../../../assets/ddPetSelector/remove.svg';\nimport { ReactComponent as PencilIcon }\nfrom '../../../assets/edit-pencil-citron.svg';\nimport { useTranslations } from '../../../hooks/useTranslations';\n\nimport { currencyFormat } from '../../../util';\nimport { PetType, DROPDOWN_ITEM_TYPE } from '../../../constants';\n\nexport const DropDownIcon = ({ isOpen, dropDownItemType, petType }) => {\n let alt = 'pet placeholder';\n let className = 'Pet-quote-drop-down-pet-placeholder';\n let src = petType === PetType.Dog.value\n ? dogPlaceHolder : catPlaceHolder;\n\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.header) {\n alt = 'arrow drop down';\n className = 'Pet-quote-drop-down-arrow '\n + `${isOpen ? 'Pet-quote-drop-down-arrow-open' : ''}`;\n src = arrowDown;\n }\n\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.addPet) {\n alt = 'add drop down element';\n className = 'Pet-quote-drop-down-plus-icon';\n src = addIcon;\n }\n\n return (\n <div className=\"Pet-quote-drop-down-arrow-container\">\n <img\n alt={alt}\n aria-hidden=\"true\"\n className={className}\n src={src}\n />\n </div>\n );\n};\n\nexport const PetQuoteInfo = ({\n totalMontly,\n dropDownItemType,\n handleCancelRemovePet,\n}) => {\n const { t } = useTranslations('quoting');\n function getQuoteTotal() {\n const quoteTotal = totalMontly || 0;\n return `$${currencyFormat({ value: quoteTotal })}`;\n }\n\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.pet\n || dropDownItemType === DROPDOWN_ITEM_TYPE.header) {\n return (\n <section aria-label={t('petQuote')}>\n <span\n className=\"Pet-quote-drop-down-pet-price\"\n style={dropDownItemType === DROPDOWN_ITEM_TYPE.pet\n ? { marginRight: '40px' } : {}}\n >\n {getQuoteTotal()}\n </span>\n </section>\n );\n }\n\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.remove) {\n return (\n <section aria-label={t('cancelPetRemoval')}>\n <button\n aria-label=\"Cancel remove pet\"\n className=\"Pet-quote-drop-down-cancel-action\"\n id=\"cancelRemovePet\"\n onClick={handleCancelRemovePet}\n title=\"Cancel remove pet\"\n type=\"button\"\n >\n <span className=\"Pet-quote-drop-down-no-events\">Cancel</span>\n </button>\n </section>\n\n );\n }\n\n return '';\n};\n\nexport const PetQuoteConfirmButton = ({\n onEditPet = () => { },\n onRemovePet = () => { },\n petRemovedLoading,\n}) => {\n const renderConfirmButtonContent = () => {\n if (petRemovedLoading) {\n return <FigoLottie />;\n }\n\n return (\n <>\n <RemoveIcon /> Remove Pet\n </>\n );\n };\n\n return (\n <div className=\"Pet-quote-dropdown-buttons\">\n <button\n className=\"Pet-quote-dropdown-button\"\n onClick={onEditPet}\n type=\"button\"\n >\n <span\n className=\"Pet-quote-drop-down-no-events Pet-quote-drop-down-icon\"\n >\n <PencilIcon /> Edit Pet\n </span>\n </button>\n\n <button\n className=\"Pet-quote-dropdown-button\"\n onClick={onRemovePet}\n type=\"button\"\n >\n <span\n className=\"Pet-quote-drop-down-no-events Pet-quote-drop-down-icon\"\n >\n {renderConfirmButtonContent()}\n </span>\n </button>\n </div>\n );\n};\n","import { useMemo } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\n\nimport {\n removePet,\n saveSelectedEditPetModal,\n saveSelectedPetNumber,\n saveSelectedRemovePetModal,\n} from '../../../../actions';\n\nconst usePetQuoteDropdown = ({ petQuote = {}, toggleOpen = () => { } }) => {\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n newCustomer: { lastName, name },\n parameters,\n petQuoteSelected,\n petRemovedLoading,\n petsWithQuoteError,\n quoteSelectedValues,\n sessionInformation: { nopCommerceUser, userEmail },\n } = store;\n\n const quoteSelected = quoteSelectedValues\n .find((item) => item.quoteId === petQuote.petQuoteId) || {};\n\n function onEditPet() {\n const { quoteId } = quoteSelected;\n\n dispatch(saveSelectedPetNumber(quoteId));\n dispatch(saveSelectedEditPetModal(true));\n toggleOpen();\n }\n\n const fullName = useMemo(() => {\n if (nopCommerceUser.FirstName) {\n return `${nopCommerceUser.FirstName} ${nopCommerceUser.LastName}`;\n }\n\n return `${name} ${lastName}`;\n }, [\n lastName,\n name,\n nopCommerceUser.FirstName,\n nopCommerceUser.LastName,\n ]);\n\n function onRemovePet() {\n if (petRemovedLoading) {\n return;\n }\n\n const petQuoteList = data.petQuoteResponseList\n .filter((element) => element.petQuoteId !== petQuote.petQuoteId);\n\n let petSelected = petQuoteList\n .find((element) => element.petQuoteId === petQuoteSelected);\n\n const newQuoteSelectedValues = quoteSelectedValues\n .filter((element) => element.quoteId !== petQuote.petQuoteId);\n\n if (petQuoteSelected === petQuote.petQuoteId) {\n petSelected = petQuoteList\n .find((element) => element.petQuoteId !== petQuoteSelected);\n }\n\n dispatch(removePet({\n diamondClientId: nopCommerceUser.DiamonClientdId,\n effectiveDateCustom: store.effectiveDateCustom,\n eMail: userEmail || parameters.email,\n employerName: fullName,\n modifiers: petSelected.modifiers,\n nopCommerceClientId: nopCommerceUser.CustomerNopCommerceId,\n parameters,\n petQuoteList,\n promoCode: store.newPet.promoCode,\n quoteId: petSelected.petQuoteId,\n quoteSelectedValues: newQuoteSelectedValues,\n removePetIds: [petQuote.petQuoteId],\n toggleOpen,\n }));\n }\n\n function onRemovePetAskConfirmation() {\n if (petRemovedLoading) {\n return;\n }\n\n const { quoteId } = quoteSelected;\n\n dispatch(saveSelectedPetNumber(quoteId));\n dispatch(saveSelectedRemovePetModal(true));\n }\n\n return {\n onEditPet,\n onRemovePet,\n onRemovePetAskConfirmation,\n petRemovedLoading,\n petsWithQuoteError,\n quoteSelected,\n };\n};\n\nexport { usePetQuoteDropdown };\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport {\n DropDownIcon,\n PetQuoteConfirmButton,\n PetQuoteInfo,\n} from './PetQuoteDropDownCommon';\nimport { usePetQuoteDropdown } from './hooks/usePetQuoteDropdown';\nimport { useSavedElement } from '../../../hooks';\n\nimport { DROPDOWN_ITEM_TYPE } from '../../../constants';\nimport './PetQuoteDropDown.css';\nimport { validatePowerupsSelected } from '../../../util';\nimport { setPowerUpErrors } from '../../../actions';\n\nconst PetQuoteDropDownItem = ({\n dropDownItemType,\n isOpen,\n onAddPetClick,\n onEditPetSelection,\n onHeaderClick,\n onItemClick,\n petQuote = {},\n petQuoteToEdit,\n quoteSelectedValues,\n toggleOpen = () => { },\n}) => {\n const [showEditSection, setShowEditSection] = useState(false);\n const { data, petQuoteSelected } = useSelector(({ quoting }) => quoting);\n const dispatch = useDispatch();\n\n const {\n onEditPet,\n onRemovePetAskConfirmation,\n petRemovedLoading,\n quoteSelected,\n } = usePetQuoteDropdown({ petQuote, toggleOpen });\n\n const { saveId } = useSavedElement();\n\n const isAddPet = dropDownItemType === DROPDOWN_ITEM_TYPE.addPet;\n const quoteCount = quoteSelectedValues.length;\n const petActionText = showEditSection ? 'Cancel' : 'Edit';\n\n useEffect(() => {\n if (!petQuoteToEdit) {\n return;\n }\n\n if (petQuoteToEdit !== quoteSelected.quoteId) {\n setShowEditSection(false);\n }\n }, [petQuoteToEdit, quoteSelected]);\n\n const handleItemClick = () => {\n switch (dropDownItemType) {\n case DROPDOWN_ITEM_TYPE.header:\n onHeaderClick();\n break;\n\n case DROPDOWN_ITEM_TYPE.addPet:\n onAddPetClick();\n break;\n\n case DROPDOWN_ITEM_TYPE.pet:\n onItemClick(petQuote.petQuoteId);\n break;\n\n default:\n break;\n }\n };\n\n const handleEditPet = () => {\n onEditPet();\n setShowEditSection(false);\n saveId(`petQuoteDropDownItem${petQuote.petQuoteId}-header`);\n };\n\n const toogleEdtiSection = () => {\n if (petRemovedLoading) {\n return;\n }\n\n const petQuoteRateItem = data.petQuoteResponseList\n .find((pqRateItem) => pqRateItem.petQuoteId === petQuoteSelected);\n const powerUpValidation = validatePowerupsSelected(petQuoteRateItem);\n if (!powerUpValidation.isValid) {\n dispatch(setPowerUpErrors(powerUpValidation.modifierIdNotSelectedList));\n toggleOpen();\n return;\n }\n\n if (quoteCount === 1) {\n handleEditPet();\n\n return;\n }\n\n setShowEditSection((prev) => !prev);\n onEditPetSelection(quoteSelected.quoteId);\n };\n\n const handleCancelRemovePet = () => {\n if (petRemovedLoading) {\n return;\n }\n\n onEditPetSelection();\n setShowEditSection(false);\n };\n\n const handleKeyDown = (event) => {\n const { keyCode, shiftKey } = event;\n const TAB_KEY = 9;\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.addPet\n && !shiftKey && keyCode === TAB_KEY) {\n toggleOpen();\n }\n };\n\n const currentSelection = useMemo(() => petQuote.petName\n || 'None', [petQuote]);\n\n const renderLabel = () => {\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.addPet) {\n return (\n <span>\n Add Pet\n\n <span className=\"Pet-quote-drop-down-item-get-discount-label\">\n Get a 5% Discount\n </span>\n </span>\n );\n }\n\n return currentSelection;\n };\n\n function getAriaPropsForDiv() {\n let ariaProps = {\n role: 'menuitem',\n title: `${currentSelection} selected`,\n };\n\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.header) {\n ariaProps = {\n ...ariaProps,\n 'aria-controls': 'dd-options-pet-list',\n 'aria-expanded': isOpen,\n 'aria-haspopup': 'menu',\n role: 'button',\n };\n }\n\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.addPet) {\n ariaProps = {\n role: 'menuitem',\n title: 'Add Pet',\n };\n }\n\n return ariaProps;\n }\n\n function renderChildren() {\n return (\n <>\n <div className=\"Pet-quote-drop-down-item-up\">\n <button\n className={'Like-span Pet-quote-drop-down-item'\n + ` ${(dropDownItemType === DROPDOWN_ITEM_TYPE.remove\n ? 'Pet-quote-dropdown-item-to-remove' : '')}`}\n id={`petQuoteDropDownItem${petQuote.petQuoteId}`\n + `${dropDownItemType === DROPDOWN_ITEM_TYPE.header\n ? '-header' : ''}`}\n onClick={handleItemClick}\n onKeyDown={handleKeyDown}\n type=\"button\"\n {...getAriaPropsForDiv()}\n >\n <DropDownIcon\n dropDownItemType={dropDownItemType}\n isOpen={isOpen}\n petType={petQuote.petType}\n />\n\n <h2\n className={'Pet-quote-drop-down-pet-name'\n + ` ${dropDownItemType === DROPDOWN_ITEM_TYPE.addPet\n && 'Pet-quote-drop-down-pet-name-full-width'}`}\n >\n {renderLabel()}\n </h2>\n\n <PetQuoteInfo\n dropDownItemType={dropDownItemType}\n handleCancelRemovePet={handleCancelRemovePet}\n totalMontly={quoteSelected.totalMontly}\n />\n </button>\n\n {isOpen\n && !isAddPet\n && dropDownItemType !== DROPDOWN_ITEM_TYPE.remove\n && dropDownItemType !== DROPDOWN_ITEM_TYPE.header\n && (\n <button\n aria-expanded={showEditSection}\n className=\"Like-span Pet-quote-drop-down-remove-pet\"\n onClick={toogleEdtiSection}\n type=\"button\"\n >\n <span className=\"Pet-quote-drop-down-no-events\">\n {petActionText}\n </span>\n </button>\n )}\n </div>\n\n {isOpen\n && showEditSection\n && dropDownItemType !== DROPDOWN_ITEM_TYPE.remove\n && dropDownItemType !== DROPDOWN_ITEM_TYPE.header\n && (\n <PetQuoteConfirmButton\n onEditPet={handleEditPet}\n onRemovePet={onRemovePetAskConfirmation}\n petRemovedLoading={petRemovedLoading}\n />\n )}\n </>\n );\n }\n\n function renderContent() {\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.pet) {\n return (\n <div className=\"Pet-quote-drop-down-item-container\">\n {renderChildren()}\n </div>\n );\n }\n\n let className = 'Pet-quote-drop-down-item-container';\n if (dropDownItemType === DROPDOWN_ITEM_TYPE.header) {\n className += ' Pet-quote-drop-down-item-combo ';\n }\n\n return (\n <div className={className}>\n {renderChildren()}\n </div>\n );\n }\n\n return renderContent();\n};\n\nexport { PetQuoteDropDownItem };\n","import React, { useState, useEffect } from 'react';\nimport { useCalculatePlanPrice, usePrevious } from '../../hooks';\nimport { delay } from '../../util';\n\nimport './PriceLog.css';\n\nconst PriceLog = React.memo(() => {\n const { quoteSelected } = useCalculatePlanPrice();\n\n const { petName, totalMontly } = quoteSelected;\n const [label, setLabel] = useState('');\n const prevTotal = usePrevious(totalMontly);\n\n useEffect(() => {\n const prevPetName = petName;\n if (!prevTotal) {\n setLabel('');\n } else if (petName !== prevPetName || prevTotal !== totalMontly) {\n setLabel(`Updated premium for ${quoteSelected.petName}\n is ${totalMontly} per month`);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [totalMontly, petName]);\n\n useEffect(() => {\n const cleanLog = async () => {\n await delay(3000);\n setLabel('');\n };\n if (label.length) {\n cleanLog();\n }\n }, [label]);\n\n return (\n <div aria-live=\"polite\" className=\"Price-log\" role=\"log\">\n {label}\n </div>\n );\n});\n\nexport { PriceLog };\n","import React, { useEffect, useState, useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useRouteMatch, useHistory } from 'react-router-dom';\n\nimport {\n restartPowerupErrors,\n saveSelectedAddPetModal,\n saveSelectedPetNumber,\n setPowerUpErrors,\n} from '../../../actions';\nimport { DROPDOWN_ITEM_TYPE } from '../../../constants';\nimport { URL_ROOT_QUOTE } from '../../../routes';\nimport {\n forceFocusElement,\n useCustomPlanPills,\n validatePowerupsSelected,\n} from '../../../util';\nimport { usePrevious, useSavedElement } from '../../../hooks';\n\nimport { PetQuoteDropDownItem } from './PetQuoteDropDownItem';\nimport { dataLayerViewItem } from '../../../gtmDataLayer';\nimport { PriceLog } from '../../common/PriceLog';\nimport './PetQuoteDropDown.css';\n\nconst PetQuoteDropDown = ({\n classContainer = '',\n customClass = '',\n hideAddPet = false,\n petQuoteList,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [petQuoteToRemove, setPetQuoteToRemove] = useState(null);\n const history = useHistory();\n const store = useSelector(({ quoting }) => quoting);\n const {\n petQuoteSelected,\n quoteSelectedValues,\n petRemovedLoading,\n data,\n } = store;\n\n const route = useRouteMatch(URL_ROOT_QUOTE);\n const shouldRenderPriceLog = route && route.isExact;\n\n const currentPet = petQuoteList\n .find((element) => element.petQuoteId === petQuoteSelected);\n\n useEffect(() => () => setPetQuoteToRemove(null), [isOpen]);\n\n const { saveElementById } = useSavedElement();\n\n const toggleOpen = useCallback(() => {\n setIsOpen((prevIsOpen) => !prevIsOpen);\n }, []);\n\n const prevLength = usePrevious(petQuoteList.length);\n useEffect(() => {\n if (petQuoteList.length > prevLength) {\n saveElementById('petQuoteDropDownItem'\n + `${currentPet.petQuoteId}-header`);\n } else if (petQuoteList.length < prevLength) {\n toggleOpen();\n }\n }, [\n petQuoteList.length,\n prevLength,\n currentPet,\n toggleOpen,\n saveElementById,\n ]);\n\n const dispatch = useDispatch();\n\n const handleHeaderOnClick = useCallback(() => {\n if (!petRemovedLoading) {\n setIsOpen(!isOpen);\n }\n }, [isOpen, petRemovedLoading]);\n\n const handleItemClick = (petQuoteId) => {\n const petQuoteRateItem = data.petQuoteResponseList\n .find((pqRateItem) => pqRateItem.petQuoteId === petQuoteSelected);\n const powerUpValidation = validatePowerupsSelected(petQuoteRateItem);\n if (!powerUpValidation.isValid) {\n dispatch(setPowerUpErrors(powerUpValidation.modifierIdNotSelectedList));\n setIsOpen(false);\n return;\n }\n if (!petRemovedLoading) {\n dispatch(saveSelectedPetNumber(petQuoteId));\n setIsOpen(!isOpen);\n forceFocusElement('petQuoteDropDownItem'\n + `${currentPet.petQuoteId}-header`);\n\n dispatch(restartPowerupErrors());\n // GTM\n dataLayerViewItem({ petIndex: petQuoteId });\n }\n };\n\n const handleAddPetClick = () => {\n if (hideAddPet) {\n history.goBack();\n window.scrollTo(0, 0);\n return;\n }\n const petQuoteRateItem = data.petQuoteResponseList\n .find((pqRateItem) => pqRateItem.petQuoteId === petQuoteSelected);\n const powerUpValidation = validatePowerupsSelected(petQuoteRateItem);\n if (!powerUpValidation.isValid) {\n dispatch(setPowerUpErrors(powerUpValidation.modifierIdNotSelectedList));\n setIsOpen(false);\n return;\n }\n if (!petRemovedLoading) {\n dispatch(saveSelectedAddPetModal(true));\n saveElementById('petQuoteDropDownItem'\n + `${currentPet.petQuoteId}-header`);\n setIsOpen(!isOpen);\n dispatch(restartPowerupErrors());\n }\n };\n\n const handleRemoveItem = (petQuoteId) => {\n setPetQuoteToRemove(petQuoteId || null);\n };\n\n const renderChildList = () => {\n let petItems = [];\n if (currentPet) {\n petItems = [\n currentPet,\n ...petQuoteList.filter((element) => element !== currentPet),\n ];\n }\n\n return petItems.map((pet) => (\n <PetQuoteDropDownItem\n key={pet.QuoteId}\n dropDownItemType={DROPDOWN_ITEM_TYPE.pet}\n hasMoreThanOnePet={petQuoteList.length > 1}\n isOpen={isOpen}\n onEditPetSelection={handleRemoveItem}\n onItemClick={handleItemClick}\n petQuote={pet}\n petQuoteToEdit={petQuoteToRemove}\n quoteSelectedValues={quoteSelectedValues}\n toggleOpen={toggleOpen}\n />\n ));\n };\n\n return (\n <>\n <div className={`Pet-quote-drop-down-main-container ${classContainer}`}>\n <PetQuoteDropDownItem\n dropDownItemType={DROPDOWN_ITEM_TYPE.header}\n hasMoreThanOnePet={petQuoteList.length > 1}\n isOpen={isOpen}\n onEditPetSelection={handleRemoveItem}\n onHeaderClick={handleHeaderOnClick}\n petQuote={currentPet}\n petQuoteToEdit={petQuoteToRemove}\n quoteSelectedValues={quoteSelectedValues}\n />\n\n {isOpen ? (\n <>\n <button\n aria-hidden=\"true\"\n aria-label=\"overlay\"\n className=\"Pet-quote-drop-down-overlayed-container\"\n onClick={handleHeaderOnClick}\n tabIndex={-1}\n type=\"button\"\n />\n\n <ul\n aria-labelledby={'petQuoteDropDownItem'\n + `${currentPet?.petQuoteId}-header`}\n className={'Pet-quote-drop-down-child-list-container'\n + ` ${customClass}`}\n id=\"dd-options-pet-list\"\n role=\"menu\"\n >\n {renderChildList()}\n\n <PetQuoteDropDownItem\n dropDownItemType={DROPDOWN_ITEM_TYPE.addPet}\n isOpen={isOpen}\n onAddPetClick={handleAddPetClick}\n quoteSelectedValues={quoteSelectedValues}\n toggleOpen={toggleOpen}\n />\n </ul>\n </>\n ) : null}\n </div>\n\n {useCustomPlanPills && shouldRenderPriceLog && <PriceLog />}\n </>\n );\n};\n\nexport { PetQuoteDropDown };\n","export default __webpack_public_path__ + \"static/media/pencil.8a1e383c.svg\";","export default __webpack_public_path__ + \"static/media/left-enabled.b333770a.svg\";","export default __webpack_public_path__ + \"static/media/right-disabled.ad5549de.svg\";","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n usePetQuoteDropdown,\n} from '../../mobile/petQuotingDropDown/hooks/usePetQuoteDropdown';\nimport { currencyFormat, delay, validatePowerupsSelected } from '../../../util';\nimport {\n useCallbackAfterRate,\n usePrevious,\n useResponsive,\n useSavedElement,\n useVisibilityObserver,\n} from '../../../hooks';\nimport { AFTER_RATE_TAG } from '../../../constants';\nimport {\n restartPowerupErrors,\n saveSelectedPetNumber,\n setPowerUpErrors,\n validateAllPetsPowerups,\n} from '../../../actions';\nimport { dataLayerViewItem } from '../../../gtmDataLayer';\n\nimport editIcon from '../../../assets/pencil.svg';\nimport infoIcon from '../../../assets/error.svg';\nimport arrowEnabled from '../../../assets/ddPetSelector/left-enabled.svg';\nimport arrowDisabled from '../../../assets/ddPetSelector/right-disabled.svg';\n\nimport './PetSelector.css';\n\nconst TAB_KEY = 9;\nconst ENTER_KEY = 13;\nconst ESC_KEY = 27;\nconst SPACE_KEY = 32;\nconst END_KEY = 35;\nconst HOME_KEY = 36;\nconst UP_KEY = 38;\nconst DOWN_KEY = 40;\n\nconst MARGIN_TO_ALIGN_TWO = 28;\nconst MARGIN_TO_ALIGN = 9;\n\nconst ActionItem = ({\n id = '',\n label = '',\n focused = false,\n onAction = () => { },\n onKeyDown = () => { },\n}) => (\n <li\n className={'Pet-selector-item-menu-item'\n + `${focused ? ' Pet-selector-item-menu-item-hover' : ''}`}\n id={id}\n onClick={onAction}\n onKeyDown={onKeyDown}\n role=\"menuitem\"\n >\n {label}\n </li>\n);\n\nconst PetDot = ({ petQuote, selected = false }) => {\n const powerUpErrors = useSelector(({ quoting }) => quoting.powerUpErrors);\n const {\n petsWithQuoteError,\n } = usePetQuoteDropdown({ petQuote });\n const hasError = useMemo(() => {\n if (selected) {\n return powerUpErrors.length > 0;\n }\n return petsWithQuoteError.includes(petQuote.petQuoteId);\n }, [petQuote.petQuoteId, petsWithQuoteError, powerUpErrors, selected]);\n\n return (\n <div\n className=\"Pet-selector-dot\"\n data-error={hasError}\n data-selected={selected}\n />\n );\n};\n\nconst PetSelectorItem = ({\n disabled = false,\n isSelectedPetValid = () => { },\n isSinglePet = false,\n onPetSelected = () => { },\n petQuote,\n petsCount,\n selected = false,\n}) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const [itemSelectedId, setItemSelectedId] = useState(null);\n const {\n quoteSelected,\n onEditPet,\n onRemovePetAskConfirmation,\n petsWithQuoteError,\n } = usePetQuoteDropdown({ petQuote });\n const powerUpErrors = useSelector(({ quoting }) => quoting.powerUpErrors);\n const { t } = useTranslation('common');\n const listRef = useRef();\n const menuButtonRef = useRef();\n const selectedActionRef = useRef();\n const itemRef = useRef();\n const petTabRef = useRef();\n const dispatch = useDispatch();\n const { isMobile } = useResponsive();\n const isVisible = useVisibilityObserver(itemRef);\n const prevState = usePrevious(selected);\n const { saveElementById } = useSavedElement();\n\n const petQuoteTotal = useMemo(() => {\n const quoteTotal = quoteSelected.totalMontly || 0;\n return `$${currencyFormat({ value: quoteTotal })}`;\n }, [quoteSelected]);\n\n useEffect(() => {\n // ios workaround\n const scrollIntoView = async () => {\n await delay(50);\n\n itemRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n });\n };\n\n if (prevState !== selected && selected && !isVisible && isMobile) {\n itemRef.current.scrollIntoView(false);\n scrollIntoView();\n }\n }, [isMobile, isVisible, petQuote.petQuoteId, prevState, selected]);\n\n const handleFocus = useCallback(() => {\n if (!isVisible && isMobile) {\n itemRef.current.scrollIntoView(false);\n }\n }, [isMobile, isVisible]);\n\n useEffect(() => {\n if (isExpanded) {\n listRef.current.focus();\n } else if (menuButtonRef.current) {\n menuButtonRef.current.focus();\n }\n }, [isExpanded]);\n\n const setActiveDescendant = (newItem) => {\n const newId = newItem.getAttribute('id');\n listRef.current.setAttribute('aria-activedescendant', newId);\n selectedActionRef.current = newItem;\n setItemSelectedId(newId);\n };\n\n const handleOpen = useCallback(() => {\n setIsExpanded(true);\n listRef.current.focus();\n }, []);\n\n const handleClose = useCallback(() => {\n setIsExpanded(false);\n }, []);\n\n const goFirstItem = useCallback(() => {\n if (listRef.current.childNodes.length) {\n const firstItem = listRef.current.childNodes[0];\n setActiveDescendant(firstItem);\n }\n }, []);\n\n const goLastItem = useCallback(() => {\n const { length } = listRef.current.childNodes;\n if (length) {\n const firstItem = listRef.current.childNodes[length - 1];\n setActiveDescendant(firstItem);\n }\n }, []);\n\n const handleMenuClick = useCallback(() => {\n handleFocus();\n handleOpen();\n goFirstItem();\n }, [goFirstItem, handleFocus, handleOpen]);\n\n const handlePetKeyDown = useCallback((event) => {\n const { keyCode } = event;\n switch (keyCode) {\n case DOWN_KEY:\n case SPACE_KEY:\n case ENTER_KEY:\n event.preventDefault();\n handleOpen();\n goFirstItem();\n break;\n case UP_KEY:\n event.preventDefault();\n handleOpen();\n goLastItem();\n break;\n default:\n break;\n }\n }, [goFirstItem, goLastItem, handleOpen]);\n\n const itemId = `pet-item-${petQuote.petQuoteId}`;\n const petTabId = `pet-tab-${petQuote.petQuoteId}`;\n const petInfoId = `pet-${petQuote.petQuoteId}`;\n const menuIconId = `menuIcon-${petQuote.petQuoteId}`;\n const menuListId = `menu-${petQuote.petQuoteId}`;\n const selectActionId = `menuitem-01-${petQuote.petQuoteId}`;\n const editActionId = `menuitem-02-${petQuote.petQuoteId}`;\n const removeActionId = `menuitem-03-${petQuote.petQuoteId}`;\n\n const onPowerupsValid = useCallback((callback) => {\n dispatch(validateAllPetsPowerups());\n if (isSelectedPetValid()) {\n callback();\n }\n handleClose();\n }, [dispatch, handleClose, isSelectedPetValid]);\n\n const handleSelection = useCallback(() => {\n onPetSelected(petQuote);\n handleClose();\n }, [handleClose, onPetSelected, petQuote]);\n\n const handleAction = useCallback((actionId) => () => {\n switch (actionId) {\n case selectActionId:\n onPowerupsValid(handleSelection);\n break;\n case editActionId:\n saveElementById(petInfoId);\n onPowerupsValid(onEditPet);\n break;\n case removeActionId:\n saveElementById(petInfoId);\n onRemovePetAskConfirmation();\n break;\n default:\n break;\n }\n handleClose();\n }, [\n editActionId,\n handleClose,\n handleSelection,\n onEditPet,\n onPowerupsValid,\n onRemovePetAskConfirmation,\n petInfoId,\n removeActionId,\n saveElementById,\n selectActionId,\n ]);\n\n const actions = useMemo(() => {\n const editAction = {\n id: editActionId,\n label: t('petSelector.edit'),\n onAction: handleAction(editActionId),\n onKeyDown: () => { },\n };\n\n if (isSinglePet) {\n return [editAction];\n }\n\n return [\n editAction,\n {\n id: removeActionId,\n label: t('petSelector.remove'),\n onAction: handleAction(removeActionId),\n onKeyDown: () => { },\n },\n ];\n }, [\n editActionId,\n handleAction,\n isSinglePet,\n removeActionId,\n t,\n ]);\n\n const moveBetweenActions = useCallback((factor = 1) => {\n if (selectedActionRef.current) {\n const index = actions\n .findIndex((action) => action.id === selectedActionRef?.current?.id);\n const { length } = listRef.current.childNodes;\n let newIndex = index + factor;\n if (newIndex >= length) {\n newIndex = 0;\n } else if (newIndex < 0) {\n newIndex = length - 1;\n }\n const newItem = listRef.current.childNodes[newIndex];\n setActiveDescendant(newItem);\n }\n }, [actions]);\n\n const handleMenuListKeyDown = useCallback((event) => {\n const { keyCode } = event;\n switch (keyCode) {\n case DOWN_KEY:\n case UP_KEY:\n event.preventDefault();\n moveBetweenActions(keyCode === UP_KEY ? -1 : 1);\n break;\n\n case ESC_KEY:\n case TAB_KEY:\n event.preventDefault();\n handleClose();\n break;\n\n case SPACE_KEY:\n event.preventDefault();\n break;\n case ENTER_KEY:\n event.preventDefault();\n handleAction(itemSelectedId)();\n break;\n case HOME_KEY:\n event.preventDefault();\n goFirstItem();\n break;\n case END_KEY:\n event.preventDefault();\n goLastItem();\n break;\n default:\n break;\n }\n }, [\n goFirstItem,\n goLastItem,\n handleAction,\n handleClose,\n itemSelectedId,\n moveBetweenActions,\n ]);\n\n const hasError = useMemo(() => {\n if (selected) {\n return powerUpErrors.length > 0;\n }\n return petsWithQuoteError.includes(petQuote.petQuoteId);\n }, [petQuote.petQuoteId, petsWithQuoteError, powerUpErrors, selected]);\n\n return (\n <li ref={itemRef} className=\"Pet-selector-item\" id={itemId}>\n <div\n ref={petTabRef}\n className={'Pet-selector-item-pet'\n + ` ${selected ? ' Pet-selector-item-pet-selected' : ''}`}\n data-error={hasError}\n id={petTabId}\n >\n <button\n aria-disabled={disabled}\n aria-selected={selected}\n className=\"Pet-selector-item-pet-info\"\n id={petInfoId}\n onClick={handleAction(selectActionId)}\n onFocus={handleFocus}\n role=\"tab\"\n type=\"button\"\n >\n <span aria-live=\"polite\" className=\"Pet-selector-item-pet-info-name\">\n {hasError ? (\n <img\n alt=\"\"\n aria-label={t('petSelector.errorPet')}\n src={infoIcon}\n />\n ) : null}\n\n {petQuote.petName || 'None'}\n </span>\n\n <span>{petQuoteTotal}</span>\n </button>\n\n {selected && !hasError ? (\n <button\n ref={menuButtonRef}\n aria-controls={menuListId}\n aria-expanded={isExpanded}\n aria-haspopup\n className=\"Pet-selector-item-pencil-button\"\n id={menuIconId}\n onClick={handleMenuClick}\n onKeyDown={handlePetKeyDown}\n type=\"button\"\n >\n <img\n alt={t('petSelector.menuLabel', { pet: petQuote.petName })}\n className=\"Pet-selector-item-pet-pencil\"\n src={editIcon}\n />\n </button>\n ) : null}\n </div>\n\n {isExpanded && (\n <button\n aria-hidden=\"true\"\n aria-label=\"overlay\"\n className=\"Pet-selector-item-menu-overlay\"\n onClick={handleClose}\n tabIndex={-1}\n type=\"button\"\n />\n )}\n\n <ul\n ref={listRef}\n aria-activedescendant=\"\"\n aria-labelledby={petInfoId}\n className={`Pet-selector-item-menu ${!isExpanded ? 'Gone' : ''}`}\n id={menuListId}\n onKeyDown={handleMenuListKeyDown}\n role=\"menu\"\n style={{\n left: isMobile && !isSinglePet\n ? petTabRef.current?.getBoundingClientRect().x - (petsCount === 2\n ? MARGIN_TO_ALIGN_TWO : MARGIN_TO_ALIGN)\n : 0,\n }}\n tabIndex={-1}\n >\n {actions.map((action) => (\n <ActionItem\n {...action}\n focused={itemSelectedId === action.id}\n />\n ))}\n </ul>\n </li>\n );\n};\n\nconst PetSelector = ({ hideInteraction = false }) => {\n const store = useSelector(({ quoting }) => quoting);\n const { saveElementById } = useSavedElement();\n const { t } = useTranslation('common');\n const dispatch = useDispatch();\n const {\n data,\n petQuoteSelected,\n petRemovedLoading,\n } = store;\n const petQuoteList = useMemo(() => {\n if (!data) {\n return [];\n }\n\n return data.petQuoteResponseList || [];\n }, [data]);\n\n const selectedPetQuote = useMemo(() => petQuoteList\n .find((pet) => pet.petQuoteId === petQuoteSelected), [\n petQuoteList,\n petQuoteSelected,\n ]);\n\n useCallbackAfterRate(() => {\n saveElementById(`pet-${petQuoteList[petQuoteList.length - 1]?.petQuoteId}`);\n }, [AFTER_RATE_TAG.addPet]);\n\n const isVisiblePetValidPowerUps = useCallback(() => {\n if (!data) {\n return false;\n }\n const petQuoteRateItem = data.petQuoteResponseList\n .find((pqRateItem) => pqRateItem.petQuoteId === petQuoteSelected);\n const powerUpValidation = validatePowerupsSelected(petQuoteRateItem);\n if (!powerUpValidation.isValid) {\n dispatch(setPowerUpErrors(powerUpValidation.modifierIdNotSelectedList));\n }\n return powerUpValidation.isValid;\n }, [data, dispatch, petQuoteSelected]);\n\n const handlePetSelection = useCallback((petQuote) => {\n if (!isVisiblePetValidPowerUps()) {\n return;\n }\n if (!petRemovedLoading) {\n dispatch(saveSelectedPetNumber(petQuote.petQuoteId));\n\n dispatch(restartPowerupErrors());\n // GTM\n dataLayerViewItem({ petIndex: petQuote.petQuoteId });\n }\n }, [dispatch, isVisiblePetValidPowerUps, petRemovedLoading]);\n\n const arrowIconsData = useMemo(() => {\n const index = petQuoteList\n .findIndex((petQuote) => petQuote.petQuoteId\n === selectedPetQuote?.petQuoteId);\n\n const arrowData = {\n left: {\n ariaLabel: petQuoteList[index - 1] ? t('petSelector.leftArrow', {\n count: petQuoteList.length,\n newPos: index,\n prevPet: petQuoteList[index - 1]?.petName,\n }) : t('petSelector.leftArrowUnavailable'),\n disabled: false,\n icon: arrowEnabled,\n },\n right: {\n ariaLabel: petQuoteList[index + 1] ? t('petSelector.rightArrow', {\n count: petQuoteList.length,\n newPos: index + 2,\n nextPet: petQuoteList[index + 1]?.petName,\n }) : t('petSelector.rightArrowUnavailable'),\n disabled: true,\n icon: arrowDisabled,\n },\n };\n if (selectedPetQuote?.petQuoteId === petQuoteList[0]?.petQuoteId) {\n arrowData.left.icon = arrowDisabled;\n arrowData.left.disabled = true;\n }\n if (selectedPetQuote?.petQuoteId\n !== petQuoteList[petQuoteList.length - 1]?.petQuoteId) {\n arrowData.right.icon = arrowEnabled;\n arrowData.right.disabled = false;\n }\n return arrowData;\n }, [petQuoteList, selectedPetQuote, t]);\n\n const handleArrowClick = useCallback((factor = 1) => () => {\n if ((factor > 0 && arrowIconsData.right.disabled)\n || (factor < 0 && arrowIconsData.left.disabled)\n ) {\n return;\n }\n\n if (isVisiblePetValidPowerUps()) {\n const index = petQuoteList\n .findIndex((petQuote) => petQuote.petQuoteId\n === selectedPetQuote?.petQuoteId);\n if (index >= 0) {\n const { length } = petQuoteList;\n const newIndex = index + factor;\n if (newIndex >= length || newIndex < 0) {\n return;\n }\n const newPetQuote = petQuoteList[newIndex];\n if (newPetQuote) {\n handlePetSelection(newPetQuote);\n }\n }\n }\n }, [\n arrowIconsData,\n handlePetSelection,\n isVisiblePetValidPowerUps,\n petQuoteList,\n selectedPetQuote,\n ]);\n\n return (\n <div\n className=\"Pet-selector-wrapper\"\n style={petQuoteList.length > 2 ? {\n width: '100%',\n } : null}\n >\n <ul aria-label=\"Pets\" className=\"Pet-selector-container\" role=\"tablist\">\n {petQuoteList.map((petQuote) => (\n <PetSelectorItem\n key={petQuote?.petQuoteId}\n disabled={hideInteraction}\n isSelectedPetValid={isVisiblePetValidPowerUps}\n isSinglePet={petQuoteList.length <= 1}\n onPetSelected={handlePetSelection}\n petQuote={petQuote}\n petsCount={petQuoteList.length}\n selected={selectedPetQuote?.petQuoteId === petQuote?.petQuoteId\n && !hideInteraction}\n />\n ))}\n </ul>\n\n {petQuoteList.length > 2 && !hideInteraction ? (\n <div className=\"Pet-selector-dots\">\n <button\n aria-disabled={arrowIconsData.left.disabled}\n className={'Pet-selector-arrow'\n + `${arrowIconsData.left.disabled\n ? ' Pet-selector-arrow-switched' : ''}`}\n onClick={handleArrowClick(-1)}\n type=\"button\"\n >\n <img\n alt=\"\"\n aria-label={arrowIconsData.left.ariaLabel}\n src={arrowIconsData.left.icon}\n />\n </button>\n\n <div className=\"Pet-selector-dots-container\">\n {petQuoteList.length > 1 ? petQuoteList.map((petQuote) => (\n <PetDot\n key={petQuote?.petQuoteId}\n petQuote={petQuote}\n selected={selectedPetQuote?.petQuoteId === petQuote?.petQuoteId}\n />\n )) : null}\n </div>\n\n <button\n aria-disabled={arrowIconsData.right.disabled}\n className={'Pet-selector-arrow'\n + `${!arrowIconsData.right.disabled\n ? ' Pet-selector-arrow-switched' : ''}`}\n onClick={handleArrowClick(1)}\n type=\"button\"\n >\n <img\n alt=\"\"\n aria-label={arrowIconsData.right.ariaLabel}\n src={arrowIconsData.right.icon}\n />\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n\nexport { PetSelector };\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\n/**\n * @param targetRef element reference to validate if is visible in the viewport\n * @returns if visible in the current viewport\n */\nconst useVisibilityObserver = (targetRef) => {\n const [isVisible, setIsVisible] = useState(false);\n\n const options = useMemo(() => ({\n root: null,\n rootMargin: '0px',\n threshold: 1.0,\n }), []);\n\n const handleVisibility = useCallback((entries) => {\n const [entry] = entries;\n setIsVisible(entry.isIntersecting);\n }, []);\n\n useEffect(() => {\n const { current } = targetRef;\n const observer = new IntersectionObserver(handleVisibility, options);\n if (current) {\n observer.observe(current);\n }\n\n return () => {\n if (current) {\n observer.unobserve(current);\n }\n };\n }, [handleVisibility, options, targetRef]);\n\n return isVisible;\n};\n\nexport { useVisibilityObserver };\n","export default __webpack_public_path__ + \"static/media/figo-logo.077db3ea.svg\";","import React, { useEffect, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { HeaderUnderwriting } from './HeaderUnderwriting';\nimport { MyQuote } from './MyQuote';\nimport { QuotingStepsComponent } from './QuotingStepsComponent';\nimport { PetQuoteDropDown } from '../../mobile/petQuotingDropDown';\nimport { PetSelector } from '../petSelector';\nimport {\n useOnBodyScrollEvent,\n useRedesign,\n useResponsive,\n} from '../../../hooks';\nimport { QuotingSteps } from '../../../constants';\nimport figoLogo from '../../../assets/figo-logo.svg';\nimport { isPaycheck } from '../../../util';\nimport './css/Header.css';\n\nconst Header = ({ isError = false }) => {\n const { t } = useTranslation('common');\n const isRedesign = useRedesign();\n const { isMobile, isTablet } = useResponsive();\n const store = useSelector(({ quoting }) => quoting);\n const {\n data,\n currentQuoteStep,\n isMonthlyPlan,\n } = store;\n\n const isFirstStep = currentQuoteStep === QuotingSteps.SelectPlan.value;\n const isSecondStep = currentQuoteStep === QuotingSteps.YourInfo.value;\n const isWelcomeStep = currentQuoteStep === QuotingSteps.Welcome.value;\n\n const { verticalScrollValue } = useOnBodyScrollEvent();\n const showFloating = !isMobile && !isTablet && verticalScrollValue < -5;\n\n useEffect(() => {\n // Move to top on step changed\n window.scrollTo(0, 0);\n }, [currentQuoteStep]);\n\n const petQuoteList = useMemo(() => {\n if (!data) {\n return [];\n }\n\n return data.petQuoteResponseList || [];\n }, [data]);\n\n return (\n <header\n aria-label={t('header.siteHeader')}\n className={`Header ${showFloating ? 'Header-fixed' : ''}`}\n role=\"banner\"\n >\n <HeaderUnderwriting />\n\n <div className=\"Header-content\">\n <div>\n <img\n alt=\"Figo Pet Insurance\"\n className=\"Header-logo-image\"\n src={figoLogo}\n />\n\n <div className=\"Header-price\">\n {isSecondStep ? (\n <MyQuote\n isMonthlyPlan={isMonthlyPlan}\n isPaycheck={isPaycheck}\n quoteSelectedValues={store.quoteSelectedValues}\n />\n ) : null}\n </div>\n </div>\n\n <div className=\"Header-actions\">\n {isError || (showFloating && isFirstStep) ? null : (\n <QuotingStepsComponent\n currentQuoteStep={currentQuoteStep}\n />\n )}\n\n {!isWelcomeStep ? (\n <div\n className={'Header-pet-selector-wrapper'\n + `${isSecondStep\n ? ' Header-pet-selector-wrapper-hide' : ''}`}\n >\n {isRedesign ? (\n <PetSelector hideInteraction={isSecondStep} />\n ) : (\n <PetQuoteDropDown\n hideAddPet={isSecondStep}\n petQuoteList={petQuoteList}\n />\n )}\n </div>\n ) : null}\n </div>\n </div>\n </header>\n );\n};\n\nexport { Header };\n","import { useEffect, useState } from 'react';\n\nconst useOnBodyScrollEvent = () => {\n const [verticalScrollValue, setVerticalScrollValue] = useState(0);\n\n const onScrollBody = () => {\n const newValue = document.body.getBoundingClientRect().top;\n setVerticalScrollValue(newValue);\n };\n\n useEffect(() => {\n window.addEventListener('scroll', onScrollBody);\n\n return () => window.removeEventListener('scroll', onScrollBody);\n }, []);\n\n return {\n isOnTopScreen: verticalScrollValue === 0,\n verticalScrollValue,\n };\n};\n\nexport { useOnBodyScrollEvent };\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {\n Route,\n Switch,\n useLocation,\n useRouteMatch,\n} from 'react-router-dom';\nimport queryString from 'query-string';\n\nimport {\n closeSaveQuoteModalConfirmation,\n forgetPasswordVisibleChanged,\n loadMultiModalData,\n newCustomerChanged,\n noDiamondClientIdError,\n saveSelectedAddPetModal,\n saveSelectedEditPetModal,\n} from '../../../actions';\n\nimport { YourInfoContent } from '../yourInfo/YourInfoContent';\nimport ModalContainer from '../../common/ModalContainer';\nimport { ModalAddPet } from '../../common/modalAddPet/ModalAddPet';\nimport ModalRemovePet from '../ModalRemovePet';\nimport MultiModalInfo from '../../common/MultiModalInfo';\nimport { SaveYourQuoteModal } from '../SaveYourQuoteModal';\nimport SidebarSaveQuoteModalConfirmation\nfrom '../SidebarSaveQuoteModalConfirmation';\nimport { ComingSoonModal } from '../../landing/ComingSoonModal';\nimport { PriceStickyBar } from '../purchase/PriceStickyBar';\nimport { QuoteContent } from '../QuoteContent';\nimport FigoLoadingOverlay from '../../common/FigoLoadingOverlay';\n\nimport {\n createEffectiveDate,\n forceFocusElement,\n useMarketingChannel,\n useROPC,\n} from '../../../util';\nimport { MODAL_RELATION_LIST, QuotingSteps } from '../../../constants';\nimport ModalCustomerWelcome from '../../common/ModalCustomerWelcome';\nimport ModalCustomerLogin from '../../common/ModalCustomerLogin';\nimport { dataLayerViewItem } from '../../../gtmDataLayer';\n\nimport './css/QuotingHeader.css';\nimport ModalForgetPassword from '../../common/ModalForgetPassword';\nimport { NEW_CUSTOMER_EMAIL_CHANGED } from '../../../actions/types';\nimport { DuplicatedPurchasesModal } from '../purchase/duplicatedPurchasesModal';\nimport { Header } from './Header';\nimport { useRedesign } from '../../../hooks';\n\nfunction QuotingHeader() {\n const match = useRouteMatch();\n const location = useLocation();\n const dispatch = useDispatch();\n const isRedesign = useRedesign();\n const parametersRaw = queryString.parse(location.search);\n const store = useSelector(({ quoting }) => quoting);\n const [showModalLogin, setShowModalLogin] = useState(false);\n const {\n addPetModalVisible,\n currentQuoteStep,\n customerZipCode,\n editPetModalVisible,\n isLoading,\n newCustomer,\n multiModalData: { ZipCode },\n multiModalUserSelection: {\n needToKnowIdSelected,\n needToKnowModalVisible,\n petCoPayIdSelected,\n petCoPayModalVisible,\n termsAndCondIdSelected,\n termsAndCondModalVisible,\n wellnessIdSelected,\n wellnessModalVisible,\n },\n loggingWithoutModal,\n removePetModalVisible,\n saveQuote: {\n savedQuoteModalVisible,\n },\n sessionInformation,\n } = store;\n\n const {\n isCustomer,\n loadingLogin,\n nopCommerceUser,\n showComingSoonModal,\n } = store.sessionInformation;\n\n const {\n NEED_TO_KNOW_MODAL_ID,\n PET_CO_PAY_MODAL_ID,\n TERMS_AND_COND_MODAL_ID,\n WELLNESS_MODAL_ID,\n } = MODAL_RELATION_LIST;\n\n const isSecondStep = currentQuoteStep === QuotingSteps.YourInfo.value;\n\n const styles = useMemo(() => {\n if (Object.entries(parametersRaw).length || isSecondStep) {\n return {\n bodyStyle: 'App-body-quote',\n };\n }\n\n return {\n bodyStyle: '',\n };\n }, [isSecondStep, parametersRaw]);\n\n const showLoadingOverlay = useMemo(() => isLoading\n || store.isLoadingNewAddress\n || store.purchase.loading\n || store.rateSummary.loading\n || store.sessionInformation.isLoading, [\n isLoading,\n store.isLoadingNewAddress,\n store.purchase.loading,\n store.rateSummary.loading,\n store.sessionInformation.isLoading,\n ]);\n\n const handleCloseModalAddPet = useCallback(() => {\n dispatch(saveSelectedEditPetModal(false));\n dispatch(saveSelectedAddPetModal(false));\n const { petQuoteSelected, data: { petQuoteResponseList } } = store;\n const currentQuote = (petQuoteResponseList || [])\n .find((quote) => quote.petQuoteId === petQuoteSelected);\n forceFocusElement(isRedesign\n ? `pet-${currentQuote.petQuoteId}`\n : `petQuoteDropDownItem${currentQuote.petQuoteId}-header`);\n }, [dispatch, isRedesign, store]);\n\n const handleOnClickCloseConfirmationModal = () => {\n dispatch(closeSaveQuoteModalConfirmation());\n };\n\n useEffect(() => {\n if (!customerZipCode || customerZipCode === ZipCode) {\n return;\n }\n\n dispatch(loadMultiModalData({\n effectiveDate: createEffectiveDate(),\n isEBProduct: false,\n zipCode: customerZipCode,\n }));\n }, [customerZipCode, dispatch, ZipCode]);\n\n // GTM\n useEffect(() => {\n dataLayerViewItem({\n pathname: location.pathname,\n petIndex: store.petQuoteSelected,\n });\n }, [location.pathname, store.petQuoteSelected]);\n\n const onModalClosed = useCallback(() => {\n setShowModalLogin(true);\n }, []);\n\n useEffect(() => {\n if (useMarketingChannel) {\n return;\n }\n\n // Free user don't have DiamondClientId only CustomerId\n const isFreeUser = sessionInformation.isCustomer\n && !nopCommerceUser.DiamonClientdId\n && nopCommerceUser.CustomerNopCommerceId;\n const isLoadingSessionInformation = sessionInformation.isLoading\n || sessionInformation.loadingLogin;\n\n if (!isSecondStep\n || !isFreeUser\n || isLoadingSessionInformation) {\n return;\n }\n\n dispatch(noDiamondClientIdError('User without diamondId.'));\n }, [\n isSecondStep,\n dispatch,\n sessionInformation,\n nopCommerceUser.DiamonClientdId,\n nopCommerceUser.CustomerNopCommerceId,\n ]);\n\n useEffect(() => {\n if (newCustomer.email && isCustomer && !nopCommerceUser.LoginSuccess\n && (isSecondStep || (!isSecondStep && !loggingWithoutModal))) {\n setShowModalLogin(true);\n dispatch(forgetPasswordVisibleChanged({ visible: false }));\n }\n\n if (nopCommerceUser.LoginSuccess) {\n setShowModalLogin(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch, isCustomer, newCustomer.email, nopCommerceUser]);\n\n useEffect(() => {\n setShowModalLogin(false);\n }, [showComingSoonModal]);\n\n const onDismissLoginModal = useCallback(() => {\n if (!loadingLogin) {\n dispatch(newCustomerChanged({\n type:\n NEW_CUSTOMER_EMAIL_CHANGED,\n value: '',\n }));\n setShowModalLogin(false);\n }\n }, [dispatch, loadingLogin]);\n\n const handleForgetPasswordClick = useCallback(() => {\n if (!loadingLogin) {\n setShowModalLogin(false);\n dispatch(forgetPasswordVisibleChanged({ visible: true }));\n }\n }, [dispatch, loadingLogin]);\n\n return (\n <>\n <Header />\n\n <main className={`App-body ${styles.bodyStyle}`}>\n <Switch>\n <Route exact path={match.path}>\n <QuoteContent />\n </Route>\n\n <Route path={`${match.path}/yourInfo/:scrollToTop?`}>\n <YourInfoContent showLoadingOverlay={showLoadingOverlay} />\n </Route>\n </Switch>\n </main>\n\n <PriceStickyBar />\n\n <DuplicatedPurchasesModal />\n\n <ModalContainer\n cancelable={false}\n idPrefix=\"addAnotherPetModal\"\n keepInDOM\n show={addPetModalVisible || editPetModalVisible}\n >\n <ModalAddPet\n handleCloseModalAddPet={handleCloseModalAddPet}\n isEditing={editPetModalVisible}\n show={addPetModalVisible || editPetModalVisible}\n />\n </ModalContainer>\n\n {useROPC ? (\n <ModalContainer\n cancelable={false}\n handleOutClick={onDismissLoginModal}\n show={!showLoadingOverlay && showModalLogin\n && !showComingSoonModal}\n >\n <ModalCustomerLogin\n emailUser={newCustomer.email}\n onDismiss={onDismissLoginModal}\n onForgotPassword={handleForgetPasswordClick}\n />\n </ModalContainer>\n ) : null}\n\n <ModalCustomerWelcome isSecondStep={isSecondStep} />\n\n <ModalForgetPassword onModalClosed={onModalClosed} />\n\n <ComingSoonModal />\n\n <ModalContainer\n cancelable={false}\n show={removePetModalVisible}\n >\n <ModalRemovePet />\n </ModalContainer>\n\n <MultiModalInfo\n id=\"seeWhatWeCover\"\n keepInDOM\n menuSelected={needToKnowIdSelected}\n modalId={NEED_TO_KNOW_MODAL_ID}\n show={needToKnowModalVisible}\n />\n\n <MultiModalInfo\n id=\"termsAndCondition\"\n menuSelected={termsAndCondIdSelected}\n modalId={TERMS_AND_COND_MODAL_ID}\n show={termsAndCondModalVisible}\n />\n\n <MultiModalInfo\n id=\"powerUp70428\" // wellness\n keepInDOM\n menuSelected={wellnessIdSelected}\n modalId={WELLNESS_MODAL_ID}\n show={wellnessModalVisible}\n />\n\n {/* FPA-11163 */}\n <MultiModalInfo\n id=\"petCopayContent\"\n menuSelected={petCoPayIdSelected}\n modalId={PET_CO_PAY_MODAL_ID}\n show={petCoPayModalVisible}\n />\n\n <MultiModalInfo\n id=\"powerUp70422\"// vet exam fees\n keepInDOM\n menuSelected={-1}\n show={store.multiModalCustomData}\n />\n\n <SaveYourQuoteModal />\n\n <SidebarSaveQuoteModalConfirmation\n handleOnClick={handleOnClickCloseConfirmationModal}\n show={savedQuoteModalVisible}\n />\n\n <FigoLoadingOverlay visible={showLoadingOverlay} />\n\n {/* OneInc modal create here */}\n <div id=\"portalOneContainer\" />\n </>\n );\n}\n\nexport { QuotingHeader };\n","import React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n INSURED_DISCLOSURES_LINK,\n PRIVACY_POLICY_LINK,\n SAMPLE_POLICY_LINK,\n TERMS_OF_USE_LINK_GENERAL,\n UNDERWRITING_LINK,\n WAITING_PERIODS_LINK,\n} from '../../constants';\nimport './FooterLinks.css';\n\nconst FooterLink = ({\n href = '',\n rel = 'noopener noreferrer',\n target = '_blank',\n title = '',\n}) => (\n <a\n className=\"Footer-link\"\n href={href}\n rel={rel}\n target={target}\n title=\"opens in a new window\"\n >\n {title}\n </a>\n);\n\nconst FooterLinks = ({ className = '', extraLinks = [] }) => {\n const { t } = useTranslation('common');\n const links = useMemo(() => {\n const defaultLinks = [\n {\n href: INSURED_DISCLOSURES_LINK,\n title: t('footer.insurerDisclosures'),\n },\n {\n href: PRIVACY_POLICY_LINK,\n title: t('footer.privacy'),\n },\n {\n href: TERMS_OF_USE_LINK_GENERAL,\n title: t('footer.terms'),\n },\n {\n href: UNDERWRITING_LINK,\n title: t('footer.underwriting'),\n },\n {\n href: WAITING_PERIODS_LINK,\n title: t('footer.waitingPeriod'),\n },\n {\n href: SAMPLE_POLICY_LINK,\n title: t('footer.samplePolicy'),\n },\n ];\n return defaultLinks.concat(extraLinks);\n }, [extraLinks, t]);\n\n return (\n <span className={`Footer-links-container ${className}`}>\n {links.map((link, index) => (\n <React.Fragment key={link.href}>\n <FooterLink\n href={link.href}\n title={link.title}\n />\n\n {index < links.length - 1 ? (\n <span aria-hidden=\"true\" className=\"Footer-link-separator\">\n  | \n </span>\n ) : null}\n </React.Fragment>\n ))}\n </span>\n );\n};\n\nexport { FooterLinks };\n","import React, { useMemo, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport {\n DEFAULT_STICKY_BAR_HEIGHT,\n STICKY_BAR_HEIGHT_SECOND_STEP,\n YOUR_INFO_STEPS,\n} from '../../constants';\nimport { URL_ROOT_QUOTE, URL_YOUR_INFO } from '../../routes';\nimport {\n useSessionFooter,\n usePartnerNotes,\n useHtmlInjection,\n} from '../../hooks';\nimport { usePartnersData } from '../../partners/usePartnersData';\nimport { useStickyBarHeight } from '../landing/StickyBarHeightProvider';\n\nimport './QuotingFooter.css';\nimport { FooterLinks } from '../common/FooterLinks';\n\nconst QuotingFooter = ({\n classContainer = '',\n customFooterText = '',\n}) => {\n const store = useSelector(({ quoting }) => ({ quoting }), shallowEqual);\n const { quoting: { yourInfoStep } } = store;\n const notesRef = useRef();\n const footerRef = useRef();\n const sessionFooter = useSessionFooter();\n const [sup1] = usePartnerNotes();\n const { stickyBarHeight } = useStickyBarHeight();\n const { isGoodDog } = usePartnersData();\n\n useHtmlInjection({\n classNameContainer: 'Quoting-footer-text',\n content: sup1?.Content || '',\n ref: notesRef,\n });\n\n useHtmlInjection({\n classNameContainer: 'Quoting-footer-text',\n content: customFooterText || sessionFooter,\n elementType: 'p',\n ref: footerRef,\n });\n\n const location = useLocation();\n const currentLocation = location.pathname.toLocaleLowerCase();\n const marginList = [URL_ROOT_QUOTE];\n const containerStyle = marginList.indexOf(currentLocation) >= 0\n ? 'Quoting-footer-extra-margin' : '';\n\n const footerClassName = isGoodDog\n ? 'Landing-footer-good-dog' : 'Landing-footer';\n\n const purchaseStickyBarHeight = useMemo(() => {\n const isYourInfo = currentLocation === URL_YOUR_INFO;\n const isSecondStep = yourInfoStep === YOUR_INFO_STEPS.secondStep;\n\n if (isYourInfo && isSecondStep) {\n return STICKY_BAR_HEIGHT_SECOND_STEP;\n }\n\n return DEFAULT_STICKY_BAR_HEIGHT;\n }, [currentLocation, yourInfoStep]);\n\n return (\n <footer\n className={`Quoting-footer-container ${containerStyle} ${classContainer}`}\n style={{ marginBottom: stickyBarHeight + purchaseStickyBarHeight }}\n >\n <div className=\"Quoting-footer-content\">\n <p className=\"Quoting-footer-text-header\">\n {`Copyright © 2015 – ${new Date().getFullYear()}\n Figo Pet Insurance LLC. All rights reserved.`}\n </p>\n\n <FooterLinks className=\"Quoting-footer-text-spacing\" />\n\n <div ref={notesRef} />\n\n <div ref={footerRef} className={footerClassName} />\n </div>\n </footer>\n );\n};\n\nexport default QuotingFooter;\n","import React from 'react';\nimport './PageNotFound.css';\n\nconst PageNotFound = () => {\n function renderContent() {\n return (\n <div>Page not found.</div>\n );\n }\n\n return (\n <div className=\"Page-not-found-container\">\n {renderContent()}\n </div>\n );\n};\n\nexport default PageNotFound;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport queryString from 'query-string';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { openQuote } from '../../actions';\nimport { setIsOpenQuote } from '../../utils/storage';\nimport FigoLoadingOverlay from '../common/FigoLoadingOverlay';\n\nconst OpenQuote = () => {\n const { search } = useLocation();\n const [isMounted, setIsMounted] = useState(false);\n const dispatch = useDispatch();\n const store = useSelector((stores) => stores.quoting);\n const { message, searchParameters, saveQuote } = store;\n const history = useHistory();\n\n const queryParams = useMemo(() => {\n const parameters = queryString.parse(search);\n const { CustomerId, partnerguid, quoteid, ...rest } = parameters;\n const utmRest = rest || {};\n\n return ({\n customerId: CustomerId && encodeURIComponent(CustomerId),\n partnerId: partnerguid && encodeURIComponent(partnerguid),\n quoteId: quoteid && encodeURIComponent(quoteid),\n utmRest,\n });\n }, [search]);\n\n const redirectOnceLoadIsCompleted = useCallback(() => {\n const url = `/quoting/getQuote${searchParameters}`;\n\n history.push(url);\n }, [history, searchParameters]);\n\n useEffect(() => {\n if (saveQuote.openQuoteLoaded) {\n redirectOnceLoadIsCompleted();\n }\n }, [saveQuote.openQuoteLoaded, redirectOnceLoadIsCompleted]);\n\n useEffect(() => {\n const { customerId, quoteId } = queryParams;\n\n if (saveQuote.failOpenQuote || (!customerId && !quoteId)) {\n if (saveQuote.redirectLink) {\n window.open(`https://${saveQuote.redirectLink}`, '_self');\n } else {\n history.push('/');\n }\n }\n }, [history, queryParams, saveQuote.failOpenQuote, saveQuote.redirectLink]);\n\n useEffect(() => {\n if (saveQuote.savedQuoteExpired) {\n history.push('/openQuote/error');\n }\n }, [history, saveQuote.savedQuoteExpired]);\n\n useEffect(() => {\n if ((queryParams.customerId || queryParams.quoteId) && !isMounted) {\n setIsOpenQuote(true);\n setIsMounted(true);\n dispatch(openQuote(queryParams));\n }\n }, [isMounted, queryParams, dispatch]);\n\n return (\n <FigoLoadingOverlay visible={!saveQuote.openQuoteLoaded && !message} />\n );\n};\n\nexport default OpenQuote;\n","export default __webpack_public_path__ + \"static/media/figo-logo.88d54c8f.svg\";","import React from 'react';\n\nimport figoLogo from '../../assets/landing/figo-logo.svg';\nimport './LandingHeader.css';\nimport { usePartnersData } from '../../partners/usePartnersData';\n\n/* eslint-disable react/no-danger */\nconst LandingHeader = () => {\n const { isCostco, isGoodDog, isPartner, data, isUSAA } = usePartnersData();\n const topDisclaimerHtml = () => ({ __html: data?.TopDisclaimer });\n\n const partnerLogo = () => {\n if (!isPartner || (data && !data.Logo)) {\n return null;\n }\n\n return (\n <img\n alt={data?.PartnerDisplayName}\n className={'Landing-partner-logo'\n + ` ${isUSAA ? 'Landing-partner-logo-usaa' : ''}`}\n src={data?.Logo}\n />\n );\n };\n\n const partnerDisclaimerTextTop = () => {\n if (!isCostco) {\n return null;\n }\n\n return (\n <div className=\"Landing-header-top-disclaimer\">\n <div dangerouslySetInnerHTML={topDisclaimerHtml()} />\n\n <div className=\"Landing-header-top-footer\" />\n </div>\n );\n };\n\n function renderLeftContent() {\n if (isPartner) {\n return (\n <img\n alt=\"Figo Pet Insurance\"\n className={'Landing-logo-image Landing-logo-image-partner'\n + ` ${isUSAA ? 'Gone' : ''}`}\n src={figoLogo}\n />\n );\n }\n\n return (\n <img\n alt=\"Figo Pet Insurance\"\n className=\"Landing-logo-image\"\n src={figoLogo}\n />\n );\n }\n\n return (\n <header className=\"Landing-header-container\">\n {partnerDisclaimerTextTop()}\n\n <div\n className={'Landing-header '\n + `${isPartner ? 'Landing-header-partner ' : ' '}`\n + `${isGoodDog ? 'Landing-header-partner-good-dog' : ''}`\n + `${isUSAA ? 'Landing-header-partner-usaa' : ''}`}\n >\n {renderLeftContent()}\n\n {partnerLogo()}\n </div>\n </header>\n );\n};\n\nexport { LandingHeader };\n","import React from 'react';\nimport { ModalAddPet } from '../common/modalAddPet/ModalAddPet';\nimport './LandingRightContainer.css';\n\nconst LandingRightContainer = ({\n isPartner = false,\n partnerRowInformation,\n triggerValidation = false,\n}) => (\n <div className=\"Landing-right-container\" role=\"main\">\n <div className=\"Landing-right-card-container\">\n <div\n className={`Landing-right-card ${\n isPartner ? 'Landing-right-card-partner' : ''}`}\n >\n <ModalAddPet\n getQuote\n partnerRowInformation={partnerRowInformation}\n show\n validateOnMount={triggerValidation}\n />\n </div>\n </div>\n </div>\n);\n\nexport { LandingRightContainer };\n","import React, { useRef } from 'react';\nimport { useHtmlInjection } from '../../hooks/useHtmlInjection';\nimport './LandingLeftContainer.css';\n\nconst PartnerInformationRow = ({\n partnerImage,\n subtitle,\n title,\n}) => {\n const subtitleRef = useRef();\n useHtmlInjection({\n classNameContainer: 'Landing-discount-value',\n content: subtitle,\n ref: subtitleRef,\n });\n\n return (\n <div className=\"Landing-partner-information-row\">\n {partnerImage ? (\n <>\n <img\n alt=\"\"\n className=\"Landing-discount-tag-image\"\n src={partnerImage}\n />\n\n <div className=\"Landing-discount-text-container\">\n <span className=\"Landing-discount-text\">{title}</span>\n\n <span ref={subtitleRef} />\n </div>\n </>\n ) : (\n <span className=\"Landing-coverage-information-text\">{subtitle}</span>\n )}\n </div>\n );\n};\n\nconst LandingLeftContainer = ({\n partnerName,\n partnerRowInformation = {\n detailMessage: { Content: '' },\n membersInfo: [],\n },\n partnerWelcomeText = '',\n}) => (\n <>\n <div className=\"Landing-left-container\" role=\"contentinfo\">\n <h1 className=\"Landing-welcome-title\">\n Welcome,\n <br aria-hidden=\"true\" />\n {`${partnerName || '(Your Company)!'}`}\n </h1>\n\n <p className=\"Landing-pet-insurance-sub-text\">\n {partnerWelcomeText}\n </p>\n\n <p className=\"Landing-pet-insurance-detail-text No-mobile\">\n {partnerRowInformation?.detailMessage?.Content}\n </p>\n\n <div className=\"Landing-partner-row-container\">\n {partnerRowInformation?.membersInfo?.map((row) => (\n <PartnerInformationRow\n key={row.Order}\n partnerImage={row.Image}\n subtitle={row.Content}\n title={row.Title}\n />\n ))}\n </div>\n </div>\n </>\n);\n\nexport { LandingLeftContainer };\n","import React, { useRef, useMemo } from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport { FOOTER_TEXT_BASE } from '../../constants';\nimport {\n useHtmlInjection,\n useSessionFooter,\n useTranslations,\n usePartnerNotes,\n} from '../../hooks';\nimport { usePartnersData } from '../../partners/usePartnersData';\n\nimport './LandingFooter.css';\nimport { FooterLinks } from '../common/FooterLinks';\n\nconst LandingFooter = ({ refer = '' }) => {\n const store = useSelector(({ quoting }) => ({ quoting }), shallowEqual);\n const { t } = useTranslations('landing');\n const notesRef = useRef();\n const footerRef = useRef();\n const sessionFooter = useSessionFooter();\n const disclaimers = usePartnerNotes();\n const { isGoodDog, isCostco } = usePartnersData();\n\n const disclaimerReduced = useMemo(() => {\n if (isCostco && disclaimers.length > 1) {\n return disclaimers[1].Content;\n }\n return disclaimers\n .reduce((accumulator, current) => `${accumulator}${current.Content}`, '');\n }, [disclaimers, isCostco]);\n\n useHtmlInjection({\n classNameContainer: 'Landing-footer-app-logo-text',\n content: disclaimerReduced,\n ref: notesRef,\n });\n\n const footerClassName = isGoodDog\n ? 'Landing-footer-good-dog' : 'Landing-footer';\n\n const footerContent = useMemo(() => {\n // partner\n if (refer) {\n // then waits for the custom session partner response\n if (store.quoting.partners.loaded) {\n return sessionFooter || FOOTER_TEXT_BASE;\n }\n\n return '';\n }\n\n // no partner, so default footer content\n return FOOTER_TEXT_BASE;\n }, [sessionFooter, refer, store.quoting.partners]);\n\n useHtmlInjection({\n classNameContainer: 'Landing-footer-app-logo-text',\n content: footerContent,\n elementType: 'p',\n ref: footerRef,\n });\n\n return (\n <footer className=\"Landing-footer-container\">\n {isGoodDog && (\n <h4>{t('goodDog.footer', { date: new Date().getFullYear() })}</h4>\n )}\n\n <FooterLinks />\n\n <div className=\"Landing-footer-app-logo-container\">\n <div ref={notesRef} />\n\n <div ref={footerRef} className={footerClassName} />\n </div>\n </footer>\n );\n};\n\nexport { LandingFooter };\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport './VipSupportBanner.css';\nimport { usePartnersData } from '../../../partners/usePartnersData';\n\nconst VipSupportBanner = () => {\n const { t } = useTranslation('landing');\n const { data, isCostco, isPartner } = usePartnersData();\n const { SupportLabel, SupportPhoneNumber, SupportSchedule } = data;\n\n const title = isCostco ? 'title' : 'titleGoodDog';\n\n if (!isPartner) {\n return null;\n }\n\n return (\n <div className=\"Vip-support-main-container\">\n <h2 className=\"Vip-support-title\">{t(`vipSupportBanner.${title}`)}</h2>\n\n <span className=\"Vip-support-description\">\n {`${SupportLabel} ${SupportPhoneNumber}`}\n </span>\n\n <span className=\"Vip-support-schedule\">\n {SupportSchedule}\n </span>\n </div>\n );\n};\n\nexport { VipSupportBanner };\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport queryString from 'query-string';\nimport { LandingHeader } from './LandingHeader';\nimport { LandingRightContainer } from './LandingRightContainer';\nimport { LandingLeftContainer } from './LandingLeftContainer';\nimport { LandingFooter } from './LandingFooter';\nimport FigoLoadingOverlay from '../common/FigoLoadingOverlay';\nimport {\n partnerIdLoaded,\n resetState,\n saveNewPetAge,\n saveNewPetBreed,\n saveNewPetEmail,\n saveNewPetGroupCodeDscr,\n saveNewPetName,\n saveNewPetPromoCode,\n saveNewPetSex,\n saveNewPetType,\n saveNewPetZipCode,\n saveUtmParams,\n} from '../../actions';\nimport {\n formatParameters,\n getUtmParams,\n setSessionStorage,\n removeSessionStorage,\n} from '../../util';\nimport { usePartnerSubId } from '../../hooks';\nimport { ComingSoonModal } from './ComingSoonModal';\nimport { VipSupportBanner } from './vipSupportBanner';\nimport { TemporaryMessage } from '../quoting/TemporaryMessage';\n\nimport { usePartnersData } from '../../partners/usePartnersData';\nimport { PetGender, PetType } from '../../constants';\n\nconst LandingPage = () => {\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n const location = useLocation();\n const parametersRaw =\n useMemo(() => queryString.parse(location.search), [location.search]);\n const parameters =\n useMemo(() => formatParameters(parametersRaw), [parametersRaw]);\n const disclaimerRef = useRef();\n const [triggerValidation, setTriggerValidation] = useState(false);\n\n const partnerData = usePartnersData();\n\n useEffect(() => {\n dispatch(resetState());\n setSessionStorage({ data: {}, key: 'store.quoting' });\n removeSessionStorage('store.mounted');\n const {\n email,\n groupCode,\n groupCodeDscr,\n petName,\n petSex,\n petType,\n petZipCode,\n refer,\n } = parameters || {};\n\n if (petName) {\n dispatch(saveNewPetName(petName));\n }\n\n if (petType) {\n let type = null;\n\n if (PetType.Dog.name === petType) {\n type = PetType.Dog;\n } else if (PetType.Cat.name === petType) {\n type = PetType.Cat;\n }\n\n if (type) {\n dispatch(saveNewPetType(type));\n }\n }\n\n if (petSex) {\n let type = null;\n\n if (PetGender.Female.name === petSex) {\n type = PetGender.Female;\n } else if (PetGender.Male.name === petSex) {\n type = PetGender.Male;\n }\n\n if (type) {\n dispatch(saveNewPetSex(type));\n }\n }\n\n if (email) {\n dispatch(saveNewPetEmail(email));\n }\n\n if (petZipCode) {\n dispatch(saveNewPetZipCode(petZipCode));\n }\n\n if (groupCode) {\n dispatch(saveNewPetPromoCode(groupCode));\n }\n\n if (groupCodeDscr) {\n dispatch(saveNewPetGroupCodeDscr(groupCodeDscr));\n }\n\n setTriggerValidation(!!(petName\n || petSex\n || petType\n || email\n || petZipCode\n || groupCode\n || groupCodeDscr));\n\n if (refer) {\n dispatch(partnerIdLoaded(refer));\n }\n\n const utmParams = getUtmParams(parametersRaw);\n\n if (Object.keys(utmParams).length) {\n dispatch(saveUtmParams(utmParams));\n }\n }, [dispatch, parameters, parametersRaw]);\n\n // populate age if fond on query params `petAge`\n useEffect(() => {\n if (store.isAgeDataLoading || !parameters.petAge) {\n return;\n }\n\n const ageFound = store.ageData\n .find(({ Description }) => Description === parameters.petAge);\n\n if (ageFound) {\n dispatch(saveNewPetAge(ageFound.Description));\n }\n }, [dispatch, store.ageData, store.isAgeDataLoading, parameters.petAge]);\n\n // populate breed if fond on query params `petBreed`\n useEffect(() => {\n if (store.isBreedDataLoading || !parameters.petBreed) {\n return;\n }\n\n const breedFound = store.breedData\n .find(({ BreedName }) => BreedName === parameters.petBreed);\n\n if (breedFound) {\n dispatch(saveNewPetBreed({\n petBreed: breedFound.BreedName,\n petBreedId: breedFound.Id,\n }));\n }\n }, [\n dispatch,\n store.breedData,\n store.isBreedDataLoading,\n parameters.petBreed,\n ]);\n\n usePartnerSubId();\n\n const { sessionInformation: {\n validateZipCodeLoading,\n } } = store;\n\n const showLoadingModal = partnerData.loading || validateZipCodeLoading;\n const {\n isPartner,\n data: {\n CustomFields,\n WelcomeText,\n WelcomeTitle,\n },\n } = partnerData;\n\n const partnerRowInformation = useMemo(() => {\n if (!CustomFields || !CustomFields.length) {\n return {};\n }\n\n return {\n detailMessage: CustomFields.find((field) => field.Name\n === 'DetailMessageWelcome'),\n membersInfo: CustomFields.filter((field) => field.Section === 'landing'),\n };\n }, [CustomFields]);\n\n const LandingBodyContent = () => {\n if (isPartner) {\n return (\n <div className=\"App-landing-body-content\">\n <LandingLeftContainer\n isPartner={isPartner}\n partnerName={WelcomeTitle}\n partnerRowInformation={partnerRowInformation}\n partnerWelcomeText={WelcomeText}\n />\n\n <div ref={disclaimerRef} />\n\n <LandingRightContainer\n isPartner\n partnerRowInformation={partnerRowInformation}\n triggerValidation={triggerValidation}\n />\n </div>\n );\n }\n\n return (\n <main className=\"App-landing-body-content\">\n <LandingRightContainer triggerValidation={triggerValidation} />\n </main>\n );\n };\n\n return (\n <main className=\"App-landing-app-main\">\n <div className=\"App-landing-app\">\n <LandingHeader />\n\n {LandingBodyContent()}\n\n <TemporaryMessage sticky />\n </div>\n\n <ComingSoonModal />\n\n <VipSupportBanner />\n\n <LandingFooter refer={parameters.refer} />\n\n <FigoLoadingOverlay visible={showLoadingModal} />\n </main>\n );\n};\n\nexport default LandingPage;\n","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport queryString from 'query-string';\nimport { useLocation } from 'react-router-dom';\nimport { loadSubIdSynonymsData, saveSubId } from '../actions';\nimport { formatParameters, validatePartnerIds } from '../util';\n\nconst usePartnerSubId = () => {\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n const [firstMount, setFirstMount] = useState(true);\n const location = useLocation();\n const parametersRaw = queryString.parse(location.search);\n const parameters = formatParameters(parametersRaw);\n\n useEffect(() => {\n if (!store.subIdSynonyms.length && firstMount) {\n dispatch(loadSubIdSynonymsData());\n }\n }, [dispatch, store.subIdSynonyms, firstMount]);\n\n useEffect(() => {\n if (store.subIdSynonyms\n && store.subIdSynonyms.length\n && parameters\n && firstMount\n ) {\n const partnerId = validatePartnerIds({\n parameters,\n synonyms: store.subIdSynonyms,\n });\n dispatch(saveSubId(partnerId));\n setFirstMount(false);\n }\n }, [store.subIdSynonyms, dispatch, parameters, firstMount]);\n};\n\nexport { usePartnerSubId };\n","import React, { useEffect, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport cloudsIcon from '../../assets/clouds-icon-citron.svg';\nimport { CUSTOMER_SERVICE_PHONE_NUMBER } from '../../constants';\nimport { useTranslations } from '../../hooks';\nimport './ModalError.css';\n\nconst ModalError = ({\n buttonText = '',\n message = '',\n onButtonClick = () => { },\n}) => {\n const store = useSelector(({ quoting }) => quoting);\n const { partners: { data, isCostco } } = store;\n const buttonRef = useRef(null);\n const { t } = useTranslations('quoting');\n\n useEffect(() => {\n if (buttonRef.current) {\n buttonRef.current.focus();\n }\n }, []);\n\n const errorMessage = `Sorry, we're unable to provide a quote at this time.\n Please contact Customer Service at ${isCostco\n ? data.SupportPhoneNumber.replace('.', '')\n : CUSTOMER_SERVICE_PHONE_NUMBER} to purchase a policy.`;\n\n return (\n <div className=\"Modal-error-container\" role=\"alert\">\n <img\n alt=\"\"\n className=\"Modal-error-clouds-image\"\n src={cloudsIcon}\n />\n\n <h1 className=\"Modal-error-title\" id=\"genericError\">\n {t('genericModal.errorOccured')}\n </h1>\n\n <h2 className=\"Modal-error-description\">\n {message || errorMessage}\n </h2>\n\n <button\n ref={buttonRef}\n aria-label={buttonText}\n className=\"Modal-error-button\"\n onClick={onButtonClick}\n type=\"button\"\n >\n <span className=\"Modal-error-button-text\">\n {buttonText}\n </span>\n </button>\n </div>\n );\n};\n\nexport default ModalError;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport queryString from 'query-string';\nimport { closeErrorModal } from '../../actions';\nimport { PROCEED_WITHOUT_PARTNER_CHANGED } from '../../actions/types';\nimport ModalContainer from './ModalContainer';\nimport ModalError from './ModalError';\nimport { LANDING_URL } from '../../routes';\nimport { useB2CInfo } from '../../hooks';\nimport { getPartnerData } from '../../partners/partners.util';\n\nconst GenericErrorModalContainer = () => {\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n const {\n message,\n parameters,\n partners: { partnerId },\n redirectToLanding,\n utmParams,\n } = store;\n const history = useHistory();\n const location = useLocation();\n const { logoutB2C } = useB2CInfo();\n\n function goToLanding() {\n if (location.pathname.toLowerCase() !== LANDING_URL) {\n let landingUrl = LANDING_URL;\n const stringifiedParams = queryString.stringify(utmParams);\n\n if (partnerId) {\n const partnerURL = getPartnerData(partnerId)?.fastRoute || LANDING_URL;\n landingUrl = `${partnerURL}${\n stringifiedParams ? `?${stringifiedParams}` : ''\n }`;\n } else {\n if (parameters.groupCode) {\n const str = `?groupCode=${parameters.groupCode}&${stringifiedParams}`;\n landingUrl += str;\n } else {\n landingUrl += `?${stringifiedParams}`;\n }\n\n dispatch({ type: PROCEED_WITHOUT_PARTNER_CHANGED });\n }\n logoutB2C({ logoutUrl: landingUrl });\n\n history.push(landingUrl, {\n focus: true,\n });\n }\n }\n\n function handleErrorModalOutClick() {\n dispatch(closeErrorModal());\n goToLanding();\n }\n\n useEffect(() => {\n if (redirectToLanding && Object.keys(parameters).length) {\n goToLanding();\n }\n\n // eslint-disable-next-line\n }, [redirectToLanding]);\n\n return (\n <ModalContainer\n cancellable\n handleOutClick={handleErrorModalOutClick}\n idTitle=\"genericError\"\n show={message}\n >\n <ModalError\n buttonText=\"Got It\"\n onButtonClick={handleErrorModalOutClick}\n />\n </ModalContainer>\n );\n};\n\nexport default GenericErrorModalContainer;\n","export default __webpack_public_path__ + \"static/media/close.2d56929d.svg\";","export default __webpack_public_path__ + \"static/media/down-arrow.0a36e528.svg\";","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { setCurrentQuoteStep } from '../../../actions';\nimport { QuotingSteps } from '../../../constants';\nimport { Header } from '../header/Header';\nimport './PurchasePage.css';\n\nconst PurchasePage = ({ children, success = false }) => {\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(setCurrentQuoteStep(QuotingSteps.Welcome.value));\n }, [dispatch]);\n\n return (\n <div className=\"Purchase-page-container\">\n <Header isError={!success} />\n\n <div className=\"Purchase-page-content-container\">\n {children}\n </div>\n </div>\n );\n};\n\nexport default PurchasePage;\n","export default __webpack_public_path__ + \"static/media/questions.74959a02.svg\";","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { CUSTOMER_SERVICE_PHONE_NUMBER } from '../../constants';\nimport deskHelpIcon from '../../assets/purchase/questions.svg';\nimport './QuestionsInfo.css';\nimport { usePartnersData } from '../../partners/usePartnersData';\n\nconst QuestionsInfo = ({ isPurchase = false }) => {\n const { t } = useTranslation('quoting');\n const { data, isCostco, isPartner } = usePartnersData();\n\n let title = t('questionsSection.questions');\n let supportPhoneNumber = `${CUSTOMER_SERVICE_PHONE_NUMBER}.`;\n let supportDesc = t('questionsSection.supportDesc');\n let supportSchedule = t('questionsSection.supportSchedule');\n\n if (isPartner && data.SupportPhoneNumber) {\n supportPhoneNumber = data.SupportPhoneNumber;\n }\n\n if (isCostco) {\n title = t('questionsSection.vipSupport');\n supportPhoneNumber = data.SupportPhoneNumber;\n supportDesc = data.SupportLabel;\n supportSchedule = data.SupportSchedule;\n }\n\n return (\n <div className={'Questions-sidebar-container Questions-innerent'\n + `${isPurchase ? ' Questions-purchase' : ' '}`}\n >\n <div className=\"Questions-sidebar-header\">\n <img\n alt=\"\"\n className=\"Questions-sidebar-help-desk-icon\"\n src={deskHelpIcon}\n />\n\n <h2\n className={`${isPurchase ? 'Questions-sidebar-title-purchase'\n : 'Questions-sidebar-title '}`}\n >\n {title}\n </h2>\n </div>\n\n <div className=\"Question-sidebar-text-mobile\">\n <p className=\"Questions-sidebar-questions-text\">\n {supportDesc} {supportPhoneNumber}\n </p>\n\n <p className={'Questions-sidebar-questions-text '\n + 'Questions-sidebar-questions-text-subtitle'}\n >\n {supportSchedule}\n </p>\n </div>\n </div>\n );\n};\n\nexport { QuestionsInfo };\n","export default __webpack_public_path__ + \"static/media/error.1a738b97.svg\";","import React from 'react';\n\nimport errorIcon from '../../../assets/purchase/error.svg';\n\nimport './PetPurchaseResult.css';\n\nconst PetPurchaseFailureCard = ({ error, petIcon, petName, t }) => (\n <div className=\"Pet-purchase-result-failure-card Pet-purchase-result-error\">\n <div className={'Pet-purchase-result-summary'\n + `${error ? '' : ' Pet-purchase-result-summary-no-error '}`}\n >\n <div className=\"Pet-flex\">\n <img alt=\"\" aria-hidden src={petIcon} />\n\n <div className=\"Pet-purchase-result-failure-card-margin\">\n <span className=\"Pet-purchase-result-name\">{petName}</span>\n </div>\n </div>\n\n <div\n className={'Pet-purchase-result-description-container'\n + ' Pet-purchase-result-top'}\n >\n <img alt=\"\" aria-hidden src={errorIcon} />\n\n <span className=\"Pet-purchase-result-description\">\n <span className=\"Pet-purchase-result-description-bold\">\n {t('purchaseError')}{`${error ? ': ' : ''}`}\n </span>\n\n {error}\n </span>\n </div>\n </div>\n </div>\n);\n\nexport { PetPurchaseFailureCard };\n","export default __webpack_public_path__ + \"static/media/ok.fa99499a.svg\";","import React from 'react';\n\nimport okIcon from '../../../assets/purchase/ok.svg';\n\nimport './PetPurchaseResult.css';\n\nconst PetPurchaseSuccessCard = ({\n petIcon,\n petName,\n policyNumber,\n t,\n}) => (\n <div className=\"Pet-purchase-result\">\n <img alt=\"\" aria-hidden src={petIcon} />\n\n <div className=\"Pet-purchase-result-summary-content\">\n <span>\n <div className=\"Pet-purchase-result-name\">{petName}</div>\n\n <div className=\"Pet-purchase-result-policy-number\">\n {t('policyNumber', { policyNumber })}\n </div>\n </span>\n\n <div className=\"Pet-purchase-result-description-container\">\n <img alt=\"\" aria-hidden src={okIcon} />\n\n <span className=\"Pet-purchase-result-policy-purchased\">\n {t('policyPurchased')}\n </span>\n </div>\n </div>\n </div>\n);\n\nexport { PetPurchaseSuccessCard };\n","export default __webpack_public_path__ + \"static/media/cat-placeholder.373549be.svg\";","export default __webpack_public_path__ + \"static/media/dog-placeholder.c4bebb7a.svg\";","import React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { PetPurchaseFailureCard } from './PetPurchaseFailureCard';\nimport { PetPurchaseSuccessCard } from './PetPurchaseSuccessCard';\n\nimport catIcon from '../../../assets/purchase/cat-placeholder.svg';\nimport dogIcon from '../../../assets/purchase/dog-placeholder.svg';\n\nimport './PetPurchaseResult.css';\n\nconst PetPurchaseResult = ({\n errorMessage = '',\n errorType = '',\n isCat = false,\n petName = '',\n policyNumber = '',\n success = false,\n}) => {\n const { t } = useTranslation('purchaseResult');\n\n const petIcon = useMemo(() => {\n if (isCat) {\n return catIcon;\n }\n\n return dogIcon;\n }, [isCat]);\n\n if (success) {\n return (\n <PetPurchaseSuccessCard\n petIcon={petIcon}\n petName={petName}\n policyNumber={policyNumber}\n t={t}\n />\n );\n }\n\n return (\n <PetPurchaseFailureCard\n error={errorMessage}\n errorType={errorType}\n petIcon={petIcon}\n petName={petName}\n t={t}\n />\n );\n};\n\nexport { PetPurchaseResult };\n","export default __webpack_public_path__ + \"static/media/ios-navy.fabf6bb8.svg\";","export default __webpack_public_path__ + \"static/media/google-navy.e47824b5.svg\";","export default __webpack_public_path__ + \"static/media/qr.6cdeb9af.svg\";","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport loadingSpinner from '../../../assets/spinner.json';\nimport ios from '../../../assets/purchase/ios-navy.svg';\nimport google from '../../../assets/purchase/google-navy.svg';\nimport qr from '../../../assets/purchase/qr.svg';\n\nimport { sendSMSAppsLinks } from '../../../actions';\nimport { phoneMask, testOnlyNumber } from '../../../util';\nimport { APP_STORE_URL, GOOGLE_PLAY_URL } from '../../../constants';\nimport FigoLottie from '../../common/FigoLottie';\nimport './PetCloudSection.css';\n\nconst PetCloudSection = ({ isFullySuccess = true, isCardFooter = false }) => {\n const store = useSelector(({ quoting }) => quoting);\n const {\n newCustomer: { phoneNumber },\n purchase: {\n sendingMessage,\n },\n } = store;\n\n const [messageSent, setMessageSent] = useState(false);\n const [\n inputPhoneValue,\n setInputPhoneValue] = useState(() => phoneMask(phoneNumber));\n const { t } = useTranslation('purchaseResult');\n const dispatch = useDispatch();\n\n function sendAppsLinks() {\n if (messageSent) {\n return;\n }\n\n const toPhone = phoneMask(inputPhoneValue);\n dispatch(sendSMSAppsLinks({ toPhone }));\n setMessageSent(true);\n }\n\n function onChangeHandlePhone(event) {\n const { value } = event.target;\n const sanitizeText = value ? value.replace(/-/g, '') : '';\n const onlyNumbersValue = testOnlyNumber(sanitizeText)\n ? sanitizeText\n : sanitizeText.replace(/\\D/g, '');\n\n setInputPhoneValue(phoneMask(onlyNumbersValue));\n }\n\n const getAriaLabelSendMessage = () => {\n let label = t('textMe');\n\n if (sendingMessage) {\n label = t('loading');\n } else if (messageSent) {\n label = t('messageSent');\n }\n\n return label;\n };\n\n const renderLoadingOrButton = () => {\n if (sendingMessage) {\n return (\n <div className=\"Pet-cloud-section-text-me-a-link-complete\">\n <FigoLottie animationData={loadingSpinner} height={60} width={60} />\n </div>\n );\n }\n\n if (messageSent) {\n return (\n <span\n className=\"Pet-cloud-section-text-me-a-link-complete\"\n id=\"sendMeLink\"\n >\n {t('messageSent')}\n </span>\n );\n }\n\n return (\n <span className=\"Pet-cloud-section-text-me-a-link\" id=\"sendMeLink\">\n {t('textMe')}\n </span>\n );\n };\n\n return (\n <div\n className={'Pet-cloud-section '\n + `${isCardFooter ? 'Pet-cloud-section-as-card' : ''}`}\n >\n <h3>{t('petCloudApp')}</h3>\n\n <div\n className=\"Pet-cloud-section-content\"\n style={{ flexDirection: isFullySuccess ? 'column' : 'row' }}\n >\n <div className=\"Pet-cloud-section-sms\">\n <p className=\"Pet-cloud-section-setup\">{t('setup')}</p>\n\n <div\n className={'Pet-cloud-section-text-me'\n + `${!isCardFooter ? ' Pet-cloud-text-me-as-card' : ''}`}\n >\n <input\n aria-label=\"Phone Number\"\n className=\"Pet-cloud-section-input-phone\"\n disabled={messageSent}\n maxLength={12}\n onChange={onChangeHandlePhone}\n type=\"text\"\n value={inputPhoneValue}\n />\n\n <button\n aria-disabled={messageSent}\n aria-label={getAriaLabelSendMessage()}\n aria-live=\"assertive\"\n className=\"Pet-cloud-section-button-no-style\"\n onClick={sendAppsLinks}\n type=\"button\"\n >\n {renderLoadingOrButton()}\n </button>\n </div>\n </div>\n\n <div className=\"Pet-cloud-section-options\">\n <div\n className={'Pet-cloud-section-desktop-login'\n + `${isCardFooter ? ' Pet-cloud-login-as-footer' : ''}`}\n >\n <span className=\"Pet-cloud-section-desktop-text\">\n {t('loginAt')} \n </span>\n\n <a\n className=\"Pet-cloud-section-desktop-link\"\n href={process.env.REACT_APP_PETCLOUD_URL}\n >\n mypetcloud.com\n </a>\n </div>\n\n <div\n className={'Pet-cloud-section-apps '\n + `${!isCardFooter ? 'Pet-cloud-apps-as-card' : ''}`}\n style={{ flexDirection: isFullySuccess ? '' : 'row-reverse' }}\n >\n <div className=\"Pet-cloud-section-stores\">\n <div className=\"Pet-cloud-section-google-play\">\n <a\n aria-label={t('downloadApp', { store: 'Google play Store' })}\n href={GOOGLE_PLAY_URL}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <img\n alt=\"\"\n src={google}\n />\n </a>\n </div>\n\n <div className=\"Pet-cloud-section-app-store\">\n <a\n aria-label={t('downloadApp', { store: 'Apple Store' })}\n href={APP_STORE_URL}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <img\n alt=\"\"\n src={ios}\n />\n </a>\n </div>\n </div>\n\n <img alt=\"\" src={qr} />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport { PetCloudSection };\n","export default __webpack_public_path__ + \"static/media/check.f2b326a2.svg\";","import React from 'react';\nimport './Toggle.css';\n\nconst Toggle = ({\n ariaProps,\n checked = false,\n children,\n className = '',\n id = '',\n labelClassName = '',\n name = '',\n onChange = () => { },\n readOnly = false,\n}) => (\n <label\n className={`Toggle-wrapper ${className}`}\n htmlFor={id}\n >\n <span className=\"Toggle\">\n <input\n {...ariaProps}\n aria-labelledby={`${id}-label`}\n checked={checked}\n className=\"Toggle-input\"\n id={id}\n name={name}\n onChange={onChange}\n readOnly={readOnly}\n role=\"switch\"\n type=\"checkbox\"\n />\n\n <span className=\"Toggle-slidebar\" />\n\n <span className=\"Toggle-slider\" />\n </span>\n\n <p className={`Toggle-content ${labelClassName}`} id={`${id}-label`}>\n {children}\n </p>\n </label>\n);\n\nexport default Toggle;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport checkIcon from '../../../assets/purchase/check.svg';\nimport { SMSSignedUp } from '../../../actions';\nimport {\n PRIVACY_POLICY_LINK,\n TEN_DIGIT_NUMBER,\n TERMS_OF_USE_LINK_SMS,\n} from '../../../constants';\nimport { phoneMask } from '../../../util';\n\nimport InputWithError from '../../common/InputWithError';\nimport { LoadingButton } from '../../common/LoadingButton';\nimport Toggle from '../../common/Toggle';\n\nimport './TextAlertsSection.css';\n\nconst TextAlertsSection = () => {\n const [phoneNumber, setPhoneNumber] = useState('');\n const [phoneNumberError, setPhoneNumberError] = useState('');\n const [acceptSMS, setAcceptSMS] = useState(false);\n const [signUpError, setSignUpError] = useState('');\n const store = useSelector(({ quoting }) => ({\n purchase: quoting.purchase,\n sessionInformation: quoting.sessionInformation,\n textAlerts: quoting.textAlerts,\n }));\n const { t } = useTranslation('purchaseResult');\n const dispatch = useDispatch();\n\n useEffect(() => {\n setSignUpError(store.textAlerts.error ? t('somethingWentWrong') : '');\n }, [t, store.textAlerts.error]);\n\n const signUpAvailable = useMemo(() => (acceptSMS\n && TEN_DIGIT_NUMBER.test(phoneNumber)), [acceptSMS, phoneNumber]);\n\n function handlePhoneNumberChange(event) {\n setPhoneNumber(event.target.value.replace(/\\D/g, ''));\n }\n\n function handleSwitchChange() {\n setSignUpError('');\n setAcceptSMS((prevAcceptSMS) => {\n if (!phoneNumber.length) {\n setPhoneNumberError(!prevAcceptSMS ? t('requiredPhone') : '');\n }\n return !prevAcceptSMS;\n });\n }\n\n function handlePhoneNumberBlur() {\n if (phoneNumber.length && !TEN_DIGIT_NUMBER.test(phoneNumber)) {\n setPhoneNumberError(t('invalidPhoneNumber'));\n } else if (acceptSMS && !phoneNumber.length) {\n setPhoneNumberError(t('requiredPhone'));\n } else {\n setPhoneNumberError('');\n }\n }\n\n function handlePhoneNumberFocus() {\n setPhoneNumberError('');\n setSignUpError('');\n }\n\n function handleSignUp() {\n if (signUpAvailable) {\n const { sessionInformation, purchase } = store;\n dispatch(SMSSignedUp({\n customerId: purchase.customerId,\n diamondClientId: sessionInformation.nopCommerceUser.DiamonClientdId,\n email: sessionInformation.userEmail,\n phoneNumber,\n policyNumbers: purchase.policyNumbers\n .map((policyBuyed) => policyBuyed.PolicyNumber),\n }));\n return;\n }\n\n if (!acceptSMS) {\n setSignUpError(t('requiredToggle'));\n } else if (!phoneNumber.length) {\n setPhoneNumberError(t('requiredPhone'));\n }\n }\n\n const openExternal = (url) => () => {\n window.open(url, '_blank');\n };\n\n return (\n <div className=\"Text-alerts-section\">\n <h3>{t('textAlertsTitle')}</h3>\n\n <p className=\"Text-alerts-section-desc\">{t('textAlertsDescription')}</p>\n\n <InputWithError\n containerClass=\"Text-alerts-phone\"\n id=\"phoneNumberSMS\"\n label={t('phoneNumber')}\n labelClass=\"Text-alerts-phone-label\"\n labelError={phoneNumberError}\n maxLength={12}\n onBlur={handlePhoneNumberBlur}\n onChange={handlePhoneNumberChange}\n onFocus={handlePhoneNumberFocus}\n placeholder={t('optional')}\n showError={phoneNumberError}\n type=\"text\"\n value={phoneMask(phoneNumber)}\n />\n\n <Toggle\n checked={acceptSMS}\n className=\"Text-alert-toggle\"\n id=\"smsAlertsToggle\"\n labelClassName=\"Text-alert-toggle-label\"\n onChange={handleSwitchChange}\n >\n <b>{t('smsDisclaimer.start')}</b>\n\n  {t('smsDisclaimer.disclaimer')}\n\n <button\n className=\"Text-alert-terms-button\"\n onClick={openExternal(TERMS_OF_USE_LINK_SMS)}\n type=\"button\"\n >\n {t('smsDisclaimer.termsAndConditions')}\n </button>\n\n  & \n\n <button\n className=\"Text-alert-terms-button\"\n onClick={openExternal(PRIVACY_POLICY_LINK)}\n type=\"button\"\n >\n {t('smsDisclaimer.privacyPolicy')}\n </button>\n </Toggle>\n\n <div aria-live=\"polite\" className=\"Text-alerts-section-submit-section\">\n {store.textAlerts.success ? (\n <div className=\"Text-alert-success\">\n <img alt=\"\" src={checkIcon} />\n\n <span>{t('successText')}</span>\n </div>\n ) : (\n <LoadingButton\n buttonEvents={{\n 'aria-disabled': !!signUpError,\n onClick: handleSignUp,\n }}\n className=\"Text-alerts-section-submit\"\n isLoading={store.textAlerts.loading}\n loadingColor=\"white\"\n submit={false}\n >\n {t('signUp')}\n </LoadingButton>\n )}\n </div>\n\n <span aria-live=\"polite\" className=\"Text-alert-error\">{signUpError}</span>\n </div>\n );\n};\n\nexport { TextAlertsSection };\n","import React, { useEffect, useLayoutEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\n\nimport {\n extolePurchaseCompleted,\n removeQuoteSelectedValueById,\n resetPurchaseData,\n} from '../../../actions';\nimport { resetOneInInformation } from '../../../actions/oneInc';\nimport { useExtole, useOneIncScript, useResponsive } from '../../../hooks';\nimport { useDataLayerPurchase } from '../../../gtmDataLayer';\n\nimport closeIcon from '../../../assets/close.svg';\nimport downArrow from '../../../assets/purchase/down-arrow.svg';\n\nimport PurchasePage from './PurchasePage';\nimport { QuestionsInfo } from '../QuestionsInfo';\nimport { PetPurchaseResult } from './PetPurchaseResult';\nimport { PetCloudSection } from './PetCloudSection';\nimport { TextAlertsSection } from './TextAlertsSection';\nimport { OneIncModal } from '../../common/OneIncModal';\n\nimport './PurchaseSuccess.css';\nimport { URL_PURCHASE_RETRY } from '../../../routes';\nimport { closeWindow, useRetryPurchase } from '../../../util';\nimport { PURCHASE_ERROR_TYPES } from '../../../constants';\n\nconst { paymentMethodError } = PURCHASE_ERROR_TYPES;\n\nconst PurchaseSuccess = () => {\n const { t } = useTranslation('purchaseResult');\n const store = useSelector(({ quoting }) => quoting);\n const { isMobile } = useResponsive();\n const dispatch = useDispatch();\n const history = useHistory();\n const {\n inApp,\n inLoginApp,\n purchase: {\n incompletePurchases,\n policyNumbers,\n },\n } = store;\n\n // inApp: getQuote with temporally token\n // inLoginApp: signUp (no free flags, flow deprecated)\n const fromApp = inApp || inLoginApp;\n\n useOneIncScript();\n\n const extoleEvents = useExtole();\n useEffect(() => {\n if (store.purchase.extolePurchaseComplete) {\n return;\n }\n\n extoleEvents.sendPolicyPurchaseEvent();\n dispatch(extolePurchaseCompleted(true));\n }, [\n dispatch,\n extoleEvents,\n store.purchase.extolePurchaseComplete,\n store.purchase.success,\n ]);\n\n // GTM\n useDataLayerPurchase();\n\n const isFullySuccess = !incompletePurchases.length\n && !!policyNumbers.length;\n\n const title = useMemo(() => {\n if (incompletePurchases.length && policyNumbers.length) {\n return t('titlePartialSuccess');\n }\n if (incompletePurchases.length && !policyNumbers.length) {\n return t('titleFail');\n }\n\n return t('titleFullySuccess');\n }, [incompletePurchases, policyNumbers, t]);\n\n const text = useMemo(() => {\n if ((incompletePurchases.length && policyNumbers.length)\n || (incompletePurchases.length && !policyNumbers.length)) {\n return (\n <>\n {t('textFailPart1')} \n <strong>{t('textFailPart2')}</strong>\n  {t('textFailPart3')}\n </>\n );\n }\n\n return t('textSuccess', {\n count: policyNumbers.length,\n pet: policyNumbers[0]?.PetName,\n });\n }, [incompletePurchases, policyNumbers, t]);\n\n const handleOnComplete = React.useCallback(() => {\n history.push(URL_PURCHASE_RETRY);\n }, [history]);\n\n const incompletePurchasesByPayment = incompletePurchases\n .filter(((item) => item.ErrorType === paymentMethodError));\n const incompletePurchasesByOther = incompletePurchases\n .filter(((item) => item.ErrorType !== paymentMethodError));\n\n useLayoutEffect(() => {\n dispatch(resetPurchaseData());\n dispatch(resetOneInInformation());\n }, [dispatch]);\n\n useEffect(() => {\n if (incompletePurchasesByPayment.length === 0) {\n return;\n }\n\n [\n ...policyNumbers,\n ...incompletePurchasesByOther,\n ]\n .forEach((policyNumber) => {\n dispatch(removeQuoteSelectedValueById(policyNumber?.PetQuoteId));\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch]);\n\n useEffect(() => {\n if (store?.purchase?.loading || store?.searchParameters) {\n return;\n }\n\n history.push('/');\n }, [history, store]);\n\n return (\n <>\n {/* OneInc modal create here */}\n <div id=\"portalOneContainer\" />\n\n <PurchasePage success={isFullySuccess}>\n <div\n className={'Purchase-result-container '\n + `Purchase-result-card ${isFullySuccess\n ? 'Purchase-result-success-container' : ''}`}\n >\n <div className=\"Purchase-result-content\">\n <div className={'Purchase-result Pet-purchase-result-left'\n + ' Purchase-result-card-mobile'}\n >\n <h1>{title}</h1>\n\n <p className=\"Purchase-result-text\">{text}</p>\n\n <div\n className={'Purchase-result-list '\n + `${isFullySuccess ? 'Purchase-result-list-small' : ''}`}\n role=\"list\"\n >\n {useRetryPurchase ? (\n <>\n {incompletePurchasesByPayment.length > 0 && (\n <>\n <div className=\"Purchase-result-fail-container-ul\">\n <ul>\n {incompletePurchasesByPayment.map((pet) => (\n <li key={pet.PetName}>\n <PetPurchaseResult\n errorMessage={pet.PaymentError}\n isCat={pet.IsCat}\n petName={pet.PetName}\n success={false}\n />\n </li>\n ))}\n </ul>\n\n <OneIncModal\n onComplete={handleOnComplete}\n styleUpdate\n />\n </div>\n </>\n )}\n\n {incompletePurchasesByOther.length > 0 && (\n <>\n <ul>\n {incompletePurchasesByOther.map((pet) => (\n <li key={pet.PetName}>\n <PetPurchaseResult\n errorMessage={pet.PaymentError}\n errorType={pet.ErrorType}\n isCat={pet.IsCat}\n petName={pet.PetName}\n success={false}\n />\n </li>\n ))}\n </ul>\n </>\n )}\n </>\n ) : (\n <>\n <ul>\n {incompletePurchases.map((pet) => (\n <li key={pet.PetName}>\n <PetPurchaseResult\n errorMessage={pet.PaymentError}\n isCat={pet.IsCat}\n petName={pet.PetName}\n success={false}\n />\n </li>\n ))}\n </ul>\n </>\n )}\n\n {policyNumbers.map((pet) => (\n <li key={pet.PolicyNumber}>\n <PetPurchaseResult\n isCat={pet.IsCat}\n petName={pet.PetName}\n policyNumber={pet.PolicyNumber}\n success\n />\n </li>\n ))}\n </div>\n </div>\n\n {!isFullySuccess && !fromApp && (\n <div className=\"Purchase-result-contact\">\n <QuestionsInfo isPurchase />\n </div>\n )}\n </div>\n\n {inLoginApp && (\n <span className=\"Pet-cloud-section-complete-close-window\">\n <img alt=\"\" src={closeIcon} />\n {t('closeTab')}\n </span>\n )}\n\n {inApp && (\n <button\n aria-label=\"Close window\"\n className=\"Purchase-close-button\"\n onClick={closeWindow}\n title=\"Close window\"\n type=\"button\"\n >\n Close This Window\n </button>\n )}\n\n {!isFullySuccess && policyNumbers.length >= 1 && !fromApp && (\n <div className=\"Pet-cloud-section-no-fully-success\">\n <hr aria-hidden />\n\n <PetCloudSection isCardFooter isFullySuccess={false} />\n </div>\n )}\n </div>\n\n {isFullySuccess && !fromApp && (\n <>\n <h2 className=\"Purchase-result-whats-next\">{t('whatsNext')}</h2>\n\n <img\n alt=\"\"\n className=\"Purchase-result-whats-next-icon\"\n src={downArrow}\n />\n\n <p className=\"Purchase-result-whats-next-description\">\n {t('whatsNextText')}\n </p>\n\n <div className=\"Purchase-result-whats-next-cards\">\n <div\n className={'Purchase-result-card-flex1'\n + ' Purchase-result-card-mobile'\n + ' Purchase-result-whats-next-card'}\n >\n <PetCloudSection />\n </div>\n\n {isMobile && (\n <div className=\"Purchase-whats-next-card-separator\" />\n )}\n\n <div\n className={'Purchase-result-card-flex1'\n + ' Purchase-result-card-mobile'\n + ' Purchase-result-whats-next-card'}\n >\n <TextAlertsSection />\n </div>\n </div>\n </>\n )}\n </PurchasePage>\n </>\n );\n};\n\nexport default PurchaseSuccess;\n","/**\n * @Route\n * URL_PURCHASE = '/quoting/purchase/success'\n *\n * @Component\n * src/components/quoting/purchase/PurchaseSuccess.js\n *\n * @Description\n * A purchase event represents when the user reach the confirmation page and\n * generates a Policy completing the transaction\n * This event is fired when the Confirmation Page is Loaded.\n * The information comes from the Session Storage store.quoting key.\n * Be careful: It is a nested object that is difficult to process and prone\n * to errors.\n *\n * @Reference\n * https://developers.google.com/tag-manager/ecommerce-ga4?hl=es\n * #measure_purchases\n */\nimport { useEffect } from 'react';\nimport { dataLayerEvent, getDataLayerPurchaseEvent } from './dataLayer';\nimport { removeSessionStorage, useGoogleTagManager } from '../util';\nimport { STORE_ATTRIBUTE, EMPTY_STRING } from './constants';\n\nexport const useDataLayerPurchase = () => {\n useEffect(() => {\n if (!useGoogleTagManager) {\n return;\n }\n\n // clear the previous ecommerce data object\n dataLayerEvent({ ecommerce: null });\n\n getDataLayerPurchaseEvent()\n .then((purchaseEvent) => {\n if (purchaseEvent.ecommerce.items !== EMPTY_STRING) {\n dataLayerEvent(purchaseEvent);\n }\n removeSessionStorage(STORE_ATTRIBUTE.GTM);\n })\n .catch();\n }, []);\n};\n","import React, { useCallback, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport queryString from 'query-string';\nimport ModalError from '../../common/ModalError';\nimport './PurchaseError.css';\nimport PurchasePage from './PurchasePage';\nimport { resetPurchaseData } from '../../../actions';\nimport { CUSTOMER_SERVICE_PHONE_NUMBER } from '../../../constants';\nimport { closeWindow } from '../../../util';\nimport { URL_YOUR_INFO } from '../../../routes';\n\nconst PurchaseError = () => {\n const store = useSelector(({ quoting }) => quoting);\n const history = useHistory();\n const dispatch = useDispatch();\n const { partners: { data, isCostco }, inApp, utmParams } = store;\n\n const error = `Sorry, we're unable to provide a quote at this time. \n Please contact Customer Service at ${isCostco\n ? data.SupportPhoneNumber.replace('.', '')\n : CUSTOMER_SERVICE_PHONE_NUMBER} to purchase a policy.`;\n\n useEffect(() => {\n dispatch(resetPurchaseData());\n }, [dispatch]);\n\n const handleErrorGoBack = useCallback(() => {\n if (inApp) {\n closeWindow();\n } else {\n history.push({\n pathname: URL_YOUR_INFO,\n search: queryString.stringify(utmParams),\n });\n }\n }, [history, inApp, utmParams]);\n\n return (\n <PurchasePage>\n <div className=\"Purchase-error-container\">\n <ModalError\n buttonText=\"Go Back\"\n message={error}\n onButtonClick={handleErrorGoBack}\n />\n </div>\n </PurchasePage>\n );\n};\n\nexport default PurchaseError;\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport { deleteSession } from '../../actions';\n\nconst Logout = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(deleteSession());\n }, [dispatch]);\n\n return <Redirect to=\"/\" />;\n};\n\nexport default Logout;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n LANDING_URL,\n URL_LOGIN_ACCOUNT,\n URL_PURCHASE_ERROR,\n URL_PURCHASE,\n URL_ROOT_QUOTE,\n URL_YOUR_INFO,\n URL_PURCHASE_BACKEND_ERROR,\n} from '../../routes';\nimport { scrollToElement } from '../../util';\nimport { useBeaconSalesforceScript } from '../../hooks';\n\nconst PageTabTitle = () => {\n const location = useLocation();\n const titlePrefix = 'Figo Pet Insurance |';\n\n useBeaconSalesforceScript();\n\n useEffect(() => {\n switch (location.pathname.toLowerCase()) {\n case LANDING_URL:\n document.title = 'Get a Pet Insurance Quote from Figo';\n break;\n case URL_ROOT_QUOTE:\n document.title = `${titlePrefix} Select Plan`;\n window.scrollTo(0, 0); // scroll to top page\n break;\n case URL_YOUR_INFO:\n document.title = `${titlePrefix} Your Info`;\n scrollToElement('stepHeaderSelectPlan');\n break;\n case URL_PURCHASE:\n document.title = `${titlePrefix} Purchase Complete`;\n window.scrollTo(0, 0); // scroll to top page\n break;\n case URL_PURCHASE_ERROR:\n case URL_PURCHASE_BACKEND_ERROR:\n document.title = `${titlePrefix} Purchase Error`;\n break;\n case URL_LOGIN_ACCOUNT:\n document.title = `${titlePrefix} Login account`;\n window.scrollTo(0, 0); // scroll to top page\n break;\n default:\n document.title = `${titlePrefix} Get A Quote`;\n break;\n }\n }, [location.pathname]);\n\n return null;\n};\n\nexport { PageTabTitle };\n","import { useEffect } from 'react';\nimport { isProdEnv, loadEmbeddedScript } from '../util';\n\nconst BEACON_SALESFORCE_SRC = '//cdn.evgnet.com/beacon/usfireins/'\n + 'figo_mcp_dataset/scripts/evergage.min.js';\nconst BEACON_SALESFORCE_PROD_SRC = '//cdn.evgnet.com/beacon/usfireins/'\n + 'prodfigo/scripts/evergage.min.js';\n\nconst useBeaconSalesforceScript = () => {\n useEffect(() => {\n loadEmbeddedScript({\n scriptAsync: false,\n scriptDefer: false,\n scriptId: 'figoBeaconSalesforce',\n scriptSrc: isProdEnv\n ? BEACON_SALESFORCE_PROD_SRC\n : BEACON_SALESFORCE_SRC,\n });\n }, []);\n\n return {\n active: !!window.SalesforceInteractions,\n };\n};\n\nexport { useBeaconSalesforceScript };\n","export default __webpack_public_path__ + \"static/media/link-expired.ac92ee5b.svg\";","import React from 'react';\nimport './Footer.css';\n\nconst Footer = () => (\n <div className=\"Footer-Copyright\">\n <span>\n Copyright © 2015–2020 Figo Pet insurance LLC. All rights reserved.\n </span>\n </div>\n);\n\nexport default Footer;\n","import React, { useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport figoLogo from '../../assets/landing/figo-logo.svg';\nimport linkExpired from '../../assets/saveQuote/link-expired.svg';\n\nimport Footer from '../common/conversion/Footer';\n\nimport './SavedQuoteExpired.css';\n\nconst SavedQuoteExpired = () => {\n const history = useHistory();\n const quoteLinkExpired = 'Quote Link Expired';\n const description = 'It looks like your quote has expired.';\n const getNewQuote = 'Get a New Quote';\n\n const handleGetNewQuote = useCallback(() => {\n history.push('/');\n }, [history]);\n\n return (\n <div className=\"Saved-quote-expired-container\">\n <img alt=\"\" aria-hidden className=\"Saved-quote-logo\" src={figoLogo} />\n\n <div className=\"Saved-quote-content-row\">\n <img alt=\"\" aria-hidden src={linkExpired} />\n\n <h1>{quoteLinkExpired}</h1>\n\n <span>{description}</span>\n\n <button onClick={handleGetNewQuote} type=\"button\">\n {getNewQuote}\n </button>\n </div>\n\n <div className=\"Saved-quote-footer-container\">\n <Footer />\n </div>\n </div>\n );\n};\n\nexport { SavedQuoteExpired };\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport './css/HeaderIAIC.css';\n\nconst HeaderIAIC = ({ classContainer = '' }) => {\n const store = useSelector(({ quoting }) => quoting);\n const { data } = store;\n const HEADER_ID = 4;\n const HEADER_TEXT = 'Pet Insurance policies are underwritten '\n + 'by Independence American Insurance Company.';\n\n function renderText() {\n const headerInfo = data && data\n .insuranceProduct.InsuranceInformationSections\n .find((section) => (section.InsuranceInformationTypeId === HEADER_ID));\n\n if (headerInfo) {\n const [info] = headerInfo.InsuranceInformationDetails;\n\n return info ? info.Text : HEADER_TEXT;\n }\n\n return HEADER_TEXT;\n }\n\n return (\n <div className={`Header-container ${classContainer}`}>\n <span>{renderText()}</span>\n </div>\n );\n};\n\nexport { HeaderIAIC };\n","export default __webpack_public_path__ + \"static/media/arrow-down-navy.27ea8d62.svg\";","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport queryString from 'query-string';\n\nimport { HeaderIAIC } from '../quoting/header/HeaderIAIC';\nimport InputWithError from '../common/InputWithError';\nimport FigoLottie from '../common/FigoLottie';\n\nimport arrow from '../../assets/arrow-down-navy.svg';\nimport figoLogo from '../../assets/login/figo-logo-new-design.png';\n\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { validateEmail } from '../../util';\nimport { FOOTER_TEXT_BASE } from '../../constants';\n\nimport { QuestionsSection } from '../quoting/QuestionsSection';\nimport QuotingFooter from '../quoting/QuotingFooter';\nimport ModalForgetPassword from '../common/ModalForgetPassword';\n\nimport {\n forgetPasswordVisibleChanged,\n continueWithoutLogin,\n setAsHasPassword,\n} from '../../actions/quoting';\n\nimport './LoginAccountScreen.css';\nimport { useB2CInfo } from '../../hooks';\n\nconst LoginAccountScreen = () => {\n const store = useSelector(({ quoting }) => quoting, shallowEqual);\n\n const dispatch = useDispatch();\n const location = useLocation();\n const history = useHistory();\n const { t } = useTranslations('login');\n const [email, setEmail] = useState('');\n const [emailError, setEmailError] = useState('');\n const [password, setPassword] = useState('');\n const [passwordError, setPasswordError] = useState('');\n const { query } = queryString.parseUrl(location.search);\n const { loginB2CROPC, ropcError, setRopcError } = useB2CInfo();\n const { state } = location;\n\n useEffect(() => { setEmail(query.email); }, [query.email]);\n\n const logginMessageResponse = useMemo(() => {\n const message = store.sessionInformation.nopCommerceUser.LoginMessage;\n\n if (message.toLowerCase().includes('successful')) {\n return '';\n }\n\n return message;\n }, [store.sessionInformation.nopCommerceUser.LoginMessage]);\n\n const onEmailChanged = useCallback(({ target: { value } }) => {\n setEmail(value);\n setEmailError('');\n }, []);\n\n const onPasswordChanged = useCallback(({ target: { value } }) => {\n setPassword(value);\n setPasswordError('');\n setRopcError('');\n }, [setRopcError]);\n\n useEffect(() => {\n if (ropcError) {\n setPasswordError(ropcError);\n } else {\n setPasswordError('');\n }\n }, [ropcError]);\n\n useEffect(() => {\n const userLoggedIn = store.sessionInformation.isCustomer;\n if (!userLoggedIn) {\n return;\n }\n\n let params = location.search;\n\n if (query.email !== email) {\n const newQuery = { ...query, email };\n params = `?${queryString.stringify(newQuery)}`;\n }\n\n history.push(`quoting/getQuote${params}`);\n }, [\n history,\n location.search,\n query,\n email,\n store.sessionInformation.isCustomer,\n ]);\n\n const onSubmitLogin = (event) => {\n event.preventDefault();\n\n if (!email) {\n setEmailError(t('form.required'));\n }\n\n if (!password) {\n setPasswordError(t('form.required'));\n }\n\n if (email && password) {\n const isValidEmail = validateEmail(email);\n setEmailError(isValidEmail ? '' : t('form.emailInvalidFormat'));\n\n if (isValidEmail && !store.sessionInformation.loadingLogin) {\n loginB2CROPC({ password, username: email });\n }\n }\n };\n\n const onContinueWithoutLoginClick = () => {\n dispatch(continueWithoutLogin());\n history.push(`quoting/getQuote${location.search}`);\n };\n\n const onResetPasswordClick = useCallback(() => {\n dispatch(forgetPasswordVisibleChanged({ visible: true }));\n }, [dispatch]);\n\n useEffect(() => {\n const hasPassword = state?.hasPassword ?? true;\n if (!hasPassword) {\n onResetPasswordClick();\n dispatch(setAsHasPassword(false));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onResetPasswordClick]);\n\n return (\n <div className=\"Login-account-screen-main-container\">\n <header className=\"Login-account-screen-header\">\n <HeaderIAIC classContainer=\"Login-account-screen-background-color\" />\n\n <img\n alt=\"\"\n className=\"Login-account-screen-figo-logo\"\n src={figoLogo}\n />\n </header>\n\n <ModalForgetPassword />\n\n <section className=\"Login-account-screen-main-content\">\n <div className=\"Login-account-screen-card\">\n <h3>{t('loginAccount')}</h3>\n\n <span>{t('description')}</span>\n\n <form className=\"Login-account-screen-form\" onSubmit={onSubmitLogin}>\n <InputWithError\n containerClass=\"Login-account-screen-input-container\"\n inputClass=\"Login-account-screen-input\"\n label={t('form.emailLabel')}\n labelClass=\"Login-account-screen-input-title\"\n labelError={emailError}\n onChange={onEmailChanged}\n placeholder={t('form.emailLabel')}\n required\n showError={!!emailError}\n value={email}\n />\n\n <InputWithError\n absoluteButtonContent={t('form.forgotPassword')}\n containerClass=\"Login-account-screen-input-container-margin-top\"\n inputClass=\"Login-account-screen-input\"\n label={t('form.passwordLabel')}\n labelClass=\"Login-account-screen-input-title\"\n labelError={passwordError}\n onAbsoluteBtnClick={onResetPasswordClick}\n onChange={onPasswordChanged}\n placeholder={t('form.required')}\n required\n showError={!!passwordError}\n type=\"password\"\n value={password}\n />\n\n <span\n aria-live=\"polite\"\n className=\"Input-whit-error-label-fail\"\n title={logginMessageResponse}\n >\n {logginMessageResponse}\n </span>\n\n <button\n aria-label={store.sessionInformation.loadingLogin\n ? t('loading') : t('login')}\n aria-live={store.sessionInformation.loadingLogin\n ? 'polite' : 'off'}\n className=\"Login-account-screen-form-submit-button\"\n type=\"submit\"\n >\n {store.sessionInformation.loadingLogin ? (\n <FigoLottie height={40} width={40} />\n ) : t('login')}\n </button>\n\n <button\n className=\"Login-account-screen-form-continue\"\n onClick={onContinueWithoutLoginClick}\n type=\"button\"\n >\n {t('continueWithoutLogin')}\n\n <img alt=\"\" className=\"Login-account-screen-arrow\" src={arrow} />\n </button>\n </form>\n </div>\n\n <QuestionsSection isLogin />\n </section>\n\n <QuotingFooter customFooterText={FOOTER_TEXT_BASE} />\n </div>\n );\n};\n\nexport { LoginAccountScreen };\n","export default \"data:image/png;base64,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\"","import { useEffect } from 'react';\nimport { getSessionStorage, useTrackingEvents } from '../../util';\nimport { trackingLoadQuote } from '../../trackingEvents';\n\nconst TrackingLoadQuoteOnRefresh = () => {\n useEffect(() => {\n const storageData = getSessionStorage('store.quoting');\n\n if (useTrackingEvents && storageData && storageData.data) {\n const { data } = storageData;\n\n trackingLoadQuote({\n codeMask: storageData.parameters.groupCodeDscr,\n email: storageData.parameters.email,\n guidData: storageData.guidData,\n modifierList: data.insuranceProduct.InsuranceModifiers,\n petQuoteList: data.petQuoteResponseList,\n promoCode: data.groupCode || '',\n quoteSelectedValues: storageData.quoteSelectedValues,\n subId: storageData.subId.Value,\n zipCode: data.zipCode,\n });\n }\n }, []);\n\n return null;\n};\n\nexport { TrackingLoadQuoteOnRefresh };\n","export default __webpack_public_path__ + \"static/media/back.e84e0860.svg\";","import React, { useCallback, useEffect, useLayoutEffect, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport {\n useOneIncScript,\n usePurchase,\n useRateSummary,\n useResponsive,\n} from '../../../hooks';\n\nimport PurchasePage from './PurchasePage';\nimport { OneIncModal } from '../../common/OneIncModal';\nimport { QuestionsInfo } from '../QuestionsInfo';\nimport FigoLoadingOverlay from '../../common/FigoLoadingOverlay';\n\nimport dogIcon from '../../../assets/dog-selected.svg';\nimport catIcon from '../../../assets/cat-selected.svg';\nimport backIcon from '../../../assets/purchase/back.svg';\n\nimport { BILLING_CYCLE_TYPE, PetType } from '../../../constants';\nimport { currencyFormat, useRetryPurchase } from '../../../util';\nimport { resetOneInInformation } from '../../../actions/oneInc';\nimport { URL_PURCHASE, URL_PURCHASE_ERROR } from '../../../routes';\n\nimport './PurchaseRetryScreen.css';\n\nconst PurchaseButtons = ({\n loading,\n onReturnSummary,\n t,\n doPurchase,\n}) => (\n <>\n <button\n className=\"Purchase-retry-button\"\n disabled={loading}\n onClick={doPurchase}\n type=\"button\"\n >\n {t('retryPurchase.retryButton')}\n </button>\n\n <button\n className=\"Purchase-retry-button-return\"\n disabled={loading}\n onClick={onReturnSummary}\n type=\"button\"\n >\n <img alt=\"\" aria-hidden src={backIcon} />\n {t('retryPurchase.returnButton')}\n </button>\n </>\n);\n\nexport const PurchaseRetryScreen = () => {\n const { t } = useTranslation('purchaseResult');\n const history = useHistory();\n const dispatch = useDispatch();\n const store = useSelector(({ quoting }) => quoting);\n const { isMobile } = useResponsive();\n\n const { getSelectedRate } = useRateSummary();\n const { doPurchase } = usePurchase();\n\n const {\n isMonthlyPlan,\n paymentMethod: { paymentMethodType },\n purchase,\n rateSummary: { loading, PetQuotes, QuoteSummaries },\n } = store;\n\n useOneIncScript();\n\n const onReturnSummary = () => {\n history.goBack();\n };\n\n const totalToday = useMemo(() => {\n if (loading) {\n return '$0.00';\n }\n\n const billingCycle = isMonthlyPlan\n ? BILLING_CYCLE_TYPE.monthly : BILLING_CYCLE_TYPE.annualy;\n const paymentType = paymentMethodType.value;\n const summary = QuoteSummaries?.find(\n (item) => item.BillingCycle === billingCycle\n && item.PaymentType === paymentType,\n ) || { TodaysTotal: 0 };\n\n return `$${currencyFormat({ value: summary.TodaysTotal })}`;\n }, [QuoteSummaries, isMonthlyPlan, loading, paymentMethodType.value]);\n\n useLayoutEffect(() => {\n getSelectedRate();\n }, [getSelectedRate]);\n\n useEffect(() => {\n if (purchase.success) {\n const goToPurchaseScreen = async () => {\n const url = purchase.incompletePurchases?.length > 0\n ? URL_PURCHASE_ERROR : URL_PURCHASE;\n\n await dispatch(resetOneInInformation());\n history.push(url);\n };\n\n goToPurchaseScreen();\n }\n }, [\n dispatch,\n history,\n purchase.incompletePurchases,\n purchase.success,\n ]);\n\n const handlePurchase = useCallback(() => {\n doPurchase({ isRetryPurchase: true });\n }, [doPurchase]);\n\n if (!useRetryPurchase) {\n return null;\n }\n\n return (\n <PurchasePage>\n {/* OneInc modal create here */}\n <div id=\"portalOneContainer\" />\n\n <FigoLoadingOverlay visible={loading || purchase.loading} />\n\n <div className=\"Purchase-retry-cards-container\">\n <div className=\"Purchase-retry-container Purchase-retry-card\">\n <h1>{t('retryPurchase.title')}</h1>\n\n <p className=\"Purchase-retry-summary-p\">\n {t('retryPurchase.summary')}\n </p>\n\n <OneIncModal styleUpdate />\n\n {!isMobile && (\n <PurchaseButtons\n doPurchase={handlePurchase}\n loading={loading || purchase.loading}\n onReturnSummary={onReturnSummary}\n t={t}\n />\n )}\n </div>\n\n <div className=\"Purchase-retry-container-right Purchase-retry-card\">\n <h3>{t('retryPurchase.purchaseSummary')}</h3>\n\n <div className=\"Purchase-retry-container-mobile\">\n <ul>\n {!loading && PetQuotes.map((pet) => (\n <li key={String(pet.PetQuoteId)}>\n <img\n alt=\"\"\n src={pet.PetType === PetType.Cat.value ? catIcon : dogIcon}\n />\n\n <div className=\"Column\">\n <span className=\"Purchase-retry-pet-name\">\n {pet.PetName}\n </span>\n\n <span className=\"Purchase-retry-pet-price\">\n {t('retryPurchase.petPrice',\n { monthlyPrice: pet.MonthlyPremium.toFixed(2) })}\n </span>\n </div>\n </li>\n ))}\n </ul>\n\n <div className=\"Purchase-retry-today-total-div\">\n <span>\n {t('retryPurchase.totalToday')}\n </span>\n\n <span className=\"Purchase-retry-today-total\">\n {totalToday}\n </span>\n </div>\n\n {isMobile && (\n <div className=\"Column\">\n <PurchaseButtons\n doPurchase={handlePurchase}\n loading={loading || purchase.loading}\n onReturnSummary={onReturnSummary}\n t={t}\n />\n </div>\n )}\n </div>\n\n <div className=\"Purchase-retry-questions\">\n <QuestionsInfo />\n </div>\n </div>\n </div>\n </PurchasePage>\n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { CustomModal } from '../common/CustomModal';\nimport { useTranslations } from '../../hooks';\n\nimport { changeGoodDogComingSoonModal } from '../../actions';\nimport comingSoonIcon from '../../assets/coming-soon-icon.svg';\nimport './ComingSoonModal.css';\n\nexport const GoodDogComingSoonModal = () => {\n const { t } = useTranslations('landing');\n const store = useSelector(({ quoting }) => ({ quoting }));\n const dispatch = useDispatch();\n\n const { goodDogComingSonModalVisible } = store.quoting;\n\n const onClose = () => {\n dispatch(changeGoodDogComingSoonModal(false));\n };\n\n return (\n <CustomModal\n description={t('goodDog.comingSoon.description')}\n displayButton={false}\n handleOutClick={onClose}\n id=\"GoodDogComingSoonModal\"\n imageSrc={comingSoonIcon}\n imgAlt=\"\"\n title={t('goodDog.comingSoon.title')}\n visible={goodDogComingSonModalVisible}\n >\n <a\n className=\"Coming-soon-button-check-price\"\n href=\"https://figopetinsurance.com/get-started\"\n rel=\"noreferrer\"\n target=\"_blank\"\n title={t('goodDog.comingSoon.checkPrices')}\n type=\"button\"\n >\n <span\n className=\"Coming-soon-notify-user-primary-button-text\"\n >\n {t('goodDog.comingSoon.checkPrices')}\n </span>\n </a>\n </CustomModal>\n );\n};\n","import React, { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport catPlaceholder from '../../../assets/cat-selected.svg';\nimport dogPlaceholder from '../../../assets/dog-selected.svg';\n\nimport './ModalMultiQuoteLoading.css';\nimport { PURCHASE_MULTI_STATUS } from '../../../constants';\n\nexport const ModalMultiQuoteLoading = () => {\n const store = useSelector(({ quoting }) => quoting);\n const { t } = useTranslation('quoting');\n\n const { purchase } = store || {};\n\n const extraClassWith = useMemo(() => {\n if (purchase?.multiQuoteList.length === 3) {\n return 'Purchase-Multi-Card-container-with-3';\n }\n\n if (purchase?.multiQuoteList.length > 3) {\n return 'Purchase-Multi-Card-container-with-more';\n }\n\n return '';\n }, [purchase.multiQuoteList.length]);\n\n if (!purchase?.multiQuoteLoading) {\n return null;\n }\n\n return (\n <div className=\"Modal-wrapper\" id=\"Purchase-modal-multi\">\n <div\n aria-hidden=\"true\"\n aria-labelledby=\"Purchase-modal-multi\"\n className=\"Purchase-Multi-Modal-backdrop\"\n role=\"button\"\n tabIndex={-1}\n />\n <div\n aria-labelledby=\"Purchase-modal-title\"\n aria-modal=\"true\"\n className={`Purchase-Multi-Card-container ${extraClassWith}`}\n role=\"alertdialog\"\n >\n <div>\n <h3\n className=\"Purchase-modal-title\"\n id=\"Purchase-modal-title\"\n >\n {t('purchaseModal.title')}\n </h3>\n <span className=\"Purchase-modal-legend\">\n {t('purchaseModal.legend')}\n </span>\n </div>\n\n {purchase?.multiQuoteList.map((petQuote) => (\n <div\n key={String(petQuote.id)}\n className=\"Purchase-modal-pet-row\"\n >\n <img\n alt=\"\"\n src={petQuote.isCat ? catPlaceholder : dogPlaceholder}\n />\n\n <div className=\"Col\">\n {t('purchaseModal.petName', { petName: petQuote.petName })}\n\n <div className=\"Row\">\n <div\n className=\"Purchase-modal-pill\"\n data-status={petQuote.status}\n >\n\n <span className=\"Purchase-modal-pill-icon\" />\n\n <span className=\"Purchase-modal-pill-text\">\n {petQuote.status}\n </span>\n\n {[\n PURCHASE_MULTI_STATUS.progress,\n PURCHASE_MULTI_STATUS.pending,\n ].includes(petQuote.status)\n && (\n <div\n className=\"Purchase-loader\"\n data-status={petQuote.status}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport {\n Redirect,\n Route,\n Switch,\n useHistory,\n useLocation,\n} from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport queryString from 'query-string';\nimport { createPortal } from 'react-dom';\n\nimport {\n loadQuoteData,\n loadQuoteDataByOrderId,\n loadQuoteDataByStorage,\n saveNewPetPickupDate,\n saveURLParameters,\n saveUtmParams,\n} from './actions';\nimport { QuotingHeader } from './components/quoting/header/QuotingHeader';\nimport QuotingFooter from './components/quoting/QuotingFooter';\nimport PageNotFound from './components/pageNotFound/PageNotFound';\nimport './App.css';\nimport {\n appVersion,\n formatParameters,\n getSessionStorage,\n getUtmParams,\n} from './util';\nimport OpenQuote from './components/quoting/OpenQuote';\nimport LandingPage from './components/landing/LandingPage';\nimport GenericErrorModalContainer\nfrom './components/common/GenericErrorModalContainer';\nimport PurchaseSuccess from './components/quoting/purchase/PurchaseSuccess';\nimport PurchaseError from './components/quoting/purchase/PurchaseError';\nimport Logout from './components/common/Logout';\nimport { PageTabTitle } from './components/common/PageTabTitle';\nimport { SavedQuoteExpired } from './components/saveQuote/SavedQuoteExpired';\nimport { LoginAccountScreen } from './components/login/LoginAccountScreen';\nimport {\n TrackingLoadQuoteOnRefresh,\n} from './components/common/TrackingLoadQuoteOnRefresh';\n\nimport {\n LANDING_URL,\n URL_COSTCO_CX,\n URL_COSTCO,\n URL_GOOD_DOG,\n URL_LOGIN_ACCOUNT,\n URL_LOGOUT,\n URL_OPEN_QUOTE_ERROR,\n URL_OPEN_QUOTE,\n URL_PURCHASE_BACKEND_ERROR,\n URL_PURCHASE_ERROR,\n URL_PURCHASE_RETRY,\n URL_PURCHASE,\n URL_ROOT_QUOTE,\n URL_YOUR_INFO,\n URL_USAA,\n} from './routes';\nimport {\n PurchaseRetryScreen,\n} from './components/quoting/purchase/PurchaseRetryScreen';\nimport {\n StickyBarHeightProvider,\n} from './components/landing/StickyBarHeightProvider';\nimport {\n COSTCO_URL_PARAMS,\n COSTCO_CX_URL_PARAMS,\n GOOD_DOG_URL_PARAMS,\n USAA_URL_PARAMS,\n} from './partners/partners.constants';\nimport {\n FeatureFlagProvider,\n useFeatureFlagLoadedValidation,\n useGTM,\n} from './hooks';\nimport {\n GoodDogComingSoonModal,\n} from './components/landing/GoodDogComingSoonModal';\nimport {\n ModalMultiQuoteLoading,\n} from './components/quoting/purchase/ModalMultiQuoteLoading';\n\nconst URLS_VALID = [\n URL_LOGIN_ACCOUNT,\n URL_PURCHASE_RETRY,\n URL_PURCHASE,\n URL_ROOT_QUOTE,\n URL_YOUR_INFO,\n];\n\nconst VersionData = () => createPortal(\n <meta data-version={appVersion} name=\"App version\" />,\n document.head,\n);\n\nconst RedirectWithParameters = ({ url, urlParams = {} }) => {\n const dispatch = useDispatch();\n const location = useLocation();\n const parametersRaw = queryString.parse(location.search);\n const utmParams = getUtmParams(parametersRaw);\n const originalParameters = new URLSearchParams(location.search);\n const originalParametersMap = {};\n originalParameters.forEach((value, key) => {\n originalParametersMap[key] = value;\n });\n const params = { ...originalParametersMap, ...urlParams, ...utmParams };\n\n dispatch(saveUtmParams(utmParams));\n\n return (\n <Redirect\n to={`${url}?${queryString.stringify(params)}`}\n />\n );\n};\n\nfunction App() {\n const dispatch = useDispatch();\n const location = useLocation();\n const history = useHistory();\n useGTM();\n const parametersRaw = queryString.parse(location.search);\n const parameters = formatParameters(parametersRaw);\n const utmParams = getUtmParams(parametersRaw);\n const { featureFlagsLoaded } = useFeatureFlagLoadedValidation();\n\n function isMounted() {\n const storageMounted = getSessionStorage('store.mounted');\n\n return !!storageMounted;\n }\n\n function validParameters() {\n if (location.pathname.toLowerCase() !== URL_ROOT_QUOTE && isMounted()) {\n return true;\n }\n\n if (parameters && parameters.orderId) {\n return true;\n }\n\n return parameters && parameters.petName\n && parameters.petType && parameters.petSex && parameters.petBreed\n && parameters.petAge && parameters.petZipCode && parameters.email;\n }\n\n function isValidUrl() {\n return URLS_VALID.includes(location.pathname.toLowerCase());\n }\n\n function validLoadCache({ storageData }) {\n if (\n storageData\n && location.search\n && storageData.searchParameters === location.search\n ) {\n return true;\n }\n\n return location.pathname.toLowerCase() !== URL_ROOT_QUOTE && isMounted();\n }\n\n if (isValidUrl()) {\n if (validParameters()) {\n const storageData = getSessionStorage('store.quoting');\n const validStoredQuote = validLoadCache({ storageData });\n\n if (validStoredQuote) {\n // Reset some props state to default\n const state = {\n ...storageData,\n oneInc: {\n ...storageData.oneInc,\n portalOneSessionKey: '',\n },\n powerUpLoadings: [],\n sessionInformation: {\n ...storageData.sessionInformation,\n loadingLogin: false,\n showLoginMenssage: false,\n showWelcomeMessage: false,\n },\n };\n\n dispatch(loadQuoteDataByStorage(state));\n } else if (featureFlagsLoaded) {\n if (parameters.orderId) {\n dispatch(loadQuoteDataByOrderId(parameters));\n } else {\n dispatch(loadQuoteData({ firstLoad: true, parameters }));\n }\n\n dispatch(saveUtmParams(utmParams));\n\n if (parameters.petPickupDate) {\n dispatch(saveNewPetPickupDate(parameters.petPickupDate));\n }\n\n dispatch(saveURLParameters({ parameters, search: location.search }));\n }\n } else {\n let landingUrl = LANDING_URL;\n if (parameters.groupCode) {\n landingUrl += `?groupCode=${parameters.groupCode}`;\n }\n history.push(landingUrl);\n }\n }\n\n return (\n <FeatureFlagProvider>\n <PageTabTitle />\n\n <TrackingLoadQuoteOnRefresh />\n\n {!featureFlagsLoaded ? null : (\n <Switch>\n <Route exact path=\"/\">\n <RedirectWithParameters url={LANDING_URL} />\n </Route>\n\n <Route exact path={URL_COSTCO}>\n <RedirectWithParameters\n url={LANDING_URL}\n urlParams={COSTCO_URL_PARAMS}\n />\n </Route>\n\n <Route exact path={URL_COSTCO_CX}>\n <RedirectWithParameters\n url={LANDING_URL}\n urlParams={COSTCO_CX_URL_PARAMS}\n />\n </Route>\n\n <Route exact path={URL_GOOD_DOG}>\n <RedirectWithParameters\n url={LANDING_URL}\n urlParams={GOOD_DOG_URL_PARAMS}\n />\n </Route>\n\n <Route exact path={URL_USAA}>\n <RedirectWithParameters\n url={LANDING_URL}\n urlParams={USAA_URL_PARAMS}\n />\n </Route>\n\n <Route exact path={URL_LOGIN_ACCOUNT}>\n <LoginAccountScreen />\n </Route>\n\n <Route exact path={URL_LOGOUT}>\n <Logout />\n </Route>\n\n <Route path={URL_ROOT_QUOTE}>\n <div className=\"App\">\n <StickyBarHeightProvider>\n <QuotingHeader />\n\n <QuotingFooter />\n </StickyBarHeightProvider>\n </div>\n </Route>\n\n <Route path={URL_PURCHASE}>\n <PurchaseSuccess />\n </Route>\n\n <Route path={URL_PURCHASE_BACKEND_ERROR}>\n <PurchaseError />\n </Route>\n\n <Route path={URL_PURCHASE_RETRY}>\n <PurchaseRetryScreen />\n </Route>\n\n <Route path={URL_PURCHASE_ERROR}>\n <PurchaseSuccess />\n </Route>\n\n <Route path={LANDING_URL}>\n <LandingPage />\n </Route>\n\n <Route exact path={URL_OPEN_QUOTE}>\n <OpenQuote />\n </Route>\n\n <Route path={URL_OPEN_QUOTE_ERROR}>\n <SavedQuoteExpired />\n </Route>\n\n <Route component={PageNotFound}>\n <PageNotFound />\n </Route>\n </Switch>\n )}\n\n <ModalMultiQuoteLoading />\n\n <GenericErrorModalContainer />\n\n <GoodDogComingSoonModal />\n\n <VersionData />\n </FeatureFlagProvider>\n );\n}\n\nexport default App;\n","/* eslint-disable no-console */\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.0/8 are considered localhost for IPv4.\n || window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n const reg = registration;\n reg.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 console.log(\n 'New content is available and will be used when all '\n + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\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 console.log('Content is cached for offline use.');\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 headers: { 'Service-Worker': 'script' },\n })\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 (\n response.status === 404\n || (contentType !== null && contentType.indexOf('javascript') === -1)\n ) {\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(\n 'No internet connection found. App is running in offline mode.',\n );\n });\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;\n // 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.\n // 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 console.log(\n 'This web app is being served cache-first by a service '\n + 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { setSessionStorage } from '../util';\n\nconst StorageProvider = () => {\n const store = useSelector((stores) => stores.quoting);\n\n useEffect(() => {\n if (store.data || store.partners || store.partners.loaded) {\n setSessionStorage({ data: store, key: 'store.quoting' });\n setSessionStorage({ data: { isMounted: true }, key: 'store.mounted' });\n }\n }, [store]);\n\n return <></>;\n};\n\nexport default StorageProvider;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { PublicClientApplication } from '@azure/msal-browser';\nimport { Provider } from 'react-redux';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { MsalProvider } from '@azure/msal-react';\n\nimport { msalConfig } from './authConfigB2C';\n\nimport './index.css';\nimport './common.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport './i18n';\nimport { SavedElementProvider } from './hooks/useSavedElement';\nimport { store } from './store';\nimport StorageProvider from './components/StorageProvider';\n\nconst msalInstance = new PublicClientApplication(msalConfig);\n\nconst container = document.getElementById('root');\nconst root = createRoot(container);\nroot.render(\n <React.StrictMode>\n <MsalProvider instance={msalInstance}>\n <Provider store={store}>\n <SavedElementProvider>\n <StorageProvider />\n\n <Router basename=\"/\">\n <App />\n </Router>\n </SavedElementProvider>\n </Provider>\n </MsalProvider>\n </React.StrictMode>,\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"],"sourceRoot":""}