{"version":3,"sources":["constants/regex.constants.tsx","models/generics.tsx","constants/DeliveryText.tsx","themes/main.tsx","redux/store-hook.tsx","models/DecorateCalcResponseError.tsx","redux/slices/order.tsx","components/Product/ProductPrice.tsx","themes/colors.tsx","components/Shared/BachmansCardMedia.tsx","helpers/batchOperations.tsx","helpers/listAll.tsx","components/Shared/UserInputForm.tsx","services/event.service.tsx","constants/OcGeography.tsx","services/locationService.tsx","assets/images/noimg.jpg","components/Product/ProductFlags/ProductFlag.tsx","components/Product/ProductFlags/OnSaleFlag.tsx","assets/images/WorkshopsEventsFiller.jpg","components/Events/EventCard.tsx","components/Shared/Content/ContentCard.tsx","components/Shared/BachmansCard.tsx","components/Shared/PhoneMaskInput.tsx","services/bachmansPurplePerks.service.tsx","components/Shared/DropdownMenu.tsx","assets/svg/bachmans-404.svg","components/Shared/NotFound.tsx","services/jitterbit.service.tsx","components/Shared/PurplePerksCard.tsx","constants/destinations.tsx","assets/svg/logoPurple.svg","components/Authentication/PasswordRequirementsList.tsx","constants/app.constants.tsx","services/authentication.service.tsx","components/Account/AddressBook.tsx","services/creditCard.service.tsx","components/Account/CreditCards/EditCCDialog.tsx","components/Account/CreditCards/CreditCards.tsx","components/Account/Events.tsx","services/account.service.tsx","components/Shared/Address/Address.tsx","components/Shared/BachmansLineItems.tsx","components/Account/OrderHistory/OrderShipment.tsx","components/Account/OrderHistory/OrderDetail.tsx","components/Account/OrderHistory/OrderHistory.tsx","components/Shared/PurpleBullets.tsx","assets/images/purple_perks.png","components/Account/PurplePerks.tsx","components/Account/Profile.tsx","components/Account/Wishlist.tsx","components/Account/Account.tsx","components/Shared/Content/FullWidthContentBlock.tsx","components/Shared/Content/InlineContentBlock.tsx","services/seo-service.tsx","services/dcf.service.tsx","components/Shared/ItemList.tsx","components/Shared/ConfirmDialog.tsx","components/Authentication/Login.tsx","components/Authentication/Register.tsx","components/Authentication/ForgotPassword.tsx","components/Authentication/AuthDialog.tsx","assets/svg/logoBadge.svg","components/Account/AddressDialog.tsx","assets/svg/no-results.svg","constants/error.constants.tsx","components/Product/ProductFlags/GrownExclusive.tsx","components/Checkout/PrintOrderConfirmation.tsx","components/Shared/PurplePerksFull.tsx","constants/geography.tsx","components/Shared/AutoComplete/GoogleAutoComplete.tsx","components/Shared/Address/AddressForm.tsx","services/product.service.tsx","services/productFilter.service.tsx","providers/session.tsx","services/bachDateTime.service.tsx","constants/Holidays.tsx","services/algolia.service.tsx","components/Shared/Link.tsx","components/Shared/DoubleOutlinedBtn.tsx","services/bachmansIntegrations.service.tsx","services/contentful.service.tsx","components/Shared/BachmansLoading.tsx","services/delivery.service.tsx","components/Layout/Footer/LinkColumn.tsx","components/Layout/Footer/SocialMediaLinks.tsx","components/Layout/Footer/Footer.tsx","components/Layout/Footer/usePathname.tsx","assets/svg/iconResource.svg","components/Layout/Header/Breadcrumbs.tsx","components/Layout/Header/MegaMenu/MegaMenuSubCatergory.tsx","components/Layout/Header/MegaMenu/MegaMenu.tsx","components/Layout/Header/MegaMenu/RelatedArticles.tsx","components/Shared/hooks/useDebounce.tsx","components/Layout/Header/MegaMenu/TopLevelCategories.tsx","components/Layout/Header/CategoryToolbar.tsx","components/Layout/Header/MiniCart.tsx","components/Search/SearchResultHeader.tsx","components/Search/SearchResult.tsx","components/Search/SearchResults.tsx","components/Search/MobileSearchMenu.tsx","components/Search/SearchDropdown.tsx","components/Search/Search.tsx","components/Layout/Header/AccountMenu.tsx","components/Shared/MobileDrawer.tsx","components/Layout/Header/MobileAccountMenu.tsx","components/Layout/Header/User.tsx","components/Layout/Header/ContentLinksMenu.tsx","components/Layout/Header/MegaMenu/MobileMenuSubCategory.tsx","components/Layout/Header/MegaMenu/MobileMegaMenu.tsx","components/Layout/Header/MobileContentLinksMenu.tsx","components/Layout/Header/MobileContactUs.tsx","assets/svg/iconProducts.svg","assets/svg/iconEvents.svg","assets/svg/iconLocations.svg","assets/svg/iconContact.svg","components/Layout/Header/Header.tsx","components/Shared/hooks/usePageViews.tsx","components/Shared/BachmansMiddleware.tsx","providers/paypalScript.tsx","components/Layout/MainContent.tsx","components/Layout/ScrollToTop.tsx","assets/svg/something-went-wrong.svg","components/Shared/ErrorBoundary.tsx","App.tsx","serviceWorker.ts","redux/store.tsx","index.tsx","providers/contentful.tsx","services/category.service.tsx","redux/slices/breadcrumbs.tsx","services/delivery-resource.service.tsx","providers/catalog.tsx","services/string.service.tsx"],"names":["regexConstants","validPassword","validEmail","validCardMessage","validName","invalidName","nonNumeric","alphaNumeric","validPhone","isOfType","varToBeChecked","propertyToCheckFor","undefined","deliveryTextMap","LocalDelivery","text","fee","description","Email","UPS","USPS","Wired","TFE","FTD","InStorePickUp","CurbsidePickUp","fontFallbackStack","colorsFonts","typography","h1","fontFamily","fontWeight","fontSize","h2","h3","textTransform","fontSmooth","h4","h5","h6","body1","body2","subtitle1","subtitle2","overline","letterSpacing","caption","button","palette","primary","main","purple","regular","dark","hover","light","secondary","green","contrastText","error","red","defaultTheme","createTheme","theme","overrides","MuiFormLabel","asterisk","color","MuiCssBaseline","body","backgroundColor","background","paper","breakpoints","down","paddingBottom","minHeight","MuiFormHelperText","root","contained","marginLeft","MuiOutlinedInput","borderRadius","MuiButton","boxShadow","outlined","borderColor","getContrastText","outlinedPrimary","outlinedSecondary","useAppSelector","useSelector","DecorateCalcResponseError","msg","lineItemIDs","LineItemIDs","Object","setPrototypeOf","prototype","Error","orderSlice","createSlice","name","initialState","status","reducers","setPending","state","setOrderSuccess","action","order","payload","setOrderFailed","setCalcSuccess","Order","shipments","CalculatorShipments","setCalcFailed","extraReducers","builder","addCase","calculateOrder","pending","actions","transferAndInitOrder","anonUserToken","dispatch","a","Me","TransferAnonUserOrder","initOrder","token","Tokens","GetAccessToken","decoded","jwtDecode","isAnon","usr","getOrder","orderid","currentOrder","LineItemCount","ID","Orders","Get","accessToken","makeOrder","ListOrders","sortBy","filters","orderList","Items","orderID","Create","createAsyncThunk","ThunkAPI","bachmansIntegrations","calculate","calcResponse","decorateCalcResponse","decoratedResponse","deleteLi","idsToDelete","lineItemDeleteQueue","uniqueProdIds","uniq","flatten","map","s","LineItems","li","ProductID","productService","ListOcProducts","join","productsOnOrder","forEach","find","p","push","length","productSpecReqs","id","ListSpecs","Promise","all","res","productSpecResulsts","CartCount","WiredServiceCharges","HandlingCharges","AssemblyCharges","PlacementCharges","HasUnavailableProducts","shipment","plcMarkup","asMarkup","Specs","spec","matchingSpec","SpecID","matchingOption","Options","opt","OptionID","PriceMarkup","Quantity","Subtotal","sumBy","item","LineTotal","Total","Cost","patchLiQuanity","args","thunkAPI","liID","quantity","disableCalcOrder","Patch","rejectWithValue","setShipmentShippingAddress","shipmentID","address","routeCode","deliveryMethod","getState","partial","xp","RouteCode","AddressType","addressType","DeliveryMethod","ShippingAddressID","patchLineItems","reqs","itemsToUpdate","SetShippingAddress","getRequests","lineItemID","promises","partialLineItem","concat","setLineItemShippingAddress","requests","patchOrder","patchedOrder","shipToMultiple","alert","deleteQueue","Delete","arg0","ProductPrice","props","classes","makeStyles","createStyles","margin","containerPrice","flex","up","productPrice","padding","retailPrice","textDecoration","fontWeightRegular","useStyles","productGroup","product","lineItem","alignment","onSaleChange","useState","actualMinMax","setActualMinMax","retailMinMax","setRetailMinMax","isGiftCard","useMemo","useEffect","assign","UnitPrice","PriceSchedule","PriceBreaks","Price","actualPriceRange","actualMin","Number","min","actualMax","max","retailPriceRange","RetailPrice","retailMin","retailMax","actualPrice","minPercentage","Math","round","maxPercentage","String","variant","className","display","justifyContent","price","utility","inline","special","promo","neutral","text_colored_bg","text_light_bg","text_white_bg","grey_background","strikethrough","disabled","text_utility_bg","offwhite_bg","search_bg","paddingRatioMap","BachmandCardMedia","ratio","aspectRatio","imageContainer","alignItems","width","paddingTop","height","position","overflow","objectFit","transform","left","top","maxWidth","noImage","logo","fill","image","component","alt","flexDirection","viewBox","d","batchOperations","inputs","operation","runNextBatch","batch","splice","batchSize","input","call","batchResults","batchResultsNoUndefined","filter","x","results","listAll","listFn","getAdditionalPages","meta","page","Page","additionalPages","TotalPages","listArgs","hasFiltersObj","filtersObj","pop","pageSize","apply","this","result1","Meta","JSON","parse","stringify","r","flexRow","flexFlow","spacing","marginRight","marginBottom","buildValidation","fields","obj","includes","FirstName","yup","matches","required","LastName","email","Phone","CurrentPassword","Password","PasswordConfirmation","oneOf","UserInputForm","useContext","SessionContext","patchUser","setUserTokens","login","user","passwordResetError","setPasswordResetError","handleRegister","useCallback","values","Authentication","RegisterAsync","Token","LoyaltyCardNumber","onComplete","onError","handlePatchUser","patchObj","initialUser","hasField","Username","Auth","Login","appConfig","clientID","scope","errors","field","type","handleCancel","onCancel","initialValues","validationSchema","onSubmit","touched","isValid","isSubmitting","handleBlur","handleChange","handleSubmit","fullWidth","autoFocus","label","value","onBlur","onChange","Boolean","helperText","InputProps","inputComponent","PhoneMaskInput","mt","buttonPosition","onClick","size","buttonText","buttonProps","categoryFilters","index","algolia","getProductIndex","timestamp","bachDateTime","GetLocalTimeStamp","queryTerm","searchOptions","facetFilters","facets","distinct","hitsPerPage","query","categoryid","categoryArray","catId","featured","search","algoliaResponse","hits","decorateEventDetails","productCodes","e","ProductCode","resolve","events","ListProductsByCodes","listResponse","compact","algoliaEvent","ocProducts","op","defaultEvent","IsDefaultProduct","mapToBachmansEvent","currentUser","isAnonymous","PurchasedEvents","orders","queue","List","lineItems","allLi","myEvents","eventID","isUndefined","eventProducts","event","eventProd","Product","Name","EventName","Description","EventDescription","Room","EventRoom","Contentful","Images","url","ShownImage","DateDisplay","EventDateDisplay","arg","successCallback","failureCallback","getEventsInRange","eventArray","ReleaseDate2","moment","subtract","format","ReleaseDate1","end","options","pastEvents","productData","allEvents","currentDate","Today","hasDefEvents","definedEvent","evt","uniqBy","IsWorkshop","tz","startOf","isBefore","title","WebFacingProductTitle","start","utc","toDate","productcode","currentTimezone","disable","textColor","EventDateTimes","val","key","dateToUse","Date","message","eventGroup","RelatedDates","keys","groupBy","rdate2","split","Visible","relatedDateArray","oc","date","EventDate","eventIdOrCode","complete","data","GetDefaultProduct","reject","GetAddress","LocationID","defaultAddress","mappedEvent","Location","GetProduct","service","ListAsync","DecorateEventDetails","ListPurchasedEventsAsync","EventDateSort","now","rd","isAfter","GetEvent","GetCalendarEventsAsync","MapToBachmansEvent","GetDateNeeded","SelectedEvent","dateNeededMoment","isSame","add","toISOString","GetLineItemEventTimeRange","SpecsOptions","Size","Color","GetFormattedEventDate","dateString","states","country","rad","PI","getPosition","rej","navigator","geolocation","getCurrentPosition","defaultLocation","lat","coords","latitude","lng","longitude","cType","components","componentType","compMatch","c","types","indexOf","short_name","DirectionsUrlPrefix","GetDistance","p1","p2","dLat","dLong","sin","cos","atan2","sqrt","parseFloat","toFixed","GetCurrentPosition","BuildAddressLines","option","nophone","noStoreName","result","AddressName","CompanyName","Street1","Street2","City","State","Zip","FullAddress","MapGoogleToOrderCloud","gItem","isCompany","address_components","streetNumber","route","formatted_phone_number","Country","productFlag","textAlign","zIndex","ProductFlag","onSaleFlag","float","OnSaleFlag","saleText","border","grey","transition","flexGrow","shadows","cardAction","cardBody","linkViewAll","lineHeight","TextToAttend","fontWeightBold","dateDisplay","gap","EventCard","purchased","images","history","useHistory","useTheme","eventPrice","Card","elevation","path","window","location","pathname","CardActionArea","BachmansCardMedia","eventPlaceHolderImg","CardContent","Typography","Box","CalendarToday","gutterBottom","DoubleOutlinedBtn","styleProps","marginTop","whiteSpace","ContentCard","imageUrl","content","file","linkUrl","superTitle","linkText","Link","href","cursor","cardWrapper","opacity","cardContent","cardTitle","mb0","mb3","cardProductSelector","link","removeLinkContainer","ProductCard","onSale","setOnSale","colorMap","setColorMap","colorVariants","ColorVarient","defaultProduct","sizeVariants","componentMounted","useRef","anonymous","isMobile","useMediaQuery","isFeatured","GetColorMap","then","response","current","userToken","urlSearchParams","URLSearchParams","currentQuery","get","categoryFlag","AlgoliaAnalytics","appId","process","apiKey","useCookie","err","newUserToken","console","sortIndex","getQuickSearchProducts","categorySortIndex","getCategoryProducts","categoryIndex","eventName","indexName","queryID","objectIDs","positions","Position","replaceAll","dataLayer","ecommerce","click","products","ProductService","GetProductName","noImg","dateNowMinus2Weeks","isAnyNew","GrownExclusive","Button","stopPropagation","prodItem","WishList","currentCode","updatedWishList","w","deleteWishListItem","CategoryCard","category","to","CategoryService","BuildCategoryUrlFromId","style","ShortDescription","CardRoot","children","BachmansCard","isArray","inputRef","other","guide","ref","inputElement","mask","showMask","LoyaltyID","bachmansIntegrationsService","GetPurplePerks","perks","expirationDate","getFullYear","ceil","getMonth","purplePerksData","fromEntries","entries","charAt","toUpperCase","slice","log","ExpirationDate","CheckBalanceAsync","popoverRoot","pointerEvents","arrow","borderWidth","borderStyle","modal","bottom","right","borderBottomColor","paperRoot","DropdownMenu","open","anchorEl","arrowPosition","anchorOrigin","transformOrigin","arrowLeftPosition","PaperProps","square","vertical","horizontal","container","placeItems","connect","setBreadcrumbs","visible","links","Container","src","svg404","aria-hidden","align","axios","checkGcBalance","gcNumber","bachmansIntegrationsUrl","cardNumber","post","RegisterPurplePerks","CustomerID","EagleCustomerNumber","toString","OMSAccountNumber","Action","RegisterPurplePerksCECS","CecsCustomerNumber","create","baseURL","jitterbitUrl","PurplePerksCard","ppImg","ppText","outline","outlineOffset","useStyle","purplePerks","PurplePerksContext","preBoldText","setPreBoldText","postBoldText","setPostBoldText","boldText","setBoldText","substring","lastIndexOf","defaultTypes","validMethods","searchLabel","errorText","googleOptions","searchHelp","manualEntry","hasPopover","popoverTemplate","defaultRecipientType","PasswordRequirementsList","config","apiUrl","blobStorageUrl","contentfulEnv","algoliaIndexPrefix","algoliaQueryIndexPrefix","buyerId","catalogid","enableimageZoom","paypalClientID","purplePerksFeatureDisable","userInfo","ocUser","TermsAccepted","Active","registerUserAsync","userNameEmail","passwordResetRequest","ClientID","URL","origin","ForgottenPassword","SendVerificationCode","SendVerificationCodeAsync","gridItem","addressBox","AddressBook","addresses","setAddresses","dialogOpen","setDialogOpen","deleteDialogOpen","setDeleteDialogOpen","selectedAddress","setSelectedAddress","loading","setLoading","ListAddresses","Editable","Shipping","setTimeout","handleOpenDialog","handleOpenDeleteDialog","onAddressUpdate","newAddress","isNewAddress","goBackToPrevious","onAddressDelete","deletedAddressID","navBackTo","onAddressSubmit","PatchAddress","CreateAddress","deleteAddress","DeleteAddress","getAddressNickName","NickName","Nickname","BachmansLoading","Grid","xs","sm","AddressDialog","dialogTitle","onClose","ConfirmDialog","onAccept","loadingText","md","px","dangerouslySetInnerHTML","__html","locationService","expirationDateFormat","month","year","cardId","card","ExpMonth","ExpYear","cc","CardholderName","updateCCAsync","UpdateAsync","ExpirationDateFormat","dialogPaper","closeButton","formControl","minWidth","EditCCDialog","handleClose","creditCard","expMonth","setExpMonth","expYear","setExpYear","years","setYears","months","setMonths","setSubmitting","newCardInfo","creditCardService","updatedCC","currentYear","expDate","yearsArray","i","initYears","initMonths","Dialog","aria-labelledby","DialogTitle","CardType","PartialAccountNumber","IconButton","aria-label","Close","DialogContent","TextField","FormControl","InputLabel","Select","labelId","MenuItem","DialogActions","ccCard","ccBody","CreditCards","creditCards","setCreditCards","editOpen","setEditOpen","deleteOpen","setDeleteOpen","selectedCard","setSelectedCard","ListCreditCards","ccInfo","openEditDialog","handleEditSubmit","isSubmit","go","openDeleteDialog","handleDeleteSubmit","deleteCCAsync","Events","containerUpcoming","containerPast","cardPast","past","setPast","upcoming","setUpcoming","mounted","bachDateTimeService","eventService","purchasedEvents","IsPast","upcomingEvents","isSameOrBefore","Status","successfulOrders","validOrderIds","shipmentQueue","ListShipments","shipmentList","TotalCount","o","orderQueue","getCompletedOrderAsync","myOrder","lineItemData","shipmentData","updatedShipment","ListShipmentItems","shipmentItems","shipmentItemLIs","cloneDeep","reduce","total","test","ShippingAddress","ToAddress","updatedShipments","Payments","paymentData","Shipments","statusMap","Received","Delivered","Canceled","ListOrdersAsync","GetCompletedOrderAsync","OrderStatusFilter","ddmsStatus","shouldTranslate","fontStyle","AddressDisplay","listItemsHeader","borderBottom","paddingLeft","paddingRight","listItemsBody","borderTop","lineItemText","imgAvatar","BachmansLineItems","Hidden","smDown","Avatar","flexWrap","GetLineItemName","IsWorkShopEvent","shipmentHeader","deliveryInfo","deliveryMessage","cardMessage","orderTotals","orderInfo","addressContainer","summary","OrderShipment","Paper","deliveryService","IsPickUp","Shipper","getShipmentName","getAddressType","accountService","Address","GetMediumDate","RequestedDeliveryDate","TimePreference","TimeWindow","DeliveryNote","CardMessage","line1","line2","line3","line4","WiredServiceFees","my","Divider","summaryContainer","OrderDetail","componentRef","React","totalHandling","totalPicking","pickupShipments","reactToPrintTrigger","startIcon","PrintOutlined","reactToPrintContent","paymentType","payment","Type","PartialCardNumber","CardNumber","mb","DateSubmitted","trigger","displayPrint","PrintOrderConfirmation","ShippingCost","TaxCost","SpendingAccounts","Amount","CircularProgress","mobileHeader","gap3","pagination","textRight","accordionSummary","OrderHistory","useLocation","ordersInfo","setOrderInfo","selectedOrderID","setSelectedOrderID","isDesktop","pageParam","parseInt","orderIDParam","AccountService","getRecipients","displayDate","expanded","updateSelectedOrderID","handlePageChange","set","subheader","ListSubheader","ListItem","selected","divider","ListItemText","FromUser","Pagination","count","Accordion","AccordionSummary","expandIcon","ArrowDropDown","aria-controls","AccordionDetails","smUp","unorderedList","PurpleBullets","info","plugins","gfm","purplePerksContainer","imgPurplePerksContainer","imgPurplePerks","purplePerksHeader","purplePerksBox","boxItem","boxItemRight","borderLeft","PurplePerks","purplePerksAccount","setPurplePerksAccount","bachPP","ppAccount","EagleUser","CECSAwardAccountID","register","jitterbitService","updatedUser","purplePerksLogo","Balance","bottomMargin","cancelButton","saveButton","editText","Profile","editingField","setEditingField","handleSetEdit","Wishlist","wishlistProducts","setWishListProducts","codes","groupedProducts","ItemList","listData","pageHeader","navigation","borderRight","activeLink","baseBreadcrumbs","accountLinks","Account","useDispatch","params","useRouteMatch","currentLink","l","innerContent","NotFound","stringService","CapitalizeString","replace","target","IconComponent","ExpandMore","disableGutters","underline","alpha","topLineText","flexBasis","FullWidthContentBlock","fullWidthContent","subTitle","headerText","InlineContentBlock","inlineContent","seoPages","seoDataProps","MetaTitle","MetaDescription","MetaType","MetaSiteName","host","toLowerCase","trim","MetaImage","CanonicalUrl","homepageSEO","errorSEO","initialize","initDefaultPageConstants","deliveryResourceService","GetBuyerXp","buyerXp","SEOPages","seo","appConstants","setSeoDataProps","seoData","seoDataContentful","seoObject","metaImage","$","attr","pageGroupKey","pageSeo","updateSeoData","SEO","GetDefaultImage","Title","servicePage","SetSeoData","GetSeoDataProps","ImportIntoSeoDataProps","notEmptyArray","element","Array","findSetting","setting","dcfCatalog","cat","GetDcfSetting","dcfCategories","fnln","CurrentFineline","cls","CurrentClass","dept","CurrentDepartment","homeContent","HomeContentContext","complexContentBlock","ComplexContentBlocksContext","setInlineContnet","setfullWidthContent","Content","contentfulService","getComplexContentFromIDs","full","svgNoResults","dialogContainer","dialogActions","alignSelf","handleAccept","disableEscapeKeyDown","rememberMe","onTabChange","changeTab","cookiePrefix","useCookies","cookies","removeCookie","loginCount","setLoginCount","displayRecaptcha","setDisplayRecaptcha","recaptchaResponse","setRecaptchaResponse","pageInfo","setPageInfo","RecaptchaDisplay","useFormikContext","setFieldValue","validateForm","showRecaptcha","sitekey","verifyRecaptcha","success","recaptcha","DialogContentText","password","when","is","handleLogin","LastLoginTimeStamp","loggedInUser","getCECSCustomerID","returnedUser","cecsnumber","isOrderCloudError","Errors","Message","passwordNotMeetSecurity","disableTypography","FormControlLabel","control","Checkbox","checked","Register","registerError","setRegisterError","conflictError","setConflictError","forgotMessage","resetMessage","resetDirections","ForgotPassword","mustResetPassword","resetLinkConfirm","setResetLinkConfirm","AuthService","FormHelperText","containerRegister","formContainer","default","AuthDialog","tab","setTab","setMustResetPassword","handleTabChange","newTab","preventDefault","fullScreen","resetPassword","PurplePerksFull","isAuthenticating","dialogBody","overflowY","diaglogTitle","loadingIndicator","localDeliveryError","localDeliveryWarning","btnLogin","addressButton","addressButtonSuggested","addressCard","deliveryMethods","addressStatic","setAddressStatic","addressEditable","setAddressEditable","localAddressData","setLocalAddressData","localCities","setLocalCities","avalaraSuggested","setAvalaraSuggested","avalaraNotFound","setAvalaraNotFound","saveAddress","setSaveAddress","GetLocalCities","local","Billing","avalaraMap","Region","Line1","Line2","PostalCode","handleAvalaraSuggestion","suggestion","mappedAddress","each","v","k","verifiedAddress","isEqual","submitAddress","authAndSubmitAddress","destinationType","GetDestinationTypes","validateAddress","avalaraResp","ResultCode","localAddress","IsAddressLocal","isAddressValid","hasValue","requiresCompanyName","localProducts","CanDeliveryNationWide","onlyLocal","hospitalDisclaimerLabel","authDialogOpen","centerRipple","focusRipple","onAddressChange","destinationOptions","isLocal","severity","genericLine1Error","genericLine2Error","shipmentsNotValidLine1","shipmentsNotValidLine2","inventoryError","giftCardInventoryExceeded","giftCardProcessingError","giftCardNotAvailable","flexGap","featuredFlag","checkProductXP","isGrown","isExclusive","avatar","printContainer","shipmentSection","deliveryText","deliveryDescription","textDeliveryFee","orderSummaryTitle","textCurrency","textCurrencyShipmentTotal","darkDivider","orderTotal","textSummaryCurrency","flexGap1","bgLight","specialRequest","marginBlock","productInfoTable","subtext","fragmentation","breakInside","pageBreakInside","derpFace","match","getShipmentItemsText","mr","logoPurple","flexItem","orientation","marginInline","GetLineItemColorType","GetLineItemSizeType","ProductNote","bgcolor","gridContainerPurplePerks","gridItemPurplePerks","imgPurplePerksAuth","titlePurplePerks","listPurplePerks","listStyleType","listPurplePerksAuth","propsArgs","displayTitle","handleRegisterClick","authDialogState","registerForPurplePerks","ppAccountBalanceInfo","flex-wrap","align-items","geography","States","Countries","autocompleteService","icon","GoogleAutoComplete","destination","inputValue","onInputChange","setValue","setOptions","loaded","document","querySelector","script","createElement","setAttribute","appendChild","loadScript","fetch","throttle","request","callback","getPlacePredictions","active","google","maps","places","AutocompleteService","newOptions","Autocomplete","getOptionLabel","clearOnBlur","filterOptions","includeInputInList","filterSelectedOptions","getOptionSelected","place_id","newValue","formField","getElementById","PlacesService","getDetails","placeId","ocAddress","onAddressSelect","newInputValue","renderInput","autoComplete","renderOption","structured_formatting","main_text_matched_substrings","parts","main_text","offset","part","highlight","secondary_text","InStorePickUpWrapper","CardStoreInformation","CardStoreActions","initialEditedTracker","requiredFields","AddressForm","edited","setEdited","bachmansStores","setBachmansStores","churchOption","setChurchOption","phoneInputRef","directionsUrl","GetPickUpStores","stores","handleAddressChange","addressToUpdate","OnlyNumbers","OnlyAlpha","updatedAddress","handleAddressSelect","businessName","selectionStart","selectionEnd","focus","displayError","editedValue","dest","RadioGroup","row","Radio","CardActions","store","PlaceID","selectedStore","onFocus","select","inputProps","maxLength","autoHighlight","autoSelect","disablePortal","newVal","handleStateChange","onKeyPress","disableClearable","ValidEmail","colorMapCache","userTokenn","isProductAvailable","showPast","isSameOrAfter","isBetween","endOf","IsProductAvailable","ProductInventoryDateFilter","InventoryCodeB3","checkProduct","CodeB3","Inventory","QuantityAvailable","SafetyStock","res1","hasOtherProductOptions","DisableAddtoCart","listOcProducts","listOptions","ListProducts","productsObject","inDateProducts","productFilterService","inInventoryProducts","onlyDefault","catalogID","buildContentfulOptions","contenttype","buildListOptions","l2categoryChildren","facetToCollect","f","facetsLogic","facetsInKey","facet","categorylist","catID","quickSearchFlag","SearchResultSortIndex","getSortIndex","noFacetFilters","noFacetOptions","noFacetRes","emptyFacets","decorateAlgoliaResults","clickAnalytics","getQuerySuggestionIndex","getQueryIndex","getAlgoliaContentIndex","productCodeFilter","productsToList","hit","matchingProducts","BestAlgoliaMatch","updateFacet","facetValues","FacetNameKey","facetResults","updatedFacetValues","pick","finishMaxQuantity","productID","otherLines","line","LineItemID","qty","n","determineAddedQuantity","getProductCategory","categories","activeCatIDs","Categories","ListProductAssignments","assignments","validAssignments","assignment","CategoryID","bestMatch","getBreadCrumbsFromProduct","categoryService","BuildBreadCrumb","txt","substr","GetProductGroup","productCode","productListData","getColorMap","GetMostFrequentCategory","categoryIdFacets","allCategories","mostFrequentCatID","sort","b","ListContentFulData","ListProductsSuggestions","DetermineMaxQuantity","Enabled","MaxQuantity","determineMaxLineItemQuantity","ProductNameFilter","DetermineMinQuantity","MinQuantity","MapFacetResultsToInitFacetList","facetList","origFacetList","newFacetResults","GetProductCategory","GetBreadCrumbsFromProduct","IsNationWideAvailable","CodeB2","GetProductImage","ProductOutOfStock","titleOrName","BuildNoFacetOptions","IntegrateOCAlgolia","Configuration","Set","baseApiUrl","cookieOptions","prefix","clientId","createContext","loadingPane","SessionProvider","setUser","tokenTimeout","setTokenTimeout","setToken","setCookie","isOrphaned","meUser","OrderCloudToCecsCustomerStatus","EagleToFour51CustomerUpdateTimeStamp","lastUserSyncTimestamp","lastSyncTimestamp","lastSyncMoment","lastUserSyncMoment","diff","hasBeenSynced","LastCustomerSyncTimeStamp","CreatedFrom","Four51ToEagleCustomerFileStatus","dateCreated","today","createdMoment","wasCreatedToday","Four51ToEagleCustomerFileTimeStamp","DateCreated","setBachmansUser","bachUser","Orphaned","validateToken","GetValidToken","validToken","SetAccessToken","Anonymous","anon","access_token","SetRefreshToken","refresh_token","deliveryResource","Init","setAnonTokens","attemptRefresh","refreshToken","GetRefreshToken","RefreshToken","refreshed","createTokenTimeout","currentSecondsWithBuffer","refreshTimeInMilliseconds","exp","JwtDecode","clearTimeout","refreshUser","handleRememberMe","username","DOMPurify","sanitize","auth","currentAnonToken","logout","patchObject","update","contextValue","Provider","hd","HolidayMatch","Thanksgiving","Easter","Halloween","dateFormat","getCST","getUTC","sameDayCutoff","Shippers","SameDayDeliveryCountDownTimer","sameDay","sameDayEnabled","method","cutoff","cst","SameDayDelivery","getMyHolidays","holidayArray","holiday","h","holidayNoPunct","GetCST","GetUTC","valueOf","Tomorrow","IsHoliday","Holidays","thisHoliday","isHoliday","holidayObj","thisHolidayName","allHolidays","IsSameDay","dayMoment","dateNeeded","utcDateNeeded","IsAfterNextDayAMCutoff","momentMins","minutes","momentHours","hour","updatedmomentMins","NextDayAMDeliveryCutoff","IsBeforeMinDate","minDateOption","SameDay","SameDayCutoff","SameDayEnabled","CountDown","timeLeftSuffix","Algolia","client","facetsToDisplay","algoliasearch","initIndex","sortedQueries","envPrefix","queryArr","responseArray","multipleQueries","resp","RouterLink","buttonProgress","dataUrl","DoubleOutlinedLinkBtn","guid","s4","floor","random","buildConfig","headers","Authorization","orderCalculate","orderId","OrderID","OrderDirection","orderSubmit","approvedTotal","payments","ApprovedTotal","BachmansPayments","submit","upsertLineItem","lineItemReq","put","ccID","ccRequestBody","delete","getCatalogCache","searchGoogleAddress","eagleUser","purple_perks_url","purple_perks_url_for_eagle_user","customerId","updateEagleCustomer","toValidate","addressline1","addressline2","city","zipcode","validateGiftCard","giftCardCount","PinEnabled","giftCardBalance","BraintreeToken","userID","getParsedEntries","getEntries","parseEntries","getContentTypeAsync","contentTypeID","getContentType","getAssets","groupStaticPagesBySection","staticPages","sections","parentPage","listOrder","section","pages","slug","getArticlesByTag","tags","items","validations","in","tag","getWorkshopAndEventsLinks","content_type","include","parsedRespone","complexContent","navLinks","createClient","space","environment","getContentTypes","ids","simpleContent","matched","sys","simple","complex","getDestinationTypes","methods","isPickUp","intersection","isLocalDelivery","zipCode","addressMatchingZip","GetMatchingAddress","localAddresses","PreCompare","getRouteCode","isClosedHoliday","holidays","currentMoment","closedHolidays","time","day","isDateDisabled","shippingAddress","lyndaleStore","delMethod","mode","isDisabled","weekday","isoWeekday","WorkingHrs","workingRange","StartDate","EndDate","Closed","DeliveryDatesN","areDeliveryRunsDisabled","skuDisabled","NonDeliveryDates","getDateOptions","GetLyndaleStore","determineMinimumDate","deliveryType","includeSameDay","minimumDate","deliveryMethodBuffer","leadDays","minimumDisabled","determineCommonDate","minDate","commonDate","commonShipment","standardMinDate","commonMinDate","deliverySetting","runsDisabled","settingsArray","disabledAmount","checkedRun","AM","preCompare","getPickUpStores","storeDestination","canDeliveryWire","CodeB4","canDeliverNationwide","GetAvailableDeliveryMethods","methodsArray","dcfService","some","thisType","m","t","enabled","GetDateOptions","IsLocalDelivery","IsDateDisabled","rc","addressesMatchingZip","CanDeliver","CanDeliverWire","GetDeliveryRun","DeliveryRuns","GetAddressName","EnsureDateNeededAfterDateAdded","dateAdded","DateNeeded","added","newDate","hours","AllShipmentsArePickUp","every","GetMatchingDeliveryMethod","deliveryShipments","currentDeliveryMethods","BuildDeliveryDateOption","toDateString","selectedOption","GetDeliveryTypeFromAddress","currentMethod","Courier","desktopGridColumn","desktopColumnHeader","desktopLinkItem","LinkColumn","expandedIndex","expandCallback","formatedLinks","setFormattedLinks","formatted","unshift","handleExpandClick","getRoute","isExpanded","direction","primaryTypographyProps","Remove","Add","Collapse","dense","goToRoute","SocialMediaLinks","TikTokIcon","xmlns","NewTwitterX","Instagram","Facebook","YouTube","Pinterest","rootMarginTop","purpleFooterSummary","logoFooter","copyright","footerMarkdown","Footer","setExpandedIndex","formattedPages","setFormattedPages","topCategories","setTopCategories","workshopEventLinks","setWorkshopEventLinks","footerListGroups","setfooterListGroups","StaticPageContext","CatalogContext","footerContentful","FooterContext","contentful","topCats","ParentID","ListOrder","ChildCount","ready","Services","services","information","Corporate","corporate","selectedIndex","currentState","logoBadge","footerContent","Breadcrumbs","breadcrumbs","hideHome","separator","listRoot","listHeader","subCatTitle","subCatListItem","MegaMenuSubCategory","subcategory","onItemClick","subCategoryChildren","maxHeight","appBar","MegaMenu","onClickAway","Popover","ClickAwayListener","articleItem","articleTitle","ButtonViewAll","RelatedArticles","articles","categoryId","articleLinks","article","disablePadding","handleViewAllArticles","disableRipple","disableFocusRipple","endIcon","KeyboardArrowRightSharp","useDebounce","delay","debouncedValue","setDebouncedValue","toggle","handler","topLevelCat","subcategoriesContainer","subcategories","columns","columnFill","columnRule","overflowX","pageBreakAfter","relatedArticles","TopLevelCategories","containerRef","setAnchorEl","isOpen","setIsOpen","debouncedOpen","l2Categories","setL2Categories","selectedCat","setSelectedCat","handleMenuOpen","handleMenuClose","onCategoryMouseEnter","activeCategory","subCategories","topCatLinks","onMouseEnter","onMouseLeave","Articles","Skeleton","animation","CategoryToolbar","Toolbar","mobile","desktop","MiniCart","cartCount","goToCart","Badge","badgeContent","SvgIcon","cx","cy","mobileStepper","SearchResultsHeader","toggleMenu","handleRoute","ChevronRight","imgWrapper","resultTitle","overflowWrap","careInfoTitle","SearchResult","clickAll","handleResultSelection","careinfosortIndex","careinfoindex","querySuggestionsortIndex","querySuggestionindex","encodeURIComponent","pos","currentTarget","getAttribute","objectID","Suggestionpos","Catpos","exact_matches","Category","data-index","ListItemAvatar","Fragment","SearchResults","limitedResults","setLimitedResults","limitedSuggestions","setLimitedSuggestions","processedResultsForCat","someItem","header","tabs","activeTab","TabPanel","role","hidden","MobileSearchMenu","menuOpen","onInputClear","suggestions","careInfo","contentfulCandA","tabValue","setTabValue","Drawer","anchor","InputBase","placeholder","endAdornment","Search","Tabs","centered","indicatorColor","Tab","SearchDropdown","disableAutoFocus","disableEnforceFocus","searchResultsContainer","searchResultFooter","footerTitle","SearchBar","anchorRef","setAnchorRef","setProducts","setCategories","setSuggestions","setcontentfulCandA","setQueryTerm","isDropDownOpen","setIsDropDownOpen","isMenuOpen","setIsMenuOpen","setEvents","setArticles","setInformation","setCareInfo","timer","setTimer","enterPressed","group","optionsProducts","performMultipleSearch","queries","callMultipleSearch","arrayList","getProductOptions","queryString","getQueriesList","getQueriesInit","queryResp","buildOpts","indices","responseItem","mapBestMatchProducts","sortedEventResults","eventResults","responseList","ocPopulatedResp","searchArticles","searchInformation","updatedFilters","toggleDropDown","handleInputChange","searchTerm","handleClearInput","topArticles","topInformation","MenuOpen","signOutButton","AccountMenu","handleLogout","py","mobileMenuBottom","mobileMenuTitle","MobileDrawer","menuTitle","MobileAccountMenu","linkInfo","User","onAuthDialogOpen","accountMenuOpen","setAccountMenuOpen","accountMobileMenuOpen","setAccountMobileMenuOpen","toggleAccountMobileMenu","Person","ArrowDropUp","spacer","dropdown","ContentLinksMenu","contentLinks","menuLink","list","Links","linkIndex","categoryTitleWrapper","categoryTitle","viewRelatedArticles","MobileMenuSubCategory","categoryClickCallbak","resource","resourceClickCallback","selectedID","expandIcons","isStaticPageWithKids","displayIcon","getPageTitle","MobileMegaMenu","displayMobileSubCategoryState","setMobileDisplaySubCategoryState","mobileMenu","topCatList","backToTopCategories","categoryIconButton","viewRelatedArticleListItem","viewRelatedArticlesWrapper","alignContent","setMenuTitle","handleCatSelect","showSubCat","handleOnSaleSelect","handleArticlesSelect","ChevronRightSharp","mobileSubCats","ChevronLeft","subcat","menuItemHeading","containerDrawer","sectionIconButton","backToResources","MobileContentLinksMenu","displaySubCat","setDisplaySubCat","selectedSubCats","setSelectedSubCats","setTitle","routeInfo","handleHeaderClick","handleSectionListSelect","sortedReferenceToolsArr","handleResourceSelect","rootSlug","subCategoryList","pageLinkInfo","branchSlug","resourceLinks","MobileContactUs","rootShadow","MobileContentMenu","utilityLinks","utilityLinkTel","mainNav","navBrand","navMenuRight","menuItems","mobileNavigation","iconMobileNavigation","resourceIcon","fontsize","articleLinksNav","Header","bottomNavValue","setBottomNavValue","setMenuOpen","contactUsMobileMenuOpen","setContactUsMobileMenuOpen","articleTagList","setArticleTagList","bachmansBlog","setBachmansBlog","breadCrumbState","shift","articleTags","blog","tagInfo","toggleResourceMobileMenu","resourceStatus","resourceDrawerOpen","handleAuthDialogOpen","AppBar","BottomNavigation","showLabels","BottomNavigationAction","iconProducts","iconEvents","iconLocations","iconContact","iconResource","usePageTracking","ReactGA","plugin","require","initialized","setInitialized","debug","pageview","session","interceptors","use","OrderCloud","newRedirect","patch","PayPalScriptProvider","clientToken","setClientToken","Braintreeresponse","dataClientToken","enableFunding","commit","intent","vault","Home","lazy","Catalog","ProductDetail","StyleGuide","StoreDetail","SearchResultsContainer","StoreLocator","EventsLanding","EventList","EventCalendar","EventDetail","StaticPages","OnSaleThisWeek","GiftCard","Cart","Checkout","OrderConfirmation","ProductNotFound","ResetPassword","MainContent","urlToRoute","BachmansMiddleware","getRedirects","redirects","currentRelPath","redirect","sessionStorage","getItem","removeItem","pageSeoKeyId","currentPathname","isForCareAdviceAndInfoPages","isForSearchResultsPage","isForCategoryPages","isForProductPages","isForServicesPages","isForWorkshopAndEventsLandingPage","isForStoreLocatorPage","isForEventCalendarPage","isForPlantLibrary","isFor404Pages","getPageKeyContext","seoService","fallback","exact","render","isContainer","ScrollToTop","scrollTo","behavior","ErrorBoundary","errorInfo","setState","svgError","goBackLink","componentStack","Component","withStyles","withCookies","CssBaseline","Helmet","hostname","configureStore","reducer","breadcrumbsReducer","orderReducer","ReactDOM","StrictMode","CookiesProvider","ThemeProvider","serviceWorker","registration","unregister","catch","ArticlesContext","SimpleContentBlocksContext","WorkWithBachmansContext","EventsLandingContext","ContentfulProvider","setStaticPages","simpleContentBlocks","setSimpleContentBlocks","complexContentBlocks","setComplexContentBlocks","setHomeContentPage","footer","setFooter","setPurplePerks","WorkWithBachmans","setWorkWithBachmans","eventsLanding","setEventsLanding","limit","stripHtml","isL3Category","urlPrefixKey","pageDesc","Case","kebab","cleanPageDesc","redirectSuffix","finalUrl","BuildCategoryIdforQuery","formattedCatID","BuildCategoryIdFromParts","pascal","CategoriesFilter","newArray","startDate","endDate","HasContentOnCategory","isNull","GetAseCategoriesFromIDs","aseCategoryIDs","ListCategories","orderedArray","categoryID","eventLanding","IsPage","breadcrumb","currentCat","findIndex","myCrumbs","build","breadcrumbsSlice","getLyndaleStore","LyndaleStore","getLocalCities","LocalCities","Addresses","check","wait","BuyerXp","getBuyerXp","buyerxp","CatalogProvider","DCFcategories","setDCFCategories","initCategories","inSeasonCategories","filtered","exclude","parent","grandparent","categoriesSortbyListOrder","Camel2Dash","stringOption","g","str","separators","regex","RegExp","ArraysEqual","arr1","arr2","equal","AmPmFormat","char","ampm","letter","out","GetQueryParamsFromLocation","GetStaticPageParams","queryParams","pathArray","rootslug","branchslug","leafslug","GetFirstPath","pathName","OnlyAlphaNumeric"],"mappings":"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","file":"static/js/main.90fb9fb1.chunk.js","sourcesContent":["export interface RegexConstants {\r\n validPassword: RegExp;\r\n validEmail: RegExp;\r\n validCardMessage: RegExp;\r\n validName: RegExp; // true if name is valid\r\n invalidName: RegExp; // true if name is invalid\r\n nonNumeric: RegExp;\r\n alphaNumeric: RegExp;\r\n validPhone: RegExp;\r\n}\r\n\r\nexport const regexConstants: RegexConstants = {\r\n validPassword: /^(?=.*\\d)(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%])(.{10,})$/,\r\n validEmail: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i,\r\n validCardMessage: /^[a-zA-Z0-9_ !@#$%\\^*+=\\-_;:\",.?]*$/,\r\n validName: /[a-zA-Z_ .'-]$/g,\r\n invalidName: /[^a-zA-Z_ .'-]/g,\r\n nonNumeric: /[^0-9]/g,\r\n alphaNumeric: /^[a-zA-Z0-9]*$/,\r\n validPhone: /^\\(?\\d{3}\\)?-? *\\d{3}-? *-?\\d{4}$/,\r\n};\r\n","export const isOfType = (varToBeChecked: any, propertyToCheckFor: keyof T): varToBeChecked is T =>\r\n (varToBeChecked as T)[propertyToCheckFor] !== undefined;\r\n\r\n// https://rangle.io/blog/how-to-use-typescript-type-guards/\r\n","export interface DeliveryMap {\r\n [key: string]: any;\r\n}\r\nexport const deliveryTextMap: DeliveryMap = {\r\n LocalDelivery: {\r\n text: \"Delivery\",\r\n fee: \"Delivery Fees\",\r\n description: \"Twin Cities Delivery\",\r\n },\r\n Email: {\r\n text: \"Delivery\",\r\n fee: \"\",\r\n description: \"Email Delivery\",\r\n },\r\n UPS: {\r\n text: \"Delivery\",\r\n fee: \"Delivery Fees\",\r\n description: \"UPS Shipping\",\r\n },\r\n USPS: {\r\n text: \"Delivery\",\r\n fee: \"Delivery Fees\",\r\n description: \"USPS Shipping\",\r\n },\r\n Wired: {\r\n text: \"Delivery\",\r\n fee: \"Delivery Fees\",\r\n description: \"Partner Florist Delivery\",\r\n },\r\n TFE: {\r\n text: \"Delivery\",\r\n fee: \"Delivery Fees\",\r\n description: \"Partner Florist Delivery\",\r\n },\r\n FTD: {\r\n text: \"Delivery\",\r\n fee: \"Delivery Fees\",\r\n description: \"Partner Florist Delivery\",\r\n },\r\n InStorePickUp: {\r\n text: \"Pickup\",\r\n fee: \"Picking Fee\",\r\n description: \"In-Store Pickup\",\r\n },\r\n CurbsidePickUp: {\r\n text: \"Pickup\",\r\n fee: \"Picking Fee\",\r\n description: \"Curbside Pickup\",\r\n },\r\n};\r\n","import { createTheme, ThemeOptions } from \"@material-ui/core/styles\";\r\nimport { purple, green, red } from \"./colors\";\r\n\r\nconst fontFallbackStack =\r\n \", -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji\";\r\n\r\nconst colorsFonts: ThemeOptions = {\r\n typography: {\r\n h1: {\r\n fontFamily: \"Roboto Slab\" + fontFallbackStack,\r\n fontWeight: 500,\r\n fontSize: \"28px\",\r\n },\r\n h2: {\r\n fontFamily: \"Roboto Slab\" + fontFallbackStack,\r\n fontWeight: 700,\r\n fontSize: \"24px\",\r\n },\r\n h3: {\r\n fontFamily: \"Proxima Nova\" + fontFallbackStack,\r\n fontWeight: \"bold\",\r\n textTransform: \"uppercase\",\r\n fontSize: \"18px\",\r\n fontSmooth: \"always\",\r\n },\r\n h4: {\r\n fontFamily: \"Roboto Slab\" + fontFallbackStack,\r\n fontWeight: 600,\r\n fontSize: \"16px\",\r\n },\r\n h5: {\r\n fontFamily: \"Proxima Nova\" + fontFallbackStack,\r\n fontWeight: \"bold\",\r\n fontSize: \"14px\",\r\n \"-webkit-font-smoothing\": \"antialiased\",\r\n \"-moz-osx-font-smoothing\": \"grayscale\",\r\n },\r\n h6: {\r\n fontFamily: \"Roboto Slab\" + fontFallbackStack,\r\n fontWeight: 500,\r\n textTransform: \"uppercase\",\r\n fontSize: \"12px\",\r\n \"-webkit-font-smoothing\": \"antialiased\",\r\n \"-moz-osx-font-smoothing\": \"grayscale\",\r\n },\r\n body1: {\r\n //BODY CONTENT\r\n fontFamily: \"Proxima Nova\" + fontFallbackStack,\r\n fontWeight: \"normal\",\r\n fontSize: \"14px\",\r\n \"-webkit-font-smoothing\": \"antialiased\",\r\n \"-moz-osx-font-smoothing\": \"grayscale\",\r\n },\r\n body2: {\r\n // FACET LIST\r\n fontFamily: \"Proxima Nova\" + fontFallbackStack,\r\n fontWeight: \"normal\",\r\n fontSize: \"12px\",\r\n },\r\n subtitle1: {\r\n //CATEGORY TITLE\r\n fontFamily: \"Proxima Nova\" + fontFallbackStack,\r\n fontWeight: \"normal\",\r\n fontSize: \"18px\",\r\n },\r\n subtitle2: {\r\n //CATEGORY SPECIAL TITLE\r\n fontFamily: \"Proxima Nova\" + fontFallbackStack,\r\n fontWeight: \"bold\",\r\n fontSize: \"12px\",\r\n },\r\n overline: {\r\n //DIRECTIONS\r\n fontFamily: \"Proxima Nova\" + fontFallbackStack,\r\n fontWeight: \"normal\",\r\n textTransform: \"uppercase\",\r\n fontSize: \"12px\",\r\n letterSpacing: \"normal\",\r\n },\r\n caption: {\r\n //SEO COPY\r\n fontFamily: \"Roboto Slab\" + fontFallbackStack,\r\n fontWeight: \"lighter\",\r\n fontSize: \"14px\",\r\n },\r\n button: {\r\n fontFamily: \"Proxima Nova\" + fontFallbackStack,\r\n fontWeight: \"bold\",\r\n fontSize: \"14px\",\r\n textTransform: \"none\",\r\n },\r\n },\r\n palette: {\r\n primary: {\r\n main: purple.regular,\r\n dark: purple.hover,\r\n light: purple.light,\r\n },\r\n secondary: {\r\n main: green.regular,\r\n contrastText: \"#fff\",\r\n },\r\n error: {\r\n main: red.regular,\r\n },\r\n },\r\n};\r\n\r\nconst defaultTheme = createTheme(colorsFonts);\r\n\r\nconst theme = createTheme({\r\n ...colorsFonts,\r\n overrides: {\r\n MuiFormLabel: {\r\n asterisk: {\r\n color: \"#db3131\",\r\n \"&$error\": {\r\n color: \"#db3131\",\r\n },\r\n },\r\n },\r\n MuiCssBaseline: {\r\n \"@global\": {\r\n body: {\r\n backgroundColor: defaultTheme.palette.background.paper,\r\n [defaultTheme.breakpoints.down(\"sm\")]: {\r\n paddingBottom: 56,\r\n minHeight: \"100vh\",\r\n },\r\n },\r\n },\r\n },\r\n MuiFormHelperText: {\r\n root: {\r\n ...defaultTheme.typography.body2,\r\n },\r\n contained: {\r\n marginLeft: 0,\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n root: {\r\n borderRadius: 0,\r\n backgroundColor: defaultTheme.palette.background.paper,\r\n },\r\n },\r\n MuiButton: {\r\n root: {\r\n borderRadius: 0,\r\n },\r\n contained: {\r\n boxShadow: \"none\",\r\n \"&:hover\": {\r\n boxShadow: \"none\",\r\n },\r\n \"&:focus\": {\r\n boxShadow: \"none\",\r\n },\r\n },\r\n outlined: {\r\n \"&:hover\": {\r\n borderColor: defaultTheme.palette.primary.dark,\r\n backgroundColor: defaultTheme.palette.primary.dark,\r\n color: defaultTheme.palette.getContrastText(defaultTheme.palette.primary.dark),\r\n },\r\n },\r\n outlinedPrimary: {\r\n \"&:hover\": {\r\n borderColor: defaultTheme.palette.primary.dark,\r\n backgroundColor: defaultTheme.palette.primary.dark,\r\n color: defaultTheme.palette.getContrastText(defaultTheme.palette.primary.dark),\r\n },\r\n },\r\n outlinedSecondary: {\r\n \"&:hover\": {\r\n borderColor: defaultTheme.palette.secondary.dark,\r\n backgroundColor: defaultTheme.palette.secondary.dark,\r\n color: defaultTheme.palette.getContrastText(defaultTheme.palette.secondary.dark),\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport default theme;\r\n","import { useDispatch, TypedUseSelectorHook, useSelector } from \"react-redux\";\r\n// apparently TypedUseSelectorHook is accidently deperecated- still recommended to use it. https://stackoverflow.com/questions/64895977/use-of-createselectorhook-instead-of-deprecated-typeduseselectorhook#comment119475430_64925266\r\nimport { AppDispatch, RootState } from \"./store\";\r\n\r\nexport const useAppDispatch = () => useDispatch();\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector; // wrapper to help typescript see types on Rootstate\r\n","class DecorateCalcResponseError extends Error {\r\n public LineItemIDs?: string[];\r\n constructor(msg: string, lineItemIDs?: string[]) {\r\n super(msg);\r\n this.LineItemIDs = lineItemIDs;\r\n\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, DecorateCalcResponseError.prototype);\r\n }\r\n}\r\n\r\nexport default DecorateCalcResponseError;\r\n","import { AsyncThunkAction, createAsyncThunk, createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { Address, LineItem, LineItems, Me, Order, Orders, Tokens } from \"ordercloud-javascript-sdk\";\r\nimport BachmansOrder from \"../../models/order\";\r\nimport { BachmansShipmentWithLineItems } from \"../../models/shipment\";\r\nimport bachmansIntegrations, { OrderCalculateResponse } from \"../../services/bachmansIntegrations.service\";\r\nimport { AppThunk } from \"../store\";\r\nimport jwtDecode from \"jwt-decode\";\r\nimport { flatten, sumBy, uniq } from \"lodash\";\r\nimport { DeliveryTypes } from \"../../models/buyerXp\";\r\nimport productService from \"../../services/product.service\";\r\nimport DecorateCalcResponseError from \"../../models/DecorateCalcResponseError\";\r\nexport interface OrderState {\r\n status: \"pending\" | \"success\" | \"failed\";\r\n order?: BachmansOrder;\r\n shipments?: BachmansShipmentWithLineItems[];\r\n error?: any;\r\n \r\n}\r\n\r\n\r\nconst initialState: OrderState = {\r\n status: \"pending\",\r\n \r\n};\r\n\r\nconst orderSlice = createSlice({\r\n name: \"order\",\r\n initialState,\r\n reducers: {\r\n setPending(state) {\r\n state.status = \"pending\";\r\n },\r\n setOrderSuccess(state, action: PayloadAction) {\r\n state.status = \"success\";\r\n state.order = action.payload;\r\n state.error = undefined;\r\n },\r\n setOrderFailed(state, action: PayloadAction) {\r\n state.status = \"failed\";\r\n state.error = action.payload;\r\n },\r\n setCalcSuccess(state, action: PayloadAction) {\r\n state.status = \"success\";\r\n state.order = action.payload.Order;\r\n state.shipments = action.payload.CalculatorShipments;\r\n state.error = undefined;\r\n },\r\n setCalcFailed(state, action: PayloadAction) {\r\n state.status = \"failed\";\r\n state.error = action.payload;\r\n },\r\n extraReducers: (builder: any) => {\r\n builder.addCase(calculateOrder.pending, (state: any, action: any) => {\r\n state.status = \"pending\";\r\n });\r\n },\r\n },\r\n});\r\n\r\nconst { setPending, setOrderSuccess, setOrderFailed, setCalcSuccess, setCalcFailed } = orderSlice.actions;\r\n\r\nexport default orderSlice.reducer;\r\n\r\nexport const transferAndInitOrder = (anonUserToken: string): AppThunk => async (dispatch) => {\r\n dispatch(setPending());\r\n try {\r\n await Me.TransferAnonUserOrder({ anonUserToken: anonUserToken });\r\n } finally {\r\n await dispatch(initOrder());\r\n }\r\n};\r\n\r\nexport const initOrder = (): AppThunk => async (dispatch) => {\r\n const token = Tokens.GetAccessToken();\r\n if (token) {\r\n try {\r\n dispatch(setPending());\r\n // Step 1 get order\r\n const decoded: any = jwtDecode(token);\r\n var isAnon = decoded?.usr === \"anon-template-user\";\r\n const currentOrder = await getOrder(isAnon, token, decoded.orderid);\r\n dispatch(setOrderSuccess(currentOrder));\r\n\r\n // step 2 calculate order if there are line items\r\n if (currentOrder && currentOrder?.LineItemCount && currentOrder.LineItemCount > 0) {\r\n \r\n await dispatch(calculateOrder(currentOrder.ID!));\r\n } else {\r\n // no line items on order, reset shipments\r\n dispatch(\r\n setCalcSuccess({\r\n Order: currentOrder,\r\n CalculatorShipments: [],\r\n\r\n })\r\n );\r\n }\r\n } catch (ex) {\r\n dispatch(setOrderFailed(ex));\r\n }\r\n }\r\n};\r\n\r\nconst getOrder = async (isAnon: boolean, token: string, orderid?: string): Promise => {\r\n let order;\r\n if (isAnon) {\r\n try {\r\n order = orderid ? await Orders.Get(\"Outgoing\", orderid, { accessToken: token }) : makeOrder(isAnon, orderid);\r\n } catch {\r\n order = makeOrder(isAnon, orderid);\r\n }\r\n } else {\r\n const orderList = await Me.ListOrders({\r\n sortBy: \"!DateCreated\" as any,\r\n filters: { status: \"Unsubmitted\" as any },\r\n });\r\n order = orderList?.Items[0];\r\n }\r\n return order ? order : makeOrder(isAnon, orderid);\r\n};\r\n\r\nconst makeOrder = async (isAnon: boolean, orderID?: string): Promise => {\r\n if (isAnon) {\r\n return {\r\n ID: orderID,\r\n };\r\n } else {\r\n return await Orders.Create(\"Outgoing\", {});\r\n }\r\n};\r\n\r\nexport const calculateOrder = createAsyncThunk(\"order/calculate\", async (orderID: string,ThunkAPI) => {\r\n try {\r\n\r\n const calcResponse = await bachmansIntegrations.order.calculate(orderID);\r\n const decoratedResponse = await decorateCalcResponse(calcResponse);\r\n ThunkAPI.dispatch(setCalcSuccess(decoratedResponse));\r\n } catch (ex: any) {\r\n if (ex.LineItemIDs) {\r\n await ThunkAPI.dispatch(deleteLi({ idsToDelete: ex.LineItemIDs, orderID: orderID }));\r\n }\r\n ThunkAPI.dispatch(setCalcFailed(ex));\r\n }\r\n});\r\n\r\nexport interface DecorateCalcError {\r\n Message?: string;\r\n LineItemIDS?: string[];\r\n}\r\n\r\nexport const decorateCalcResponse = async (calcResponse: OrderCalculateResponse): Promise => {\r\n let lineItemDeleteQueue: string[] = [];\r\n const uniqueProdIds = uniq(\r\n flatten(calcResponse.CalculatorShipments.map((s) => s.LineItems.map((li) => li.ProductID)))\r\n );\r\n\r\n const productsOnOrder = await productService.ListOcProducts({ filters: { ID: uniqueProdIds.join(\"|\") } });\r\n\r\n const lineItems = flatten(calcResponse.CalculatorShipments.map((s) => s.LineItems));\r\n lineItems.forEach((li) => {\r\n const matchingPrd = productsOnOrder.Items.find((p) => p.ID === li.ProductID);\r\n if (!matchingPrd && li.ID && uniqueProdIds[0] !== \"EGIFTCARD\") {\r\n lineItemDeleteQueue.push(li.ID!);\r\n }\r\n });\r\n if (lineItemDeleteQueue.length > 0) {\r\n throw new DecorateCalcResponseError(\"Products not available\", lineItemDeleteQueue);\r\n }\r\n const productSpecReqs = uniqueProdIds?.map((id) => Me.ListSpecs(id));\r\n const productSpecResulsts = flatten((await Promise.all(productSpecReqs))?.map((res) => res.Items));\r\n calcResponse.Order.CartCount = 0;\r\n calcResponse.Order.WiredServiceCharges = 0;\r\n calcResponse.Order.HandlingCharges = 0;\r\n calcResponse.Order.AssemblyCharges = 0;\r\n calcResponse.Order.PlacementCharges = 0;\r\n calcResponse.Order.HasUnavailableProducts = false;\r\n calcResponse.CalculatorShipments.forEach(async (shipment) => {\r\n let plcMarkup = 0;\r\n let asMarkup = 0;\r\n shipment.LineItems.forEach((li) => {\r\n li?.Specs?.forEach((spec) => {\r\n const matchingSpec = productSpecResulsts.find((s) => s.ID === spec.SpecID);\r\n const matchingOption = matchingSpec?.Options.find((opt) => opt.ID === spec.OptionID);\r\n if (matchingOption?.ID === \"AssemblyCharge\") {\r\n asMarkup += matchingOption?.PriceMarkup || 0;\r\n } else if (matchingOption?.ID === \"PlacementCharge\") {\r\n plcMarkup += matchingOption?.PriceMarkup || 0;\r\n }\r\n });\r\n calcResponse.Order.CartCount! += li.Quantity;\r\n });\r\n shipment.AssemblyCharges = asMarkup;\r\n shipment.PlacementCharges = plcMarkup;\r\n shipment.Subtotal = sumBy(shipment.LineItems, (item) => item.LineTotal || 0);\r\n shipment.Total = shipment.Subtotal + (shipment.Cost || 0) + asMarkup + plcMarkup;\r\n });\r\n return calcResponse;\r\n};\r\n\r\nexport interface patchLiQuantityParams {\r\n orderID: string;\r\n liID: string;\r\n quantity: number;\r\n disableCalcOrder?: boolean;\r\n}\r\n\r\nexport const patchLiQuanity = createAsyncThunk(\r\n \"order/patchLiQuantity\",\r\n async (args: patchLiQuantityParams, thunkAPI) => {\r\n const { orderID, liID, quantity, disableCalcOrder } = args;\r\n try {\r\n await LineItems.Patch(\"Outgoing\", orderID, liID, { Quantity: quantity });\r\n if (!disableCalcOrder) await thunkAPI.dispatch(calculateOrder(orderID));\r\n } catch (ex) {\r\n return thunkAPI.rejectWithValue(ex);\r\n }\r\n }\r\n);\r\n\r\nexport interface SetShippingAddressPayload {\r\n shipmentID: string;\r\n address: Address;\r\n routeCode?: string;\r\n deliveryMethod?: DeliveryTypes;\r\n}\r\n\r\nexport const setShipmentShippingAddress = createAsyncThunk(\r\n \"order/shippingAddress\",\r\n async (payload: SetShippingAddressPayload, thunkAPI) => {\r\n const { shipmentID, address, routeCode, deliveryMethod } = payload;\r\n const { order } = thunkAPI.getState() as {\r\n order: OrderState;\r\n };\r\n let partial: Partial = {\r\n xp: {\r\n RouteCode: routeCode,\r\n AddressType: address.xp?.addressType,\r\n },\r\n };\r\n if (deliveryMethod && deliveryMethod !== \"Email\") {\r\n partial.xp.DeliveryMethod = deliveryMethod;\r\n }\r\n if (address.ID && deliveryMethod !== \"Email\") {\r\n partial.ShippingAddressID = address.ID;\r\n await thunkAPI.dispatch(patchLineItems({ shipmentID: shipmentID, partial: partial }));\r\n } else {\r\n let reqs: Promise[] = [];\r\n const itemsToUpdate = order?.shipments?.find((shipment) => shipment.ID === shipmentID)?.LineItems;\r\n\r\n itemsToUpdate?.forEach((item) => {\r\n reqs.push(LineItems.SetShippingAddress(\"Outgoing\", order?.order?.ID!, item.ID!, address));\r\n reqs.push(LineItems.Patch(\"Outgoing\", order?.order?.ID!, item.ID!, partial));\r\n });\r\n thunkAPI.dispatch(setPending());\r\n await Promise.all(reqs);\r\n await thunkAPI.dispatch(calculateOrder(order?.order?.ID!));\r\n }\r\n if (deliveryMethod === \"Email\") {\r\n let reqs: Promise[] = [];\r\n const itemsToUpdate = order?.shipments?.find((shipment) => shipment.ID === shipmentID)?.LineItems;\r\n\r\n itemsToUpdate?.forEach((item) => {\r\n reqs.push(LineItems.SetShippingAddress(\"Outgoing\", order?.order?.ID!, item.ID!, address));\r\n reqs.push(LineItems.Patch(\"Outgoing\", order?.order?.ID!, item.ID!, address));\r\n });\r\n thunkAPI.dispatch(setPending());\r\n await Promise.all(reqs);\r\n await thunkAPI.dispatch(calculateOrder(order?.order?.ID!));\r\n }\r\n }\r\n);\r\n\r\nexport interface SetLineItemAddressPayload {\r\n lineItemID: string;\r\n address: Address;\r\n routeCode?: string;\r\n deliveryMethod?: DeliveryTypes;\r\n AddressType?: any;\r\n}\r\n\r\nconst getRequests = (\r\n order: OrderState,\r\n lineItemID: string,\r\n address: Address,\r\n routeCode?: string,\r\n deliveryMethod?: DeliveryTypes\r\n): Promise[] => {\r\n let promises: Promise[] = [];\r\n const partialLineItem: Partial = {\r\n xp: {\r\n RouteCode: routeCode,\r\n AddressType: address?.xp?.addressType,\r\n },\r\n };\r\n if (deliveryMethod) {\r\n partialLineItem.xp.DeliveryMethod = deliveryMethod;\r\n }\r\n if (address.ID) {\r\n partialLineItem.ShippingAddressID = address.ID;\r\n promises.push(LineItems.Patch(\"Outgoing\", order.order?.ID!, lineItemID, partialLineItem));\r\n } else {\r\n promises = promises.concat([\r\n LineItems.SetShippingAddress(\"Outgoing\", order.order?.ID!, lineItemID, address as Address),\r\n LineItems.Patch(\"Outgoing\", order.order?.ID!, lineItemID, partialLineItem),\r\n ]);\r\n }\r\n return promises;\r\n};\r\n\r\nexport const setLineItemShippingAddress = createAsyncThunk(\r\n \"order/lineItem/shippingAddress\",\r\n async (payload: SetLineItemAddressPayload[], thunkAPI) => {\r\n let requests: Promise[] = [];\r\n const { order } = thunkAPI.getState() as {\r\n order: OrderState;\r\n };\r\n\r\n payload.forEach((p) => {\r\n if (p.deliveryMethod !== \"Email\") {\r\n const { lineItemID, address, routeCode, deliveryMethod } = p;\r\n const reqs = getRequests(order, lineItemID, address, routeCode, deliveryMethod);\r\n requests = requests.concat(reqs);\r\n }\r\n });\r\n thunkAPI.dispatch(setPending());\r\n await Promise.all(requests);\r\n await thunkAPI.dispatch(calculateOrder(order.order?.ID!));\r\n }\r\n);\r\n\r\nexport interface PatchLineItemPayload {\r\n lineItemIDs?: string[];\r\n shipmentID?: string;\r\n partial: Partial;\r\n}\r\n\r\nexport const patchLineItems = createAsyncThunk(\r\n \"order/patchLineItems\",\r\n async (payload: PatchLineItemPayload, thunkAPI) => {\r\n const { lineItemIDs, shipmentID, partial } = payload;\r\n const { order } = thunkAPI.getState() as {\r\n order: OrderState;\r\n };\r\n let reqs: Promise[] | undefined = [];\r\n if (shipmentID) {\r\n const itemsToUpdate = order?.shipments?.find((shipment) => shipment.ID === shipmentID)?.LineItems;\r\n reqs = itemsToUpdate?.map((item) => LineItems.Patch(\"Outgoing\", order?.order?.ID!, item.ID!, partial));\r\n } else if (lineItemIDs) {\r\n reqs = lineItemIDs.map((id) => LineItems.Patch(\"Outgoing\", order?.order?.ID!, id, partial));\r\n }\r\n thunkAPI.dispatch(setPending());\r\n await Promise.all(reqs || []);\r\n await thunkAPI.dispatch(calculateOrder(order?.order?.ID!));\r\n }\r\n);\r\n\r\ninterface OrderPatchArgs {\r\n orderID: string;\r\n partial: Partial;\r\n \r\n}\r\nexport const patchOrder = createAsyncThunk(\r\n \"order/patch\",\r\n async (args: OrderPatchArgs, ThunkAPI): Promise => {\r\n const patchedOrder = await Orders.Patch(\"Outgoing\", args.orderID, args.partial);\r\n if(patchedOrder.xp.shipToMultiple)\r\n {\r\n await dispatch(calculateOrder(patchedOrder.ID));\r\n return patchedOrder;\r\n }\r\n else{ await ThunkAPI.dispatch(calculateOrder(patchedOrder.ID));\r\n \r\n return patchedOrder;\r\n }\r\n \r\n }\r\n);\r\n\r\ninterface DeleteLiArgs {\r\n idsToDelete: string[];\r\n orderID: string;\r\n}\r\n\r\nexport const deleteLi = createAsyncThunk(\r\n \"lineitem/delete\",\r\n async (args: DeleteLiArgs, ThunkAPI): Promise => {\r\n if (args.idsToDelete.length > 0) {\r\n alert(\r\n \"Shopping Cart Notice: One item in your cart is no longer available for purchase. This item has been removed from your cart. \"\r\n );\r\n const deleteQueue = args.idsToDelete.map((id) => LineItems.Delete(\"Outgoing\", args.orderID, id));\r\n await Promise.all(deleteQueue);\r\n await ThunkAPI.dispatch(calculateOrder(args.orderID));\r\n }\r\n }\r\n);\r\nfunction dispatch(arg0: AsyncThunkAction) {\r\n throw new Error(\"Function not implemented.\");\r\n}\r\n\r\n","import { Box, createStyles, makeStyles, Theme, Typography } from \"@material-ui/core\";\r\nimport { LineItem } from \"ordercloud-javascript-sdk\";\r\nimport React, { Fragment, FunctionComponent, useEffect, useMemo, useState } from \"react\";\r\nimport { min, max } from \"lodash\";\r\nimport { BachmansProduct } from \"../../models/product\";\r\n\r\nimport Currency from \"react-currency-formatter\";\r\n\r\nexport interface ProductPriceProps {\r\n productGroup?: BachmansProduct[];\r\n product?: BachmansProduct;\r\n lineItem?: LineItem;\r\n alignment?: string;\r\n fontSize?: string;\r\n onSaleChange?: (value: string) => void;\r\n}\r\n\r\nconst useStyles = (props: ProductPriceProps) =>\r\n makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n margin: \"10px\",\r\n },\r\n containerPrice: {\r\n flex: 0,\r\n [theme.breakpoints.up(\"md\")]: {\r\n flex: \"unset\",\r\n },\r\n },\r\n productPrice: {\r\n color: theme.palette.primary.main,\r\n padding: \"2px\",\r\n fontSize: props?.fontSize ? props.fontSize : \"initial\",\r\n },\r\n retailPrice: {\r\n textDecoration: \"line-through\",\r\n padding: \"2px\",\r\n color: \"grey\",\r\n fontSize: props?.fontSize ? props.fontSize : \"initial\",\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n })\r\n );\r\nconst ProductPrice: FunctionComponent = (props) => {\r\n const classes = useStyles(props)();\r\n const { productGroup, product, lineItem, alignment, onSaleChange } = props;\r\n const [actualMinMax, setActualMinMax] = useState(null);\r\n const [retailMinMax, setRetailMinMax] = useState();\r\n\r\n const isGiftCard = useMemo(() => {\r\n if (productGroup) {\r\n return productGroup[0]?.ID === \"GIFTCARD\";\r\n }\r\n if (product) {\r\n return product.ID === \"GIFTCARD\";\r\n }\r\n if (lineItem) {\r\n if (lineItem.ProductID == \"EGIFTCARD\") {\r\n return lineItem.ProductID === \"EGIFTCARD\";\r\n } else {\r\n return lineItem.ProductID === \"GIFTCARD\";\r\n }\r\n }\r\n }, [productGroup, product, lineItem]);\r\n\r\n useEffect(() => {\r\n let p = product ? Object.assign(product) : undefined;\r\n if (isGiftCard) {\r\n //TODO: display right price for gift card\r\n // let actualPrice =\r\n if (lineItem) {\r\n setActualMinMax([lineItem?.UnitPrice as number]);\r\n }\r\n if (p) {\r\n setActualMinMax([(p as any)?.PriceSchedule?.PriceBreaks?.[0]?.Price as number]);\r\n }\r\n } else {\r\n if (productGroup) {\r\n if (productGroup.length > 1) {\r\n const actualPriceRange = productGroup.map((p: any) => p.PriceSchedule.PriceBreaks[0].Price as number);\r\n const actualMin = Number(min(actualPriceRange));\r\n const actualMax = Number(max(actualPriceRange));\r\n\r\n const retailPriceRange = productGroup.map((p: any) => p.PriceSchedule.xp.Price?.RetailPrice as number);\r\n const retailMin = Number(min(retailPriceRange));\r\n const retailMax = Number(max(retailPriceRange));\r\n\r\n setActualMinMax([actualMin, actualMax]);\r\n setRetailMinMax([retailMin, retailMax]);\r\n } else {\r\n p = Object.assign({}, productGroup[0]);\r\n }\r\n }\r\n if (p || lineItem) {\r\n let actualPrice, retailPrice;\r\n if (!(p as any)?.PriceSchedule.xp.Price) {\r\n setActualMinMax(null); // Reset actualMinMax to null\r\n }\r\n if (p) {\r\n actualPrice = (p as any).PriceSchedule.PriceBreaks[0].Price as number;\r\n retailPrice = (p as any).PriceSchedule.xp.Price?.RetailPrice as number;\r\n } else if (lineItem) {\r\n actualPrice = lineItem.UnitPrice as number;\r\n retailPrice = lineItem.xp.RetailPrice as number;\r\n if (!retailPrice) setActualMinMax([actualPrice]);\r\n }\r\n\r\n if (actualPrice && retailPrice) {\r\n setActualMinMax([actualPrice]);\r\n setRetailMinMax([retailPrice]);\r\n }\r\n }\r\n }\r\n }, [isGiftCard, productGroup, product, lineItem, onSaleChange]);\r\n\r\n useEffect(() => {\r\n if (!onSaleChange) return;\r\n if (actualMinMax && retailMinMax && retailMinMax.join(\"-\") !== actualMinMax.join(\"-\")) {\r\n var minPercentage = Math.round(((retailMinMax[0] - actualMinMax[0]) / retailMinMax[0]) * 100);\r\n if (actualMinMax.length > 1) {\r\n var maxPercentage = Math.round(((retailMinMax[1] - actualMinMax[1]) / retailMinMax[1]) * 100);\r\n onSaleChange(maxPercentage > minPercentage ? `Up to ${maxPercentage}` : String(minPercentage));\r\n } else {\r\n onSaleChange(String(minPercentage));\r\n }\r\n }\r\n }, [actualMinMax, retailMinMax, onSaleChange]);\r\n\r\n return (\r\n \r\n {lineItem ? (\r\n \r\n \r\n {actualMinMax && (\r\n \r\n \r\n {actualMinMax[1] && actualMinMax[0] !== actualMinMax[1] && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n\r\n {retailMinMax && actualMinMax && retailMinMax.join(\"-\") !== actualMinMax.join(\"-\") && (\r\n \r\n \r\n {retailMinMax[1] && retailMinMax[0] !== retailMinMax[1] && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n \r\n {actualMinMax && (\r\n \r\n \r\n {actualMinMax[1] && actualMinMax[0] !== actualMinMax[1] && (\r\n \r\n {` - `}\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n\r\n {retailMinMax && actualMinMax && retailMinMax.join(\"-\") !== actualMinMax.join(\"-\") && (\r\n \r\n \r\n {retailMinMax[1] && retailMinMax[0] !== retailMinMax[1] && (\r\n \r\n {` - `}\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ProductPrice;\r\n","export const purple = {\r\n hover: \"#824DAC\",\r\n regular: \"#9262B8\",\r\n price: \"#9574C1\",\r\n utility: \"#AA82C8\",\r\n inline: \"#E1D5EC\",\r\n light: \"#e2d6ed\",\r\n};\r\n\r\nexport const green = {\r\n regular: \"#91A339\",\r\n hover: \"#7A8B29\",\r\n special: \"#AFD833\",\r\n promo: \"#F0F8DA\",\r\n};\r\n\r\nexport const red = {\r\n regular: \"#FF0000\",\r\n};\r\n\r\nexport const neutral = {\r\n text_colored_bg: \"#323232\",\r\n text_light_bg: \"#999999\",\r\n text_white_bg: \"#666666\",\r\n grey_background: \"#ededed\",\r\n strikethrough: \"#A9A9A9\",\r\n disabled: \"#D4D4D4\",\r\n text_utility_bg: \"#F1F1F1\",\r\n offwhite_bg: \"#FBFBFB\",\r\n search_bg: \"#f7f7f7\",\r\n};\r\n","import React from \"react\";\r\nimport { Box, CardMedia, createStyles, makeStyles, SvgIcon, Theme } from \"@material-ui/core\";\r\nimport { neutral } from \"../../themes/colors\";\r\n\r\nconst paddingRatioMap = {\r\n \"1.42\": \"71.24681933842238%\",\r\n \"1.5\": \"66.66666666666667%\",\r\n \"1\": \"100%\",\r\n};\r\n\r\nconst useStyle = (ratio: AspectRatioOptions) =>\r\n makeStyles((theme: Theme) =>\r\n createStyles({\r\n imageContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n \"& img\": {\r\n backgroundColor: neutral.grey_background,\r\n aspectRatio: `${ratio} / 1`,\r\n color: \"transparent\", // essentially setting the alt text to screen-reader only.\r\n },\r\n \"& @supports not (aspect-ratio: 1 / 1)\": {\r\n paddingTop: paddingRatioMap[ratio],\r\n height: 0,\r\n width: \"100%\",\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n \"& img\": {\r\n objectFit: \"cover\",\r\n position: \"absolute\",\r\n transform: \"translate(-50%, -50%)\",\r\n left: \"50%\",\r\n top: \"50%\",\r\n width: \"auto\",\r\n maxWidth: \"100%\",\r\n height: \"auto\",\r\n },\r\n },\r\n },\r\n noImage: {\r\n backgroundColor: neutral.grey_background,\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n display: \"flex !important\",\r\n aspectRatio: \"1.42 / 1\",\r\n \"& @supports not (aspect-ratio: 1 / 1)\": {\r\n height: \"65%\",\r\n },\r\n },\r\n logo: {\r\n height: \"auto\",\r\n width: \"75%\",\r\n \"& path\": {\r\n fill: neutral.disabled,\r\n },\r\n },\r\n })\r\n );\r\n\r\nexport type AspectRatioOptions = \"1.42\" | \"1.5\" | \"1\";\r\n\r\ninterface BachmansCardMediaProps {\r\n aspectRatio: AspectRatioOptions;\r\n image?: string;\r\n alt?: string;\r\n}\r\n\r\nconst BachmandCardMedia: React.FunctionComponent = (props) => {\r\n const classes = useStyle(props?.aspectRatio)();\r\n return (\r\n \r\n {props.image ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default BachmandCardMedia;\r\n","/**\r\n * @description performs an asynchronous operation on a list of inputs in\r\n * batches until all inputs have been operated upon\r\n *\r\n * @param inputs array of inputs that will be fed to the operation\r\n * @param operation the function that will operate on the list of inputs\r\n * until all inputs have been processed. Error handling should be handled by\r\n * the provided function\r\n * @param batchSize the max number of items that will be processed in parallel. defaults to 100\r\n *\r\n */\r\nexport async function batchOperations(\r\n inputs: InputType[],\r\n operation: (input: InputType) => Promise,\r\n batchSize = 100\r\n): Promise {\r\n let results: ReturnType[] = [];\r\n async function runNextBatch(): Promise {\r\n // run one batch\r\n const batch = inputs.splice(0, batchSize);\r\n const requests = batch.map(async (input) => {\r\n try {\r\n return await operation.call(null, input);\r\n } catch (e) {\r\n // swallow error so it doesn't stop execution\r\n // if you want to capture errors, do it on the\r\n // function that gets passed in as an operation\r\n }\r\n });\r\n\r\n // add batch results to all results\r\n const batchResults = await Promise.all(requests);\r\n const batchResultsNoUndefined = batchResults.filter(\r\n (x) => x !== undefined // can be undefined on errors\r\n ) as ReturnType[];\r\n results = [...(results || []), ...batchResultsNoUndefined];\r\n\r\n // if no inputs left, return all results else run next batch\r\n if (inputs.length) {\r\n return await runNextBatch();\r\n } else {\r\n return results;\r\n }\r\n }\r\n return await runNextBatch();\r\n}\r\n","import { batchOperations } from \"./batchOperations\";\r\nimport { Meta } from \"ordercloud-javascript-sdk\";\r\nimport { flatten } from \"lodash\";\r\n\r\nexport interface ListPage {\r\n Items?: T[];\r\n Meta?: Meta;\r\n}\r\n\r\n/**\r\n * @description returns all items from all pages for an ordercloud list function\r\n *\r\n * @param listFn the ordercloud function that will be called repeatedly\r\n * until all items have been retrieved (not invoked)\r\n * @param listArgs any arguments to the function should be passed in\r\n * as separate parameters\r\n *\r\n * @example\r\n * listAll(OrderCloudSDk.Products.List, {filters: {'xp.Color': 'Red'}});\r\n */\r\nexport async function listAll(\r\n listFn: (...args: any) => Promise>,\r\n ...listArgs: any\r\n): Promise {\r\n // get or create filters obj if it doesnt exist\r\n const hasFiltersObj = typeof listArgs[listArgs.length - 1] === \"object\";\r\n let filtersObj = hasFiltersObj ? listArgs.pop() : {};\r\n\r\n // set page and pageSize\r\n filtersObj.page = 1;\r\n filtersObj.pageSize = 100;\r\n\r\n const result1 = await listFn.apply(this, [...listArgs, filtersObj]);\r\n const additionalPages = getAdditionalPages(result1.Meta!);\r\n\r\n // const results = await batchOperations>(\r\n // additionalPages,\r\n // async (page: number) => {\r\n // return await listFn.apply(this as any, [\r\n // ...listArgs,\r\n // { ...filtersObj, page: page },\r\n // ]);\r\n // }\r\n // );\r\n const results = await batchOperations>(\r\n additionalPages,\r\n async (page: number) => {\r\n return await listFn.apply(this, [\r\n ...JSON.parse(JSON.stringify(listArgs)),\r\n { ...JSON.parse(JSON.stringify(filtersObj)), page: page },\r\n ]);\r\n }\r\n );\r\n\r\n // combine and flatten items for all list calls\r\n return flatten([result1, ...results].map((r) => r.Items!)) as T[];\r\n\r\n function getAdditionalPages(meta: Meta) {\r\n let page = meta!.Page! + 1;\r\n let additionalPages: number[] = [];\r\n while (page <= meta.TotalPages!) {\r\n additionalPages = [...additionalPages, page];\r\n page++;\r\n }\r\n return additionalPages;\r\n }\r\n}\r\n","import React, { Fragment, useCallback, useContext, useState } from \"react\";\r\nimport {\r\n Box,\r\n Button,\r\n createStyles,\r\n DialogContentText,\r\n makeStyles,\r\n TextField,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { Formik, FormikHelpers } from \"formik\";\r\nimport * as yup from \"yup\";\r\nimport Authentication from \"../../services/authentication.service\";\r\nimport { Auth, MeUser } from \"ordercloud-javascript-sdk\";\r\nimport { RegisterFormValues } from \"../../services/authentication.service\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport PhoneMaskInput from \"./PhoneMaskInput\";\r\nimport DoubleOutlinedBtn from \"./DoubleOutlinedBtn\";\r\nimport { cloneDeep } from \"lodash\";\r\nimport bachmansIntegrationsService from \"../../services/bachmansIntegrations.service\";\r\nimport PasswordRequirementsList from \"../Authentication/PasswordRequirementsList\";\r\nimport appConfig, { scope } from \"../../constants/app.constants\";\r\nimport { regexConstants } from \"../../constants/regex.constants\";\r\nimport { Loyalty } from \"@material-ui/icons\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n flexRow: {\r\n display: \"flex\",\r\n flexFlow: \"row wrap\",\r\n margin: theme.spacing(0, -1),\r\n alignItems: \"center\",\r\n \"& > *\": {\r\n flex: \"1 1 auto\",\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n },\r\n [theme.breakpoints.up(\"md\")]: {\r\n flexFlow: \"row nowrap\",\r\n },\r\n \"& .MuiFormHelperText-root\": {\r\n marginBottom: theme.spacing(0.5), //DESIGN: if there is an error message on one of the inputs, we won't lose the vertical spacing between inputs\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst buildValidation = (fields?: UserInputFields[]) => {\r\n const obj: any = {};\r\n if (!fields || fields.includes(\"FirstName\")) {\r\n obj.FirstName = yup\r\n .string()\r\n .matches(regexConstants.validName, \"Special characters and numbers not allowed in name input\")\r\n .required(\"First Name is required\");\r\n }\r\n if (!fields || fields.includes(\"LastName\")) {\r\n obj.LastName = yup\r\n .string()\r\n .matches(regexConstants.validName, \"Special characters and numbers not allowed in name input\")\r\n .required(\"Last Name is required\");\r\n }\r\n if (!fields || fields.includes(\"Email\")) {\r\n obj.Email = yup.string().email(\"Enter a valid Email address\").required(\"Email is required\");\r\n }\r\n if (!fields || fields.includes(\"Phone\")) {\r\n obj.Phone = yup\r\n .string()\r\n .matches(regexConstants.validPhone, \"Valid phone number required\")\r\n .required(\"Phone number is required\");\r\n }\r\n if (fields?.includes(\"CurrentPassword\")) {\r\n obj.CurrentPassword = yup.string().required(\"Please validate your current password\");\r\n }\r\n if (!fields || fields.includes(\"Password\")) {\r\n obj.Password = yup\r\n .string()\r\n .matches(regexConstants.validPassword, \" Please make sure your password follows our guidelines\")\r\n .required(\"Password is required\");\r\n obj.PasswordConfirmation = yup\r\n .string()\r\n .matches(regexConstants.validPassword, \"Please make sure your password follows our guidelines\")\r\n .required(\"Password confirmation required\")\r\n .oneOf([yup.ref(\"Password\")], \"Password must match\");\r\n }\r\n const validation = yup.object(obj);\r\n return validation;\r\n};\r\n\r\nexport type UserInputFields = \"FirstName\" | \"LastName\" | \"Email\" | \"Password\" | \"Phone\" | \"CurrentPassword\";\r\n\r\nexport interface UserInputFormProps {\r\n type: \"register\" | \"update\";\r\n initialUser?: MeUser;\r\n fields?: UserInputFields[];\r\n buttonPosition?: \"left\" | \"center\" | \"right\";\r\n onCancel?: () => void;\r\n onComplete?: () => void;\r\n onError?: (err?: any) => void;\r\n}\r\n\r\nconst UserInputForm: React.FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const { patchUser, setUserTokens, login, user } = useContext(SessionContext);\r\n const [passwordResetError, setPasswordResetError] = useState();\r\n\r\n const handleRegister = useCallback(\r\n async (values: RegisterFormValues, actions: FormikHelpers) => {\r\n // ! TODO Remove this Function\r\n // const getLoyaltyID = (currentUser: MeUser) => {\r\n // return cloneDeep(currentUser?.Phone || \"\")\r\n // .replace(/[^\\w\\s]/gi, \"\")\r\n // .replace(\" \", \"\");\r\n // };\r\n\r\n if (setUserTokens) {\r\n try {\r\n let results = await Authentication.RegisterAsync(values);\r\n setUserTokens(results.Token);\r\n\r\n if (user && patchUser) {\r\n await patchUser({ xp: { LoyaltyCardNumber: \"\" } });\r\n }\r\n if (props.onComplete) {\r\n props.onComplete();\r\n }\r\n } catch (err) {\r\n if (props.onError) props.onError(err);\r\n }\r\n }\r\n },\r\n [patchUser, props, setUserTokens, user]\r\n );\r\n\r\n const handlePatchUser = async (values: RegisterFormValues, actions: FormikHelpers) => {\r\n const patchObj: Partial = {};\r\n if (values.FirstName !== props.initialUser?.FirstName && hasField(\"FirstName\")) {\r\n patchObj.FirstName = values.FirstName;\r\n }\r\n if (values.LastName !== props.initialUser?.LastName && hasField(\"LastName\")) {\r\n patchObj.LastName = values.LastName;\r\n }\r\n if (values.Email !== props.initialUser?.Email && hasField(\"Email\")) {\r\n patchObj.Email = values.Email;\r\n patchObj.Username = values.Email;\r\n }\r\n if (values.Phone !== props.initialUser?.Phone && hasField(\"Phone\")) {\r\n patchObj.Phone = values.Phone;\r\n }\r\n if (values.Password !== props.initialUser?.Password && hasField(\"Password\")) {\r\n patchObj.Password = values.Password;\r\n }\r\n if (patchUser && login) {\r\n if (values.CurrentPassword !== \"\" && hasField(\"CurrentPassword\")) {\r\n try {\r\n await Auth.Login(props.initialUser?.Username!, values.CurrentPassword, appConfig.clientID, scope);\r\n await patchUser(patchObj);\r\n setPasswordResetError(undefined);\r\n } catch (err: any) {\r\n if (err.errors?.error === \"invalid_grant\") {\r\n setPasswordResetError(\"Current password is invalid\");\r\n }\r\n //setPasswordResetError(err.errors?.Errors?.[0].Message)\r\n }\r\n } else {\r\n await patchUser(patchObj);\r\n }\r\n }\r\n };\r\n\r\n const hasField = (field: UserInputFields) => {\r\n if (field === \"CurrentPassword\" && props?.type !== \"update\") {\r\n return false;\r\n } else {\r\n return !props.fields || props.fields.includes(field);\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n if (props.onCancel) {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n const getButtonPosition = (position?: \"left\" | \"center\" | \"right\") => {\r\n if (position === \"left\") {\r\n return \"flex-start\";\r\n } else if (position === \"center\") {\r\n return \"center\";\r\n } else if (position === \"right\") {\r\n return \"flex-end\";\r\n } else return \"\";\r\n };\r\n\r\n return (\r\n \r\n {({ values, errors, touched, isValid, isSubmitting, handleBlur, handleChange, handleSubmit }) => (\r\n
\r\n
\r\n {hasField(\"FirstName\") && (\r\n \r\n )}\r\n {hasField(\"LastName\") && (\r\n \r\n )}\r\n
\r\n {hasField(\"Email\") && (\r\n \r\n {hasField(\"CurrentPassword\") && (\r\n \r\n )}\r\n {passwordResetError && (\r\n \r\n {passwordResetError}\r\n \r\n )}\r\n \r\n \r\n )}\r\n {hasField(\"Phone\") && (\r\n \r\n )}\r\n {hasField(\"Password\") && (\r\n \r\n {hasField(\"CurrentPassword\") && (\r\n \r\n )}\r\n {passwordResetError && (\r\n \r\n {passwordResetError}\r\n \r\n )}\r\n \r\n \r\n \r\n Your password needs to include a minimum of 10 characters, and each of the following attributes:\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {isValid}\r\n \r\n {props.type === \"update\" && (\r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default UserInputForm;\r\n","import { compact, filter, find, flatten, groupBy, isUndefined, keys, map, sortBy, uniqBy } from \"lodash\";\r\nimport { Me, LineItems, LineItem, BuyerProduct } from \"ordercloud-javascript-sdk\";\r\nimport algolia from \"./algolia.service\";\r\nimport bachDateTime from \"./bachDateTime.service\";\r\nimport moment from \"moment-timezone\";\r\nimport productService from \"./product.service\";\r\nimport { BachmansEvent, BachmansProduct } from \"../models/product\";\r\nimport { listAll } from \"../helpers/listAll\";\r\nimport { EventInput } from \"@fullcalendar/react\";\r\nimport { purple, neutral, green } from \"../themes/colors\";\r\nimport { BachmansMeUser } from \"../models/user\";\r\nimport { FilterData } from \"../components/Product/ProductList/ProductList\";\r\n\r\ninterface eventSearchOptions {\r\n filters: any; // sends as string,\r\n facetFilters: string[];\r\n facets: string[];\r\n distinct: boolean;\r\n hitsPerPage: number;\r\n page?: number;\r\n}\r\n\r\nexport interface AlgoliaEventFilters {\r\n featured?: boolean;\r\n query?: string;\r\n pageSize?: number;\r\n page?: number;\r\n categoryid?: string | string[];\r\n type?: string[];\r\n}\r\n\r\nasync function listAsync(filters?: FilterData, categoryFilters?: string[]) {\r\n let index = algolia.getProductIndex(\"products\");\r\n let timestamp = bachDateTime.GetLocalTimeStamp();\r\n let dateFilter = \"StartDate <=\" + timestamp + \" AND EndDate >=\" + timestamp;\r\n let queryTerm = \"\";\r\n let searchOptions: eventSearchOptions = {\r\n filters: [\"Visible = 1\", dateFilter],\r\n facetFilters: [\"IsDefaultProduct:true\", \"IsWorkShopEvent:true\"], //IsWorkShopEvent = is ticked event\r\n facets: [\"IsWorkshop\"], //IsWorkshop == is an event\r\n distinct: true,\r\n hitsPerPage: 1000,\r\n };\r\n\r\n if (filters) {\r\n if (filters.query) queryTerm = filters.query;\r\n if (filters.pageSize) searchOptions.hitsPerPage = filters.pageSize;\r\n if (filters.page) searchOptions.page = filters.page - 1;\r\n if (filters.categoryid === \"WorkshopsEvents_FreeEvents\") {\r\n searchOptions.filters.push(\"IsWorkshop = 0\");\r\n } else if (filters.categoryid === \"WorkshopsEvents_TicktedEvents\") {\r\n searchOptions.filters.push(\"IsWorkshop = 1\");\r\n }\r\n let categoryArray: string[] = [];\r\n categoryFilters?.forEach((catId) => categoryArray.push(`CategoryId:${catId}`));\r\n searchOptions.facetFilters.push(categoryArray as any);\r\n if (filters.featured !== undefined) {\r\n searchOptions.filters.push(`Featured = ${filters.featured}`);\r\n }\r\n }\r\n searchOptions.filters = searchOptions.filters.join(\" AND \");\r\n let algoliaResponse = await index.search(queryTerm, searchOptions);\r\n algoliaResponse.hits = sortBy(algoliaResponse.hits, \"EndDate\");\r\n return await decorateEventDetails(algoliaResponse);\r\n}\r\n\r\nasync function decorateEventDetails(\r\n algoliaResponse: any\r\n): Promise<{\r\n events: BachmansEvent[];\r\n facets: any;\r\n}> {\r\n let productCodes = map(algoliaResponse.hits, (e) => e.ProductCode);\r\n\r\n if (!algoliaResponse.hits.length) return Promise.resolve({ events: [], facets: {} });\r\n\r\n let listResponse = await productService.ListProductsByCodes(productCodes, false, true);\r\n\r\n let events = compact(\r\n map(algoliaResponse.hits, (algoliaEvent) => {\r\n let ocProducts = filter(listResponse, (op) => {\r\n return op.xp.ProductCode === algoliaEvent.ProductCode;\r\n });\r\n if (!ocProducts.length) return;\r\n let defaultEvent: any = filter(ocProducts, (op) => {\r\n return op.xp.IsDefaultProduct;\r\n })[0]; //TODO: create an interface for default product & its xp, so type checking is enabled properly\r\n if (!defaultEvent) return;\r\n return mapToBachmansEvent(defaultEvent, ocProducts);\r\n })\r\n ) as any[];\r\n return { events: events, facets: algoliaResponse?.facets };\r\n}\r\n\r\nasync function listPurchasedEventsAsync(currentUser: BachmansMeUser, isAnonymous: boolean): Promise {\r\n if (isAnonymous || !currentUser.xp?.PurchasedEvents || !currentUser.xp?.PurchasedEvents.length) return [];\r\n let orders = await Me.ListOrders({ page: 1, pageSize: 100 });\r\n let queue: any = [];\r\n orders.Items.forEach((order) => queue.push(LineItems.List(\"Outgoing\", order.ID)));\r\n let lineItems = await Promise.all(queue);\r\n let allLi = flatten(map(lineItems, \"Items\"));\r\n let myEvents = map(currentUser.xp?.PurchasedEvents, (eventID) =>\r\n find(allLi, (li) => li.ProductID === eventID)\r\n ).filter((e) => !isUndefined(e));\r\n let eventProducts = map(myEvents, (event) => {\r\n let eventProd = event?.Product;\r\n eventProd.Name = event?.xp?.EventName || event?.Product?.Name;\r\n eventProd.Description = event?.xp?.EventDescription || event?.Product?.Description;\r\n eventProd.xp.Room = event?.xp?.EventRoom;\r\n if (eventProd?.xp?.Contentful && eventProd?.xp.Contentful.Images && eventProd.xp.Contentful.Images[0].url) {\r\n eventProd.xp.Contentful.Images[0].url = event.xp.ShownImage;\r\n }\r\n eventProd.xp.DateDisplay = event.xp.EventDateDisplay;\r\n eventProd.UnitPrice = event.UnitPrice;\r\n return eventProd;\r\n });\r\n return eventProducts as BachmansEvent[];\r\n}\r\n//EventSourceFunc\r\nasync function getCalendarEventsAsync(\r\n arg: {\r\n // start: Date;\r\n // end: Date;\r\n start: any;\r\n end: any;\r\n startStr: string;\r\n endStr: string;\r\n timeZone: string;\r\n },\r\n successCallback: (events: EventInput[]) => void,\r\n failureCallback: (error: any) => void\r\n): Promise {\r\n let options = {\r\n pastEvents: true,\r\n pageSize: 100,\r\n filters: {\r\n \"xp.IsWorkShopEvent\": true,\r\n \"xp.Visible\": true,\r\n },\r\n };\r\n function getEventsInRange(eventArray: any) {\r\n return filter(eventArray, (e) => {\r\n return (\r\n e.xp.ReleaseDate2 > moment().subtract(1, \"month\").format(\"YYYY-MM-DD\") ||\r\n e.xp.ReleaseDate1 < moment(arg.end).format(\"YYYY-MM-DD\")\r\n );\r\n });\r\n }\r\n\r\n let productData = await listAll(productService.ListOcProducts, options);\r\n let allEvents = getEventsInRange(productData);\r\n let currentDate = bachDateTime.Today();\r\n let hasDefEvents = filter(allEvents, (event) => {\r\n // filter out events that don't have defaults.\r\n let definedEvent = find(allEvents, (evt) => event.xp.ProductCode === evt.xp.ProductCode && evt.xp.IsDefaultProduct);\r\n return definedEvent && definedEvent !== null;\r\n });\r\n let results = uniqBy(\r\n flatten(\r\n map(hasDefEvents, (event) => {\r\n if (event.xp.IsWorkshop) {\r\n let definedEvent =\r\n find(hasDefEvents, (evt) => {\r\n return event.xp.ProductCode === evt.xp.ProductCode && evt.xp.IsDefaultProduct;\r\n }) || event;\r\n let disabled = moment(event.xp.ReleaseDate2).tz(\"America/Chicago\").startOf(\"d\").isBefore(currentDate, \"d\");\r\n return {\r\n id: event.ID,\r\n title: definedEvent.xp.WebFacingProductTitle || definedEvent.Name,\r\n start: moment.utc(event.xp.ReleaseDate2).toDate(),\r\n productcode: event.xp.ProductCode,\r\n currentTimezone: \"CST\",\r\n disable: disabled,\r\n className: disabled ? \"paid-event disable\" : \"paid-event\",\r\n color: disabled ? neutral.grey_background : purple.regular,\r\n backgroundColor: disabled ? neutral.grey_background : purple.regular,\r\n borderColor: disabled ? neutral.grey_background : purple.regular,\r\n textColor: disabled ? neutral.text_light_bg : neutral.text_utility_bg,\r\n };\r\n }\r\n return map(event.xp.EventDateTimes, (val, key) => {\r\n var dateToUse = val.Date ? val.Date : key;\r\n let disabled = moment(dateToUse).tz(\"America/Chicago\").startOf(\"d\").isBefore(currentDate, \"d\");\r\n return {\r\n id: event.ID,\r\n title: event.xp.WebFacingProductTitle || event.Name,\r\n start: moment.utc(dateToUse).toDate(),\r\n productcode: event.xp.ProductCode,\r\n currentTimezone: \"CST\",\r\n disable: disabled,\r\n className: disabled ? \"free-event disable\" : \"free-event\",\r\n color: disabled ? neutral.grey_background : green.regular,\r\n backgroundColor: disabled ? neutral.grey_background : green.regular,\r\n borderColor: disabled ? neutral.grey_background : green.regular,\r\n textColor: disabled ? neutral.text_light_bg : neutral.text_utility_bg,\r\n };\r\n });\r\n })\r\n ),\r\n function (e) {\r\n return e.productcode + \"_\" + e.start;\r\n }\r\n );\r\n if (!results) {\r\n return failureCallback({ message: \"Something went wrong\" });\r\n } else {\r\n return successCallback(results);\r\n }\r\n}\r\n\r\nfunction eventDateSort(events: any) {\r\n return sortBy(events, (eventGroup) => {\r\n var now = moment().tz(\"America/Chicago\").startOf(\"d\");\r\n var upcomingEvents = sortBy(\r\n filter(eventGroup.RelatedDates, (rd) => {\r\n return !now.isAfter(rd.Date, \"d\");\r\n }),\r\n (rd) => {\r\n return rd.Date;\r\n }\r\n );\r\n return upcomingEvents[0].Date;\r\n });\r\n}\r\n\r\nfunction mapToBachmansEvent(event: BachmansEvent, eventGroup: BachmansEvent[]) {\r\n if (event.xp?.IsWorkshop) {\r\n event.RelatedDates = map(\r\n keys(\r\n groupBy(eventGroup, (op) => {\r\n return op.xp?.ReleaseDate2;\r\n })\r\n ),\r\n (rdate2) => {\r\n return { Date: rdate2.split(\"T\")[0], Visible: true };\r\n }\r\n );\r\n } else {\r\n var relatedDateArray = flatten(\r\n map(eventGroup, (oc) => {\r\n return keys(oc.xp?.EventDateTimes);\r\n })\r\n );\r\n event.RelatedDates = map(relatedDateArray, (date) => {\r\n return { Date: date, Visible: true };\r\n });\r\n }\r\n event.EventDate = sortBy(event.RelatedDates, \"Date\")[0].Date;\r\n return event;\r\n}\r\n\r\nfunction getDateNeeded(SelectedEvent: BachmansProduct) {\r\n let dateNeededMoment = moment.utc(SelectedEvent.xp.ReleaseDate2).startOf(\"d\");\r\n let now = moment.utc();\r\n if (now.isSame(dateNeededMoment, \"d\")) {\r\n dateNeededMoment = now.add(5, \"m\");\r\n }\r\n return dateNeededMoment.toISOString(false);\r\n}\r\n\r\n// Function accepts an event ID or an event code and returns the event group with address info\r\nasync function getEvent(eventIdOrCode: string): Promise {\r\n var events: BachmansEvent[] = await productService.ListProductsByCodes([eventIdOrCode], false, true);\r\n if (!events?.length) {\r\n const event = await Me.GetProduct(eventIdOrCode);\r\n events = await productService.ListProductsByCodes([event.xp?.ProductCode], false, true);\r\n return complete(events);\r\n } else {\r\n return complete(events);\r\n }\r\n\r\n async function complete(data: BachmansProduct[]): Promise {\r\n var defaultEvent = productService.GetDefaultProduct(data);\r\n\r\n //Do not show events when the default event is not available\r\n if (!defaultEvent) return Promise.reject();\r\n\r\n let defaultAddress = await Me.GetAddress(defaultEvent.xp?.LocationID);\r\n return events.map((e) => {\r\n const mappedEvent = mapToBachmansEvent(e, events);\r\n if (mappedEvent?.xp) {\r\n mappedEvent.xp.Location = defaultAddress;\r\n }\r\n return e;\r\n });\r\n }\r\n}\r\n\r\nfunction getLineItemEventTimeRage(lineItem: LineItem) {\r\n return lineItem.Product?.xp?.SpecsOptions?.Size && lineItem.Product?.xp?.SpecsOptions?.Color\r\n ? ` ${lineItem.Product?.xp?.SpecsOptions?.Size}-${lineItem.Product?.xp?.SpecsOptions?.Color}`\r\n : \"\";\r\n}\r\n\r\nconst getFormattedEventDate = (event: BuyerProduct): string => {\r\n const dateString = event.xp?.ReleaseDate2?.split(\"T\")[0];\r\n return moment(dateString).format(\"dddd\") + \", \" + moment(dateString).format(\"MMMM DD\");\r\n};\r\n\r\nconst service = {\r\n ListAsync: listAsync,\r\n DecorateEventDetails: decorateEventDetails,\r\n ListPurchasedEventsAsync: listPurchasedEventsAsync,\r\n EventDateSort: eventDateSort,\r\n GetEvent: getEvent,\r\n GetCalendarEventsAsync: getCalendarEventsAsync,\r\n MapToBachmansEvent: mapToBachmansEvent,\r\n GetDateNeeded: getDateNeeded,\r\n GetLineItemEventTimeRange: getLineItemEventTimeRage,\r\n GetFormattedEventDate: getFormattedEventDate,\r\n};\r\n\r\nexport default service;\r\n","export const countries = [\r\n { label: \"United States of America\", value: \"US\" },\r\n { label: \"Afghanistan\", value: \"AF\" },\r\n { label: \"Åland Islands\", value: \"AX\" },\r\n { label: \"Albania\", value: \"AL\" },\r\n { label: \"Algeria\", value: \"DZ\" },\r\n { label: \"American Samoa\", value: \"AS\" },\r\n { label: \"Andorra\", value: \"AD\" },\r\n { label: \"Angola\", value: \"AO\" },\r\n { label: \"Anguilla\", value: \"AI\" },\r\n { label: \"Antarctica\", value: \"AQ\" },\r\n { label: \"Antigua and Barbuda\", value: \"AG\" },\r\n { label: \"Argentina\", value: \"AR\" },\r\n { label: \"Armenia\", value: \"AM\" },\r\n { label: \"Aruba\", value: \"AW\" },\r\n { label: \"Australia\", value: \"AU\" },\r\n { label: \"Austria\", value: \"AT\" },\r\n { label: \"Azerbaijan\", value: \"AZ\" },\r\n { label: \"Bahamas\", value: \"BS\" },\r\n { label: \"Bahrain\", value: \"BH\" },\r\n { label: \"Bangladesh\", value: \"BD\" },\r\n { label: \"Barbados\", value: \"BB\" },\r\n { label: \"Belarus\", value: \"BY\" },\r\n { label: \"Belgium\", value: \"BE\" },\r\n { label: \"Belize\", value: \"BZ\" },\r\n { label: \"Benin\", value: \"BJ\" },\r\n { label: \"Bermuda\", value: \"BM\" },\r\n { label: \"Bhutan\", value: \"BT\" },\r\n { label: \"Bolivia\", value: \"BO\" },\r\n { label: \"Bosnia and Herzegovina\", value: \"BA\" },\r\n { label: \"Botswana\", value: \"BW\" },\r\n { label: \"Bouvet Island\", value: \"BV\" },\r\n { label: \"Brazil\", value: \"BR\" },\r\n { label: \"British Indian Ocean Territory\", value: \"IO\" },\r\n { label: \"Brunei Darussalam\", value: \"BN\" },\r\n { label: \"Bulgaria\", value: \"BG\" },\r\n { label: \"Burkina Faso\", value: \"BF\" },\r\n { label: \"Burundi\", value: \"BI\" },\r\n { label: \"Cambodia\", value: \"KH\" },\r\n { label: \"Cameroon\", value: \"CM\" },\r\n { label: \"Canada\", value: \"CA\" },\r\n { label: \"Cape Verde\", value: \"CV\" },\r\n { label: \"Cayman Islands\", value: \"KY\" },\r\n { label: \"Central African Republic\", value: \"CF\" },\r\n { label: \"Chad\", value: \"TD\" },\r\n { label: \"Chile\", value: \"CL\" },\r\n { label: \"China\", value: \"CN\" },\r\n { label: \"Christmas Island Australia\", value: \"CX\" },\r\n { label: \"Cocos Keeling Islands\", value: \"CC\" },\r\n { label: \"Colombia\", value: \"CO\" },\r\n { label: \"Comoros\", value: \"KM\" },\r\n { label: \"Congo\", value: \"CG\" },\r\n { label: \"Congo, D.R.\", value: \"CD\" },\r\n { label: \"Cook Islands\", value: \"CK\" },\r\n { label: \"Costa Rica\", value: \"CR\" },\r\n { label: \"Cote D'Ivoire Ivory Coast\", value: \"CI\" },\r\n { label: \"Croatia Hrvatska\", value: \"HR\" },\r\n { label: \"Cuba\", value: \"CU\" },\r\n { label: \"Cyprus\", value: \"CY\" },\r\n { label: \"Czech Republic\", value: \"CZ\" },\r\n { label: \"Denmark\", value: \"DK\" },\r\n { label: \"Djibouti\", value: \"DJ\" },\r\n { label: \"Dominica\", value: \"DM\" },\r\n { label: \"Dominican Republic\", value: \"DO\" },\r\n { label: \"Ecuador\", value: \"EC\" },\r\n { label: \"Egypt\", value: \"EG\" },\r\n { label: \"El Salvador\", value: \"SV\" },\r\n { label: \"Equatorial Guinea\", value: \"GQ\" },\r\n { label: \"Eritrea\", value: \"ER\" },\r\n { label: \"Estonia\", value: \"EE\" },\r\n { label: \"Ethiopia\", value: \"ET\" },\r\n { label: \"Faeroe Islands\", value: \"FO\" },\r\n { label: \"Falkland Islands Malvinas\", value: \"FK\" },\r\n { label: \"Fiji\", value: \"FJ\" },\r\n { label: \"Finland\", value: \"FI\" },\r\n { label: \"France\", value: \"FR\" },\r\n { label: \"France, Metropolitan\", value: \"FX\" },\r\n { label: \"French Guiana\", value: \"GF\" },\r\n { label: \"French Polynesia\", value: \"PF\" },\r\n { label: \"French Southern Territories\", value: \"TF\" },\r\n { label: \"Gabon\", value: \"GA\" },\r\n { label: \"Gambia\", value: \"GM\" },\r\n { label: \"Georgia\", value: \"GE\" },\r\n { label: \"Germany\", value: \"DE\" },\r\n { label: \"Ghana\", value: \"GH\" },\r\n { label: \"Gibraltar\", value: \"GI\" },\r\n { label: \"Greece\", value: \"GR\" },\r\n { label: \"Greenland\", value: \"GL\" },\r\n { label: \"Grenada\", value: \"GD\" },\r\n { label: \"Guadeloupe\", value: \"GP\" },\r\n { label: \"Guam\", value: \"GU\" },\r\n { label: \"Guatemala\", value: \"GT\" },\r\n { label: \"Guinea\", value: \"GN\" },\r\n { label: \"Guinea Bissau\", value: \"GW\" },\r\n { label: \"Guyana\", value: \"GY\" },\r\n { label: \"Haiti\", value: \"HT\" },\r\n { label: \"Heard and McDonald Is.\", value: \"HM\" },\r\n { label: \"Honduras\", value: \"HN\" },\r\n { label: \"Hong Kong\", value: \"HK\" },\r\n { label: \"Hungary\", value: \"HU\" },\r\n { label: \"Iceland\", value: \"IS\" },\r\n { label: \"India\", value: \"IN\" },\r\n { label: \"Indonesia\", value: \"ID\" },\r\n { label: \"Iran\", value: \"IR\" },\r\n { label: \"Iraq\", value: \"IQ\" },\r\n { label: \"Isle of Man\", value: \"IM\" },\r\n { label: \"Ireland\", value: \"IE\" },\r\n { label: \"Israel\", value: \"IL\" },\r\n { label: \"Italy\", value: \"IT\" },\r\n { label: \"Jamaica\", value: \"JM\" },\r\n { label: \"Japan\", value: \"JP\" },\r\n { label: \"Jersey\", value: \"JE\" },\r\n { label: \"Jordan\", value: \"JO\" },\r\n { label: \"Kazakhstan\", value: \"KZ\" },\r\n { label: \"Kenya\", value: \"KE\" },\r\n { label: \"Kiribati\", value: \"KI\" },\r\n { label: \"Korea North\", value: \"KP\" },\r\n { label: \"Korea South\", value: \"KR\" },\r\n { label: \"Kuwait\", value: \"KW\" },\r\n { label: \"Kyrgyzstan\", value: \"KG\" },\r\n { label: \"Lao P.Dem.R.\", value: \"LA\" },\r\n { label: \"Latvia\", value: \"LV\" },\r\n { label: \"Lebanon\", value: \"LB\" },\r\n { label: \"Lesotho\", value: \"LS\" },\r\n { label: \"Liberia\", value: \"LR\" },\r\n { label: \"Libyan Arab Jamahiriya\", value: \"LY\" },\r\n { label: \"Liechtenstein\", value: \"LI\" },\r\n { label: \"Lithuania\", value: \"LT\" },\r\n { label: \"Luxembourg\", value: \"LU\" },\r\n { label: \"Macau\", value: \"MO\" },\r\n { label: \"Macedonia\", value: \"MK\" },\r\n { label: \"Madagascar\", value: \"MG\" },\r\n { label: \"Malawi\", value: \"MW\" },\r\n { label: \"Malaysia\", value: \"MY\" },\r\n { label: \"Maldives\", value: \"MV\" },\r\n { label: \"Mali\", value: \"ML\" },\r\n { label: \"Malta\", value: \"MT\" },\r\n { label: \"Marshall Islands\", value: \"MH\" },\r\n { label: \"Martinique\", value: \"MQ\" },\r\n { label: \"Mauritania\", value: \"MR\" },\r\n { label: \"Mauritius\", value: \"MU\" },\r\n { label: \"Mayotte\", value: \"YT\" },\r\n { label: \"Mexico\", value: \"MX\" },\r\n { label: \"Micronesia\", value: \"FM\" },\r\n { label: \"Moldova\", value: \"MD\" },\r\n { label: \"Monaco\", value: \"MC\" },\r\n { label: \"Mongolia\", value: \"MN\" },\r\n { label: \"Montenegro\", value: \"ME\" },\r\n { label: \"Montserrat\", value: \"MS\" },\r\n { label: \"Morocco\", value: \"MA\" },\r\n { label: \"Mozambique\", value: \"MZ\" },\r\n { label: \"Myanmar\", value: \"MM\" },\r\n { label: \"Namibia\", value: \"NA\" },\r\n { label: \"Nauru\", value: \"NR\" },\r\n { label: \"Nepal\", value: \"NP\" },\r\n { label: \"Netherlands\", value: \"NL\" },\r\n { label: \"Netherlands Antilles\", value: \"AN\" },\r\n { label: \"New Caledonia\", value: \"NC\" },\r\n { label: \"New Zealand\", value: \"NZ\" },\r\n { label: \"Nicaragua\", value: \"NI\" },\r\n { label: \"Niger\", value: \"NE\" },\r\n { label: \"Nigeria\", value: \"NG\" },\r\n { label: \"Niue\", value: \"NU\" },\r\n { label: \"Norfolk Island\", value: \"NF\" },\r\n { label: \"Northern Mariana Islands\", value: \"MP\" },\r\n { label: \"Norway\", value: \"NO\" },\r\n { label: \"Oman\", value: \"OM\" },\r\n { label: \"Pakistan\", value: \"PK\" },\r\n { label: \"Palau\", value: \"PW\" },\r\n { label: \"Palestinian Territory, Occupied\", value: \"PS\" },\r\n { label: \"Panama\", value: \"PA\" },\r\n { label: \"Papua New Guinea\", value: \"PG\" },\r\n { label: \"Paraguay\", value: \"PY\" },\r\n { label: \"Peru\", value: \"PE\" },\r\n { label: \"Philippines\", value: \"PH\" },\r\n { label: \"Pitcairn\", value: \"PN\" },\r\n { label: \"Poland\", value: \"PL\" },\r\n { label: \"Portugal\", value: \"PT\" },\r\n { label: \"Puerto Rico\", value: \"PR\" },\r\n { label: \"Qatar\", value: \"QA\" },\r\n { label: \"Reunion\", value: \"RE\" },\r\n { label: \"Romania\", value: \"RO\" },\r\n { label: \"Russian Federation\", value: \"RU\" },\r\n { label: \"Rwanda\", value: \"RW\" },\r\n { label: \"Saint Helena\", value: \"SH\" },\r\n { label: \"Saint Kitts and Nevis\", value: \"KN\" },\r\n { label: \"Saint Lucia\", value: \"LC\" },\r\n { label: \"Saint Pierre and Miquelon\", value: \"PM\" },\r\n { label: \"Saint Vincent and the Grenadines\", value: \"VC\" },\r\n { label: \"Samoa\", value: \"WS\" },\r\n { label: \"San Marino\", value: \"SM\" },\r\n { label: \"Sao Tome and Principe\", value: \"ST\" },\r\n { label: \"Saudi Arabia\", value: \"SA\" },\r\n { label: \"Senegal\", value: \"SN\" },\r\n { label: \"Serbia\", value: \"RS\" },\r\n { label: \"Seychelles\", value: \"SC\" },\r\n { label: \"Sierra Leone\", value: \"SL\" },\r\n { label: \"Singapore\", value: \"SG\" },\r\n { label: \"Slovakia\", value: \"SK\" },\r\n { label: \"Slovenia\", value: \"SI\" },\r\n { label: \"Solomon Islands\", value: \"SB\" },\r\n { label: \"Somalia\", value: \"SO\" },\r\n { label: \"South Africa\", value: \"ZA\" },\r\n { label: \"S. Georgia & S. Sandwich Is.\", value: \"GS\" },\r\n { label: \"Spain\", value: \"ES\" },\r\n { label: \"Sri Lanka\", value: \"LK\" },\r\n { label: \"Sudan\", value: \"SD\" },\r\n { label: \"Suriname\", value: \"SR\" },\r\n { label: \"Svalbard & Jan Mayen Is.\", value: \"SJ\" },\r\n { label: \"Swaziland\", value: \"SZ\" },\r\n { label: \"Sweden\", value: \"SE\" },\r\n { label: \"Switzerland\", value: \"CH\" },\r\n { label: \"Syrian Arab Rep.\", value: \"SY\" },\r\n { label: \"Taiwan\", value: \"TW\" },\r\n { label: \"Tajikistan\", value: \"TJ\" },\r\n { label: \"Tanzania\", value: \"TZ\" },\r\n { label: \"Thailand\", value: \"TH\" },\r\n { label: \"Timor-Leste\", value: \"TG\" },\r\n { label: \"Togo\", value: \"TG\" },\r\n { label: \"Tokelau\", value: \"TK\" },\r\n { label: \"Tonga\", value: \"TO\" },\r\n { label: \"Trinidad and Tobago\", value: \"TT\" },\r\n { label: \"Tunisia\", value: \"TN\" },\r\n { label: \"Turkey\", value: \"TR\" },\r\n { label: \"Turkmenistan\", value: \"TM\" },\r\n { label: \"Turks and Caicos Islands\", value: \"TC\" },\r\n { label: \"Tuvalu\", value: \"TU\" },\r\n { label: \"Uganda\", value: \"UG\" },\r\n { label: \"Ukraine\", value: \"UA\" },\r\n { label: \"United Kingdom\", value: \"GB\" },\r\n { label: \"United Arab Emirates\", value: \"AE\" },\r\n { label: \"US Minor Outlying Is.\", value: \"UM\" },\r\n { label: \"Uruguay\", value: \"UY\" },\r\n { label: \"Uzbekistan\", value: \"UZ\" },\r\n { label: \"Vanuatu\", value: \"VU\" },\r\n { label: \"Vatican City State\", value: \"VC\" },\r\n { label: \"Venezuela\", value: \"VE\" },\r\n { label: \"Viet Nam\", value: \"VN\" },\r\n { label: \"Virgin Islands British\", value: \"VG\" },\r\n { label: \"Virgin Islands US\", value: \"VI\" },\r\n { label: \"Wallis and Futuna Islnds\", value: \"WF\" },\r\n { label: \"Western Sahara\", value: \"EH\" },\r\n { label: \"Yemen\", value: \"YE\" },\r\n { label: \"Yugoslavia\", value: \"YU\" },\r\n { label: \"Zambia\", value: \"ZM\" },\r\n { label: \"Zimbabwe\", value: \"ZW\" },\r\n];\r\n\r\nexport const states = [\r\n { label: \"Alabama\", value: \"AL\", country: \"US\" },\r\n { label: \"Alaska\", value: \"AK\", country: \"US\" },\r\n { label: \"Arizona\", value: \"AZ\", country: \"US\" },\r\n { label: \"Arkansas\", value: \"AR\", country: \"US\" },\r\n { label: \"California\", value: \"CA\", country: \"US\" },\r\n { label: \"Colorado\", value: \"CO\", country: \"US\" },\r\n { label: \"Connecticut\", value: \"CT\", country: \"US\" },\r\n { label: \"Delaware\", value: \"DE\", country: \"US\" },\r\n { label: \"District of Columbia\", value: \"DC\", country: \"US\" },\r\n { label: \"Florida\", value: \"FL\", country: \"US\" },\r\n { label: \"Georgia\", value: \"GA\", country: \"US\" },\r\n { label: \"Hawaii\", value: \"HI\", country: \"US\" },\r\n { label: \"Idaho\", value: \"ID\", country: \"US\" },\r\n { label: \"Illinois\", value: \"IL\", country: \"US\" },\r\n { label: \"Indiana\", value: \"IN\", country: \"US\" },\r\n { label: \"Iowa\", value: \"IA\", country: \"US\" },\r\n { label: \"Kansas\", value: \"KS\", country: \"US\" },\r\n { label: \"Kentucky\", value: \"KY\", country: \"US\" },\r\n { label: \"Louisiana\", value: \"LA\", country: \"US\" },\r\n { label: \"Maine\", value: \"ME\", country: \"US\" },\r\n { label: \"Maryland\", value: \"MD\", country: \"US\" },\r\n { label: \"Massachusetts\", value: \"MA\", country: \"US\" },\r\n { label: \"Michigan\", value: \"MI\", country: \"US\" },\r\n { label: \"Minnesota\", value: \"MN\", country: \"US\" },\r\n { label: \"Mississippi\", value: \"MS\", country: \"US\" },\r\n { label: \"Missouri\", value: \"MO\", country: \"US\" },\r\n { label: \"Montana\", value: \"MT\", country: \"US\" },\r\n { label: \"Nebraska\", value: \"NE\", country: \"US\" },\r\n { label: \"Nevada\", value: \"NV\", country: \"US\" },\r\n { label: \"New Hampshire\", value: \"NH\", country: \"US\" },\r\n { label: \"New Jersey\", value: \"NJ\", country: \"US\" },\r\n { label: \"New Mexico\", value: \"NM\", country: \"US\" },\r\n { label: \"New York\", value: \"NY\", country: \"US\" },\r\n { label: \"North Carolina\", value: \"NC\", country: \"US\" },\r\n { label: \"North Dakota\", value: \"ND\", country: \"US\" },\r\n { label: \"Ohio\", value: \"OH\", country: \"US\" },\r\n { label: \"Oklahoma\", value: \"OK\", country: \"US\" },\r\n { label: \"Oregon\", value: \"OR\", country: \"US\" },\r\n { label: \"Pennsylvania\", value: \"PA\", country: \"US\" },\r\n { label: \"Rhode Island\", value: \"RI\", country: \"US\" },\r\n { label: \"South Carolina\", value: \"SC\", country: \"US\" },\r\n { label: \"South Dakota\", value: \"SD\", country: \"US\" },\r\n { label: \"Tennessee\", value: \"TN\", country: \"US\" },\r\n { label: \"Texas\", value: \"TX\", country: \"US\" },\r\n { label: \"Utah\", value: \"UT\", country: \"US\" },\r\n { label: \"Vermont\", value: \"VT\", country: \"US\" },\r\n { label: \"Virginia\", value: \"VA\", country: \"US\" },\r\n { label: \"Washington\", value: \"WA\", country: \"US\" },\r\n { label: \"West Virginia\", value: \"WV\", country: \"US\" },\r\n { label: \"Wisconsin\", value: \"WI\", country: \"US\" },\r\n { label: \"Wyoming\", value: \"WY\", country: \"US\" },\r\n];\r\n","import { isUndefined } from \"lodash\";\r\nimport { Address } from \"ordercloud-javascript-sdk\";\r\nimport { states } from \"../constants/OcGeography\";\r\nimport { Location } from \"../components/StoreLocator/GoogleMaps\";\r\n\r\nconst rad = (x: number) => {\r\n return (x * Math.PI) / 180;\r\n};\r\nconst directionsUrlPrefix = \"https://www.google.com/maps/dir/?api=1&destination_place_id=\";\r\nconst getDistance = (p1: Location, p2: Location) => {\r\n var R = 6378137; // Earth’s mean radius in meter\r\n var dLat = rad(p2.lat - p1.lat);\r\n var dLong = rad(p2.lng - p1.lng);\r\n var a =\r\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos(rad(p1.lat)) * Math.cos(rad(p2.lat)) * Math.sin(dLong / 2) * Math.sin(dLong / 2);\r\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n var d = R * c;\r\n return parseFloat((d * 0.000621371).toFixed(1));\r\n};\r\n\r\nconst getPosition = () => {\r\n return new Promise((res, rej) => navigator.geolocation.getCurrentPosition(res, rej));\r\n};\r\n\r\nasync function getCurrentPosition(defaultLocation: Location): Promise {\r\n if (!navigator) {\r\n return defaultLocation;\r\n } else {\r\n try {\r\n var position: any = await getPosition();\r\n return {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n } catch {\r\n return defaultLocation;\r\n }\r\n }\r\n}\r\n\r\ntype AddressOption = \"full\" | \"store\" | \"full-alt\" | \"fullOneLine\" | \"one-line\";\r\n\r\nconst buildAddressLines = (address: any, option: AddressOption, nophone?: boolean, noStoreName?: boolean): string => {\r\n if (!address) return \"\";\r\n var result = [];\r\n if (option === \"full\" || option === \"store\") {\r\n //address name\r\n if (address.AddressName && !address.CompanyName && !nophone) result.push(address.AddressName);\r\n //address first/last\r\n if (option !== \"store\" && (address.FirstName || address.LastName)) {\r\n result.push(\r\n address.FirstName && !address.LastName\r\n ? address.FirstName\r\n : !address.FirstName && address.LastName\r\n ? address.LastName\r\n : address.FirstName + \" \" + address.LastName\r\n );\r\n }\r\n //company name\r\n if (address.CompanyName && (option !== \"store\" || (option === \"store\" && !noStoreName)))\r\n result.push(address.CompanyName);\r\n //street 1 (required)\r\n result.push(address.Street1);\r\n //street 1 (optional)\r\n if (address.Street2) result.push(address.Street2);\r\n //city, state zip\r\n result.push(address.City + \", \" + address.State + \" \" + address.Zip);\r\n if (address.Phone && !nophone) result.push(address.Phone);\r\n return result.join(\"
\");\r\n } else if (option === \"full-alt\") {\r\n if (address.CompanyName && !nophone) result.push(address.CompanyName);\r\n //street 1 (required)\r\n result.push(address.Street1);\r\n //street 1 (optional)\r\n if (address.Street2) result.push(address.Street2);\r\n var state;\r\n if (address.State.length > 2) state = states.find((s) => s.label === address.state)?.value;\r\n //city, state zip\r\n result.push(address.City + \", \" + (state || address.State) + \" \" + address.Zip);\r\n if (address.Phone && !nophone) result.push(address.Phone);\r\n return result.join(\"
\");\r\n } else if (option === \"fullOneLine\") {\r\n if (address.FullAddress) return address.FullAddress;\r\n return (\r\n address.Street1 +\r\n (address.Street2 ? \", \" + address.Street2 : \"\") +\r\n \" \" +\r\n address.City +\r\n \", \" +\r\n address.State +\r\n \" \" +\r\n address.Zip\r\n );\r\n } else {\r\n return address.Street1 + (address.Street2 ? \", \" + address.Street2 : \"\");\r\n }\r\n};\r\n\r\nconst cType = (components: any[], componentType: string): string => {\r\n const compMatch = components.find((c) => c.types.indexOf(componentType) > -1);\r\n if (!isUndefined(compMatch)) {\r\n return compMatch.short_name;\r\n } else return \"\";\r\n};\r\n\r\nconst mapGoogleToOrderCloud = (gItem: any, isCompany: boolean): Address => {\r\n var components = gItem.address_components;\r\n var streetNumber = cType(components, \"street_number\");\r\n var route = cType(components, \"route\");\r\n return {\r\n Phone: gItem.formatted_phone_number || null,\r\n CompanyName: isCompany ? gItem.name : null,\r\n Street1: streetNumber && route ? streetNumber + \" \" + route : \"\",\r\n City: cType(components, \"locality\"),\r\n State: cType(components, \"administrative_area_level_1\"),\r\n Country: cType(components, \"country\"),\r\n Zip: cType(components, \"postal_code\"),\r\n };\r\n};\r\n\r\nconst service = {\r\n DirectionsUrlPrefix: directionsUrlPrefix,\r\n GetDistance: getDistance,\r\n GetCurrentPosition: getCurrentPosition,\r\n BuildAddressLines: buildAddressLines,\r\n MapGoogleToOrderCloud: mapGoogleToOrderCloud,\r\n};\r\n\r\nexport default service;\r\n","export default __webpack_public_path__ + \"static/media/noimg.018bd907.jpg\";","import { createStyles, makeStyles, Theme } from \"@material-ui/core\";\r\nimport React, { FunctionComponent } from \"react\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n position: \"absolute\",\r\n top: -10,\r\n },\r\n productFlag: {\r\n backgroundColor: theme.palette.primary.main,\r\n borderRadius: 0,\r\n color: \"white\",\r\n textAlign: \"center\",\r\n display: \"inline-block\",\r\n padding: theme.spacing(0.5, 1),\r\n margin: \"0 auto\",\r\n zIndex: 1,\r\n },\r\n })\r\n);\r\n\r\ninterface ProductFlagProps {\r\n label: string;\r\n}\r\n\r\nconst ProductFlag: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n return (\r\n
\r\n {props.label}\r\n
\r\n );\r\n};\r\n\r\nexport default ProductFlag;\r\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core\";\r\nimport { green } from '../../../themes/colors';\r\nimport React, { FunctionComponent } from \"react\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: \"100%\",\r\n position: 'absolute',\r\n top: '10px'\r\n },\r\n onSaleFlag: {\r\n backgroundColor: green.promo,\r\n textAlign: 'center',\r\n display: 'inline-block',\r\n padding: '4px',\r\n margin: '0 auto',\r\n float: 'right',\r\n fontWeight: 700\r\n }\r\n })\r\n);\r\n\r\nexport interface OnSaleProps {\r\n saleText: string\r\n}\r\n\r\nconst OnSaleFlag: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n return (\r\n
\r\n {`${props.saleText}% Off`} \r\n
\r\n ) \r\n}\r\n\r\nexport default OnSaleFlag;","export default __webpack_public_path__ + \"static/media/WorkshopsEventsFiller.ceb6ce1b.jpg\";","import {\r\n CardContent,\r\n createStyles,\r\n makeStyles,\r\n useTheme,\r\n Typography,\r\n Theme,\r\n Card,\r\n CardActionArea,\r\n Box,\r\n} from \"@material-ui/core\";\r\nimport { CalendarToday } from \"@material-ui/icons\";\r\nimport React, { Fragment, FunctionComponent } from \"react\";\r\nimport eventPlaceHolderImg from \"../../assets/images/WorkshopsEventsFiller.jpg\";\r\nimport Currency from \"react-currency-formatter\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { BachmansEvent } from \"../../models/product\";\r\nimport { DoubleOutlinedBtn } from \"../Shared/DoubleOutlinedBtn\";\r\nimport BachmansCardMedia from \"../Shared/BachmansCardMedia\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n borderRadius: \"0px\",\r\n border: `1px solid ${theme.palette.grey[200]}`,\r\n transition: \"box-shadow .5s, transform .5s\",\r\n flexGrow: 1,\r\n \"&:hover, &:active, &:focus\": {\r\n boxShadow: theme.shadows[1],\r\n transform: \"translateY(-2px)\",\r\n },\r\n },\r\n cardAction: {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n },\r\n cardBody: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n textAlign: \"center\",\r\n justifyContent: \"space-between\",\r\n flexGrow: 1,\r\n \"& h4\": {\r\n flexGrow: 0,\r\n },\r\n },\r\n linkViewAll: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n lineHeight: 1,\r\n },\r\n TextToAttend: {\r\n fontWeight: theme.typography.fontWeightBold,\r\n },\r\n dateDisplay: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: theme.spacing(1),\r\n margin: theme.spacing(1, 0, 2, 0),\r\n \"& .MuiTypography-root\": {\r\n lineHeight: 1,\r\n textAlign: \"left\",\r\n },\r\n },\r\n })\r\n);\r\n\r\ninterface EventCardProps {\r\n event: BachmansEvent;\r\n featured?: boolean;\r\n purchased?: boolean; // event has been purchased\r\n}\r\n\r\nconst EventCard: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const { purchased, featured, event } = props;\r\n const images = event?.xp?.Contentful?.Images;\r\n const history = useHistory();\r\n const theme = useTheme();\r\n const eventPrice =\r\n event.PriceSchedule?.PriceBreaks && event.PriceSchedule?.PriceBreaks[0]\r\n ? event.PriceSchedule?.PriceBreaks[0].Price\r\n : event.UnitPrice\r\n ? event.UnitPrice\r\n : \"\";\r\n\r\n const routeToProduct = () => {\r\n history.push(`/event/${event?.xp?.ProductCode}`, {\r\n path: window.location.pathname,\r\n search: window.location.search,\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {featured ? (\r\n \r\n Featured Event\r\n {event.Name}\r\n \r\n ) : (\r\n \r\n {event.Name}\r\n \r\n \r\n \r\n \r\n {event?.xp?.DateDisplay}\r\n \r\n \r\n {purchased && (\r\n \r\n {`${event.xp?.SpecsOptions?.Size} - ${event.xp?.SpecsOptions?.Color} `}{\" \"}\r\n \r\n )}\r\n \r\n {eventPrice ? (\r\n \r\n \r\n \r\n \r\n {purchased ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n \r\n Free to attend\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EventCard;\r\n","import { createStyles, CardContent, makeStyles, Typography, Theme, Link } from \"@material-ui/core\";\r\nimport React, { FunctionComponent } from \"react\";\r\nimport { ComplexContentModel } from \"../../../models/contentful/ComplexContent\";\r\nimport { CardRoot } from \"../BachmansCard\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n borderRadius: \"0px\",\r\n border: `1px solid ${theme.palette.grey[200]}`,\r\n transition: \"box-shadow .5s, transform .5s\",\r\n \"&:hover, &:active, &:focus\": {\r\n boxShadow: theme.shadows[1],\r\n transform: \"translateY(-2px)\",\r\n },\r\n },\r\n cardBody: {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n },\r\n })\r\n);\r\n\r\ninterface ContentCardProps {\r\n content: ComplexContentModel;\r\n}\r\nconst ContentCard: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {props?.content?.superTitle}\r\n {props?.content?.title}\r\n {props.content.linkText && (\r\n \r\n {props?.content?.linkText}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContentCard;\r\n","import {\r\n Box,\r\n Button,\r\n Card,\r\n CardActionArea,\r\n CardContent,\r\n createStyles,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n useMediaQuery,\r\n} from \"@material-ui/core\";\r\nimport React, { Fragment, FunctionComponent, useContext, useEffect, useRef, useState } from \"react\";\r\nimport { BachmansEvent, BachmansProduct } from \"../../models/product\";\r\nimport productService from \"../../services/product.service\";\r\nimport ProductService from \"../../services/product.service\";\r\nimport ProductPrice from \"../Product/ProductPrice\";\r\nimport ProductFlag from \"../Product/ProductFlags/ProductFlag\";\r\nimport OnSaleFlag from \"../Product/ProductFlags/OnSaleFlag\";\r\nimport CategoryService from \"../../services/category.service\";\r\nimport { Product } from \"ordercloud-javascript-sdk\";\r\nimport EventCard from \"../Events/EventCard\";\r\nimport ContentCard from \"./Content/ContentCard\";\r\nimport { ComplexContentModel } from \"../../models/contentful/ComplexContent\";\r\nimport noImg from \"../../assets/images/noimg.jpg\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { isArray } from \"lodash\";\r\nimport Link from \"../Shared/Link\";\r\nimport GrownExclusive from \"../Product/ProductFlags/GrownExclusive\";\r\nimport BachmansCardMedia from \"../Shared/BachmansCardMedia\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport moment from \"moment-timezone\";\r\nimport { BachmansCategory } from \"../../models/Category\";\r\nimport AlgoliaAnalytics from \"search-insights\";\r\nimport algolia from \"../../services/algolia.service\";\r\n\r\nexport type CardVariant = \"product\" | \"category\" | \"content\" | \"event\";\r\ninterface BachmansCardProps {\r\n variant: CardVariant;\r\n productGroup?: BachmansProduct[];\r\n category?: BachmansCategory;\r\n event?: Product | BachmansEvent;\r\n content?: ComplexContentModel;\r\n featured?: boolean;\r\n purchased?: boolean;\r\n}\r\ndeclare global {\r\n interface Window {\r\n dataLayer: any[]; // Define the type of 'dataLayer' according to your requirements\r\n }\r\n}\r\nconst BachmansCard: FunctionComponent = (props) => {\r\n const { variant, productGroup, category, event, content, featured, purchased } = props;\r\n return (\r\n \r\n {variant === \"product\" && productGroup && (\r\n \r\n )}\r\n {variant === \"category\" && category && }\r\n {variant === \"event\" && event && (\r\n \r\n )}\r\n {variant === \"content\" && content && }\r\n \r\n );\r\n};\r\n\r\nexport interface ProductCardProps {\r\n productGroup: BachmansProduct[];\r\n}\r\n\r\nconst useStyles = (variant: CardVariant) =>\r\n makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n borderRadius: \"0\",\r\n border: `1px solid ${theme.palette.grey[200]}`,\r\n transition: \"box-shadow .5s, transform .5s\",\r\n width: \"100%\",\r\n \"&:hover, &:active, &:focus\": {\r\n boxShadow: theme.shadows[1],\r\n transform: \"translateY(-2px)\",\r\n },\r\n cursor: \"pointer\",\r\n },\r\n cardWrapper: {\r\n color: theme.palette.text.primary,\r\n textDecoration: \"none\",\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n flexGrow: 1,\r\n \"&:hover\": {\r\n \"&.MuiCardActionArea-root:hover .MuiCardActionArea-focusHighlight\": {\r\n opacity: 0,\r\n },\r\n },\r\n },\r\n cardContent: {\r\n position: \"relative\",\r\n textAlign: variant === \"product\" ? \"center\" : \"left\",\r\n padding: theme.spacing(2),\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n alignItems: variant === \"product\" ? \"center\" : \"flex-start\",\r\n flex: \"1 1 auto\",\r\n width: \"100%\",\r\n \"&>h6\": {\r\n lineHeight: \"1.2\",\r\n },\r\n },\r\n cardTitle: {\r\n marginTop: theme.spacing(2),\r\n },\r\n mb0: { marginBottom: theme.spacing(0.5) },\r\n mb3: { marginBottom: theme.spacing(3) },\r\n cardProductSelector: {\r\n \"& p\": {\r\n marginBottom: theme.spacing(1),\r\n color: theme.palette.text.secondary,\r\n },\r\n },\r\n link: {\r\n cursor: \"pointer\",\r\n display: \"block\",\r\n },\r\n removeLinkContainer: {\r\n cursor: \"pointer\",\r\n display: \"block\",\r\n width: \"100%\",\r\n border: `1px solid ${theme.palette.grey[200]}`,\r\n },\r\n })\r\n );\r\n\r\nexport interface CategoryCardProps {\r\n category: BachmansCategory;\r\n}\r\n\r\ninterface WishListItem {\r\n ProductCode: string;\r\n}\r\n\r\nconst ProductCard: FunctionComponent = (props) => {\r\n const classes = useStyles(\"product\")();\r\n const [onSale, setOnSale] = useState();\r\n const [colorMap, setColorMap] = useState();\r\n const { productGroup } = props;\r\n const colorVariants = productGroup.length > 1 && !!productGroup[0].xp.SpecsOptions.ColorVarient;\r\n const defaultProduct = productService.GetDefaultProduct(productGroup);\r\n const sizeVariants = productGroup.length > 1 && !!productGroup[0].xp.SpecsOptions.Size;\r\n const history = useHistory();\r\n const componentMounted = useRef(true);\r\n const { user, anonymous, patchUser } = useContext(SessionContext);\r\n const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down(\"sm\"));\r\n\r\n const checkProductXP = (key: string) => {\r\n return productGroup.filter((p) => p && p.xp && p.xp[key]).length > 0;\r\n };\r\n\r\n const isFeatured = checkProductXP(\"IsFeatured\");\r\n\r\n const isAnyNew = (key: string) => {\r\n var dateNowMinus2Weeks = moment().subtract(4, \"weeks\");\r\n return productGroup.filter((p) => p && p.xp && p.xp[key] && dateNowMinus2Weeks < moment(p.xp[key])).length > 0;\r\n };\r\n\r\n const handleOnSaleChange = (value: string) => setOnSale(value);\r\n\r\n const routeToProduct = () => {\r\n const name = defaultProduct?.xp?.WebFacingProductTitle || defaultProduct?.Name;\r\n // Below code is to track is user is going to product from search result using quick search\r\n let urlSearchParams = new URLSearchParams(window.location.search);\r\n let currentQuery = urlSearchParams.get(\"queryid\");\r\n\r\n let categoryFlag: any = urlSearchParams.get(\"categorypage\");\r\n let userToken: any;\r\n AlgoliaAnalytics(\"init\", {\r\n appId: process.env.REACT_APP_ALGOLIA_APP as string,\r\n apiKey: process.env.REACT_APP_ALGOLIA_KEY as string,\r\n useCookie: true,\r\n });\r\n\r\n // Get AlgoliaUser Token from here\r\n AlgoliaAnalytics(\"getUserToken\", null, (err, newUserToken) => {\r\n if (err) {\r\n console.error(err);\r\n return;\r\n }\r\n userToken = newUserToken;\r\n });\r\n\r\n // Fetch Product Index and store it in variable\r\n const sortIndex = algolia.getQuickSearchProducts();\r\n let index = algolia.getProductIndex(sortIndex);\r\n\r\n const categorySortIndex = algolia.getCategoryProducts();\r\n let categoryIndex = algolia.getProductIndex(categorySortIndex);\r\n\r\n if (currentQuery !== undefined && currentQuery && currentQuery.length && categoryFlag == null) {\r\n AlgoliaAnalytics(\"clickedObjectIDsAfterSearch\", {\r\n userToken: userToken, // required for Node.js\r\n eventName: \"Product clicked from search result page\",\r\n index: index.indexName,\r\n queryID: currentQuery,\r\n objectIDs: [defaultProduct?.ID as string],\r\n positions: [defaultProduct?.Position + 1],\r\n });\r\n } else if (currentQuery !== undefined && currentQuery && currentQuery.length && categoryFlag === \"true\") {\r\n AlgoliaAnalytics(\"clickedObjectIDsAfterSearch\", {\r\n userToken: userToken, // required for Node.js\r\n eventName: \"Product clicked from category page\",\r\n index: categoryIndex.indexName,\r\n queryID: currentQuery,\r\n objectIDs: [defaultProduct?.ID as string],\r\n positions: [defaultProduct?.Position + 1],\r\n });\r\n }\r\n if (categoryFlag === \"true\") {\r\n history.push(\r\n `/p/${defaultProduct?.xp.ProductCode}/${name?.replaceAll(\" \", \"-\")}?queryid=${currentQuery}&categorypage=true`,\r\n {\r\n path: window.location.pathname,\r\n search: window.location.search,\r\n }\r\n );\r\n } else {\r\n history.push(`/p/${defaultProduct?.xp.ProductCode}/${name?.replaceAll(\" \", \"-\")}?queryid=${currentQuery}`, {\r\n path: window.location.pathname,\r\n search: window.location.search,\r\n });\r\n }\r\n\r\n // Code for tracking product clicks through DataLayer GA4\r\n if (defaultProduct && defaultProduct?.PriceSchedule && defaultProduct.PriceSchedule?.PriceBreaks) {\r\n window.dataLayer.push({ ecommerce: null });\r\n window.dataLayer.push({\r\n event: \"productClick\",\r\n ecommerce: {\r\n click: {\r\n products: [\r\n {\r\n name: defaultProduct.Name, // Name or ID is required.\r\n id: defaultProduct.ID,\r\n position: defaultProduct.Position,\r\n price: defaultProduct.PriceSchedule?.PriceBreaks[0].Price,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n productService.GetColorMap().then((response) => {\r\n if (componentMounted.current) {\r\n setColorMap(response.data);\r\n }\r\n });\r\n return () => {\r\n componentMounted.current = false;\r\n };\r\n }, []);\r\n\r\n // DELETE\r\n const deleteWishListItem = (prodItem: any) => {\r\n if (!anonymous && user?.xp.WishList) {\r\n const currentCode = prodItem !== null && prodItem[0] ? prodItem[0].xp?.ProductCode : \"\";\r\n const updatedWishList = user.xp.WishList?.filter((w: WishListItem) => w.ProductCode !== currentCode);\r\n if (patchUser && updatedWishList) {\r\n patchUser({ xp: { WishList: updatedWishList } });\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {onSale && }\r\n \r\n {isFeatured && }\r\n {!isFeatured && isAnyNew(\"ReleaseDate1\") && }\r\n \r\n {ProductService.GetProductName(defaultProduct)}\r\n \r\n \r\n {sizeVariants && `${productGroup.length} options available`}\r\n \r\n {colorVariants && colorMap && `${productGroup.length} colors available`}\r\n \r\n \r\n \r\n \r\n \r\n {window.location.pathname.includes(\"wishlist\") && (\r\n {\r\n e.stopPropagation();\r\n deleteWishListItem(productGroup);\r\n }}\r\n >\r\n {isMobile ? `Remove` : `Remove From Wish List`}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst CategoryCard: FunctionComponent = (props) => {\r\n const classes = useStyles(\"category\")();\r\n const { category } = props;\r\n const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down(\"sm\"));\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {category.Name}\r\n {!isMobile && {category?.xp?.ShortDescription}}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface CardRootProps {\r\n imageUrl?: string;\r\n linkUrl?: string;\r\n onClick?: () => void;\r\n}\r\nexport const CardRoot: React.FunctionComponent = (props) => {\r\n const classes = useStyles(\"product\")();\r\n return (\r\n {\r\n if (props.onClick) props.onClick();\r\n }}\r\n >\r\n {props.linkUrl ? (\r\n // TODO: choose link component dynamically based on interval vs external url:\r\n // https://github.com/remix-run/react-router/issues/1147#issuecomment-283684226\r\n \r\n \r\n {props.children}\r\n \r\n ) : (\r\n \r\n \r\n {props.children}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default BachmansCard;\r\n","import React from \"react\";\r\nimport MaskedInput from \"react-text-mask\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst PhoneMaskInput = (props: any) => {\r\n // https://material-ui.com/components/text-fields/#integration-with-3rd-party-input-libraries\r\n const { inputRef, ...other } = props;\r\n return (\r\n {\r\n inputRef(ref ? ref.inputElement : null);\r\n }}\r\n mask={[\"(\", /[1-9]/, /\\d/, /\\d/, \")\", \" \", /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/, /\\d/]}\r\n showMask\r\n />\r\n );\r\n};\r\n\r\nPhoneMaskInput.propTypes = {\r\n inputRef: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default PhoneMaskInput;\r\n","import moment from \"moment\";\r\nimport bachmansIntegrationsService from \"./bachmansIntegrations.service\";\r\n\r\nexport interface PurplePerksAccount {\r\n Balance?: number;\r\n PointsEarned?: number;\r\n CardNumber?: string;\r\n CECSAwardAccountID?: string;\r\n ExpirationDate?: string;\r\n EagleUser?: boolean;\r\n}\r\n\r\n// !todo: To remove commented code as part of cleanups\r\n// async function checkBalanceAsync(user: any): Promise {\r\n// try {\r\n// if (!user?.xp?.LoyaltyID) console.error(\"No user.xp.LoyaltyID\");\r\n// let perks = await bachmansIntegrationsService.GetPurplePerks(user?.xp?.LoyaltyID);\r\n// var date = new Date();\r\n// var expirationDate = new Date(date.getFullYear(), 3 * Math.ceil((date.getMonth() + 1) / 3), 1);\r\n// const usePerks = perks.data && perks.data.card_value !== Errors.giftCardNotAvailable && perks.data.card_value > 0;\r\n// return {\r\n// Balance: usePerks ? Number(perks.data.card_value) : 0,\r\n// PointsEarned: usePerks ? perks.data.card_value : 0,\r\n// CardNumber: \"777777\" + user?.xp?.LoyaltyID,\r\n// LoyaltyID: user?.xp?.LoyaltyID,\r\n// ExpirationDate: moment(expirationDate).format(\"MM/DD/yyyy\"),\r\n// };\r\n// } catch (err) {\r\n// throw console.error(err);\r\n// }\r\n// }\r\n\r\n// New CECS Purple Perks Balance Inquiry\r\nasync function checkBalanceAsync(user: any): Promise {\r\n try {\r\n if (!user?.xp?.LoyaltyCardNumber && !user?.xp?.LoyaltyID)\r\n console.error(\"No user.xp.LoyaltyCardNumber and user.xp.LoyaltyId\");\r\n\r\n let perks = await bachmansIntegrationsService.GetPurplePerks(user);\r\n\r\n var date = new Date();\r\n var expirationDate = new Date(date.getFullYear(), 3 * Math.ceil((date.getMonth() + 1) / 3), 1);\r\n const purplePerksData = Object.fromEntries(\r\n Object.entries(perks.data).map(([key, value]) => [key.charAt(0).toUpperCase() + key.slice(1), value])\r\n );\r\n console.log(\"Purple Perks Card Balance\", purplePerksData);\r\n return {\r\n ...purplePerksData,\r\n ExpirationDate: moment(expirationDate).format(\"MM/DD/yyyy\"),\r\n };\r\n } catch (err) {\r\n throw console.error(err);\r\n }\r\n}\r\n\r\nconst service = {\r\n CheckBalanceAsync: checkBalanceAsync,\r\n};\r\n\r\nexport default service;\r\n","import {\r\n createStyles,\r\n makeStyles,\r\n Popover,\r\n PopoverOrigin,\r\n Theme,\r\n} from \"@material-ui/core\";\r\nimport React, { FunctionComponent } from \"react\";\r\n\r\ninterface DropdownMenuProps {\r\n open: boolean;\r\n anchorEl: any;\r\n anchorOrigin?: PopoverOrigin;\r\n transformOrigin?: PopoverOrigin;\r\n arrowPosition?: any;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n popoverRoot: {\r\n pointerEvents: \"none\",\r\n },\r\n arrow: {\r\n top: -17,\r\n // left: \"25%\",\r\n width: 0,\r\n height: 0,\r\n position: \"relative\",\r\n \"&:before\": {\r\n content: \"''\",\r\n position: \"absolute\",\r\n display: \"block\",\r\n width: 0,\r\n height: 0,\r\n borderWidth: \"13px 12px\",\r\n borderStyle: \"solid\",\r\n borderColor: \"transparent\",\r\n zIndex: theme.zIndex.modal + 1,\r\n bottom: -17,\r\n right: -8,\r\n borderBottomColor: theme.palette.grey[300],\r\n },\r\n \"&:after\": {\r\n content: \"''\",\r\n position: \"absolute\",\r\n display: \"block\",\r\n width: 0,\r\n height: 0,\r\n borderWidth: \"13px 12px\",\r\n borderStyle: \"solid\",\r\n borderColor: \"transparent\",\r\n zIndex: theme.zIndex.modal + 1,\r\n bottom: -18,\r\n right: -8,\r\n borderBottomColor: theme.palette.background.paper,\r\n },\r\n },\r\n paperRoot: {\r\n overflow: \"visible\",\r\n pointerEvents: \"all\",\r\n },\r\n })\r\n);\r\n\r\nconst DropdownMenu: FunctionComponent = (props) => {\r\n const {\r\n children,\r\n open,\r\n anchorEl,\r\n arrowPosition,\r\n anchorOrigin,\r\n transformOrigin,\r\n } = props;\r\n const classes = useStyles();\r\n let arrowLeftPosition = \"%\";\r\n if (arrowPosition) {\r\n switch (arrowPosition) {\r\n case \"left\":\r\n arrowLeftPosition = \"25%\";\r\n break;\r\n case \"center\":\r\n arrowLeftPosition = \"50%\";\r\n break;\r\n case \"right\":\r\n arrowLeftPosition = \"75%\";\r\n break;\r\n default:\r\n arrowLeftPosition = \"75%\";\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default DropdownMenu;\r\n","export default __webpack_public_path__ + \"static/media/bachmans-404.77e86c9c.svg\";","import React, { FunctionComponent } from \"react\";\r\nimport { Box, Container, createStyles, makeStyles, Theme, Typography } from \"@material-ui/core\";\r\nimport { connect } from \"react-redux\";\r\nimport { setBreadcrumbs } from \"../../redux/slices/breadcrumbs\";\r\nimport svg404 from \"../../assets/svg/bachmans-404.svg\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n display: \"grid\",\r\n placeItems: \"center center\",\r\n minHeight: \"40vh\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n marginBottom: \"10vh\",\r\n },\r\n },\r\n text: {\r\n marginTop: theme.spacing(-2),\r\n },\r\n })\r\n);\r\n\r\nconst NotFound: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const { setBreadcrumbs } = props;\r\n setBreadcrumbs({ visible: true, links: [], current: \"Page Not Found\" });\r\n return (\r\n \r\n \r\n \"illustrsation\r\n \r\n 404: Page Not Found\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default connect(null, { setBreadcrumbs })(NotFound);\r\n","import axios, { AxiosInstance } from \"axios\";\r\nimport { BachmansMeUser } from \"../models/user\";\r\nimport appConfig from \"../constants/app.constants\";\r\n\r\ntype EagleAction = \"registerpp\";\r\nclass JitterbitIntegrations {\r\n private axios: AxiosInstance;\r\n constructor() {\r\n this.axios = axios.create({\r\n baseURL: appConfig.jitterbitUrl,\r\n });\r\n }\r\n\r\n public checkGcBalance = async (gcNumber: string) => {\r\n const url = appConfig.bachmansIntegrationsUrl + \"/api/cecs/inquirygiftcard\";\r\n const data = {\r\n cardNumber: gcNumber,\r\n };\r\n return this.axios.post(url, data);\r\n };\r\n\r\n public RegisterPurplePerks = async (user: BachmansMeUser, action: EagleAction) => {\r\n let data = {\r\n CustomerID: user.xp && user.xp.EagleCustomerNumber ? user.xp.EagleCustomerNumber.toString() : user.ID,\r\n OMSAccountNumber: user.ID,\r\n Action: action,\r\n };\r\n return this.axios.post(\"/four51_to_eagle_filecreate\", data);\r\n };\r\n\r\n public RegisterPurplePerksCECS = async (user: BachmansMeUser) => {\r\n let data = {\r\n ID: user.xp && user.xp.CecsCustomerNumber ? user.xp.CecsCustomerNumber.toString() : user.ID,\r\n };\r\n return this.axios.post(appConfig.bachmansIntegrationsUrl + \"/api/cecs/customerenrolltoloyalty\", data);\r\n };\r\n}\r\n\r\nexport default new JitterbitIntegrations();\r\n","import React, { FunctionComponent, useContext, useEffect, useState } from \"react\";\r\nimport { PurplePerksContext } from \"../../providers/contentful\";\r\nimport { createStyles, makeStyles, Paper, Theme, Typography } from \"@material-ui/core\";\r\n\r\ninterface PurplePerksCardProps {\r\n type: \"footer\" | \"stacked\";\r\n}\r\n\r\nconst useStyle = (type: \"footer\" | \"stacked\") =>\r\n makeStyles((theme: Theme) =>\r\n createStyles(\r\n type === \"footer\"\r\n ? {\r\n root: {\r\n width: \"80%\",\r\n height: 100,\r\n position: \"absolute\",\r\n top: -50,\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n padding: theme.spacing(0, 2, 0, 1),\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: \"auto\",\r\n padding: theme.spacing(0, 8, 0, 7),\r\n },\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n\r\n ppImg: {\r\n \"& img\": {\r\n maxWidth: 90,\r\n },\r\n margin: theme.spacing(0.5, 1, 0, 0),\r\n },\r\n ppText: {\r\n fontSize: theme.typography.h3.fontSize,\r\n },\r\n }\r\n : {\r\n root: {\r\n padding: theme.spacing(1.5),\r\n margin: theme.spacing(1),\r\n boxShadow: \"none\",\r\n border: `3px solid ${theme.palette.primary.main}`,\r\n outline: `1px solid ${theme.palette.grey[300]}`,\r\n outlineOffset: theme.spacing(1),\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n ppImg: {\r\n \"& img\": {\r\n maxWidth: 75,\r\n },\r\n margin: theme.spacing(0.5, 1, 0, 0),\r\n },\r\n ppText: {\r\n fontSize: theme.typography.h4.fontSize,\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n }\r\n )\r\n );\r\n\r\nconst PurplePerksCard: FunctionComponent = ({ type }) => {\r\n const classes = useStyle(type)();\r\n const purplePerks = useContext(PurplePerksContext);\r\n const [preBoldText, setPreBoldText] = useState();\r\n const [postBoldText, setPostBoldText] = useState();\r\n const [boldText, setBoldText] = useState();\r\n\r\n useEffect(() => {\r\n if (purplePerks?.data?.fields?.title) {\r\n const title = purplePerks?.data?.fields?.title;\r\n setPreBoldText(title.substring(0, title.indexOf(\"|\")));\r\n setBoldText(title.substring(title.indexOf(\"|\") + 1, title.lastIndexOf(\"|\")));\r\n setPostBoldText(title.substring(title.lastIndexOf(\"|\") + 1, title.length));\r\n }\r\n }, [purplePerks]);\r\n\r\n return (\r\n \r\n
\r\n \"purple\r\n
\r\n \r\n {preBoldText}\r\n {boldText}\r\n {postBoldText}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PurplePerksCard;\r\n","export interface Destination {\r\n type: string;\r\n label: string;\r\n validMethods: ValidMethodType;\r\n search: \"G\" | \"O\" | \"S\";\r\n searchLabel: string;\r\n searchHelp?: string;\r\n errorText?: string;\r\n manualEntry?: boolean;\r\n filters?: any;\r\n hasPopover?: boolean;\r\n popoverTemplate?: string;\r\n defaultRecipientType?: string;\r\n options?: any;\r\n googleOptions?: GoogleOptions;\r\n}\r\n\r\ninterface GoogleOptions {\r\n types?: string[];\r\n country?: string[];\r\n}\r\n\r\ntype ValidMethodType = \"*\" | string[];\r\n\r\nexport const defaultTypes: Destination[] = [\r\n {\r\n type: \"Residence\",\r\n label: \"Residence\",\r\n validMethods: \"*\",\r\n search: \"G\",\r\n searchLabel: \"Address 1\",\r\n errorText: \"Address 1 is required\",\r\n googleOptions: {\r\n types: [\"address\"],\r\n country: [\"US\"],\r\n },\r\n },\r\n {\r\n type: \"Hospital\",\r\n label: \"Hospital\",\r\n validMethods: \"*\",\r\n search: \"G\",\r\n searchLabel: \"Enter Hospital Name\",\r\n errorText: \"Hospital name is required\",\r\n searchHelp: \"Search the hospitals Bachman's can deliver to\",\r\n manualEntry: true,\r\n filters: {\r\n ID: \"Hospitals-*\",\r\n \"xp.Active\": true,\r\n },\r\n options: [\"Staff\", \"Patient\"],\r\n googleOptions: {\r\n types: [\"establishment\"],\r\n country: [\"US\"],\r\n },\r\n hasPopover: true,\r\n popoverTemplate: \"common/services/recipients/templates/hospital.popover.tpl.html\",\r\n defaultRecipientType: \"Staff\",\r\n },\r\n {\r\n type: \"Church\",\r\n label: \"Church\",\r\n validMethods: \"*\",\r\n search: \"G\",\r\n searchLabel: \"Enter Church Name\",\r\n errorText: \"Church name is required\",\r\n searchHelp: \"Search the churches Bachman's can deliver to\",\r\n manualEntry: true,\r\n filters: {\r\n ID: \"Church-*\",\r\n \"xp.Active\": true,\r\n },\r\n options: [\"Staff\", \"In Memory Of\"],\r\n googleOptions: {\r\n types: [\"establishment\"],\r\n },\r\n hasPopover: true,\r\n popoverTemplate: \"common/services/recipients/templates/church.popover.tpl.html\",\r\n defaultRecipientType: \"Staff\",\r\n },\r\n {\r\n type: \"FuneralHome\",\r\n label: \"Funeral Home\",\r\n validMethods: \"*\",\r\n search: \"G\",\r\n searchLabel: \"Enter Funeral Home Name\",\r\n errorText: \"Funeral Home name is required\",\r\n searchHelp: \"Search the funeral homes Bachman's can deliver to\",\r\n manualEntry: true,\r\n filters: {\r\n ID: \"FuneralHome-*\",\r\n \"xp.Active\": true,\r\n },\r\n googleOptions: {\r\n types: [\"establishment\"],\r\n },\r\n defaultRecipientType: \"InMemoryOf\",\r\n },\r\n {\r\n type: \"Cemetery\",\r\n label: \"Cemetery\",\r\n validMethods: \"*\",\r\n search: \"G\",\r\n searchLabel: \"Enter Cemetery Name\",\r\n errorText: \"Cemetery name is required\",\r\n searchHelp: \"Search the cemeteries Bachman's can deliver to\",\r\n manualEntry: true,\r\n filters: {\r\n ID: \"Cemetery-*\",\r\n \"xp.Active\": true,\r\n },\r\n googleOptions: {\r\n types: [\"establishment\"],\r\n },\r\n defaultRecipientType: \"InMemoryOf\",\r\n },\r\n {\r\n type: \"School\",\r\n label: \"School\",\r\n validMethods: \"*\",\r\n search: \"G\",\r\n errorText: \"School name is required\",\r\n searchLabel: \"Enter School Name\",\r\n googleOptions: {\r\n types: [\"establishment\"],\r\n country: [\"US\"],\r\n },\r\n },\r\n {\r\n type: \"Business\",\r\n label: \"Business\",\r\n validMethods: \"*\",\r\n search: \"G\",\r\n searchLabel: \"Enter Business Name\",\r\n errorText: \"Business name is required\",\r\n googleOptions: {\r\n types: [\"establishment\"],\r\n country: [\"US\"],\r\n },\r\n },\r\n {\r\n type: \"InStorePickUp\",\r\n label: \"In-Store or Curbside Pickup\",\r\n validMethods: [\"InStorePickUp\", \"CurbsidePickUp\"],\r\n searchLabel: \"Select a Store\",\r\n search: \"S\",\r\n searchHelp: \"Select the Bachman's store where you will pick up your order\",\r\n hasPopover: true,\r\n popoverTemplate: \"common/services/recipients/templates/store.popover.tpl.html\",\r\n filters: {\r\n ID: \"Store-*\",\r\n \"xp.StoreType\": \"Flagship\",\r\n \"xp.WillCall\": true,\r\n \"xp.Active\": true,\r\n },\r\n },\r\n];\r\n","export default __webpack_public_path__ + \"static/media/logoPurple.ec4acba5.svg\";","import { Typography } from \"@material-ui/core\";\r\n\r\ninterface PasswordRequirementsProps {\r\n variant?: \"body1\" | \"body2\";\r\n}\r\n\r\nexport const PasswordRequirementsList: React.FunctionComponent = (props) => {\r\n return (\r\n
    \r\n
  • \r\n 1 of the following special characters ! @ # $ %{\" \"}\r\n
  • \r\n
  • \r\n 1 Uppercase letter (A-Z)\r\n
  • \r\n
  • \r\n 1 Digit (0-9)\r\n
  • \r\n
\r\n );\r\n};\r\n\r\nexport default PasswordRequirementsList;\r\n","import { ApiRole } from \"ordercloud-javascript-sdk\";\r\n\r\nexport type ENVIRONMENT = \"test\" | \"production\";\r\nexport type ContentfulEnv = \"master\" | \"test\";\r\n\r\nexport const scope: ApiRole[] = [\r\n \"PasswordReset\",\r\n \"Shopper\",\r\n \"BuyerReader\",\r\n \"CategoryReader\",\r\n \"AddressReader\",\r\n \"ProductReader\",\r\n \"MeAdmin\",\r\n \"MeXpAdmin\",\r\n \"MeAddressAdmin\",\r\n \"MeCreditCardAdmin\",\r\n];\r\n\r\nexport interface AppConstants {\r\n apiUrl: string;\r\n clientID: string;\r\n jitterbitUrl: string;\r\n blobStorageUrl: string;\r\n bachmansIntegrationsUrl: string;\r\n contentfulEnv: ContentfulEnv;\r\n algoliaIndexPrefix: string;\r\n name: string;\r\n buyerId: string;\r\n catalogid: string;\r\n anonymous: boolean;\r\n enableimageZoom: boolean;\r\n algoliaQueryIndexPrefix: string;\r\n paypalClientID: string;\r\n purplePerksFeatureDisable: boolean;\r\n}\r\n\r\nconst localMiddlewareUrl = \"https://localhost:5001\";\r\nconst useLocalMiddleware = false;\r\n\r\n// store non sensitive application constants here\r\n\r\nconst getConfig = (env: ENVIRONMENT): AppConstants => {\r\n if (env === \"test\") {\r\n return {\r\n apiUrl: \"https://sandboxapi.ordercloud.io\",\r\n clientID: \"CEE9561C-3544-4526-AA15-976900D79AB2\",\r\n jitterbitUrl: \"https://Four51TRIAL104401.jitterbit.net/Test_BachmansOnPrem\",\r\n blobStorageUrl: \"https://bachmansstorageqa.blob.core.windows.net/webdata\",\r\n bachmansIntegrationsUrl: \"https://bachmans-integrationsqa.azurewebsites.net\",\r\n contentfulEnv: \"test\",\r\n algoliaIndexPrefix: \"test_\",\r\n algoliaQueryIndexPrefix: \"\",\r\n name: \"bachmans test\",\r\n buyerId: \"Bachmans\",\r\n catalogid: \"Bachmans\",\r\n anonymous: true,\r\n enableimageZoom: true,\r\n paypalClientID: \"Aenn3GZcN5-zuGYKu8CDrxeUJ7R1BfurZfk3q4RPKqDuevoMyhXE-sMt4E1KBVt0XRd722NuvMhgcsmZ\",\r\n // *** Note BI-802: To enable or disable Purple Perks redemption at checkout, toggle the 'purplePerksFeatureDisable' setting between true (disabled) and false (enabled).\r\n purplePerksFeatureDisable: false,\r\n };\r\n } else\r\n return {\r\n apiUrl: \"https://api.ordercloud.io\",\r\n clientID: \"8836BE8D-710A-4D2D-98BF-EDBE7227E3BB\",\r\n jitterbitUrl: \"https://Four51TRIAL104401.jitterbit.net/BachmansOnPrem\",\r\n blobStorageUrl: \"https://bachmansstorage.blob.core.windows.net/webdata\",\r\n bachmansIntegrationsUrl: \"https://bachmans-integrations.azurewebsites.net\",\r\n contentfulEnv: \"master\",\r\n algoliaIndexPrefix: \"\",\r\n algoliaQueryIndexPrefix: \"\",\r\n name: \"bachmans production\",\r\n buyerId: \"Bachmans\",\r\n catalogid: \"Bachmans\",\r\n anonymous: true,\r\n enableimageZoom: true,\r\n paypalClientID: \"AQOTWlGhkPm7OmEqW3GigskqTrYxTCMMIgnRUcX7kqLKHxv2oku-N9UQUK5O15IGpBuqYB0c9fF8M6FM\",\r\n // *** Note BI-802: To enable or disable Purple Perks redemption at checkout, toggle the 'purplePerksFeatureDisable' setting between true (disabled) and false (enabled).\r\n purplePerksFeatureDisable: false,\r\n };\r\n};\r\n\r\nconst config = getConfig(process.env.REACT_APP_ENVIRONMENT as ENVIRONMENT);\r\n\r\nif (useLocalMiddleware) {\r\n config.bachmansIntegrationsUrl = localMiddlewareUrl;\r\n}\r\nexport default config;\r\n","import BachmansMeUser, { RegisterUserResponse } from \"../models/user\";\r\nimport bachmansIntegrations from \"../services/bachmansIntegrations.service\";\r\nimport { ForgottenPassword } from \"ordercloud-javascript-sdk\";\r\nimport appConfig from \"../constants/app.constants\";\r\nexport interface RegisterFormValues {\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n Phone: string;\r\n CurrentPassword: string;\r\n Password: string;\r\n PasswordConfirmation: string;\r\n}\r\n\r\nasync function registerAsync(userInfo: RegisterFormValues): Promise {\r\n let ocUser: BachmansMeUser = {\r\n TermsAccepted: new Date().toISOString(),\r\n Username: userInfo.Email,\r\n Active: true,\r\n ...userInfo,\r\n };\r\n return await bachmansIntegrations.registerUserAsync(ocUser);\r\n}\r\nasync function sendVerificationCodeAsync(userNameEmail: string): Promise {\r\n let passwordResetRequest = {\r\n Email: userNameEmail,\r\n ClientID: appConfig.clientID,\r\n URL: `${window.location.origin}/reset-password`,\r\n Username: userNameEmail,\r\n };\r\n return await ForgottenPassword.SendVerificationCode(passwordResetRequest);\r\n}\r\n\r\nconst service = {\r\n RegisterAsync: registerAsync,\r\n SendVerificationCodeAsync: sendVerificationCodeAsync,\r\n};\r\nexport default service;\r\n","import { Box, createStyles, Grid, Link, makeStyles, Theme, Typography } from \"@material-ui/core\";\r\nimport { BuyerAddress, Me } from \"ordercloud-javascript-sdk\";\r\nimport React, { Fragment } from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport { useState } from \"react\";\r\nimport locationService from \"../../services/locationService\";\r\nimport { neutral } from \"../../themes/colors\";\r\nimport DoubleOutlinedBtn from \"../Shared/DoubleOutlinedBtn\";\r\nimport AddressDialog from \"./AddressDialog\";\r\nimport BachmansLoading from \"../Shared/BachmansLoading\";\r\nimport ConfirmDialog from \"../Shared/ConfirmDialog\";\r\nimport { deliveryTextMap } from \"../../constants/DeliveryText\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n gridItem: {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n },\r\n addressBox: {\r\n flexGrow: 1,\r\n height: \"100%\",\r\n border: `1px solid ${theme.palette.grey[200]}`,\r\n padding: theme.spacing(1.5),\r\n },\r\n address: {\r\n fontWeight: theme.typography.fontWeightBold,\r\n color: neutral.text_white_bg,\r\n lineHeight: 1.4,\r\n marginTop: theme.spacing(2),\r\n },\r\n link: {\r\n cursor: \"pointer\",\r\n },\r\n })\r\n);\r\n\r\nconst AddressBook: React.FunctionComponent = () => {\r\n const classes = useStyles();\r\n const [addresses, setAddresses] = useState();\r\n const [dialogOpen, setDialogOpen] = useState(false);\r\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\r\n const [selectedAddress, setSelectedAddress] = useState();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n const options = { page: 1, pageSize: 100, filters: { Editable: true, Shipping: true } };\r\n Me.ListAddresses(options).then((addresses) => {\r\n setAddresses(addresses.Items);\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 750);\r\n });\r\n }, []);\r\n\r\n const handleOpenDialog = (address?: BuyerAddress) => (event: React.MouseEvent) => {\r\n setDialogOpen(!dialogOpen);\r\n setSelectedAddress(address);\r\n };\r\n\r\n const handleOpenDeleteDialog = (address?: BuyerAddress) => (event: React.MouseEvent) => {\r\n setDeleteDialogOpen(!deleteDialogOpen);\r\n setSelectedAddress(address);\r\n };\r\n\r\n const handleClose = () => {\r\n setDialogOpen(false);\r\n setDeleteDialogOpen(false);\r\n };\r\n\r\n const onAddressUpdate = (newAddress: BuyerAddress) => {\r\n var isNewAddress = !addresses?.map((a) => a.ID).includes(newAddress.ID);\r\n if (isNewAddress) {\r\n setAddresses([...(addresses || []), newAddress]);\r\n } else {\r\n setAddresses(\r\n addresses?.map((a) => {\r\n return a.ID === newAddress.ID ? newAddress : a;\r\n })\r\n );\r\n }\r\n goBackToPrevious();\r\n };\r\n\r\n const onAddressDelete = (deletedAddressID: string) => {\r\n setAddresses(addresses?.filter((address) => address.ID !== deletedAddressID));\r\n setDeleteDialogOpen(false);\r\n goBackToPrevious();\r\n };\r\n\r\n const goBackToPrevious = (): void => {\r\n let urlSearchParams = new URLSearchParams(window.location.search);\r\n let navBackTo = urlSearchParams ? urlSearchParams.get(\"navBackTo\") : \"\";\r\n if (navBackTo) {\r\n window.open(`${navBackTo}`, \"_self\");\r\n }\r\n };\r\n\r\n const onAddressSubmit = async (address: BuyerAddress): Promise => {\r\n if (selectedAddress && selectedAddress.ID) {\r\n await Me.PatchAddress(selectedAddress.ID, address);\r\n onAddressUpdate({ ID: selectedAddress.ID, ...address });\r\n } else {\r\n if (!address?.xp) {\r\n address.xp = {\r\n addressType: \"Residence\",\r\n };\r\n }\r\n const newAddress = await Me.CreateAddress(address);\r\n onAddressUpdate(newAddress);\r\n }\r\n };\r\n\r\n const deleteAddress = async (address?: BuyerAddress): Promise => {\r\n if (address && address.ID) {\r\n await Me.DeleteAddress(address.ID);\r\n setDeleteDialogOpen(false);\r\n onAddressDelete(address.ID);\r\n } else setDeleteDialogOpen(false);\r\n };\r\n\r\n const getAddressNickName = (address?: BuyerAddress) => {\r\n if (address?.xp?.DeliveryMethod !== \"InStorePickUp\") {\r\n if (address?.xp?.NickName) {\r\n return address?.xp?.NickName;\r\n } else if (address?.Zip && !address?.xp?.Nickname) {\r\n return `${address?.FirstName} ${address?.LastName}`;\r\n } else {\r\n return deliveryTextMap[(address?.Shipping as unknown) as string]?.text;\r\n }\r\n } else {\r\n return address?.AddressName + \" Store\";\r\n }\r\n };\r\n\r\n return (\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n setDeleteDialogOpen(false)}\r\n onAccept={() => deleteAddress(selectedAddress)}\r\n title=\"Are you sure you want to delete this address?\"\r\n loadingText=\"Deleting address...\"\r\n />\r\n \r\n \r\n \r\n {addresses &&\r\n addresses.map((address) => (\r\n \r\n
\r\n \r\n \r\n \r\n {getAddressNickName(address)}\r\n \r\n \r\n {address?.xp?.addressType || \"Residence\"}\r\n \r\n \r\n \r\n \r\n \r\n Edit\r\n \r\n \r\n |\r\n \r\n \r\n Delete\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default AddressBook;\r\n","import bachmansIntegrationsService from \"./bachmansIntegrations.service\";\r\n\r\nfunction expirationDateFormat(month: any, year: any) {\r\n var stringYear = year.toString();\r\n return month + stringYear.slice(-2);\r\n}\r\n\r\n//Use this function to update a credit card for an existing customer profile.\r\nasync function updateAsync(cardId: string, card: any) {\r\n let ExpirationDate = expirationDateFormat(card.ExpMonth, card.ExpYear);\r\n // letterSpacing token = OrderCloudSDK.GetToken();\r\n let cc = {\r\n name: card.CardholderName,\r\n date: ExpirationDate,\r\n };\r\n try {\r\n return await bachmansIntegrationsService.updateCCAsync(cardId, cc);\r\n } catch (ex) {\r\n console.error(ex);\r\n }\r\n}\r\n\r\nconst service = {\r\n UpdateAsync: updateAsync,\r\n ExpirationDateFormat: expirationDateFormat,\r\n};\r\n\r\nexport default service;\r\n","import React, { Fragment, FunctionComponent, useCallback } from \"react\";\r\nimport {\r\n createStyles,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n Typography,\r\n makeStyles,\r\n Theme,\r\n IconButton,\r\n TextField,\r\n Button,\r\n FormControl,\r\n InputLabel,\r\n Select,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport MuiDialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport { CreditCard } from \"ordercloud-javascript-sdk\";\r\nimport { Close } from \"@material-ui/icons\";\r\nimport { Formik, FormikHelpers } from \"formik\";\r\nimport * as yup from \"yup\";\r\nimport { useEffect } from \"react\";\r\nimport moment from \"moment-timezone\";\r\nimport { useState } from \"react\";\r\nimport creditCardService from \"../../../services/creditCard.service\";\r\n\r\ninterface EditCCDialogProps {\r\n open: boolean;\r\n creditCard: CreditCard | undefined;\r\n handleClose: (isSubmitting: boolean, card?: CreditCard) => {};\r\n}\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n dialogPaper: {\r\n maxWidth: \"100%\",\r\n width: 600,\r\n },\r\n title: {},\r\n closeButton: {\r\n position: \"absolute\",\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n })\r\n);\r\ninterface FormValues {\r\n name: string;\r\n month: string;\r\n year: string;\r\n}\r\n\r\nconst EditCCDialog: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { open, handleClose, creditCard } = props;\r\n const [expMonth, setExpMonth] = useState(\"\");\r\n const [expYear, setExpYear] = useState(\"\");\r\n const [years, setYears] = useState([]);\r\n const [months, setMonths] = useState([]);\r\n\r\n const validationSchema = yup.object({\r\n name: yup.string(),\r\n month: yup.string(),\r\n year: yup.string(),\r\n });\r\n\r\n const handleSubmit = useCallback(\r\n async (values: FormValues, { setSubmitting }: FormikHelpers): Promise => {\r\n if (!creditCard?.ID) return console.error(\"no cc\");\r\n let newCardInfo = Object.assign(creditCard, {\r\n CardholderName: values.name,\r\n ExpMonth: values.month,\r\n ExpYear: values.year,\r\n });\r\n let updatedCC: any = (await creditCardService.UpdateAsync(creditCard?.ID, newCardInfo)) as any;\r\n handleClose(true, updatedCC?.data as CreditCard);\r\n setSubmitting(false);\r\n return;\r\n },\r\n [creditCard, handleClose]\r\n );\r\n\r\n const initYears = (currentYear: number) => {\r\n let yearsArray = [];\r\n for (let i = 0; i < 12; i++) {\r\n yearsArray.push((currentYear + i).toString());\r\n }\r\n return yearsArray;\r\n };\r\n\r\n const initMonths = () => {\r\n let months: any[] = [];\r\n for (let i = 1; i <= 12; i++) {\r\n let display = i.toString();\r\n if (i < 10) display = \"0\" + display;\r\n months.push(display);\r\n }\r\n return months;\r\n };\r\n\r\n useEffect(() => {\r\n if (creditCard) {\r\n let now = moment.utc();\r\n let currentYear = Number(now.format(\"YYYY\"));\r\n let expDate = moment.utc(creditCard?.ExpirationDate);\r\n setExpMonth(expDate.format(\"MM\"));\r\n setExpYear(Number(expDate.format(\"YYYY\")));\r\n setYears(initYears(currentYear));\r\n setMonths(initMonths());\r\n }\r\n }, [creditCard]);\r\n\r\n return creditCard ? (\r\n handleClose(false)}\r\n aria-labelledby=\"Edit-Credit-Card-form\"\r\n className={classes.root}\r\n maxWidth=\"md\"\r\n >\r\n \r\n \r\n {`Editing ${creditCard?.CardType || \"\"} ending in ${\r\n creditCard.PartialAccountNumber\r\n }`}\r\n handleClose(false)}>\r\n \r\n \r\n \r\n \r\n \r\n {({ values, errors, touched, handleChange, handleBlur, handleSubmit, isSubmitting, isValid }) => (\r\n \r\n
\r\n \r\n \r\n\r\n \r\n Expiration Month\r\n \r\n {months &&\r\n months.map((value: any, i: number) => (\r\n \r\n {value}\r\n \r\n ))}\r\n \r\n \r\n \r\n Expiration Year\r\n \r\n {years &&\r\n years.map((value: any, i: number) => (\r\n \r\n {value}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n \r\n \r\n ) : null;\r\n};\r\nexport default EditCCDialog;\r\n","import React, { Fragment, FunctionComponent, useState } from \"react\";\r\nimport {\r\n Box,\r\n createStyles,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n Button,\r\n Grid,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n Link,\r\n} from \"@material-ui/core\";\r\nimport { useEffect } from \"react\";\r\nimport { CreditCard, Me } from \"ordercloud-javascript-sdk\";\r\nimport moment from \"moment-timezone\";\r\nimport { useCallback } from \"react\";\r\nimport EditCCDialog from \"./EditCCDialog\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport bachmansIntegrationsService from \"../../../services/bachmansIntegrations.service\";\r\nimport { neutral } from \"../../../themes/colors\";\r\nimport BachmansLoading from \"../../Shared/BachmansLoading\";\r\n\r\ninterface CreditCardsProps {}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n gridItem: {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n },\r\n ccCard: {\r\n flexGrow: 1,\r\n height: \"100%\",\r\n border: `1px solid ${theme.palette.grey[200]}`,\r\n padding: theme.spacing(2),\r\n },\r\n ccBody: {\r\n \"& *\": {\r\n fontWeight: theme.typography.fontWeightBold,\r\n color: neutral.text_white_bg,\r\n lineHeight: 1.4,\r\n \"&:first-child\": {\r\n marginTop: theme.spacing(2),\r\n },\r\n },\r\n },\r\n link: {\r\n cursor: \"pointer\",\r\n },\r\n })\r\n);\r\nconst CreditCards: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const [creditCards, setCreditCards] = useState([]);\r\n const [editOpen, setEditOpen] = useState(false);\r\n const [deleteOpen, setDeleteOpen] = useState(false);\r\n const [selectedCard, setSelectedCard] = useState();\r\n const history = useHistory();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n setLoading(true);\r\n let ccInfo = await Me.ListCreditCards();\r\n setCreditCards(ccInfo.Items);\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 750);\r\n })();\r\n }, []);\r\n\r\n // EDIT\r\n const openEditDialog = useCallback(\r\n (card) => {\r\n setSelectedCard(card);\r\n setEditOpen(!editOpen);\r\n },\r\n [editOpen]\r\n );\r\n\r\n const handleEditSubmit = useCallback(\r\n async (isSubmit: boolean, cc: any) => {\r\n if (isSubmit) {\r\n history.go(0);\r\n // setEditOpen(!editOpen);\r\n } else {\r\n setEditOpen(!editOpen);\r\n }\r\n },\r\n [editOpen, history]\r\n );\r\n\r\n // DELETE\r\n const openDeleteDialog = useCallback(\r\n (card) => {\r\n setSelectedCard(card);\r\n setDeleteOpen(!deleteOpen);\r\n },\r\n [deleteOpen]\r\n );\r\n\r\n const handleDeleteSubmit = useCallback(\r\n async (isSubmit: boolean) => {\r\n if (isSubmit) {\r\n if (!selectedCard?.ID) return;\r\n await bachmansIntegrationsService.deleteCCAsync(selectedCard.ID);\r\n setDeleteOpen(!deleteOpen);\r\n history.go(0);\r\n } else {\r\n setSelectedCard(undefined);\r\n setDeleteOpen(!deleteOpen);\r\n }\r\n },\r\n [deleteOpen, selectedCard, history]\r\n );\r\n\r\n return (\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n {creditCards?.length > 0 ? (\r\n creditCards.map((card: CreditCard, i) => (\r\n \r\n
\r\n \r\n {card.CardholderName || \"\"}\r\n \r\n \r\n openEditDialog(card)}>\r\n Edit\r\n \r\n \r\n |\r\n \r\n openDeleteDialog(card)}>\r\n Delete\r\n \r\n \r\n \r\n \r\n \r\n \r\n {card?.CardType ? card?.CardType : \"card\"}\r\n \r\n \r\n {\" \"}\r\n ending in {card.PartialAccountNumber}\r\n \r\n {/* {`${card?.CardType} ending in ${card.PartialAccountNumber}`} */}\r\n {`Expires ${moment(card.ExpirationDate)\r\n .utc()\r\n .format(\"M/yy\")}`}\r\n \r\n
\r\n {/* Edit Dialog */}\r\n \r\n {/* Delete Dialog */}\r\n \r\n {`Are you sure you want to delete your ${\r\n selectedCard?.CardType || \"\"\r\n } card ending in ${1111}?`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ))\r\n ) : (\r\n \r\n No credit cards on profile\r\n \r\n )}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\nexport default CreditCards;\r\n","import { Grid, Typography, makeStyles, createStyles, Theme } from \"@material-ui/core\";\r\nimport { filter, map } from \"lodash\";\r\nimport React, { Fragment, useContext, useState } from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport { BachmansEvent } from \"../../models/product\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport bachDateTimeService from \"../../services/bachDateTime.service\";\r\nimport eventService from \"../../services/event.service\";\r\nimport { neutral } from \"../../themes/colors\";\r\nimport BachmansCard from \"../Shared/BachmansCard\";\r\nimport BachmansLoading from \"../Shared/BachmansLoading\";\r\n\r\nconst useStyles = () =>\r\n makeStyles((theme: Theme) =>\r\n createStyles({\r\n containerUpcoming: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(3),\r\n },\r\n containerPast: {\r\n backgroundColor: neutral.offwhite_bg,\r\n marginTop: theme.spacing(2),\r\n },\r\n cardPast: {\r\n opacity: 0.65,\r\n pointerEvents: \"none\",\r\n },\r\n })\r\n );\r\n\r\nconst Events = () => {\r\n const classes = useStyles()();\r\n const { user, anonymous } = useContext(SessionContext);\r\n const [past, setPast] = useState([]);\r\n const [upcoming, setUpcoming] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n let mounted = true;\r\n if (mounted && user) {\r\n (async () => {\r\n let now = bachDateTimeService.Today();\r\n let purchasedEvents = await eventService.ListPurchasedEventsAsync(user, anonymous);\r\n let pastEvents = map(\r\n filter(purchasedEvents, (event) => now.isAfter(event.xp?.ReleaseDate2, \"d\")),\r\n (event) => {\r\n event.IsPast = true;\r\n return event;\r\n }\r\n );\r\n let upcomingEvents = filter(purchasedEvents, (event) => now.isSameOrBefore(event.xp?.ReleaseDate2, \"d\"));\r\n setUpcoming(upcomingEvents);\r\n setPast(pastEvents);\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 750);\r\n })();\r\n }\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [user, anonymous]);\r\n return (\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n UPCOMING EVENTS\r\n \r\n {upcoming && upcoming.length > 0 ? (\r\n upcoming.map((event, i) => (\r\n \r\n \r\n \r\n ))\r\n ) : (\r\n \r\n No Events Found\r\n \r\n )}\r\n \r\n\r\n PAST EVENTS\r\n \r\n {past && past.length > 0 ? (\r\n past.map((event, i) => (\r\n \r\n \r\n \r\n ))\r\n ) : (\r\n \r\n No Events Found\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Events;\r\n","import { cloneDeep, compact, filter, map, reduce } from \"lodash\";\r\nimport { Me, Order, Meta, LineItems, Shipment, Payments } from \"ordercloud-javascript-sdk\";\r\nimport { BachmansShipmentWithLineItems } from \"../models/shipment\";\r\nimport BachmansOrder, { CompletedOrder } from \"../models/order\";\r\n/**\r\n * filters out orders from me perspective that don't have a shipment\r\n */\r\nexport interface AccountOrderListResponse {\r\n Items: CompletedOrder[];\r\n Meta: Meta;\r\n}\r\nasync function listOrdersAsync(page: number, orderID?: string | null): Promise {\r\n let filters: any = { Status: \"!Unsubmitted\" };\r\n if (orderID) filters.ID = orderID;\r\n let orders = await Me.ListOrders({ page: page, pageSize: 10, filters: filters });\r\n let successfulOrders: any = { Meta: null, Items: null };\r\n let validOrderIds: string[] = [];\r\n let shipmentQueue = orders.Items.map(async (order) => {\r\n let shipmentList = await Me.ListShipments({ orderID: order.ID });\r\n if (shipmentList.Meta.TotalCount > 0) validOrderIds.push(order.ID);\r\n return shipmentList;\r\n });\r\n await Promise.all(shipmentQueue);\r\n successfulOrders.Meta = orders.Meta;\r\n successfulOrders.Items = filter(orders.Items, (o) => validOrderIds.includes(o.ID));\r\n let orderQueue = successfulOrders.Items.map(async (order: Order) => {\r\n return await getCompletedOrderAsync(order);\r\n });\r\n successfulOrders.Items = await Promise.all(orderQueue);\r\n return successfulOrders;\r\n}\r\n\r\n/**\r\n * decorate order with payments and shipments that have line items and totals\r\n * @param order\r\n * @returns MyBachOrder\r\n */\r\nasync function getCompletedOrderAsync(order: BachmansOrder): Promise {\r\n try {\r\n let myOrder: CompletedOrder = Object.assign({}, order);\r\n if (!myOrder.ID) throw console.error(\"need orderID\");\r\n let lineItemData = await LineItems.List(\"Outgoing\", myOrder.ID, { pageSize: 100 }); // lis have additional info such as LineTotal and ShippingAddress that shipment items don't have\r\n let shipmentData = await Me.ListShipments({ orderID: order.ID, pageSize: 100 });\r\n let queue: any = [];\r\n shipmentData.Items.forEach((shipment: Shipment) => {\r\n queue.push(\r\n (async () => {\r\n if (!shipment.ID) return;\r\n let updatedShipment: BachmansShipmentWithLineItems = Object.assign({ LineItems: [] }, shipment);\r\n let shipmentItems = await Me.ListShipmentItems(shipment.ID);\r\n let shipmentItemLIs = map(shipmentItems.Items, \"LineItemID\");\r\n updatedShipment.LineItems = filter(cloneDeep(lineItemData).Items, (li) => {\r\n return shipmentItemLIs.includes(li.ID);\r\n });\r\n updatedShipment.Subtotal = reduce(\r\n updatedShipment.LineItems,\r\n (total, li) => {\r\n return total + (li.LineTotal || 0);\r\n },\r\n 0\r\n );\r\n updatedShipment.Total = updatedShipment.Subtotal + (updatedShipment?.Cost || 0);\r\n\r\n let test = updatedShipment.LineItems.length ? updatedShipment.LineItems[0].ShippingAddress : undefined;\r\n updatedShipment.ToAddress = test;\r\n return updatedShipment;\r\n })()\r\n );\r\n });\r\n let updatedShipments = await Promise.all(queue);\r\n let paymentData = await Payments.List(\"Outgoing\", myOrder.ID);\r\n myOrder.Shipments = updatedShipments as BachmansShipmentWithLineItems[];\r\n myOrder.Payments = paymentData.Items;\r\n return myOrder;\r\n } catch (ex) {\r\n throw console.error(ex);\r\n }\r\n}\r\n\r\nconst statusMap = {\r\n Received: [\r\n \"DISPATCHED\",\r\n \"New\",\r\n \"Turn Around\",\r\n \"Customer Servic\",\r\n \"Ret2Yrd\",\r\n \"Printed\",\r\n \"Exported\",\r\n \"Staged Design\",\r\n \"Staged\",\r\n \"Staged Plants\",\r\n \"In Production\",\r\n \"In Plants\",\r\n \"In Xmas Prod\",\r\n \"Staged Xmas\",\r\n \"Store Staged\",\r\n \"Store Out\",\r\n \"Store Rec\",\r\n \"In Design\",\r\n ],\r\n Delivered: [\"DELIVERED\", \"Complete\"],\r\n Canceled: [\"CANCELED\"],\r\n};\r\n/**\r\n * Takes in shipment.xp.Status, returns a readable display\r\n * @param ddmsStatus\r\n * @param shouldTranslate\r\n * @returns string\r\n */\r\nfunction orderStatusFilter(ddmsStatus: string | undefined, shouldTranslate: boolean) {\r\n if (!ddmsStatus) return \"Processing\";\r\n if (!shouldTranslate) return ddmsStatus;\r\n return (\r\n compact(\r\n map(statusMap, function (val, key) {\r\n if (val.indexOf(ddmsStatus) > -1) return key;\r\n })\r\n )[0] || \"Received\"\r\n );\r\n}\r\n\r\nconst service = {\r\n ListOrdersAsync: listOrdersAsync,\r\n GetCompletedOrderAsync: getCompletedOrderAsync,\r\n OrderStatusFilter: orderStatusFilter,\r\n};\r\n\r\nexport default service;\r\n","import React, { FunctionComponent } from \"react\";\r\nimport { createStyles, makeStyles, Theme, Typography } from \"@material-ui/core\";\r\nimport { BachmansAddress } from \"../../../models/address\";\r\nimport { Address } from \"ordercloud-javascript-sdk\";\r\n\r\ninterface AddressProps {\r\n address: BachmansAddress | Address | undefined;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n fontStyle: \"normal\",\r\n marginTop: 4,\r\n \"& > *\": {\r\n lineHeight: 1.25,\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst AddressDisplay: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { address } = props;\r\n return address ? (\r\n
\r\n {address.CompanyName}\r\n {address.Street1}\r\n \r\n {address.City}, {address.State} {address.Zip}\r\n \r\n {address.Phone}\r\n
\r\n ) : null;\r\n};\r\n\r\nexport default AddressDisplay;\r\n","import React, { Fragment, FunctionComponent } from \"react\";\r\nimport { Avatar, Box, Grid, createStyles, makeStyles, Hidden, Theme, Typography } from \"@material-ui/core\";\r\nimport { LineItem } from \"ordercloud-javascript-sdk\";\r\nimport noImg from \"../../assets/images/noimg.jpg\";\r\nimport ProductPrice from \"../Product/ProductPrice\";\r\nimport Currency from \"react-currency-formatter\";\r\nimport productService from \"../../services/product.service\";\r\ninterface BachmansLineItemsProps {\r\n lineItems: LineItem[] | undefined;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n listItemsHeader: {\r\n gap: theme.spacing(2),\r\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\r\n paddingBottom: theme.spacing(1),\r\n marginBottom: theme.spacing(3),\r\n \"& > div\": {\r\n // PRODUCT\r\n \"&:nth-of-type(1)\": {\r\n flexGrow: 0,\r\n marginRight: \"auto\",\r\n },\r\n // QUANTITY\r\n \"&:nth-of-type(3)\": {\r\n display: \"flex\",\r\n flex: \"0 0 65px\",\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n // TOTAL\r\n \"&:last-of-type\": {\r\n whiteSpace: \"nowrap\",\r\n flex: \"0 0 65px\",\r\n },\r\n },\r\n textTransform: \"uppercase\",\r\n },\r\n listItemsBody: {\r\n gap: theme.spacing(2),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n [theme.breakpoints.down(\"sm\")]: {\r\n borderTop: `1px solid ${theme.palette.grey[200]}`,\r\n paddingTop: theme.spacing(2),\r\n alignItems: \"center\",\r\n },\r\n \"&>div\": {\r\n \"&:nth-of-type(1)\": {\r\n flexGrow: 0,\r\n },\r\n \"&:nth-of-type(3)\": {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"auto\",\r\n },\r\n display: \"flex\",\r\n },\r\n \"&:nth-of-type(4)\": {\r\n whiteSpace: \"nowrap\",\r\n flex: \"0 0 65px\",\r\n },\r\n \"&:last-of-type\": {\r\n whiteSpace: \"nowrap\",\r\n flex: \"0 0 65px\",\r\n },\r\n },\r\n },\r\n lineItemText: {\r\n fontFamily: theme.typography.h2.fontFamily,\r\n fontWeight: theme.typography.fontWeightBold,\r\n lineHeight: 1.2,\r\n },\r\n imgAvatar: {\r\n height: 50,\r\n width: 50,\r\n },\r\n })\r\n);\r\n\r\nconst BachmansLineItems: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { lineItems } = props;\r\n return lineItems ? (\r\n \r\n \r\n \r\n \r\n \r\n Product\r\n \r\n \r\n \r\n \r\n Price\r\n \r\n \r\n \r\n \r\n Quantity\r\n \r\n \r\n \r\n \r\n Total\r\n \r\n \r\n \r\n \r\n {lineItems &&\r\n lineItems.map((li: LineItem, i: number) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {productService.GetLineItemName(li)}\r\n \r\n \r\n \r\n Item # {li?.Product?.ID}\r\n \r\n {li.Product?.xp?.SpecsOptions?.Color && !li.Product?.xp?.IsWorkShopEvent && (\r\n \r\n |\r\n \r\n Color: {li.Product?.xp?.SpecsOptions?.Color}\r\n \r\n \r\n )}\r\n\r\n {li.Product?.xp?.SpecsOptions?.Size && (\r\n \r\n |\r\n \r\n {li.Product?.xp?.IsWorkShopEvent ? \"Event Time:\" : \"Type:\"} {li.Product?.xp?.SpecsOptions?.Size}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n x {li.Quantity}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n ) : null;\r\n};\r\n\r\nexport default BachmansLineItems;\r\n","import React, { Fragment, FunctionComponent } from \"react\";\r\nimport { Box, createStyles, Divider, Grid, makeStyles, Paper, Theme, Typography } from \"@material-ui/core\";\r\nimport { CompletedOrder } from \"../../../models/order\";\r\nimport { BachmansShipmentWithLineItems } from \"../../../models/shipment\";\r\nimport bachDateTimeService from \"../../../services/bachDateTime.service\";\r\nimport accountService from \"../../../services/account.service\";\r\nimport AddressDisplay from \"../../Shared/Address/Address\";\r\nimport BachmansLineItems from \"../../Shared/BachmansLineItems\";\r\nimport Currency from \"react-currency-formatter\";\r\nimport { neutral } from \"../../../themes/colors\";\r\nimport { deliveryTextMap } from \"../../../constants/DeliveryText\";\r\nimport deliveryService from \"../../../services/delivery.service\";\r\n\r\ninterface OrderShipmentProps {\r\n order: CompletedOrder;\r\n shipment: BachmansShipmentWithLineItems;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n shipmentHeader: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n backgroundColor: `${theme.palette.primary.light}33`, // This 33 adds 20% transparancy to the hex code\r\n border: `1px solid ${theme.palette.primary.light}`,\r\n padding: theme.spacing(1),\r\n marginBottom: theme.spacing(3),\r\n },\r\n deliveryInfo: {\r\n gap: theme.spacing(3),\r\n },\r\n deliveryMessage: {\r\n padding: theme.spacing(1),\r\n marginBottom: theme.spacing(2),\r\n \"& p:last-child\": {\r\n fontStyle: \"italic\",\r\n },\r\n },\r\n cardMessage: {\r\n padding: theme.spacing(2),\r\n margin: theme.spacing(2, 0),\r\n backgroundColor: neutral.offwhite_bg,\r\n },\r\n orderTotals: {\r\n maxWidth: 225,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n marginLeft: \"auto\",\r\n },\r\n orderInfo: {\r\n gap: theme.spacing(2),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n justifyContent: \"flex-end\",\r\n },\r\n alignItems: \"center\",\r\n },\r\n addressContainer: {},\r\n summary: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n paddingTop: theme.spacing(0.25),\r\n marginTop: theme.spacing(0.25),\r\n },\r\n })\r\n);\r\n\r\nconst OrderShipment: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { shipment } = props;\r\n\r\n const getShipmentName = (shipment: BachmansShipmentWithLineItems) => {\r\n if (!deliveryService.IsPickUp(shipment.Shipper)) {\r\n if (shipment.ToAddress?.xp?.NickName) {\r\n return shipment.ToAddress?.xp?.NickName;\r\n } else if (shipment.ToAddress && !shipment.ToAddress?.xp?.Nickname) {\r\n return `${shipment.ToAddress?.FirstName} ${shipment.ToAddress?.LastName}`;\r\n } else {\r\n return deliveryTextMap[shipment.Shipper as string]?.text;\r\n }\r\n } else {\r\n return shipment.ToAddress?.AddressName + \" Store\";\r\n }\r\n };\r\n\r\n const getAddressType = (shipment: BachmansShipmentWithLineItems) => {\r\n if (shipment.Shipper === \"InStorePickUp\") {\r\n return \"(In-store Pickup)\";\r\n } else if (shipment.Shipper === \"CurbsidePickUp\") {\r\n return \"(Curbside Pickup)\";\r\n } else if (shipment.ToAddress?.xp?.addressType !== undefined) {\r\n return `(${shipment.ToAddress?.xp?.addressType})`;\r\n } else return null;\r\n };\r\n\r\n return shipment ? (\r\n \r\n \r\n
\r\n {getShipmentName(shipment)}\r\n \r\n {\" \"}\r\n {getAddressType(shipment)}\r\n \r\n
\r\n {`#${shipment.ID}`}\r\n
\r\n \r\n \r\n \r\n Status\r\n \r\n \r\n {shipment?.xp?.DeliveryMethod === \"Email\"\r\n ? \"Email Delivery\"\r\n : accountService.OrderStatusFilter(shipment.xp?.Status, true)}\r\n \r\n \r\n {shipment.LineItems?.[0]?.Product?.xp?.IsWorkshop ? (\r\n \r\n \r\n Event Address\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {deliveryService.IsPickUp(shipment.Shipper) ? \"Pickup Address\" : \"Delivery Address\"}\r\n \r\n \r\n {shipment.Shipper !== \"Email\" ? (\r\n \r\n ) : (\r\n shipment?.LineItems[0]?.xp?.Email\r\n )}\r\n \r\n \r\n )}\r\n \r\n \r\n {deliveryService.IsPickUp(shipment.Shipper) ? \"Pickup Date\" : \"Delivery Date\"}\r\n \r\n \r\n {bachDateTimeService.GetMediumDate(shipment.xp?.RequestedDeliveryDate || \"\")}\r\n \r\n {shipment?.Shipper === \"LocalDelivery\" && (\r\n \r\n {shipment.xp?.TimePreference === \"AM\" && \"Morning\"}\r\n {shipment.xp?.TimePreference === \"PM\" && \"Afternoon\"}\r\n {shipment.xp?.TimePreference !== \"NO PREF\" && \" \"}({shipment.xp?.TimeWindow})\r\n \r\n )}\r\n \r\n \r\n \r\n {shipment.xp?.DeliveryNote && (\r\n \r\n \r\n {`${\r\n deliveryService.IsPickUp(shipment.Shipper)\r\n ? \"Pickup\"\r\n : shipment.xp?.PlacementCharges\r\n ? \"Delivery & Placement\"\r\n : \"Delivery\"\r\n }`}\r\n \r\n {shipment.xp?.DeliveryNote}\r\n \r\n )}\r\n \r\n {shipment.xp?.CardMessage && (\r\n \r\n \r\n \r\n Card Message\r\n \r\n {shipment.xp?.CardMessage?.line1}\r\n {shipment.xp?.CardMessage?.line2}\r\n {shipment.xp?.CardMessage?.line3}\r\n {shipment.xp?.CardMessage?.line4}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n SUBTOTAL\r\n \r\n \r\n \r\n \r\n\r\n {!deliveryService.IsPickUp(shipment.Shipper) && (\r\n \r\n DELIVERY\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {deliveryService.IsPickUp(shipment.Shipper) &&\r\n (shipment.Cost || 0) - (shipment.xp?.HandlingCharges || 0) > 0 && (\r\n \r\n PICKING FEE\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {Boolean(shipment.xp?.HandlingCharges) && (\r\n \r\n HANDLING\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {Boolean(shipment.xp?.WiredServiceFees) && (\r\n \r\n SERVICE FEE\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n SHIPMENT TOTAL\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ) : null;\r\n};\r\n\r\nexport default OrderShipment;\r\n","import React, { Fragment, FunctionComponent, useMemo } from \"react\";\r\nimport { Box, CircularProgress, createStyles, Divider, makeStyles, Grid, Theme, Typography } from \"@material-ui/core\";\r\nimport { PrintOutlined } from \"@material-ui/icons\";\r\nimport { CompletedOrder } from \"../../../models/order\";\r\nimport OrderShipment from \"./OrderShipment\";\r\nimport { BachmansShipmentWithLineItems } from \"../../../models/shipment\";\r\nimport bachDateTimeService from \"../../../services/bachDateTime.service\";\r\nimport Currency from \"react-currency-formatter\";\r\nimport DoubleOutlinedBtn from \"../../Shared/DoubleOutlinedBtn\";\r\nimport PrintOrderConfirmation from \"../../Checkout/PrintOrderConfirmation\";\r\nimport { Order } from \"ordercloud-javascript-sdk\";\r\nimport ReactToPrint from \"react-to-print\";\r\nimport deliveryService from \"../../../services/delivery.service\";\r\nimport { sumBy } from \"lodash\";\r\n\r\ninterface OrderDetailProps {\r\n order: CompletedOrder;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n flex: \"1\",\r\n },\r\n summary: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n paddingTop: theme.spacing(0.25),\r\n marginTop: theme.spacing(0.25),\r\n },\r\n summaryContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n marginLeft: \"auto\",\r\n width: 225,\r\n },\r\n })\r\n);\r\n\r\nconst OrderDetail: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { order } = props;\r\n const componentRef = React.useRef(null);\r\n\r\n const totalHandling = useMemo(() => {\r\n return sumBy(order.Shipments, (s) => s?.xp?.HandlingCharges || 0);\r\n }, [order.Shipments]);\r\n\r\n const totalPicking = useMemo(() => {\r\n const pickupShipments = order.Shipments?.filter((s) => deliveryService.IsPickUp(s.Shipper));\r\n return sumBy(\r\n pickupShipments,\r\n (s) => (s.Cost || 0) - (s?.xp?.HandlingCharges || 0) - (s?.xp?.WiredServiceFees || 0)\r\n );\r\n }, [order.Shipments]);\r\n\r\n const reactToPrintTrigger = React.useCallback(() => {\r\n return (\r\n
\r\n , variant: \"outlined\", size: \"small\", color: \"primary\" }}\r\n />\r\n
\r\n );\r\n }, []);\r\n\r\n const reactToPrintContent = React.useCallback(() => {\r\n return componentRef.current;\r\n }, []);\r\n\r\n type paymentTypeInfo = \"spendingAccount\" | \"payment\";\r\n const paymentType = (key: string, payment: any, type: paymentTypeInfo, index: number) => {\r\n let text = \"\";\r\n\r\n switch (key) {\r\n case \"GiftCard\":\r\n text = \"Gift Card\";\r\n break;\r\n case \"PurplePerks\":\r\n text = \"Purple Perks\";\r\n break;\r\n case \"Paypal\":\r\n text = `PayPal`;\r\n break;\r\n case \"Venmo\":\r\n text = `Venmo`;\r\n break;\r\n case \"CreditCard\":\r\n switch (payment.xp.Type) {\r\n case \"Paypal\":\r\n text = \"PayPal\";\r\n break;\r\n case \"Venmo\":\r\n text = \"Venmo\";\r\n break;\r\n default:\r\n text =\r\n type === \"spendingAccount\"\r\n ? ` ${payment.CardType} ending in ${payment.PartialCardNumber}`\r\n : `${payment.xp.CardType} ending in ${payment.xp.CardNumber}`;\r\n break;\r\n }\r\n break;\r\n case \"BachmansCharge\":\r\n text = \"Bachman's Charge\";\r\n break;\r\n case \"PurchaseOrder\":\r\n if (payment.xp.Type === \"GiftCard\") text = \"Gift Card\";\r\n if (payment.xp.Type === \"PurplePerks\") text = \"Purple Perks\";\r\n if (payment.xp.Type === \"Paypal\") text = \"PayPal\";\r\n if (payment.xp.Type === \"Venmo\") text = \"Venmo\";\r\n break;\r\n case \"SpendingAccount\":\r\n text = \"Bachman's Charge\";\r\n break;\r\n }\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n };\r\n\r\n return order ? (\r\n
\r\n \r\n
\r\n {`Order #${order.ID}`}\r\n {`Placed on ${bachDateTimeService.GetMediumDate(\r\n order.DateSubmitted || \"\"\r\n )}`}\r\n
\r\n \r\n \r\n {order && order.Shipments && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n {order.Shipments &&\r\n order.Shipments.map((shipment: BachmansShipmentWithLineItems, index: number) => (\r\n \r\n ))}\r\n\r\n {/* Order Summary */}\r\n \r\n {order?.Shipments && order?.Shipments.length > 1 && (\r\n \r\n ORDER SUBTOTAL\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {order?.Shipments && order?.Shipments.length > 1 && totalPicking > 0 && (\r\n \r\n PICKING FEE\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {order?.Shipments && order?.Shipments.length > 1 && totalHandling > 0 && (\r\n \r\n HANDLING FEE\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {order?.Shipments && order?.Shipments.length > 1 && (\r\n \r\n DELIVERY\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n TAX\r\n \r\n \r\n \r\n \r\n \r\n \r\n TOTAL\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {order.xp?.SpendingAccounts\r\n ? Object.entries(order.xp?.SpendingAccounts).map(([key, payment], i) => {\r\n return (\r\n \r\n {paymentType(key, payment, \"spendingAccount\", i)}\r\n {payment.Amount}\r\n \r\n );\r\n })\r\n : order.Payments?.map((payment, i) => {\r\n return (\r\n \r\n \r\n {paymentType(payment.Type, payment, \"payment\", i)}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n ) : (\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetail;\r\n","import React, { Fragment, FunctionComponent, useCallback, useEffect, useState } from \"react\";\r\nimport {\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Box,\r\n CircularProgress,\r\n createStyles,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n useMediaQuery,\r\n Grid,\r\n Paper,\r\n List,\r\n ListItem,\r\n ListSubheader,\r\n ListItemText,\r\n Hidden,\r\n} from \"@material-ui/core\";\r\nimport AccountService from \"../../../services/account.service\";\r\nimport { AccountOrderListResponse } from \"../../../services/account.service\";\r\nimport Currency from \"react-currency-formatter\";\r\nimport moment from \"moment-timezone\";\r\nimport { ArrowDropDown } from \"@material-ui/icons\";\r\nimport bachDateTimeService from \"../../../services/bachDateTime.service\";\r\nimport { BachmansShipmentWithLineItems } from \"../../../models/shipment\";\r\n\r\nimport OrderDetails from \"./OrderDetail\";\r\nimport { Pagination } from \"@material-ui/lab\";\r\nimport { useHistory, useLocation } from \"react-router\";\r\nimport BachmansLoading from \"../../Shared/BachmansLoading\";\r\nimport { CompletedOrder } from \"../../../models/order\";\r\n\r\ninterface OrderHistoryProps {\r\n shipment?: BachmansShipmentWithLineItems;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n mobileHeader: {\r\n display: \"flex\",\r\n flex: \"1\",\r\n \"& > *:not(:first-child)\": { marginLeft: theme.spacing(1) },\r\n },\r\n gap3: {\r\n gap: theme.spacing(3),\r\n },\r\n pagination: {\r\n \"& > .MuiPagination-ul\": {\r\n justifyContent: \"center\",\r\n },\r\n margin: theme.spacing(3, 0),\r\n },\r\n textRight: {\r\n textAlign: \"right\",\r\n },\r\n accordionSummary: {\r\n \"& .MuiAccordionSummary-content\": {\r\n gap: theme.spacing(3),\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst OrderHistory: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const [ordersInfo, setOrderInfo] = useState();\r\n const [selectedOrderID, setSelectedOrderID] = useState(false); //handles accordin expand\r\n const [loading, setLoading] = useState(false);\r\n const isDesktop = useMediaQuery((theme: Theme) => theme.breakpoints.up(\"md\"));\r\n\r\n useEffect(() => {\r\n (async () => {\r\n setLoading(true);\r\n let urlSearchParams = new URLSearchParams(location.search);\r\n let pageParam = parseInt(urlSearchParams.get(\"page\") || \"1\");\r\n let orderIDParam = urlSearchParams.get(\"orderid\");\r\n let orders = await AccountService.ListOrdersAsync(pageParam, orderIDParam);\r\n if (orders && orders?.Items?.length) {\r\n setOrderInfo(orders);\r\n setSelectedOrderID(orders.Items[0].ID || false);\r\n }\r\n setLoading(false);\r\n })();\r\n }, [location.search]);\r\n\r\n const getRecipients = (order: CompletedOrder) => {\r\n let recipients =\r\n (order?.Shipments?.length || 0) > 1\r\n ? \"Recipients: Multiple Recipients\"\r\n : order?.Shipments?.length === 1\r\n ? `Recipients: ${order?.Shipments[0].ToAddress?.FirstName} ${order?.Shipments[0].ToAddress?.LastName}`\r\n : \"\";\r\n return recipients;\r\n };\r\n\r\n const displayDate = (date: string) => {\r\n if (!date) return;\r\n return moment(date).format(\"MMMM-DD-YYYY\");\r\n };\r\n\r\n const handleChange = useCallback(\r\n (orderID: string) => async (event: React.ChangeEvent<{}>, expanded: boolean) => {\r\n if (!orderID) return;\r\n if (orderID === selectedOrderID) return setSelectedOrderID(false);\r\n setSelectedOrderID(orderID);\r\n },\r\n [selectedOrderID]\r\n );\r\n\r\n const updateSelectedOrderID = useCallback((orderID: string | undefined) => {\r\n if (!orderID) return setSelectedOrderID(false);\r\n setSelectedOrderID(orderID);\r\n }, []);\r\n\r\n const handlePageChange = useCallback(\r\n (event: object, page: number) => {\r\n let urlSearchParams = new URLSearchParams(location.search);\r\n urlSearchParams.set(\"page\", page.toString());\r\n history.push(`${location.pathname}?${urlSearchParams.toString()}`);\r\n setOrderInfo(undefined);\r\n },\r\n [history, location.pathname, location.search]\r\n );\r\n return (\r\n \r\n {isDesktop ? (\r\n \r\n \r\n {ordersInfo && ordersInfo.Items.length > 0 ? (\r\n \r\n {/* order summary List */}\r\n \r\n Order Summary}>\r\n {ordersInfo.Items.map((order, i) => (\r\n updateSelectedOrderID(order?.ID)}\r\n >\r\n \r\n \r\n {`Order Number: ${order?.ID}`}\r\n \r\n {bachDateTimeService.GetMediumDate(order.DateSubmitted || \"\")}\r\n \r\n {`From: ${order?.FromUser?.FirstName} ${order?.FromUser?.LastName}`}\r\n \r\n {`${getRecipients(order)}`}\r\n \r\n }\r\n />\r\n \r\n ))}\r\n \r\n \r\n {(ordersInfo?.Meta?.TotalPages || 0) > 1 && (\r\n \r\n )}\r\n \r\n \r\n \r\n {/* order details */}\r\n \r\n \r\n {ordersInfo.Items.map(\r\n (order, i) => selectedOrderID === order.ID && \r\n )}\r\n \r\n \r\n \r\n \r\n ) : loading ? (\r\n \r\n ) : (\r\n \r\n No Orders for this user\r\n \r\n )}\r\n \r\n \r\n ) : (\r\n \r\n {ordersInfo && ordersInfo.Items.length > 0 ? (\r\n ordersInfo.Items.map((order) => (\r\n \r\n }\r\n aria-controls={`orderID ${order.ID}`}\r\n id={order.ID}\r\n >\r\n \r\n {`Order #${order.ID}`}\r\n \r\n {order.Shipments && order.Shipments?.length > 1\r\n ? `Multiple Recipients`\r\n : `${order?.Shipments?.[0]?.ToAddress?.FirstName} ${order?.Shipments?.[0]?.ToAddress?.LastName}`}\r\n {` | ${order?.Shipments?.[0]?.xp?.AddressType}`}\r\n \r\n \r\n {displayDate(order.DateSubmitted ? order.DateSubmitted : \"\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {`${order.LineItemCount} item${order?.LineItemCount && order?.LineItemCount > 1 ? \"s\" : \"\"}`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n ) : loading ? (\r\n \r\n ) : (\r\n No Orders\r\n )}\r\n \r\n )}\r\n \r\n {(ordersInfo?.Meta?.TotalPages || 0) > 1 && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default OrderHistory;\r\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core\";\r\nimport React, { Fragment, useContext } from \"react\";\r\nimport { purple } from \"../../themes/colors\";\r\nimport ReactMarkdown from \"react-markdown\";\r\nimport { PurplePerksContext } from \"../../providers/contentful\";\r\nimport gfm from \"remark-gfm\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n unorderedList: {\r\n \"& ul > li\": {\r\n marginBottom: theme.spacing(2),\r\n \"&::marker\": {\r\n color: purple.price,\r\n },\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst PurpleBullets: React.FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const purplePerks = useContext(PurplePerksContext);\r\n return (\r\n \r\n {purplePerks.data?.fields?.info && (\r\n \r\n )}\r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default PurpleBullets;\r\n","export default __webpack_public_path__ + \"static/media/purple_perks.6d9db781.png\";","import React, { FunctionComponent, useState } from \"react\";\r\nimport { createStyles, makeStyles, Theme, Box, Typography } from \"@material-ui/core\";\r\n\r\nimport bachPP, { PurplePerksAccount } from \"../../services/bachmansPurplePerks.service\";\r\nimport { useEffect, useContext } from \"react\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport PurpleBullets from \"../Shared/PurpleBullets\";\r\nimport purplePerksLogo from \"../../assets/images/purple_perks.png\";\r\nimport Link from \"../Shared/Link\";\r\nimport DoubleOutlinedBtn from \"../Shared/DoubleOutlinedBtn\";\r\nimport BachmansLoading from \"../Shared/BachmansLoading\";\r\nimport { clone } from \"lodash\";\r\nimport { BachmansMeUser } from \"../../models/user\";\r\nimport jitterbitService from \"../../services/jitterbit.service\";\r\n\r\ninterface PurplePerksProps {}\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n purplePerksContainer: {\r\n padding: theme.spacing(3),\r\n border: \"2px solid lightgrey\",\r\n marginBottom: theme.spacing(3),\r\n },\r\n imgPurplePerksContainer: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n imgPurplePerks: {\r\n display: \"block\",\r\n width: \"clamp(45px, 5vw, 90px) !important\",\r\n },\r\n purplePerksHeader: {\r\n marginLeft: theme.spacing(2),\r\n },\r\n purplePerksBox: {\r\n backgroundColor: theme.palette.primary.light,\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(2),\r\n marginTop: theme.spacing(1),\r\n },\r\n boxItem: {\r\n paddingLeft: theme.spacing(3),\r\n flex: \"1 1 0\",\r\n },\r\n boxItemRight: {\r\n paddingLeft: theme.spacing(2),\r\n flex: \"1 1 0\",\r\n borderLeft: \"1px solid white\",\r\n },\r\n })\r\n);\r\nconst PurplePerks: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const [purplePerksAccount, setPurplePerksAccount] = useState();\r\n const { user, patchUser } = useContext(SessionContext);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (user) {\r\n let ppAccount = await bachPP.CheckBalanceAsync(user);\r\n\r\n if (ppAccount.EagleUser) {\r\n patchUser &&\r\n (await patchUser({\r\n xp: { LoyaltyCardNumber: ppAccount?.CardNumber, CECSAwardAccountID: ppAccount.CECSAwardAccountID },\r\n }));\r\n }\r\n setPurplePerksAccount(ppAccount);\r\n }\r\n })();\r\n }, [user]);\r\n\r\n // ! TODO: remove this function\r\n // const getLoyaltyID = (user: BachmansMeUser) => {\r\n // if (user.Phone) {\r\n // return clone(user.Phone)\r\n // .replace(/[^\\w\\s]/gi, \"\")\r\n // .replace(\" \", \"\");\r\n // }\r\n // };\r\n\r\n const register = async (user: BachmansMeUser) => {\r\n if (patchUser) {\r\n setLoading(true);\r\n try {\r\n if (user) {\r\n let ppAccount = await jitterbitService.RegisterPurplePerksCECS(user);\r\n const updatedUser = await patchUser({ xp: { LoyaltyCardNumber: ppAccount.data } });\r\n console.log(\"updatedUser\", updatedUser);\r\n if (updatedUser) {\r\n let ppAccount = await bachPP.CheckBalanceAsync(updatedUser);\r\n ppAccount?.CECSAwardAccountID && (await patchUser({ xp: { CECSAwardAccountID: ppAccount?.CECSAwardAccountID } }));\r\n setPurplePerksAccount(ppAccount);\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n setLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {user?.xp?.LoyaltyCardNumber ? (\r\n
\r\n \r\n
\r\n \"Purple\r\n
\r\n
\r\n My Purple Perks\r\n You can use your Purple Perks balance during checkout\r\n
\r\n
\r\n \r\n
\r\n Dollars Available\r\n \r\n {`$${purplePerksAccount?.Balance}`}\r\n \r\n
\r\n
\r\n Expiration Date\r\n \r\n {purplePerksAccount?.ExpirationDate}\r\n \r\n
\r\n
\r\n \r\n \r\n {\"Get more Information & FAQs on Purple Perks >\"}\r\n \r\n
\r\n ) : (\r\n
\r\n \r\n Dear Customer,
\r\n You are not registered with our loyalty program.{\" \"}\r\n
\r\n {user && (\r\n register(user),\r\n disabled: loading,\r\n }}\r\n styleProps={{ marginTop: 16 }}\r\n >\r\n )}\r\n {loading && }\r\n
\r\n )}\r\n
\r\n );\r\n};\r\nexport default PurplePerks;\r\n","import { Box, createStyles, Grid, Link, makeStyles, Theme, Typography } from \"@material-ui/core\";\r\nimport React, { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport UserInputForm, { UserInputFields } from \"../Shared/UserInputForm\";\r\nimport PurplePerks from \"./PurplePerks\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n bottomMargin: {\r\n marginBottom: theme.spacing(3),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n maxWidth: \"80%\",\r\n },\r\n },\r\n cancelButton: {\r\n margin: \"2px\",\r\n background: \"white\",\r\n border: \"1px solid black\",\r\n },\r\n saveButton: {\r\n margin: \"3px\",\r\n border: `1px solid ${theme.palette.primary.main}`,\r\n },\r\n editText: {\r\n marginLeft: \"5px\",\r\n cursor: \"pointer\",\r\n },\r\n userInfo: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n paddingLeft: theme.spacing(2),\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst Profile: React.FunctionComponent = () => {\r\n const classes = useStyles();\r\n const { user } = useContext(SessionContext);\r\n const [editingField, setEditingField] = useState();\r\n\r\n useEffect(() => {\r\n (async () => {\r\n setEditingField(undefined);\r\n })();\r\n }, [user]);\r\n\r\n const handleSetEdit = (item: UserInputFields) => (event: React.MouseEvent) => {\r\n setEditingField(item);\r\n };\r\n\r\n const onCancel = () => setEditingField(undefined);\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n Name\r\n \r\n {editingField === \"FirstName\" ? (\r\n \"\"\r\n ) : (\r\n \r\n \r\n {user?.FirstName + \" \" + user?.LastName}\r\n \r\n {\"(edit)\"}\r\n \r\n \r\n \r\n )}\r\n {editingField === \"FirstName\" && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n Email Address\r\n \r\n {editingField === \"Email\" ? (\r\n \"\"\r\n ) : (\r\n \r\n \r\n {user?.Email}\r\n \r\n {\"(edit)\"}\r\n \r\n \r\n \r\n )}\r\n {editingField === \"Email\" && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n Password\r\n \r\n {editingField === \"Password\" ? (\r\n \"\"\r\n ) : (\r\n \r\n •••••••••••\r\n \r\n {user?.Password}\r\n \r\n {\"(edit)\"}\r\n \r\n \r\n \r\n )}\r\n {editingField === \"Password\" && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n Phone Number\r\n \r\n {editingField === \"Phone\" ? (\r\n \"\"\r\n ) : (\r\n \r\n \r\n {user?.Phone}\r\n \r\n {\"(edit)\"}\r\n \r\n \r\n \r\n )}\r\n {editingField === \"Phone\" && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Profile;\r\n","import { groupBy, values } from \"lodash\";\r\nimport { BuyerProduct, Me } from \"ordercloud-javascript-sdk\";\r\nimport React, { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport productService from \"../../services/product.service\";\r\nimport BachmansLoading from \"../Shared/BachmansLoading\";\r\nimport ItemList from \"../Shared/ItemList\";\r\n\r\nconst Wishlist: React.FunctionComponent = () => {\r\n const { user } = useContext(SessionContext);\r\n const [wishlistProducts, setWishListProducts] = useState();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n var codes = user?.xp?.WishList?.map((w: any) => w.ProductCode);\r\n if (codes?.length > 0) {\r\n setLoading(true);\r\n productService.ListProductsByCodes(codes || []).then((products) => {\r\n if (products?.length < codes?.length) {\r\n const updatedWishList = user?.xp?.WishList?.filter((w: any) =>\r\n products.map((p) => p.xp.ProductCode).includes(w.ProductCode)\r\n );\r\n Me.Patch({ xp: { WishList: updatedWishList } });\r\n }\r\n const groupedProducts = values(groupBy(products, (p) => p.xp.ProductCode));\r\n setWishListProducts(groupedProducts);\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 750);\r\n });\r\n } else {\r\n setWishListProducts([]);\r\n }\r\n }, [user]);\r\n\r\n return (\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Wishlist;\r\n","import {\r\n Container,\r\n createStyles,\r\n FormControl,\r\n Grid,\r\n List,\r\n ListItem,\r\n makeStyles,\r\n MenuItem,\r\n Select,\r\n Theme,\r\n Typography,\r\n useMediaQuery,\r\n} from \"@material-ui/core\";\r\nimport React, { FunctionComponent, useEffect, useMemo } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useHistory, useRouteMatch } from \"react-router-dom\";\r\nimport { setBreadcrumbs } from \"../../redux/slices/breadcrumbs\";\r\nimport { AppDispatch } from \"../../redux/store\";\r\nimport stringService from \"../../services/string.service\";\r\nimport { neutral } from \"../../themes/colors\";\r\nimport Link from \"../Shared/Link\";\r\nimport NotFound from \"../Shared/NotFound\";\r\nimport AddressBook from \"./AddressBook\";\r\nimport CreditCards from \"./CreditCards/CreditCards\";\r\nimport Events from \"./Events\";\r\nimport OrderHistory from \"./OrderHistory/OrderHistory\";\r\nimport Profile from \"./Profile\";\r\nimport PurplePerks from \"./PurplePerks\";\r\nimport Wishlist from \"./Wishlist\";\r\nimport { ExpandMore } from \"@material-ui/icons\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n pageHeader: {\r\n margin: theme.spacing(3, 0),\r\n },\r\n navigation: {\r\n borderRight: `1px solid ${theme.palette.grey[200]}`,\r\n backgroundColor: neutral.offwhite_bg,\r\n padding: 0,\r\n },\r\n link: {\r\n padding: theme.spacing(0.5, 2),\r\n cursor: \"pointer\",\r\n pointerEvents: \"fill\",\r\n height: \"100%\", //INFO: routing is handled on the instead of the so we need to fill the parent so the entire item is clickable.\r\n width: \"100%\",\r\n },\r\n\r\n activeLink: {\r\n padding: theme.spacing(0.5, 2),\r\n cursor: \"pointer\",\r\n color: theme.palette.primary.main,\r\n fontWeight: theme.typography.fontWeightBold,\r\n pointerEvents: \"fill\",\r\n },\r\n fullWidth: {\r\n width: \"100%\",\r\n },\r\n })\r\n);\r\n\r\nconst baseBreadcrumbs = {\r\n visible: true,\r\n dark: false,\r\n links: [\r\n {\r\n path: \"/account/profile\",\r\n label: \"My Account\",\r\n },\r\n ],\r\n};\r\n\r\nexport const accountLinks = [\r\n {\r\n path: \"profile\",\r\n label: \"Profile\",\r\n },\r\n {\r\n path: \"orders\",\r\n label: \"Orders\",\r\n },\r\n {\r\n path: \"wishlist\",\r\n label: \"Wish List\",\r\n },\r\n {\r\n path: \"address-book\",\r\n label: \"Address Book\",\r\n },\r\n\r\n {\r\n path: \"events\",\r\n label: \"Events\",\r\n },\r\n {\r\n path: \"payment-methods\",\r\n label: \"Payment Methods\",\r\n },\r\n {\r\n path: \"purple-perks\",\r\n label: \"Purple Perks\",\r\n },\r\n];\r\n\r\nconst Account: FunctionComponent = () => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const { params } = useRouteMatch<{ page: string }>();\r\n const history = useHistory();\r\n const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down(\"sm\"));\r\n\r\n useEffect(() => {\r\n const currentLink = accountLinks.find((l) => l.path === params.page);\r\n dispatch(\r\n setBreadcrumbs({\r\n ...baseBreadcrumbs,\r\n current: currentLink ? currentLink.label : \"Not Found\",\r\n })\r\n );\r\n }, [params.page, dispatch]);\r\n\r\n const innerContent = useMemo(() => {\r\n switch (params.page) {\r\n case \"profile\": {\r\n return ;\r\n }\r\n case \"orders\": {\r\n return ;\r\n }\r\n case \"events\": {\r\n return ;\r\n }\r\n case \"wishlist\": {\r\n return ;\r\n }\r\n case \"address-book\": {\r\n return ;\r\n }\r\n case \"payment-methods\": {\r\n return ;\r\n }\r\n case \"purple-perks\": {\r\n return ;\r\n }\r\n default: {\r\n return ;\r\n }\r\n }\r\n }, [params.page]);\r\n\r\n const handleSelectChange = (event: React.ChangeEvent) => history.push(`/account/${event.target.value}`);\r\n\r\n return (\r\n \r\n \r\n {`My Account - ${\r\n params.page === \"wishlist\" ? \"Wish List\" : stringService.CapitalizeString(params.page.replace(\"-\", \" \"))\r\n }`}\r\n \r\n \r\n \r\n {isMobile ? (\r\n
\r\n \r\n }\r\n >\r\n {accountLinks.map((l, i) => (\r\n {l.label}\r\n ))}\r\n \r\n \r\n
\r\n ) : (\r\n \r\n {accountLinks.map((l, i) => (\r\n \r\n \r\n {l.label}\r\n \r\n \r\n ))}\r\n \r\n )}\r\n
\r\n \r\n {innerContent}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Account;\r\n","import {\r\n alpha,\r\n CardContent,\r\n createStyles,\r\n makeStyles,\r\n Typography,\r\n Card,\r\n CardActions,\r\n Box,\r\n Theme,\r\n} from \"@material-ui/core\";\r\nimport React, { FunctionComponent } from \"react\";\r\nimport { ComplexContentModel } from \"../../../models/contentful/ComplexContent\";\r\nimport { DoubleOutlinedLinkBtn } from \"../DoubleOutlinedBtn\";\r\nimport { neutral } from \"../../../themes/colors\";\r\nimport theme from \"../../../themes/main\";\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\r\n borderRadius: \"0px\",\r\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\r\n padding: theme.spacing(2),\r\n },\r\n topLineText: {\r\n fontStyle: \"italic\",\r\n },\r\n cardContent: {\r\n flexBasis: \"100%\",\r\n color: neutral.text_white_bg,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n padding: 0,\r\n flexBasis: \"auto\",\r\n },\r\n },\r\n title: {\r\n marginBottom: theme.spacing(1),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n marginBottom: theme.spacing(0.5),\r\n },\r\n },\r\n cardAction: {\r\n flexBasis: \"100%\",\r\n padding: theme.spacing(1),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n padding: theme.spacing(1, 0, 0, 0),\r\n flexBasis: \"auto\",\r\n },\r\n },\r\n })\r\n);\r\ninterface FullWidthContentBlockProps {\r\n fullWidthContent: ComplexContentModel;\r\n}\r\n\r\nconst FullWidthContentBlock: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const { fullWidthContent } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {fullWidthContent?.superTitle}\r\n \r\n \r\n {fullWidthContent?.title}\r\n \r\n {fullWidthContent?.subTitle}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FullWidthContentBlock;\r\n","import { alpha, createStyles, CardContent, makeStyles, Typography, Card, CardActions, Theme } from \"@material-ui/core\";\r\nimport React, { FunctionComponent } from \"react\";\r\nimport { ComplexContentModel } from \"../../../models/contentful/ComplexContent\";\r\nimport theme from \"../../../themes/main\";\r\nimport { DoubleOutlinedLinkBtn } from \"../DoubleOutlinedBtn\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n padding: theme.spacing(2),\r\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\r\n borderRadius: \"0px\",\r\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n justifyContent: \"center\",\r\n },\r\n topLineText: {\r\n fontStyle: \"italic\",\r\n marginBottom: \"5px\",\r\n },\r\n headerText: {\r\n marginBottom: \"15px\",\r\n },\r\n cardContent: {\r\n padding: theme.spacing(2),\r\n },\r\n cardAction: {\r\n padding: theme.spacing(2),\r\n },\r\n })\r\n);\r\nexport interface InlineContentBlockProps {\r\n inlineContent?: ComplexContentModel;\r\n}\r\n\r\nconst InlineContentBlock: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const { inlineContent } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {inlineContent?.superTitle}\r\n \r\n \r\n {inlineContent?.title}\r\n \r\n {inlineContent?.subTitle}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default InlineContentBlock;\r\n","import appConstants from \"../constants/app.constants\";\r\nimport $ from \"jquery\";\r\nimport deliveryResourceService from \"./delivery-resource.service\";\r\nimport { cloneDeep } from \"lodash\";\r\nimport productService from \"./product.service\";\r\nimport { BuyerProduct } from \"ordercloud-javascript-sdk\";\r\nimport { HomeContentState } from \"../providers/contentful\";\r\nimport { BachmansCategory } from \"../models/Category\";\r\nimport { SeoInfo } from \"../components/StaticPages/SocialLinks\";\r\nimport { BachmansProduct } from \"../models/product\";\r\n\r\nvar seoPages: any;\r\nconst seoDataProps = {\r\n MetaTitle: \"\",\r\n MetaDescription: \"\",\r\n MetaType: \"website\",\r\n MetaSiteName: window.location.host.toLowerCase().trim().replace(\"www.\", \"\"),\r\n MetaImage: \"assets/images/default-seo-img.jpg\",\r\n CanonicalUrl: \"\",\r\n};\r\nconst homepageSEO = cloneDeep(seoDataProps);\r\nconst errorSEO = cloneDeep(seoDataProps);\r\n\r\nasync function initialize() {\r\n try {\r\n await initDefaultPageConstants();\r\n const buyerXp = await deliveryResourceService.GetBuyerXp();\r\n\r\n if (buyerXp && buyerXp.SEOPages) {\r\n seoPages = buyerXp.SEOPages;\r\n if (seoPages[\"Home Page\"]?.seo) {\r\n seoPages[\"Home Page\"].seo.MetaTitle = homepageSEO.MetaTitle;\r\n seoPages[\"Home Page\"].seo.MetaDescription = homepageSEO.MetaDescription;\r\n }\r\n } else {\r\n console.log(\"Could not find the buyer with buyerId:\", appConstants.buyerId);\r\n setSeoDataProps(errorSEO);\r\n }\r\n } catch (exception) {\r\n console.log(\"SEO INIT ERROR\", exception);\r\n setSeoDataProps(errorSEO);\r\n }\r\n}\r\n\r\nasync function initDefaultPageConstants() {\r\n //errorSEO.props data\r\n errorSEO.MetaTitle = \"Not found\";\r\n errorSEO.MetaDescription = \"The page you are looking for could not be found.\";\r\n errorSEO.MetaImage = \"assets/images/default-seo-img.jpg\";\r\n\r\n //homepageSEO.props data\r\n homepageSEO.MetaTitle = \"Welcome to Bachmans.com\";\r\n homepageSEO.MetaDescription =\r\n \"Shop for floral arrangements, indoor plants, gifts, decor, and garden plants and supplies from your trusted neighborhood garden center.\";\r\n homepageSEO.MetaImage = \"assets/images/default-seo-img.jpg\";\r\n}\r\n\r\nasync function setSeoData(seoData: any, seoDataContentful?: HomeContentState) {\r\n await initialize();\r\n\r\n if (seoData === \"404\") {\r\n return setSeoDataProps(errorSEO);\r\n }\r\n\r\n if (seoData === \"Home Page\" && seoDataContentful?.data?.fields?.seo) {\r\n return setSeoDataProps(seoDataContentful.data.fields.seo);\r\n }\r\n\r\n if (seoPages && seoPages[seoData]) {\r\n return setSeoDataProps(seoPages[seoData].seo);\r\n }\r\n\r\n if (seoDataContentful?.data?.fields?.seo) {\r\n return setSeoDataProps(seoDataContentful.data.fields.seo);\r\n }\r\n\r\n if (typeof seoData === \"object\") {\r\n return setSeoDataProps(seoData);\r\n }\r\n\r\n return setSeoDataProps(homepageSEO);\r\n}\r\n\r\nasync function setSeoDataProps(seoObject: any) {\r\n seoDataProps.CanonicalUrl = window.location.href.toLowerCase().trim().replace(\"http://\", \"https://\");\r\n\r\n if (seoObject) {\r\n seoDataProps.MetaTitle = seoObject.MetaTitle || seoObject.title || seoDataProps.MetaTitle;\r\n seoDataProps.MetaDescription = seoObject.MetaDescription || seoObject.description || seoDataProps.MetaDescription;\r\n\r\n var metaImage = seoObject.MetaImage || seoObject.image || seoDataProps.MetaImage;\r\n if (metaImage.toLowerCase().trim().includes(\"images.ctfassets.net\")) {\r\n metaImage = metaImage.trim();\r\n metaImage =\r\n !metaImage.includes(\"http:\") && !metaImage.includes(\"https:\")\r\n ? \"https:\" + metaImage\r\n : metaImage.replace(\"http:\", \"https:\");\r\n seoDataProps.MetaImage = metaImage;\r\n } else {\r\n seoDataProps.MetaImage = homepageSEO.MetaImage;\r\n }\r\n seoDataProps.MetaType = seoObject.MetaType ? seoObject.MetaType : seoDataProps.MetaType;\r\n } else {\r\n seoDataProps.MetaTitle = homepageSEO.MetaTitle;\r\n seoDataProps.MetaDescription = homepageSEO.MetaDescription;\r\n seoDataProps.MetaImage = homepageSEO.MetaImage;\r\n seoDataProps.MetaType = homepageSEO.MetaType;\r\n }\r\n\r\n $(\"title\").text(seoDataProps.MetaTitle);\r\n $(\"[property='og:title'], [property='twitter:title']\").attr(\"content\", seoDataProps.MetaTitle);\r\n $(\"[name='description'], [property='twitter:description']\").attr(\"content\", seoDataProps.MetaDescription);\r\n $(\"[property='og:image'], [property='twitter:image']\").attr(\"content\", seoDataProps.MetaImage);\r\n $(\"[property='og:type']\").attr(\"content\", seoDataProps.MetaType);\r\n $(\"[property='og:site_name'], [property='twitter:site']\").attr(\"content\", seoDataProps.MetaSiteName);\r\n $(\"#canonical-tag, [property='og:url']\").attr(\"href\", seoDataProps.CanonicalUrl);\r\n\r\n //console.log(seoDataProps);\r\n return seoDataProps;\r\n}\r\n\r\nconst getSeoDataProps = () => {\r\n return setSeoDataProps(null);\r\n};\r\n\r\nexport type PageGroupKey = \"category\" | \"product\" | \"services-pages\" | \"event-details\";\r\n\r\nasync function importIntoSeoDataProps(seoObject: any, pageGroupKey: PageGroupKey) {\r\n await initialize();\r\n const pageSeo = cloneDeep(homepageSEO);\r\n\r\n if (!seoObject || !pageGroupKey) {\r\n setSeoDataProps(pageSeo);\r\n return;\r\n }\r\n\r\n const updateSeoData = (title: string | undefined, description: string | undefined, image?: string) => {\r\n pageSeo.MetaTitle = title || pageSeo.MetaTitle;\r\n pageSeo.MetaDescription = description || pageSeo.MetaDescription;\r\n if (image) pageSeo.MetaImage = image;\r\n setSeoDataProps(pageSeo);\r\n };\r\n\r\n switch (pageGroupKey) {\r\n case \"category\":\r\n const category = seoObject as BachmansCategory;\r\n updateSeoData(\r\n category.xp?.seo?.MetaTitle || category.Name,\r\n category.xp?.seo?.MetaDescription || category.Description\r\n );\r\n break;\r\n\r\n case \"product\":\r\n const product = seoObject as BuyerProduct;\r\n updateSeoData(\r\n product?.xp?.SEO?.MetaTitle || product.Name,\r\n product.xp?.SEO?.MetaDescription || product.Description,\r\n productService.GetDefaultImage(product)\r\n );\r\n break;\r\n\r\n case \"event-details\":\r\n const event = seoObject as BachmansProduct;\r\n updateSeoData(\r\n event?.xp?.SEO?.Title || event.Name,\r\n event.xp?.SEO?.Description || event.Description,\r\n productService.GetDefaultImage(event)\r\n );\r\n break;\r\n\r\n case \"services-pages\":\r\n const servicePage = seoObject as SeoInfo;\r\n const pathname = window.location.pathname.toLowerCase().trim();\r\n if (pathname.includes(\"/p/\")) {\r\n updateSeoData(\r\n $(\"[property='og:title']\").attr(\"content\"),\r\n $(\"[name='description']\").attr(\"content\"),\r\n servicePage.image\r\n );\r\n } else {\r\n updateSeoData(servicePage.title, servicePage.description, servicePage.image);\r\n }\r\n break;\r\n\r\n default:\r\n setSeoDataProps(pageSeo);\r\n }\r\n}\r\n\r\nconst service = {\r\n SetSeoData: setSeoData,\r\n GetSeoDataProps: getSeoDataProps,\r\n ImportIntoSeoDataProps: importIntoSeoDataProps,\r\n};\r\n\r\nexport default service;\r\n","import { find } from \"lodash\";\r\nimport { Category } from \"ordercloud-javascript-sdk\";\r\nimport { BachmansProduct } from \"../models/product\";\r\n\r\nconst getDcfSetting = (product: BachmansProduct, setting: string, dcfCategories: Category[]) => {\r\n if (product && product.xp && product.xp[setting] && notEmptyArray(product.xp[setting])) {\r\n return product.xp[setting];\r\n } else {\r\n var fnln = findSetting(product?.xp?.CurrentFineline, setting, dcfCategories);\r\n if (fnln) {\r\n return fnln;\r\n }\r\n var cls = findSetting(product?.xp?.CurrentClass, setting, dcfCategories);\r\n if (cls) {\r\n return cls;\r\n }\r\n var dept = findSetting(product?.xp?.CurrentDepartment, setting, dcfCategories);\r\n if (dept) {\r\n return dept;\r\n }\r\n var d = findSetting(\"DCF\", setting, dcfCategories);\r\n if (d) {\r\n return d;\r\n }\r\n return [];\r\n }\r\n};\r\n\r\nconst notEmptyArray = (element: any) => {\r\n return !(Array.isArray(element) && element.length === 0);\r\n};\r\n\r\nconst findSetting = (id: string, setting: string, dcfCatalog: any[]) => {\r\n var cat = find(dcfCatalog, function (c) {\r\n return c.ID === id;\r\n });\r\n if (cat && cat.xp && cat.xp[setting] && notEmptyArray(cat.xp[setting])) {\r\n return cat.xp[setting];\r\n }\r\n};\r\n\r\nconst service = {\r\n GetDcfSetting: getDcfSetting,\r\n};\r\nexport default service;\r\n","import { Box, createStyles, Grid, makeStyles, Theme, Typography, useMediaQuery } from \"@material-ui/core\";\r\nimport { Category } from \"ordercloud-javascript-sdk\";\r\nimport React, { FunctionComponent, useEffect, useContext, useState, Fragment } from \"react\";\r\nimport contentfulService from \"../../services/contentful.service\";\r\nimport BachmansCard from \"./BachmansCard\";\r\nimport { ComplexContentBlocksContext, HomeContentContext } from \"../../providers/contentful\";\r\nimport { ComplexContentModel } from \"../../models/contentful/ComplexContent\";\r\nimport InlineContentBlock from \"./Content/InlineContentBlock\";\r\nimport FullWidthContentBlock from \"./Content/FullWidthContentBlock\";\r\nimport svgNoResults from \"../../assets/svg/no-results.svg\";\r\n\r\nconst useStyles = (variant?: string) =>\r\n makeStyles((theme: Theme) =>\r\n createStyles({\r\n cardWrapper: {\r\n display: \"flex\",\r\n \"&>a\": {\r\n display: \"flex\",\r\n flexGrow: 1,\r\n },\r\n },\r\n fullWidthContent: {\r\n padding: theme.spacing(0, 2),\r\n },\r\n link: {\r\n cursor: \"pointer\",\r\n display: \"block\",\r\n border: \"1px solid #eeeeee\",\r\n },\r\n })\r\n );\r\n\r\nexport interface ItemListProps {\r\n listData?: any[];\r\n category?: Category;\r\n // L1category?: Category;\r\n // L2category?: Category;\r\n variant: \"product\" | \"category\" | \"event\";\r\n}\r\n\r\nconst ItemList: FunctionComponent = (props) => {\r\n const { listData, variant, category } = props;\r\n const classes = useStyles(variant)();\r\n const homeContent = useContext(HomeContentContext);\r\n const complexContentBlock = useContext(ComplexContentBlocksContext);\r\n const [inlineContent, setInlineContnet] = useState();\r\n const [fullWidthContent, setfullWidthContent] = useState();\r\n const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down(\"sm\"));\r\n\r\n useEffect(() => {\r\n if (variant === \"product\" || variant === \"event\") {\r\n if (category && category?.xp?.Content) {\r\n const inline = contentfulService.getComplexContentFromIDs(\r\n category?.xp?.Content?.inline?.value,\r\n complexContentBlock\r\n );\r\n const fullWidth = contentfulService.getComplexContentFromIDs(\r\n category?.xp?.Content?.full?.value,\r\n complexContentBlock\r\n );\r\n setInlineContnet(inline[0]);\r\n setfullWidthContent(fullWidth[0]);\r\n }\r\n }\r\n }, [variant, category, homeContent, complexContentBlock]);\r\n\r\n return (\r\n \r\n \r\n {listData && listData.length > 0 ? (\r\n listData.map((item, i) => (\r\n \r\n \r\n \r\n \r\n {i === 4 && inlineContent && (\r\n \r\n \r\n \r\n )}\r\n {i === 4 && fullWidthContent && !isMobile && (\r\n \r\n \r\n \r\n )}\r\n \r\n ))\r\n ) : (\r\n \r\n \"illustrsation\r\n No Results\r\n \r\n )}\r\n {inlineContent && listData && listData.length <= 4 && (\r\n \r\n \r\n \r\n )}\r\n {fullWidthContent && listData && (listData.length <= 4 || isMobile) && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ItemList;\r\n","import React, { Fragment, useState } from \"react\";\r\nimport {\r\n Dialog,\r\n makeStyles,\r\n createStyles,\r\n Theme,\r\n Box,\r\n Button,\r\n CircularProgress,\r\n DialogActions,\r\n DialogTitle,\r\n Divider,\r\n Typography,\r\n DialogContent,\r\n} from \"@material-ui/core\";\r\nimport { neutral } from \"../../themes/colors\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n dialogContainer: {\r\n \"& .MuiPaper-root\": {\r\n borderRadius: 0,\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: theme.spacing(1),\r\n minHeight: 175,\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: \"40vw\",\r\n padding: theme.spacing(3),\r\n },\r\n },\r\n \"& .MuiDialogTitle-root\": {\r\n textAlign: \"center\",\r\n },\r\n },\r\n dialogActions: {\r\n gap: theme.spacing(1),\r\n },\r\n text: {\r\n color: neutral.text_white_bg,\r\n },\r\n divider: {\r\n width: \"90%\",\r\n alignSelf: \"center\",\r\n },\r\n })\r\n);\r\n\r\nexport interface ConfirmDialgProps {\r\n open: boolean;\r\n title?: string;\r\n text?: string;\r\n loadingText?: string;\r\n onClose?: () => void;\r\n onAccept?: () => Promise;\r\n}\r\n\r\nconst ConfirmDialog: React.FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const { open, title, onClose, onAccept, loadingText, text } = props;\r\n const [loading, setLoading] = useState(false);\r\n\r\n const handleClose = () => {\r\n setLoading(false);\r\n if (onClose) {\r\n onClose();\r\n }\r\n };\r\n\r\n const handleAccept = async () => {\r\n setLoading(true);\r\n if (onAccept) {\r\n await onAccept();\r\n handleClose();\r\n }\r\n setLoading(false);\r\n };\r\n\r\n return (\r\n \r\n {loading ? (\r\n \r\n \r\n \r\n {loadingText}\r\n \r\n \r\n ) : (\r\n \r\n {title}\r\n {text && (\r\n \r\n \r\n {text}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ConfirmDialog;\r\n","import React, { Fragment, FunctionComponent, useContext, useState } from \"react\";\r\nimport {\r\n Checkbox,\r\n createStyles,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n FormControlLabel,\r\n Link,\r\n makeStyles,\r\n TextField,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { Formik, useFormikContext, FormikHelpers } from \"formik\";\r\nimport * as yup from \"yup\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport { useCookies } from \"react-cookie\";\r\nimport { Me } from \"ordercloud-javascript-sdk\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport bachDateTime from \"../../services/bachDateTime.service\";\r\nimport { AuthDialogTab } from \"./AuthDialog\";\r\nimport DoubleOutlinedBtn from \"../Shared/DoubleOutlinedBtn\";\r\nimport BachmansLoading from \"../Shared/BachmansLoading\";\r\nimport { Errors } from \"../../constants/error.constants\";\r\nimport bachmansIntegrationsService from \"../../services/bachmansIntegrations.service\";\r\n\r\ninterface LoginProps {\r\n onTabChange: (newTab: AuthDialogTab) => (e: React.MouseEvent) => void;\r\n changeTab: (newTab: AuthDialogTab, mustResetPassword?: boolean) => void;\r\n onClose: () => void;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n flexRow: {\r\n display: \"flex\",\r\n flexFlow: \"row nowrap\",\r\n margin: theme.spacing(0, -1),\r\n alignItems: \"center\",\r\n \"& > *\": {\r\n flex: \"1 1 auto\",\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n },\r\n },\r\n rememberMe: {\r\n marginLeft: -theme.spacing(0.5),\r\n },\r\n })\r\n);\r\n\r\ninterface FormValues {\r\n email: string;\r\n password: string;\r\n showRecaptcha: boolean;\r\n recaptcha: string;\r\n rememberMe: boolean;\r\n}\r\n\r\nconst Login: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { onTabChange, onClose, changeTab } = props;\r\n const { login, cookiePrefix } = useContext(SessionContext);\r\n const [cookies, removeCookie] = useCookies();\r\n // const { order } = useSelector((state: RootState) => state.order);\r\n const [loginCount, setLoginCount] = useState(0);\r\n const [displayRecaptcha, setDisplayRecaptcha] = useState(false);\r\n const [recaptchaResponse, setRecaptchaResponse] = useState(\"\");\r\n const recaptchaSiteKey = process.env.REACT_APP_RECAPTCHA_SITE_KEY as string;\r\n const [pageInfo, setPageInfo] = useState({ loading: false, error: false, message: \"\" });\r\n const [loading, setLoading] = useState(false);\r\n const { patchUser } = useContext(SessionContext);\r\n\r\n const RecaptchaDisplay = () => {\r\n const { setFieldValue, validateForm, values, errors, touched } = useFormikContext();\r\n React.useEffect(() => {\r\n if (!values.showRecaptcha && displayRecaptcha) {\r\n setFieldValue(\"showRecaptcha\", true);\r\n }\r\n }, [setFieldValue, values.showRecaptcha]); //intentionally leaving out showRecaptcha since it triggers too much\r\n\r\n return (\r\n \r\n {\r\n if (value) {\r\n // Uncomment this once we have recaptcha account updated with new domains\r\n\r\n bachmansIntegrationsService.verifyRecaptcha(value).then((res: any) => {\r\n if (res.success) {\r\n setRecaptchaResponse(value);\r\n setFieldValue(\"showRecaptcha\", false);\r\n setDisplayRecaptcha(false);\r\n validateForm();\r\n }\r\n });\r\n setRecaptchaResponse(value);\r\n setFieldValue(\"showRecaptcha\", false);\r\n setDisplayRecaptcha(false);\r\n validateForm();\r\n }\r\n }}\r\n />\r\n {touched.recaptcha && Boolean(errors.recaptcha) && (\r\n {errors.recaptcha}\r\n )}\r\n \r\n );\r\n };\r\n\r\n const validationSchema = yup.object({\r\n email: yup.string().email(\"Enter a valid email address\").required(\"Email is required\"),\r\n password: yup.string().min(8, \"Password should be of minimum 8 characters length\").required(\"Password is required\"),\r\n showRecaptcha: yup.boolean(),\r\n recaptcha: yup.string().when(\"showRecaptcha\", {\r\n is: true,\r\n then: yup.string().required(\"Must enter recatpcha\"),\r\n }),\r\n rememberMe: yup.boolean(),\r\n });\r\n\r\n const handleLogin = async (values: FormValues, { setSubmitting }: FormikHelpers) => {\r\n if (login) {\r\n setLoading(true);\r\n //TODO: transfer anon order\r\n\r\n if (cookies[`${cookiePrefix}.loginfailed`] && recaptchaResponse === \"\") return;\r\n try {\r\n await login(values.email, values.password, values.rememberMe);\r\n if (cookies[`${cookiePrefix}.loginfailed`]) {\r\n removeCookie(`${cookiePrefix}.loginfailed`, cookies[`${cookiePrefix}.loginfailed`]);\r\n }\r\n //TODO: Add Applicatoin insight to set user credentials\r\n //TODO: handle reset by token\r\n // if ( roles.length === 1 && roles[ 0 ] === 'PasswordReset' ) {\r\n // vm.token = data.access_token;\r\n // vm.resetByToken = true;}\r\n // order?.LineItemCount ?\r\n\r\n const loggedInUser = await Me.Patch({ xp: { LastLoginTimeStamp: bachDateTime.Today().format(\"YYYY-MM-DD\") } });\r\n //*** Setting CECS Customer Number for Old User ***/\r\n if (loggedInUser?.ID) {\r\n console.log(\"Login Page: loggedInUser.ID:\" + loggedInUser.ID);\r\n const returnedUser = await bachmansIntegrationsService.getCECSCustomerID(loggedInUser.ID);\r\n //console.log(\"Login Page: returnedUser:\", returnedUser);\r\n const cecsnumber = returnedUser?.data?.xp?.CecsCustomerNumber;\r\n cecsnumber && patchUser && (await patchUser({ xp: { CecsCustomerNumber: cecsnumber } }));\r\n }\r\n\r\n onClose();\r\n setSubmitting(false);\r\n } catch (err: any) {\r\n setLoginCount(loginCount + 1);\r\n if (err.isOrderCloudError) {\r\n const errorMessage = err.errors?.Errors?.[0].Message;\r\n if (errorMessage === Errors.passwordNotMeetSecurity) {\r\n changeTab(\"forgot\", true);\r\n } else {\r\n setPageInfo({ loading: false, error: true, message: err.errors?.Errors?.[0].Message });\r\n }\r\n } else {\r\n console.error(err);\r\n }\r\n setSubmitting(false);\r\n if (loginCount > 2) {\r\n setDisplayRecaptcha(true);\r\n }\r\n setLoading(false);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n Log In\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n {({ values, errors, touched, handleChange, handleBlur, handleSubmit, isSubmitting, isValid }) => (\r\n
\r\n \r\n \r\n \r\n {pageInfo.error && pageInfo.message && (\r\n {pageInfo.message}\r\n )}\r\n \r\n \r\n }\r\n label=\"Remember me\"\r\n />\r\n\r\n \r\n Reset password\r\n \r\n \r\n {displayRecaptcha && }\r\n \r\n \r\n New to Bachman's?\r\n \r\n Create an account!\r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Login;\r\n","import React, { Fragment, FunctionComponent, useState } from \"react\";\r\nimport {\r\n createStyles,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n Link,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { AuthDialogTab } from \"./AuthDialog\";\r\nimport UserInputForm from \"../Shared/UserInputForm\";\r\n\r\ninterface RegisterProps {\r\n onTabChange: (newTab: AuthDialogTab) => (e: React.MouseEvent) => void;\r\n onClose: () => void;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n error: {\r\n marginBottom: theme.spacing(2),\r\n },\r\n })\r\n);\r\n\r\nconst Register: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const { onTabChange, onClose } = props;\r\n const [registerError, setRegisterError] = useState();\r\n const [conflictError, setConflictError] = useState(false);\r\n\r\n const onError = (err?: any) => {\r\n if (err?.response?.data?.message.includes(\"409\")) {\r\n setRegisterError(\"An account already exists with the email entered.\");\r\n setConflictError(true);\r\n } else {\r\n setRegisterError(\"An Error Occurred. Please try again\");\r\n setConflictError(false);\r\n }\r\n setRegisterError(err?.response?.status);\r\n };\r\n\r\n return (\r\n \r\n \r\n Create an Account\r\n \r\n \r\n {registerError && (\r\n
\r\n {conflictError ? (\r\n \r\n \r\n An account already exists with the email entered.\r\n \r\n \r\n Click here to log in.\r\n \r\n \r\n ) : (\r\n \r\n \r\n An Error Occurred. Please try again\r\n \r\n \r\n )}\r\n
\r\n )}\r\n \r\n \r\n {`Already have an account? `}\r\n \r\n Log in\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Register;\r\n","import React, { Fragment, FunctionComponent, useCallback, useState } from \"react\";\r\nimport {\r\n Box,\r\n createStyles,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n FormHelperText,\r\n Link,\r\n makeStyles,\r\n TextField,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { AuthDialogTab } from \"./AuthDialog\";\r\nimport { Formik, FormikHelpers } from \"formik\";\r\nimport * as yup from \"yup\";\r\nimport AuthService from \"../../services/authentication.service\";\r\nimport DoubleOutlinedBtn from \"../Shared/DoubleOutlinedBtn\";\r\nimport PasswordRequirementsList from \"./PasswordRequirementsList\";\r\ninterface ForgotPasswordProps {\r\n mustResetPassword?: boolean;\r\n onTabChange: (newTab: AuthDialogTab) => (e: React.MouseEvent) => void;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n forgotMessage: {\r\n marginBottom: theme.spacing(2),\r\n },\r\n resetMessage: {\r\n marginBottom: theme.spacing(2),\r\n },\r\n resetDirections: {\r\n marginTop: theme.spacing(1),\r\n fontWeight: \"bold\",\r\n },\r\n })\r\n);\r\n\r\ninterface FormValues {\r\n email: string;\r\n}\r\nconst validationSchema = yup.object({\r\n email: yup.string().email(\"Email not valid\").required(\"Email is required\"),\r\n});\r\n\r\nconst ForgotPassword: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { onTabChange, mustResetPassword } = props;\r\n const [resetLinkConfirm, setResetLinkConfirm] = useState(false);\r\n const [pageInfo, setPageInfo] = useState({ loading: false, error: false, message: \"\" });\r\n\r\n const handleRegister = useCallback(async ({ email }: FormValues, actions: FormikHelpers) => {\r\n try {\r\n await AuthService.SendVerificationCodeAsync(email);\r\n setResetLinkConfirm(true);\r\n } catch (err) {\r\n setPageInfo({ loading: false, error: true, message: \"Entered email is not found.\" });\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n Reset Password\r\n \r\n {resetLinkConfirm ? (\r\n \r\n \r\n \r\n A password reset link has been sent to your registered email. It will expire in 2 hours.\r\n \r\n \r\n \r\n {`Remember your password? `}\r\n \r\n Log in\r\n \r\n \r\n \r\n ) : (\r\n \r\n {({ values, errors, touched, isSubmitting, handleChange, handleBlur, handleSubmit }) => (\r\n
\r\n \r\n {mustResetPassword && (\r\n
\r\n \r\n For your security, Bachmans has enhanced our password requirements.\r\n \r\n \r\n You will need to update your password to include a minimum of 10 characters, and each of the\r\n following attributes:\r\n \r\n \r\n
\r\n )}\r\n \r\n Enter your email address and we will send you instructions to reset your password.\r\n \r\n \r\n {pageInfo.error && pageInfo.message && (\r\n {pageInfo.message}\r\n )}\r\n \r\n \r\n {`Remember your password? `}\r\n \r\n Log in\r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default ForgotPassword;\r\n","import {\r\n createStyles,\r\n Dialog,\r\n DialogContent,\r\n Grid,\r\n Hidden,\r\n IconButton,\r\n makeStyles,\r\n Theme,\r\n useMediaQuery,\r\n} from \"@material-ui/core\";\r\nimport { Close } from \"@material-ui/icons\";\r\nimport React, { FunctionComponent, useState } from \"react\";\r\n\r\nimport Login from \"./Login\";\r\nimport Register from \"./Register\";\r\nimport ForgotPassword from \"./ForgotPassword\";\r\nimport PurplePerksFull from \"../Shared/PurplePerksFull\";\r\nimport { useEffect } from \"react\";\r\nimport { isUndefined } from \"lodash\";\r\n\r\ninterface AuthDialogProps {\r\n open: boolean;\r\n onClose: () => void;\r\n state?: AuthDialogTab;\r\n}\r\n\r\nexport type AuthDialogTab = \"login\" | \"register\" | \"forgot\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n dialogPaper: {\r\n maxWidth: \"100%\",\r\n width: 950,\r\n },\r\n closeButton: {\r\n position: \"absolute\",\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n },\r\n container: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n height: \"50vh\",\r\n minHeight: 500,\r\n transition: \"height .25s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n },\r\n },\r\n containerRegister: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n height: \"60vh\",\r\n minHeight: 500,\r\n transition: \"height .25s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n },\r\n },\r\n formContainer: {\r\n backgroundColor: theme.palette.background.default,\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n flexDirection: \"column\",\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n padding: theme.spacing(0, 8),\r\n },\r\n \"& .MuiDialogContent-root\": {\r\n flex: \"0 0 auto\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst AuthDialog: FunctionComponent = ({ open, onClose, state }) => {\r\n const classes = useStyles();\r\n const [tab, setTab] = useState(state ? state : \"login\");\r\n const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down(\"sm\"));\r\n const [mustResetPassword, setMustResetPassword] = useState(false);\r\n\r\n useEffect(() => {\r\n if (state) {\r\n setTab(state);\r\n }\r\n }, [state]);\r\n\r\n const changeTab = (newTab: AuthDialogTab, resetPassword?: boolean) => {\r\n if (!isUndefined(resetPassword)) {\r\n setMustResetPassword(resetPassword);\r\n }\r\n setTab(newTab);\r\n };\r\n\r\n const handleTabChange = (newTab: AuthDialogTab) => (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n setTab(newTab);\r\n };\r\n\r\n const handleClose = () => {\r\n setMustResetPassword(false);\r\n setTab(\"login\");\r\n onClose();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {tab === \"login\" && }\r\n {tab === \"register\" && }\r\n {tab === \"forgot\" && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AuthDialog;\r\n","export default __webpack_public_path__ + \"static/media/logoBadge.dd48155a.svg\";","import React, { Fragment, FunctionComponent, useContext, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { Address, BuyerAddress, BuyerProduct, Me } from \"ordercloud-javascript-sdk\";\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n useMediaQuery,\r\n Theme,\r\n makeStyles,\r\n createStyles,\r\n Button,\r\n Typography,\r\n FormControlLabel,\r\n Checkbox,\r\n Grid,\r\n ButtonBase,\r\n alpha,\r\n CircularProgress,\r\n Hidden,\r\n} from \"@material-ui/core\";\r\nimport AddressForm from \"../Shared/Address/AddressForm\";\r\nimport DoubleOutlinedBtn from \"../Shared/DoubleOutlinedBtn\";\r\nimport deliveryService, { LocalAddressData } from \"../../services/delivery.service\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport { setBreadcrumbs } from \"../../redux/slices/breadcrumbs\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { AppDispatch } from \"../../redux/store\";\r\nimport deliveryResourceService from \"../../services/delivery-resource.service\";\r\nimport bachmansIntegrationsService from \"../../services/bachmansIntegrations.service\";\r\nimport { each, isEqual, isUndefined } from \"lodash\";\r\nimport { neutral } from \"../../themes/colors\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Alert } from \"@material-ui/lab\";\r\nimport { DeliveryMethods } from \"../Product/ProductDetail/DeliveryOptionSelect\";\r\nimport { LineItem, LineItems } from \"ordercloud-javascript-sdk\";\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n dialogPaper: {\r\n padding: theme.spacing(5),\r\n width: \"100%\",\r\n position: \"relative\",\r\n [theme.breakpoints.up(\"lg\")]: {\r\n maxWidth: \"50vw\",\r\n },\r\n },\r\n dialogBody: {\r\n padding: 0,\r\n overflowY: \"unset\",\r\n minHeight: 150,\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\",\r\n },\r\n \"& .MuiFormControl-root, .MuiSelect-nativeInput\": {\r\n display: \"flex\",\r\n margin: 0,\r\n },\r\n },\r\n diaglogTitle: {\r\n marginBottom: theme.spacing(2),\r\n padding: 0,\r\n },\r\n dialogActions: {\r\n gap: theme.spacing(2),\r\n marginTop: theme.spacing(2),\r\n [theme.breakpoints.down(\"sm\")]: {\r\n bottom: theme.spacing(-5),\r\n backgroundColor: \"white\",\r\n height: \"20vh\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n zIndex: 1,\r\n },\r\n },\r\n loadingIndicator: {\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n zIndex: 1,\r\n backgroundColor: alpha(neutral.offwhite_bg, 0.9),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n margin: \"0 auto\",\r\n \"& .MuiCircularProgress-root\": {\r\n zIndex: 2,\r\n marginRight: theme.spacing(3),\r\n },\r\n },\r\n localDeliveryError: {\r\n marginTop: theme.spacing(1),\r\n },\r\n localDeliveryWarning: {\r\n marginTop: theme.spacing(1),\r\n \"& a\": {\r\n color: \"rgb(102, 60, 0)\", // warning text color\r\n },\r\n },\r\n btnLogin: {\r\n fontWeight: \"bold\",\r\n padding: 0,\r\n minWidth: \"unset\",\r\n marginLeft: theme.spacing(1),\r\n textDecoration: \"underline\",\r\n \"&:hover\": {\r\n backgroundColor: \"transparent\",\r\n textDecoration: \"underline\",\r\n },\r\n },\r\n addressButton: {\r\n width: \"100%\",\r\n minHeight: 100,\r\n height: \"100%\",\r\n boxShadow: theme.shadows[3],\r\n marginTop: theme.spacing(1),\r\n border: `1px solid ${neutral.search_bg}`,\r\n transition: \"all .25s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n \"&:hover\": {\r\n backgroundColor: neutral.search_bg,\r\n transform: \"translateY(-2px)\",\r\n },\r\n },\r\n addressButtonSuggested: {\r\n backgroundColor: alpha(theme.palette.primary.light, 0.15),\r\n borderColor: alpha(theme.palette.primary.light, 0.5),\r\n boxShadow:\r\n \"0px 3px 3px -2px rgb(146 98 184 / 20%), 0px 3px 4px 0px rgb(146 98 184 / 14%), 0px 1px 8px 0px rgb(146 98 184 / 12%)\",\r\n \"&:hover\": {\r\n backgroundColor: alpha(theme.palette.primary.light, 0.4),\r\n },\r\n },\r\n addressCard: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n flexFlow: \"column nowrap\",\r\n padding: theme.spacing(2),\r\n flexGrow: 1,\r\n height: \"100%\",\r\n \"& p:first-child\": {\r\n marginTop: \"auto\",\r\n },\r\n },\r\n Divider: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\nexport interface AddressDialogProps {\r\n open: boolean;\r\n variant: \"Shipping\" | \"Billing\" | \"InStorePickUp\";\r\n products?: BuyerProduct[];\r\n deliveryMethods?: DeliveryMethods;\r\n address?: BuyerAddress;\r\n dialogTitle?: string;\r\n lineItems?: LineItem[];\r\n onClose: () => void;\r\n onSubmit?: (address: BuyerAddress, routeCode?: string, saveAddress?: boolean) => Promise;\r\n}\r\n\r\nconst AddressDialog: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const { open, address, onClose, onSubmit, dialogTitle, variant, products, deliveryMethods } = props;\r\n const { anonymous } = useContext(SessionContext);\r\n const [addressStatic, setAddressStatic] = useState();\r\n const [addressEditable, setAddressEditable] = useState();\r\n const [localAddressData, setLocalAddressData] = useState();\r\n const [loading, setLoading] = useState(false);\r\n const [localCities, setLocalCities] = useState();\r\n const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down(\"sm\"));\r\n const [avalaraSuggested, setAvalaraSuggested] = useState
();\r\n const [avalaraNotFound, setAvalaraNotFound] = useState(false);\r\n const [saveAddress, setSaveAddress] = useState(false);\r\n const dispatch = useDispatch();\r\n const componentMounted = useRef(true);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n const local = await deliveryResourceService.GetLocalCities();\r\n if (componentMounted.current) {\r\n setLocalCities(local);\r\n }\r\n })();\r\n return () => {\r\n componentMounted.current = false;\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n setAddressStatic(address);\r\n setAddressEditable({ ...address, Billing: true, Shipping: true, Country: \"US\" });\r\n }, [address]);\r\n\r\n const resetData = () => {\r\n setAvalaraSuggested(undefined);\r\n setLoading(false);\r\n setAvalaraNotFound(false);\r\n setAddressEditable({ ...address, Billing: true, Shipping: true, Country: \"US\" });\r\n setLocalAddressData(undefined);\r\n };\r\n\r\n const handleClose = () => {\r\n resetData();\r\n onClose();\r\n };\r\n\r\n const avalaraMap: any = {\r\n Region: \"State\",\r\n Line1: \"Street1\",\r\n Line2: \"Street2\",\r\n City: \"City\",\r\n Country: \"Country\",\r\n PostalCode: \"Zip\",\r\n };\r\n\r\n const handleAvalaraSuggestion = async (suggestion: any) => {\r\n var mappedAddress: any = {};\r\n each(suggestion, function (v, k) {\r\n if (avalaraMap[k] && v !== \"\") {\r\n if (k === \"PostalCode\") v = v.split(\"-\")[0];\r\n mappedAddress[avalaraMap[k]] = v;\r\n }\r\n });\r\n const verifiedAddress: Address = Object.assign({}, addressEditable, mappedAddress);\r\n if (verifiedAddress.Street2 && !mappedAddress.Street2) {\r\n delete verifiedAddress.Street2;\r\n }\r\n if (isEqual(verifiedAddress, addressEditable)) {\r\n await submitAddress(addressEditable);\r\n } else {\r\n setAvalaraSuggested(verifiedAddress);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const submitAddress = async (address?: BuyerAddress) => {\r\n if (address && onSubmit) {\r\n try {\r\n setLoading(true);\r\n if (!anonymous && saveAddress) {\r\n await Me.CreateAddress(address);\r\n }\r\n await onSubmit(address, localAddressData?.routeCode);\r\n } finally {\r\n handleClose();\r\n }\r\n }\r\n };\r\n\r\n const authAndSubmitAddress = async () => {\r\n const destinationType = deliveryService\r\n .GetDestinationTypes()\r\n .find((d) => d.type === addressEditable?.xp?.addressType);\r\n if (destinationType?.search !== \"S\") {\r\n setLoading(true);\r\n const avalaraResp = await bachmansIntegrationsService.validateAddress(addressEditable as Address);\r\n if (avalaraResp.ResultCode === \"Success\") {\r\n console.log(\"avalaraResp.Address\", avalaraResp.Address);\r\n handleAvalaraSuggestion(avalaraResp.Address);\r\n } else if (avalaraResp.ResultCode === \"Error\") {\r\n setAvalaraNotFound(true);\r\n setLoading(false);\r\n }\r\n } else {\r\n submitAddress(addressEditable as Address);\r\n }\r\n };\r\n\r\n const handleAddressChange = (val: BuyerAddress) => {\r\n setAvalaraNotFound(false);\r\n // BI-474: Clear destination fields upon clicking 'X' icons\r\n if ((val.xp && val.xp.addressType == \"Residence\") || val?.CompanyName == null) {\r\n if (val?.Street1 == \"\") {\r\n val.City = val.State = val.Zip = val.Street1 = val.Street2 = undefined;\r\n }\r\n } else {\r\n if (val?.CompanyName == \"\") {\r\n val.City = val.State = val.Zip = val.Street1 = val.Street2 = undefined;\r\n }\r\n }\r\n setAddressEditable(val);\r\n };\r\n\r\n const handleLoginClick = () => {\r\n handleClose();\r\n dispatch(setBreadcrumbs({ authDialogOpen: true }));\r\n };\r\n\r\n useEffect(() => {\r\n if (localCities && addressEditable?.Zip && addressEditable?.Zip?.length >= 5) {\r\n const localAddress = deliveryService.IsAddressLocal(addressEditable as Address, localCities);\r\n setLocalAddressData(localAddress);\r\n }\r\n }, [addressEditable, localCities]);\r\n\r\n const isAddressValid = useMemo(() => {\r\n const hasValue = (value?: string | null) => {\r\n return !(value === undefined || value === null || value === \"\");\r\n };\r\n\r\n const requiresCompanyName = [\r\n \"FuneralHome\",\r\n \"Hospital\",\r\n \"School\",\r\n \"Business\",\r\n \"Cemetery\",\r\n \"Church\",\r\n \"Email\",\r\n ].includes(addressEditable?.xp?.addressType);\r\n\r\n const isValid =\r\n !isUndefined(addressEditable) &&\r\n !isEqual(addressEditable, addressStatic) &&\r\n hasValue(addressEditable?.FirstName) &&\r\n hasValue(addressEditable?.LastName) &&\r\n hasValue(addressEditable?.Street1) &&\r\n hasValue(addressEditable?.State) &&\r\n hasValue(addressEditable?.City) &&\r\n hasValue(addressEditable?.Zip) &&\r\n (hasValue(addressEditable?.xp?.addressType) || variant === \"Billing\") &&\r\n (hasValue(addressEditable?.CompanyName) || !requiresCompanyName) &&\r\n addressEditable.Zip!.length >= 5 &&\r\n hasValue(addressEditable?.Phone) &&\r\n addressEditable.Phone!.length > 9;\r\n\r\n return isValid;\r\n }, [addressEditable, addressStatic, variant]);\r\n\r\n const localProducts = useMemo(() => {\r\n if (deliveryMethods) {\r\n return products?.filter((p) => !deliveryService.CanDeliveryNationWide(deliveryMethods, p));\r\n } else return [];\r\n }, [deliveryMethods, products]);\r\n\r\n const onlyLocal = (): boolean => {\r\n return !!(products && localProducts && products.length === localProducts.length);\r\n };\r\n\r\n const redirectToFAQ = () => {\r\n window.open(\"https://www.bachmans.com/customer-service/frequently-asked-questions\", \"_blank\");\r\n };\r\n\r\n const hospitalDisclaimerLabel =\r\n addressEditable?.xp?.addressType === \"Hospital\" ? (\r\n \r\n All hospital deliveries are final.\r\n \r\n \r\n ) : (\r\n <>\r\n );\r\n\r\n return (\r\n \r\n {avalaraSuggested && loading && (\r\n
\r\n \r\n \r\n Updating Address...\r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n {avalaraSuggested && (\r\n \r\n \r\n Please Verify Your Address\r\n \r\n \r\n We may have found a more precise version of the address you entered.{\" \"}\r\n \r\n
\r\n
\r\n Please select the correct address below to ensure timely and accurate delivery.\r\n
\r\n
\r\n )}\r\n {!avalaraSuggested && (\r\n \r\n {variant !== \"InStorePickUp\" ? \"Recipient Information\" : \"Order Pickup Information\"}\r\n \r\n )}\r\n {variant === \"InStorePickUp\" && (\r\n Confirm pickup location and enter your pickup person\r\n )}\r\n {dialogTitle}\r\n {anonymous && !avalaraSuggested && variant !== \"InStorePickUp\" && (\r\n <>\r\n \r\n Already have an account?\r\n \r\n \r\n {hospitalDisclaimerLabel}\r\n \r\n )}\r\n {!anonymous && variant !== \"InStorePickUp\" && hospitalDisclaimerLabel}\r\n
\r\n\r\n {avalaraSuggested ? (\r\n \r\n \r\n \r\n \r\n submitAddress(addressEditable)}\r\n className={classes.addressButton}\r\n >\r\n
\r\n Entered Address\r\n {addressEditable?.Street1}\r\n {addressEditable?.Street2 && {addressEditable.Street2}}\r\n {`${addressEditable?.City}, ${addressEditable?.State} ${addressEditable?.Zip}`}\r\n
\r\n \r\n
\r\n \r\n submitAddress(avalaraSuggested)}\r\n className={`${classes.addressButton} ${classes.addressButtonSuggested}`}\r\n >\r\n
\r\n Suggested Address\r\n {avalaraSuggested?.Street1}\r\n {`${avalaraSuggested?.City}, ${avalaraSuggested?.State} ${avalaraSuggested?.Zip}`}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n ) : (\r\n \r\n \r\n \r\n \r\n {!anonymous &&\r\n variant !== \"InStorePickUp\" &&\r\n !window.location.href.includes(\"address-book\") &&\r\n isUndefined(props.address?.ID) && (\r\n setSaveAddress(!saveAddress)}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Save Address\"\r\n >\r\n )}\r\n {onlyLocal() && localAddressData?.isLocal === false && (\r\n \r\n \r\n These products cannot be delivered to this location. Please change to Store Pickup, or shop from\r\n our Out Of Town category.\r\n \r\n \r\n )}\r\n {localProducts && localProducts.length > 0 && localAddressData?.isLocal === false && (\r\n \r\n {localProducts.map((p) => (\r\n \r\n \r\n {`${p.xp?.WebFacingProductTitle || p.Name} cannot be delivered to this location`}\r\n \r\n \r\n ))}\r\n \r\n )}\r\n {avalaraNotFound && (\r\n \r\n \r\n We are unable to validate this address.\r\n
\r\n Please confirm and re-enter your recipient address, or call our Order Center at (612) 861-7311\r\n to place your order.\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default AddressDialog;\r\n","export default __webpack_public_path__ + \"static/media/no-results.08c9d24d.svg\";","export const Errors = {\r\n genericLine1Error: \"We cannot process your order at this time.\",\r\n genericLine2Error: \"Please try again later.\",\r\n shipmentsNotValidLine1: \"Some of your selections are no longer valid\",\r\n shipmentsNotValidLine2: \"Please review your cart.\",\r\n inventoryError: \"Error submitting order. Item(s) on order are out of stock\",\r\n passwordNotMeetSecurity: \"Password does not meet security requirements.\",\r\n giftCardInventoryExceeded:\r\n \"Your order exceeds the number of Gift Cards we have available.
Please update your cart or contact (612) 861-7311 for assistance.\",\r\n giftCardProcessingError:\r\n \"We cannot process your Gift Card order at this time.
Please contact (612) 861-7311 for assistance.\",\r\n giftCardNotAvailable: \"cardNumber not available\",\r\n};\r\n","import React, { Fragment } from \"react\";\r\nimport { Box, Chip, createStyles, makeStyles, SvgIcon, Theme } from \"@material-ui/core\";\r\nimport { BachmansProduct } from \"../../../models/product\";\r\n\r\nexport interface GrownExclusiveProps {\r\n productGroup: BachmansProduct[];\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n flexGap: {\r\n // I really wish supported gap={3} without needing to create a wrapper component.\r\n gap: theme.spacing(1),\r\n },\r\n featuredFlag: {\r\n height: 20,\r\n fontSize: 10,\r\n fontFamily: theme.typography.body1.fontFamily,\r\n fontWeight: theme.typography.fontWeightBold,\r\n borderRadius: 0,\r\n \"&.MuiChip-colorSecondary\": {\r\n \"& svg.MuiChip-avatar\": {\r\n \"& path\": {\r\n fill: theme.palette.secondary.main,\r\n },\r\n },\r\n },\r\n \"& svg.MuiChip-avatar\": {\r\n backgroundColor: \"transparent\",\r\n padding: 3,\r\n \"& path\": {\r\n backgroundColor: \"transparent\",\r\n fill: theme.palette.primary.main,\r\n },\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst GrownExclusive: React.FunctionComponent = (props) => {\r\n const { productGroup } = props;\r\n const classes = useStyles();\r\n const checkProductXP = (key: string) => {\r\n return productGroup.filter((p) => p && p.xp && p.xp[key]).length > 0;\r\n };\r\n\r\n const isGrown = checkProductXP(\"IsBachmansGrown\");\r\n const isExclusive = checkProductXP(\"IsBachmansExclusive\");\r\n\r\n return (\r\n \r\n {(isGrown || isExclusive) && (\r\n \r\n {isGrown && (\r\n \r\n \r\n \r\n }\r\n label=\"Bachman's-Grown\"\r\n size=\"small\"\r\n >\r\n )}\r\n {isExclusive && (\r\n \r\n \r\n \r\n }\r\n label=\"Bachman's Exclusive\"\r\n size=\"small\"\r\n >\r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default GrownExclusive;\r\n","import React, { Fragment, useMemo } from \"react\";\r\nimport { useRouteMatch } from \"react-router-dom\";\r\nimport { Typography, Box, Divider, makeStyles, Theme, createStyles, Grid } from \"@material-ui/core\";\r\nimport logoPurple from \"../../assets/svg/logoPurple.svg\";\r\nimport Currency from \"react-currency-formatter\";\r\nimport { BachmansShipmentWithLineItems } from \"../../models/shipment\";\r\nimport { neutral } from \"../../themes/colors\";\r\nimport moment from \"moment-timezone\";\r\nimport theme from \"../../themes/main\";\r\nimport { Order } from \"ordercloud-javascript-sdk\";\r\nimport { deliveryTextMap } from \"../../constants/DeliveryText\";\r\nimport { sumBy } from \"lodash\";\r\nimport deliveryService from \"../../services/delivery.service\";\r\nimport eventService from \"../../services/event.service\";\r\nimport productService from \"../../services/product.service\";\r\n\r\nexport interface OrderConfirmationRouteMatch {\r\n userID: string;\r\n orderID: string;\r\n}\r\ninterface PrintOrderConfirmationProps {\r\n order: Order;\r\n shipments: BachmansShipmentWithLineItems[];\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n printContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: \"100%\",\r\n padding: theme.spacing(4, 4, 1, 4),\r\n position: \"relative\",\r\n },\r\n logo: {\r\n display: \"block\",\r\n width: 225,\r\n height: \"auto\",\r\n },\r\n root: {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n gap: theme.spacing(1),\r\n flexGrow: 1,\r\n \"& h1\": {\r\n marginBottom: theme.spacing(2),\r\n },\r\n },\r\n shipmentSection: {\r\n paddingTop: theme.spacing(1),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n deliveryText: {\r\n color: neutral.text_white_bg,\r\n fontWeight: theme.typography.fontWeightBold,\r\n lineHeight: 1.2,\r\n },\r\n deliveryDescription: {\r\n color: neutral.text_light_bg,\r\n },\r\n textDeliveryFee: {\r\n color: neutral.text_white_bg,\r\n textTransform: \"uppercase\",\r\n },\r\n orderSummaryTitle: {\r\n fontFamily: theme.typography.body1.fontFamily,\r\n fontSize: theme.typography.h3.fontSize,\r\n fontWeight: theme.typography.fontWeightBold,\r\n margin: theme.spacing(1, 0),\r\n color: theme.palette.grey[800],\r\n },\r\n textCurrency: {\r\n color: neutral.text_white_bg,\r\n fontWeight: theme.typography.fontWeightRegular,\r\n fontSize: 12,\r\n },\r\n textCurrencyShipmentTotal: {\r\n color: neutral.text_white_bg,\r\n fontWeight: theme.typography.fontWeightBold,\r\n fontSize: 14,\r\n lineHeight: 1.43,\r\n },\r\n divider: {\r\n margin: theme.spacing(1.5, 0),\r\n },\r\n darkDivider: {\r\n backgroundColor: theme.palette.grey[400],\r\n margin: theme.spacing(1.5, 0),\r\n },\r\n orderTotal: {\r\n color: neutral.text_white_bg,\r\n fontWeight: theme.typography.fontWeightBold,\r\n },\r\n textSummaryCurrency: {\r\n marginTop: \"auto\",\r\n marginBottom: \"auto\",\r\n fontSize: 14,\r\n },\r\n total: {\r\n fontWeight: theme.typography.fontWeightBold,\r\n fontSize: 20,\r\n },\r\n flexGap1: {\r\n gap: theme.spacing(1),\r\n },\r\n bgLight: {\r\n marginTop: \"auto\",\r\n backgroundColor: neutral.search_bg,\r\n },\r\n specialRequest: {\r\n fontStyle: \"italic\",\r\n padding: 0,\r\n width: \"100%\",\r\n marginBlock: theme.spacing(2),\r\n \"& .MuiOutlinedInput-multiline\": {\r\n backgroundColor: neutral.search_bg,\r\n padding: theme.spacing(1),\r\n },\r\n \"& .MuiButtonBase-root\": {\r\n padding: theme.spacing(0.5),\r\n opacity: 0.5,\r\n \"&:hover\": {\r\n opacity: 1,\r\n },\r\n \"& .MuiSvgIcon-root\": {\r\n fontSize: 12,\r\n },\r\n },\r\n },\r\n productInfoTable: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: theme.spacing(1),\r\n marginTop: theme.spacing(3),\r\n marginBottom: theme.spacing(3),\r\n \"& img\": {\r\n width: 40,\r\n height: 40,\r\n aspectRatio: \"1 / 1\",\r\n objectFit: \"cover\",\r\n boxShadow: theme.shadows[1],\r\n alignSelf: \"flex-start\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n alignSelf: \"center\",\r\n },\r\n },\r\n \"& h6\": {\r\n alignSelf: \"flex-start\",\r\n marginLeft: \"auto\",\r\n },\r\n },\r\n subtext: {\r\n color: theme.palette.grey[600],\r\n lineHeight: 1,\r\n },\r\n fragmentation: {\r\n display: \"table\",\r\n position: \"relative\",\r\n breakInside: \"avoid\",\r\n pageBreakInside: \"avoid\",\r\n },\r\n derpFace: {\r\n color: \"red\",\r\n },\r\n })\r\n);\r\n\r\nconst PrintOrderConfirmation: React.FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n const match = useRouteMatch();\r\n const { order, shipments } = props;\r\n\r\n const getShipmentItemsText = (shipment: BachmansShipmentWithLineItems) => {\r\n return shipment.LineItems?.length + \" \" + (shipment.LineItems?.length > 1 ? \"items\" : \"item\");\r\n };\r\n\r\n const totalHandling = useMemo(() => {\r\n return sumBy(shipments, (s) => s?.xp?.HandlingCharges || 0);\r\n }, [shipments]);\r\n\r\n const totalPicking = useMemo(() => {\r\n const pickupShipments = shipments?.filter((s) => deliveryService.IsPickUp(s.Shipper));\r\n return sumBy(\r\n pickupShipments,\r\n (s) => (s.Cost || 0) - (s?.xp?.HandlingCharges || 0) - (s?.xp?.WiredServiceFees || 0)\r\n );\r\n }, [shipments]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \"Bachman's\r\n \r\n Order Summary\r\n \r\n \r\n \r\n Order Number: {match.params.orderID}\r\n \r\n \r\n \r\n Order Placed: {moment(order?.DateSubmitted).format(\"MM/DD/YYYY\")}\r\n \r\n \r\n \r\n
\r\n {shipments?.map((shipment, i) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {deliveryTextMap[shipment.Shipper as string]?.description}\r\n \r\n \r\n Recipient: {++i} of {shipments?.length}\r\n \r\n \r\n \r\n \r\n \r\n {/* RECIPIENT DETAILS START */}\r\n \r\n \r\n {!deliveryService.IsPickUp(shipment.xp?.DeliveryMethod) &&\r\n shipment?.LineItems[0].xp?.DeliveryMethod !== \"Email\" && (\r\n \r\n {shipment.ToAddress?.CompanyName}\r\n \r\n )}\r\n \r\n {shipment.xp?.DeliveryMethod !== \"InStorePickUp\"\r\n ? shipment.ToAddress?.xp?.NickName && shipment.ToAddress?.xp?.NickName\r\n : shipment.ToAddress?.CompanyName + \" Store\"}\r\n \r\n \r\n {`${shipment.ToAddress?.FirstName} ${shipment.ToAddress?.LastName}`}\r\n \r\n {shipment?.LineItems[0].xp?.DeliveryMethod !== \"Email\" && (\r\n \r\n {shipment.ToAddress?.Street1}{\" \"}\r\n {shipment.ToAddress?.Street2 && `, ${shipment.ToAddress?.Street2}`}\r\n \r\n )}\r\n {shipment?.LineItems[0].xp?.DeliveryMethod !== \"Email\" && (\r\n \r\n {shipment.ToAddress?.City}, {shipment.ToAddress?.State} {shipment.ToAddress?.Zip}\r\n \r\n )}\r\n {shipment?.LineItems[0].xp?.DeliveryMethod === \"Email\" && (\r\n {shipment?.LineItems[0].xp.Email}\r\n )}\r\n \r\n \r\n {/* RECIPIENT DETAILS END */}\r\n\r\n {/* Hide Date while printing EGiftcard */}\r\n {shipment?.LineItems[0].xp?.DeliveryMethod !== \"Email\" && (\r\n \r\n {shipment?.LineItems[0]?.Product?.xp?.IsWorkShopEvent\r\n ? `Event Date: ${moment(shipment.xp?.RequestedDeliveryDate).format(\"MM/DD/YYYY\")}`\r\n : `Requested ${deliveryTextMap[shipment.Shipper as string]?.text} Date: ${moment(\r\n shipment.xp?.RequestedDeliveryDate\r\n ).format(\"MM/DD/YYYY\")}`}\r\n \r\n )}\r\n\r\n {/* LINE ITEM DETAILS START */}\r\n {shipment.LineItems.map((lineItem, index) => (\r\n
\r\n \r\n {lineItem.Product?.Name}\r\n
\r\n \r\n {productService.GetLineItemName(lineItem)}\r\n \r\n \r\n \r\n \r\n {lineItem.Product?.xp?.IsWorkShopEvent ? (\r\n \r\n {\"Item # \" + lineItem.ProductID + eventService.GetLineItemEventTimeRange(lineItem)}\r\n \r\n ) : (\r\n \r\n {\"Item # \" +\r\n lineItem.ProductID +\r\n productService.GetLineItemColorType(lineItem) +\r\n productService.GetLineItemSizeType(lineItem)}\r\n \r\n )}\r\n \r\n x {lineItem.Quantity}\r\n \r\n
\r\n
\r\n {lineItem.xp?.ProductNote && (\r\n \"{lineItem.xp?.ProductNote}\"\r\n )}\r\n
\r\n ))}\r\n {/* LINE ITEM DETAILS END */}\r\n
\r\n
\r\n\r\n \r\n {shipment.xp?.CardMessage && (\r\n \r\n \r\n Card Message\r\n \r\n \r\n {shipment.xp?.CardMessage?.line1}\r\n {shipment.xp?.CardMessage?.line2}\r\n {shipment.xp?.CardMessage?.line3}\r\n {shipment.xp?.CardMessage?.line4}\r\n \r\n \r\n )}\r\n {shipment.xp?.DeliveryNote && (\r\n \r\n \r\n Instructions\r\n \r\n \r\n {shipment.xp?.DeliveryNote}\r\n \r\n \r\n )}\r\n \r\n {deliveryTextMap[shipment.Shipper as string]?.description ? (\r\n \r\n {deliveryTextMap[shipment.Shipper as string]?.description +\r\n \" - \" +\r\n getShipmentItemsText(shipment)}\r\n \r\n ) : (\r\n \r\n {getShipmentItemsText(shipment)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n\r\n {!!(shipment.AssemblyCharges && shipment.AssemblyCharges > 0) && (\r\n \r\n \r\n Assembly Charges\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!!(shipment.PlacementCharges && shipment.PlacementCharges > 0) && (\r\n \r\n \r\n Placement Charges\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {deliveryTextMap[shipment.Shipper as string]?.fee}\r\n \r\n \r\n +\r\n \r\n \r\n \r\n\r\n {!!(shipment.xp?.WiredServiceFees && shipment.xp?.WiredServiceFees > 0) && (\r\n \r\n \r\n SERVICE FEE\r\n \r\n \r\n +\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n Shipment Total\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {shipments && }\r\n
\r\n ))}\r\n \r\n \r\n \r\n Subtotal\r\n \r\n \r\n \r\n \r\n \r\n {totalPicking > 0 && (\r\n \r\n \r\n Picking Fee\r\n \r\n \r\n +\r\n \r\n \r\n )}\r\n {totalHandling > 0 && (\r\n \r\n \r\n Handling Fee\r\n \r\n \r\n +\r\n \r\n \r\n )}\r\n \r\n \r\n Shipping\r\n \r\n \r\n +\r\n \r\n \r\n \r\n \r\n Tax\r\n \r\n \r\n +\r\n \r\n \r\n \r\n \r\n Total\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n Locations\r\n \r\n \r\n Bachman's brings beauty to life throughout the metro with six retail locations, a shop at the Galleria\r\n Edina, and floral departments within Lunds and Byerlys stores.\r\n
\r\n
\r\n For store hours and information please visit our Store Locator.\r\n
\r\n
\r\n \r\n \r\n Customer Service\r\n \r\n \r\n For questions or concerns regarding your order,\r\n
\r\n contact our customer service team.\r\n
\r\n Local: (612) 861-8818\r\n
\r\n Toll Free: 1 (877) 222-4626\r\n
\r\n Email: CustomerService@bachmans.com\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PrintOrderConfirmation;\r\n","import { Box, createStyles, Grid, makeStyles, Paper, Theme, Typography, useTheme } from \"@material-ui/core\";\r\nimport React, { Fragment, FunctionComponent, useContext, useEffect, useState } from \"react\";\r\nimport ReactMarkdown from \"react-markdown\";\r\nimport { PurplePerksContext } from \"../../providers/contentful\";\r\nimport gfm from \"remark-gfm\";\r\nimport { DoubleOutlinedBtn } from \"./DoubleOutlinedBtn\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { AppDispatch } from \"../../redux/store\";\r\nimport { setBreadcrumbs } from \"../../redux/slices/breadcrumbs\";\r\nimport jitterbitService from \"../../services/jitterbit.service\";\r\nimport bachPP from \"../../services/bachmansPurplePerks.service\";\r\nimport BachmansLoading from \"./BachmansLoading\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n title: {\r\n textAlign: \"center\",\r\n textTransform: \"capitalize\",\r\n marginBottom: theme.spacing(4),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n textAlign: \"left\",\r\n },\r\n },\r\n gridContainerPurplePerks: {\r\n justifyContent: \"center\",\r\n },\r\n gridItemPurplePerks: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: theme.spacing(3),\r\n flexWrap: \"wrap\",\r\n },\r\n imgPurplePerks: {\r\n display: \"block\",\r\n width: \"clamp(100px, 20vw, 200px) !important\",\r\n },\r\n imgPurplePerksAuth: {\r\n display: \"block\",\r\n marginRight: theme.spacing(2),\r\n },\r\n titlePurplePerks: {\r\n fontWeight: theme.typography.fontWeightRegular,\r\n textAlign: \"left\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n maxWidth: \"19ch\",\r\n },\r\n },\r\n listPurplePerks: {\r\n padding: theme.spacing(1, 2),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n padding: theme.spacing(1, 5),\r\n },\r\n \"& > ul\": {\r\n marginTop: \"0\",\r\n marginBottom: \"0\",\r\n },\r\n \"& * li\": {\r\n listStyleType: \"disc\",\r\n display: \"list-item\",\r\n padding: theme.spacing(1, 0),\r\n \"&::marker\": {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n },\r\n listPurplePerksAuth: {\r\n \"& > ul\": {\r\n marginTop: \"0\",\r\n marginBottom: \"0\",\r\n },\r\n \"& * li\": {\r\n listStyleType: \"disc\",\r\n display: \"list-item\",\r\n padding: theme.spacing(1, 0),\r\n \"&::marker\": {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n },\r\n })\r\n);\r\n\r\ninterface PurplePerksFullProps {\r\n isAuthenticating?: boolean; //in authdialog -\r\n displayTitle?: boolean;\r\n}\r\n\r\nconst PurplePerksFull: FunctionComponent = (propsArgs: PurplePerksFullProps) => {\r\n const classes = useStyles();\r\n const args = { ...{ displayTitle: true, isAuthenticating: false, ...propsArgs } }; /// setting default value to optional props.\r\n const { displayTitle, isAuthenticating } = args; // pulling out args to make a bit cleaner\r\n const purplePerks = useContext(PurplePerksContext);\r\n const [preBoldText, setPreBoldText] = useState();\r\n const [postBoldText, setPostBoldText] = useState();\r\n const [boldText, setBoldText] = useState();\r\n const { anonymous, user, patchUser } = useContext(SessionContext);\r\n const [loading, setLoading] = useState(false);\r\n const dispatch = useDispatch();\r\n\r\n const history = useHistory();\r\n\r\n const theme = useTheme();\r\n\r\n useEffect(() => {\r\n if (purplePerks?.data?.fields?.title) {\r\n const title = purplePerks?.data?.fields?.title;\r\n setPreBoldText(title.substring(0, title.indexOf(\"|\")));\r\n setBoldText(title.substring(title.indexOf(\"|\") + 1, title.lastIndexOf(\"|\")));\r\n setPostBoldText(title.substring(title.lastIndexOf(\"|\") + 1, title.length));\r\n }\r\n }, [purplePerks, displayTitle]);\r\n\r\n const handleRegisterClick = async () => {\r\n if (anonymous) {\r\n dispatch(setBreadcrumbs({ authDialogOpen: true, authDialogState: \"register\" }));\r\n } else if (user?.xp?.CECSAwardAccountID || user?.xp?.LoyaltyID) {\r\n history.push(\"/account/purple-perks\");\r\n } else {\r\n //user is authenticated but has not signed up for purple perks\r\n await registerForPurplePerks();\r\n }\r\n };\r\n\r\n const registerForPurplePerks = async () => {\r\n try {\r\n setLoading(true);\r\n if (user && patchUser) {\r\n const ppAccount = await jitterbitService.RegisterPurplePerksCECS(user);\r\n const updatedUser = await patchUser({ xp: { LoyaltyCardNumber: ppAccount.data } });\r\n if (updatedUser) {\r\n let ppAccountBalanceInfo = await bachPP.CheckBalanceAsync(updatedUser);\r\n ppAccountBalanceInfo?.CECSAwardAccountID &&\r\n (await patchUser({ xp: { CECSAwardAccountID: ppAccountBalanceInfo?.CECSAwardAccountID } }));\r\n }\r\n }\r\n } finally {\r\n setLoading(false);\r\n history.push(\"/account/purple-perks\");\r\n }\r\n };\r\n\r\n return !isAuthenticating ? (\r\n \r\n {displayTitle && (\r\n \r\n Bachman's Loyalty Program\r\n \r\n )}\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {preBoldText}\r\n {boldText}\r\n {postBoldText}\r\n \r\n handleRegisterClick() }}\r\n styleProps={{\r\n padding: theme.spacing(0.5, 5),\r\n margin: theme.spacing(2, 0),\r\n whiteSpace: \"nowrap\",\r\n }}\r\n />\r\n \r\n \r\n \r\n {purplePerks.data?.fields?.info && (\r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n {preBoldText}\r\n {boldText}\r\n {postBoldText}\r\n \r\n \r\n {purplePerks.data?.fields?.info && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PurplePerksFull;\r\n","const states = [\r\n { label: \"Alabama\", value: \"AL\", country: \"US\" },\r\n { label: \"Alaska\", value: \"AK\", country: \"US\" },\r\n { label: \"Arizona\", value: \"AZ\", country: \"US\" },\r\n { label: \"Arkansas\", value: \"AR\", country: \"US\" },\r\n { label: \"California\", value: \"CA\", country: \"US\" },\r\n { label: \"Colorado\", value: \"CO\", country: \"US\" },\r\n { label: \"Connecticut\", value: \"CT\", country: \"US\" },\r\n { label: \"Delaware\", value: \"DE\", country: \"US\" },\r\n { label: \"District of Columbia\", value: \"DC\", country: \"US\" },\r\n { label: \"Florida\", value: \"FL\", country: \"US\" },\r\n { label: \"Georgia\", value: \"GA\", country: \"US\" },\r\n { label: \"Hawaii\", value: \"HI\", country: \"US\" },\r\n { label: \"Idaho\", value: \"ID\", country: \"US\" },\r\n { label: \"Illinois\", value: \"IL\", country: \"US\" },\r\n { label: \"Indiana\", value: \"IN\", country: \"US\" },\r\n { label: \"Iowa\", value: \"IA\", country: \"US\" },\r\n { label: \"Kansas\", value: \"KS\", country: \"US\" },\r\n { label: \"Kentucky\", value: \"KY\", country: \"US\" },\r\n { label: \"Louisiana\", value: \"LA\", country: \"US\" },\r\n { label: \"Maine\", value: \"ME\", country: \"US\" },\r\n { label: \"Maryland\", value: \"MD\", country: \"US\" },\r\n { label: \"Massachusetts\", value: \"MA\", country: \"US\" },\r\n { label: \"Michigan\", value: \"MI\", country: \"US\" },\r\n { label: \"Minnesota\", value: \"MN\", country: \"US\" },\r\n { label: \"Mississippi\", value: \"MS\", country: \"US\" },\r\n { label: \"Missouri\", value: \"MO\", country: \"US\" },\r\n { label: \"Montana\", value: \"MT\", country: \"US\" },\r\n { label: \"Nebraska\", value: \"NE\", country: \"US\" },\r\n { label: \"Nevada\", value: \"NV\", country: \"US\" },\r\n { label: \"New Hampshire\", value: \"NH\", country: \"US\" },\r\n { label: \"New Jersey\", value: \"NJ\", country: \"US\" },\r\n { label: \"New Mexico\", value: \"NM\", country: \"US\" },\r\n { label: \"New York\", value: \"NY\", country: \"US\" },\r\n { label: \"North Carolina\", value: \"NC\", country: \"US\" },\r\n { label: \"North Dakota\", value: \"ND\", country: \"US\" },\r\n { label: \"Ohio\", value: \"OH\", country: \"US\" },\r\n { label: \"Oklahoma\", value: \"OK\", country: \"US\" },\r\n { label: \"Oregon\", value: \"OR\", country: \"US\" },\r\n { label: \"Pennsylvania\", value: \"PA\", country: \"US\" },\r\n { label: \"Rhode Island\", value: \"RI\", country: \"US\" },\r\n { label: \"South Carolina\", value: \"SC\", country: \"US\" },\r\n { label: \"South Dakota\", value: \"SD\", country: \"US\" },\r\n { label: \"Tennessee\", value: \"TN\", country: \"US\" },\r\n { label: \"Texas\", value: \"TX\", country: \"US\" },\r\n { label: \"Utah\", value: \"UT\", country: \"US\" },\r\n { label: \"Vermont\", value: \"VT\", country: \"US\" },\r\n { label: \"Virginia\", value: \"VA\", country: \"US\" },\r\n { label: \"Washington\", value: \"WA\", country: \"US\" },\r\n { label: \"West Virginia\", value: \"WV\", country: \"US\" },\r\n { label: \"Wisconsin\", value: \"WI\", country: \"US\" },\r\n { label: \"Wyoming\", value: \"WY\", country: \"US\" },\r\n];\r\n\r\nconst countries = [\r\n { label: \"United States of America\", value: \"US\" },\r\n { label: \"Afghanistan\", value: \"AF\" },\r\n { label: \"Ã…land Islands\", value: \"AX\" },\r\n { label: \"Albania\", value: \"AL\" },\r\n { label: \"Algeria\", value: \"DZ\" },\r\n { label: \"American Samoa\", value: \"AS\" },\r\n { label: \"Andorra\", value: \"AD\" },\r\n { label: \"Angola\", value: \"AO\" },\r\n { label: \"Anguilla\", value: \"AI\" },\r\n { label: \"Antarctica\", value: \"AQ\" },\r\n { label: \"Antigua and Barbuda\", value: \"AG\" },\r\n { label: \"Argentina\", value: \"AR\" },\r\n { label: \"Armenia\", value: \"AM\" },\r\n { label: \"Aruba\", value: \"AW\" },\r\n { label: \"Australia\", value: \"AU\" },\r\n { label: \"Austria\", value: \"AT\" },\r\n { label: \"Azerbaijan\", value: \"AZ\" },\r\n { label: \"Bahamas\", value: \"BS\" },\r\n { label: \"Bahrain\", value: \"BH\" },\r\n { label: \"Bangladesh\", value: \"BD\" },\r\n { label: \"Barbados\", value: \"BB\" },\r\n { label: \"Belarus\", value: \"BY\" },\r\n { label: \"Belgium\", value: \"BE\" },\r\n { label: \"Belize\", value: \"BZ\" },\r\n { label: \"Benin\", value: \"BJ\" },\r\n { label: \"Bermuda\", value: \"BM\" },\r\n { label: \"Bhutan\", value: \"BT\" },\r\n { label: \"Bolivia\", value: \"BO\" },\r\n { label: \"Bosnia and Herzegovina\", value: \"BA\" },\r\n { label: \"Botswana\", value: \"BW\" },\r\n { label: \"Bouvet Island\", value: \"BV\" },\r\n { label: \"Brazil\", value: \"BR\" },\r\n { label: \"British Indian Ocean Territory\", value: \"IO\" },\r\n { label: \"Brunei Darussalam\", value: \"BN\" },\r\n { label: \"Bulgaria\", value: \"BG\" },\r\n { label: \"Burkina Faso\", value: \"BF\" },\r\n { label: \"Burundi\", value: \"BI\" },\r\n { label: \"Cambodia\", value: \"KH\" },\r\n { label: \"Cameroon\", value: \"CM\" },\r\n { label: \"Canada\", value: \"CA\" },\r\n { label: \"Cape Verde\", value: \"CV\" },\r\n { label: \"Cayman Islands\", value: \"KY\" },\r\n { label: \"Central African Republic\", value: \"CF\" },\r\n { label: \"Chad\", value: \"TD\" },\r\n { label: \"Chile\", value: \"CL\" },\r\n { label: \"China\", value: \"CN\" },\r\n { label: \"Christmas Island Australia\", value: \"CX\" },\r\n { label: \"Cocos Keeling Islands\", value: \"CC\" },\r\n { label: \"Colombia\", value: \"CO\" },\r\n { label: \"Comoros\", value: \"KM\" },\r\n { label: \"Congo\", value: \"CG\" },\r\n { label: \"Congo, D.R.\", value: \"CD\" },\r\n { label: \"Cook Islands\", value: \"CK\" },\r\n { label: \"Costa Rica\", value: \"CR\" },\r\n { label: \"Cote D'Ivoire Ivory Coast\", value: \"CI\" },\r\n { label: \"Croatia Hrvatska\", value: \"HR\" },\r\n { label: \"Cuba\", value: \"CU\" },\r\n { label: \"Cyprus\", value: \"CY\" },\r\n { label: \"Czech Republic\", value: \"CZ\" },\r\n { label: \"Denmark\", value: \"DK\" },\r\n { label: \"Djibouti\", value: \"DJ\" },\r\n { label: \"Dominica\", value: \"DM\" },\r\n { label: \"Dominican Republic\", value: \"DO\" },\r\n { label: \"Ecuador\", value: \"EC\" },\r\n { label: \"Egypt\", value: \"EG\" },\r\n { label: \"El Salvador\", value: \"SV\" },\r\n { label: \"Equatorial Guinea\", value: \"GQ\" },\r\n { label: \"Eritrea\", value: \"ER\" },\r\n { label: \"Estonia\", value: \"EE\" },\r\n { label: \"Ethiopia\", value: \"ET\" },\r\n { label: \"Faeroe Islands\", value: \"FO\" },\r\n { label: \"Falkland Islands Malvinas\", value: \"FK\" },\r\n { label: \"Fiji\", value: \"FJ\" },\r\n { label: \"Finland\", value: \"FI\" },\r\n { label: \"France\", value: \"FR\" },\r\n { label: \"France, Metropolitan\", value: \"FX\" },\r\n { label: \"French Guiana\", value: \"GF\" },\r\n { label: \"French Polynesia\", value: \"PF\" },\r\n { label: \"French Southern Territories\", value: \"TF\" },\r\n { label: \"Gabon\", value: \"GA\" },\r\n { label: \"Gambia\", value: \"GM\" },\r\n { label: \"Georgia\", value: \"GE\" },\r\n { label: \"Germany\", value: \"DE\" },\r\n { label: \"Ghana\", value: \"GH\" },\r\n { label: \"Gibraltar\", value: \"GI\" },\r\n { label: \"Greece\", value: \"GR\" },\r\n { label: \"Greenland\", value: \"GL\" },\r\n { label: \"Grenada\", value: \"GD\" },\r\n { label: \"Guadeloupe\", value: \"GP\" },\r\n { label: \"Guam\", value: \"GU\" },\r\n { label: \"Guatemala\", value: \"GT\" },\r\n { label: \"Guinea\", value: \"GN\" },\r\n { label: \"Guinea Bissau\", value: \"GW\" },\r\n { label: \"Guyana\", value: \"GY\" },\r\n { label: \"Haiti\", value: \"HT\" },\r\n { label: \"Heard and McDonald Is.\", value: \"HM\" },\r\n { label: \"Honduras\", value: \"HN\" },\r\n { label: \"Hong Kong\", value: \"HK\" },\r\n { label: \"Hungary\", value: \"HU\" },\r\n { label: \"Iceland\", value: \"IS\" },\r\n { label: \"India\", value: \"IN\" },\r\n { label: \"Indonesia\", value: \"ID\" },\r\n { label: \"Iran\", value: \"IR\" },\r\n { label: \"Iraq\", value: \"IQ\" },\r\n { label: \"Isle of Man\", value: \"IM\" },\r\n { label: \"Ireland\", value: \"IE\" },\r\n { label: \"Israel\", value: \"IL\" },\r\n { label: \"Italy\", value: \"IT\" },\r\n { label: \"Jamaica\", value: \"JM\" },\r\n { label: \"Japan\", value: \"JP\" },\r\n { label: \"Jersey\", value: \"JE\" },\r\n { label: \"Jordan\", value: \"JO\" },\r\n { label: \"Kazakhstan\", value: \"KZ\" },\r\n { label: \"Kenya\", value: \"KE\" },\r\n { label: \"Kiribati\", value: \"KI\" },\r\n { label: \"Korea North\", value: \"KP\" },\r\n { label: \"Korea South\", value: \"KR\" },\r\n { label: \"Kuwait\", value: \"KW\" },\r\n { label: \"Kyrgyzstan\", value: \"KG\" },\r\n { label: \"Lao P.Dem.R.\", value: \"LA\" },\r\n { label: \"Latvia\", value: \"LV\" },\r\n { label: \"Lebanon\", value: \"LB\" },\r\n { label: \"Lesotho\", value: \"LS\" },\r\n { label: \"Liberia\", value: \"LR\" },\r\n { label: \"Libyan Arab Jamahiriya\", value: \"LY\" },\r\n { label: \"Liechtenstein\", value: \"LI\" },\r\n { label: \"Lithuania\", value: \"LT\" },\r\n { label: \"Luxembourg\", value: \"LU\" },\r\n { label: \"Macau\", value: \"MO\" },\r\n { label: \"Macedonia\", value: \"MK\" },\r\n { label: \"Madagascar\", value: \"MG\" },\r\n { label: \"Malawi\", value: \"MW\" },\r\n { label: \"Malaysia\", value: \"MY\" },\r\n { label: \"Maldives\", value: \"MV\" },\r\n { label: \"Mali\", value: \"ML\" },\r\n { label: \"Malta\", value: \"MT\" },\r\n { label: \"Marshall Islands\", value: \"MH\" },\r\n { label: \"Martinique\", value: \"MQ\" },\r\n { label: \"Mauritania\", value: \"MR\" },\r\n { label: \"Mauritius\", value: \"MU\" },\r\n { label: \"Mayotte\", value: \"YT\" },\r\n { label: \"Mexico\", value: \"MX\" },\r\n { label: \"Micronesia\", value: \"FM\" },\r\n { label: \"Moldova\", value: \"MD\" },\r\n { label: \"Monaco\", value: \"MC\" },\r\n { label: \"Mongolia\", value: \"MN\" },\r\n { label: \"Montenegro\", value: \"ME\" },\r\n { label: \"Montserrat\", value: \"MS\" },\r\n { label: \"Morocco\", value: \"MA\" },\r\n { label: \"Mozambique\", value: \"MZ\" },\r\n { label: \"Myanmar\", value: \"MM\" },\r\n { label: \"Namibia\", value: \"NA\" },\r\n { label: \"Nauru\", value: \"NR\" },\r\n { label: \"Nepal\", value: \"NP\" },\r\n { label: \"Netherlands\", value: \"NL\" },\r\n { label: \"Netherlands Antilles\", value: \"AN\" },\r\n { label: \"New Caledonia\", value: \"NC\" },\r\n { label: \"New Zealand\", value: \"NZ\" },\r\n { label: \"Nicaragua\", value: \"NI\" },\r\n { label: \"Niger\", value: \"NE\" },\r\n { label: \"Nigeria\", value: \"NG\" },\r\n { label: \"Niue\", value: \"NU\" },\r\n { label: \"Norfolk Island\", value: \"NF\" },\r\n { label: \"Northern Mariana Islands\", value: \"MP\" },\r\n { label: \"Norway\", value: \"NO\" },\r\n { label: \"Oman\", value: \"OM\" },\r\n { label: \"Pakistan\", value: \"PK\" },\r\n { label: \"Palau\", value: \"PW\" },\r\n { label: \"Palestinian Territory, Occupied\", value: \"PS\" },\r\n { label: \"Panama\", value: \"PA\" },\r\n { label: \"Papua New Guinea\", value: \"PG\" },\r\n { label: \"Paraguay\", value: \"PY\" },\r\n { label: \"Peru\", value: \"PE\" },\r\n { label: \"Philippines\", value: \"PH\" },\r\n { label: \"Pitcairn\", value: \"PN\" },\r\n { label: \"Poland\", value: \"PL\" },\r\n { label: \"Portugal\", value: \"PT\" },\r\n { label: \"Puerto Rico\", value: \"PR\" },\r\n { label: \"Qatar\", value: \"QA\" },\r\n { label: \"Reunion\", value: \"RE\" },\r\n { label: \"Romania\", value: \"RO\" },\r\n { label: \"Russian Federation\", value: \"RU\" },\r\n { label: \"Rwanda\", value: \"RW\" },\r\n { label: \"Saint Helena\", value: \"SH\" },\r\n { label: \"Saint Kitts and Nevis\", value: \"KN\" },\r\n { label: \"Saint Lucia\", value: \"LC\" },\r\n { label: \"Saint Pierre and Miquelon\", value: \"PM\" },\r\n { label: \"Saint Vincent and the Grenadines\", value: \"VC\" },\r\n { label: \"Samoa\", value: \"WS\" },\r\n { label: \"San Marino\", value: \"SM\" },\r\n { label: \"Sao Tome and Principe\", value: \"ST\" },\r\n { label: \"Saudi Arabia\", value: \"SA\" },\r\n { label: \"Senegal\", value: \"SN\" },\r\n { label: \"Serbia\", value: \"RS\" },\r\n { label: \"Seychelles\", value: \"SC\" },\r\n { label: \"Sierra Leone\", value: \"SL\" },\r\n { label: \"Singapore\", value: \"SG\" },\r\n { label: \"Slovakia\", value: \"SK\" },\r\n { label: \"Slovenia\", value: \"SI\" },\r\n { label: \"Solomon Islands\", value: \"SB\" },\r\n { label: \"Somalia\", value: \"SO\" },\r\n { label: \"South Africa\", value: \"ZA\" },\r\n { label: \"S. Georgia & S. Sandwich Is.\", value: \"GS\" },\r\n { label: \"Spain\", value: \"ES\" },\r\n { label: \"Sri Lanka\", value: \"LK\" },\r\n { label: \"Sudan\", value: \"SD\" },\r\n { label: \"Suriname\", value: \"SR\" },\r\n { label: \"Svalbard & Jan Mayen Is.\", value: \"SJ\" },\r\n { label: \"Swaziland\", value: \"SZ\" },\r\n { label: \"Sweden\", value: \"SE\" },\r\n { label: \"Switzerland\", value: \"CH\" },\r\n { label: \"Syrian Arab Rep.\", value: \"SY\" },\r\n { label: \"Taiwan\", value: \"TW\" },\r\n { label: \"Tajikistan\", value: \"TJ\" },\r\n { label: \"Tanzania\", value: \"TZ\" },\r\n { label: \"Thailand\", value: \"TH\" },\r\n { label: \"Timor-Leste\", value: \"TG\" },\r\n { label: \"Togo\", value: \"TG\" },\r\n { label: \"Tokelau\", value: \"TK\" },\r\n { label: \"Tonga\", value: \"TO\" },\r\n { label: \"Trinidad and Tobago\", value: \"TT\" },\r\n { label: \"Tunisia\", value: \"TN\" },\r\n { label: \"Turkey\", value: \"TR\" },\r\n { label: \"Turkmenistan\", value: \"TM\" },\r\n { label: \"Turks and Caicos Islands\", value: \"TC\" },\r\n { label: \"Tuvalu\", value: \"TU\" },\r\n { label: \"Uganda\", value: \"UG\" },\r\n { label: \"Ukraine\", value: \"UA\" },\r\n { label: \"United Kingdom\", value: \"GB\" },\r\n { label: \"United Arab Emirates\", value: \"AE\" },\r\n { label: \"US Minor Outlying Is.\", value: \"UM\" },\r\n { label: \"Uruguay\", value: \"UY\" },\r\n { label: \"Uzbekistan\", value: \"UZ\" },\r\n { label: \"Vanuatu\", value: \"VU\" },\r\n { label: \"Vatican City State\", value: \"VC\" },\r\n { label: \"Venezuela\", value: \"VE\" },\r\n { label: \"Viet Nam\", value: \"VN\" },\r\n { label: \"Virgin Islands British\", value: \"VG\" },\r\n { label: \"Virgin Islands US\", value: \"VI\" },\r\n { label: \"Wallis and Futuna Islnds\", value: \"WF\" },\r\n { label: \"Western Sahara\", value: \"EH\" },\r\n { label: \"Yemen\", value: \"YE\" },\r\n { label: \"Yugoslavia\", value: \"YU\" },\r\n { label: \"Zambia\", value: \"ZM\" },\r\n { label: \"Zimbabwe\", value: \"ZW\" },\r\n];\r\n\r\nconst geography = {\r\n States: states,\r\n Countries: countries,\r\n};\r\nexport default geography;\r\n","import React from \"react\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\r\nimport LocationOnIcon from \"@material-ui/icons/LocationOn\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport parse from \"autosuggest-highlight/parse\";\r\nimport throttle from \"lodash/throttle\";\r\nimport locationService from \"../../../services/locationService\";\r\nimport { AddressAutoCompleteProps } from \".\";\r\nimport { Destination } from \"../../../constants/destinations\";\r\nimport { cloneDeep } from \"lodash\";\r\n\r\nexport interface GoogleAddress {\r\n description?: string;\r\n matched_substrings?: any[];\r\n place_id?: string;\r\n reference?: string;\r\n terms?: GoogleAddressTerms[];\r\n types?: string[];\r\n structured_formatting?: StructuredFormatting;\r\n}\r\n\r\ninterface StructuredFormatting {\r\n main_text: string;\r\n secondary_text: string;\r\n}\r\ninterface GoogleAddressTerms {\r\n offset: number;\r\n value: string;\r\n}\r\n\r\nfunction loadScript(src: string, position: HTMLHeadElement | null, id: string) {\r\n if (!position) {\r\n return;\r\n }\r\n\r\n const script = document.createElement(\"script\");\r\n script.setAttribute(\"async\", \"\");\r\n script.setAttribute(\"id\", id);\r\n script.src = src;\r\n position.appendChild(script);\r\n}\r\n\r\nlet autocompleteService: any = {};\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icon: {\r\n color: theme.palette.primary.main,\r\n marginRight: theme.spacing(2),\r\n },\r\n}));\r\n\r\ninterface GoogleAddressCompleteProps extends AddressAutoCompleteProps {\r\n destination?: Destination;\r\n inputValue: string;\r\n onInputChange: (val?: string) => void;\r\n error?: boolean;\r\n}\r\n\r\nconst GoogleAutoComplete: React.FunctionComponent = (props) => {\r\n const { destination, inputValue, onInputChange, error } = props;\r\n const classes = useStyles();\r\n const [value, setValue] = React.useState({});\r\n //const [inputValue, setInputValue] = React.useState(\"\");\r\n const [options, setOptions] = React.useState([]);\r\n const loaded = React.useRef(false);\r\n\r\n if (typeof window !== \"undefined\" && !loaded.current) {\r\n if (!document.querySelector(\"#google-maps\")) {\r\n loadScript(\r\n `https://maps.googleapis.com/maps/api/js?key=${process.env.REACT_APP_GOOGLE_API_KEY}&libraries=places`,\r\n document.querySelector(\"head\"),\r\n \"google-maps\"\r\n );\r\n }\r\n\r\n loaded.current = true;\r\n }\r\n const fetch = React.useMemo(\r\n () =>\r\n throttle((request, callback) => {\r\n autocompleteService.current.getPlacePredictions(request, callback);\r\n }, 200),\r\n []\r\n );\r\n\r\n const getDetails = (address: GoogleAddress) => {\r\n const formField = document.getElementById(\"google-map-autocomplete\") as HTMLDivElement;\r\n if (address && address.place_id) {\r\n var service = new window.google.maps.places.PlacesService(formField);\r\n service.getDetails({ placeId: address.place_id! }, function (result: any, status: any) {\r\n const ocAddress = locationService.MapGoogleToOrderCloud(result, props.addressType !== \"Residence\");\r\n setValue(address);\r\n if (props.onAddressSelect) {\r\n props.onAddressSelect(ocAddress);\r\n }\r\n setOptions(address ? [address, ...options] : options);\r\n });\r\n } else {\r\n setValue(address);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n let active = true;\r\n\r\n if (!autocompleteService.current && window.google) {\r\n autocompleteService.current = new window.google.maps.places.AutocompleteService();\r\n }\r\n if (!autocompleteService.current) {\r\n return undefined;\r\n }\r\n\r\n if (inputValue === \"\") {\r\n setOptions(value ? [value] : []);\r\n return undefined;\r\n }\r\n\r\n fetch({ input: inputValue, types: props?.destination?.googleOptions?.types }, (results: any) => {\r\n if (active) {\r\n let newOptions: any[] = [];\r\n\r\n if (value) {\r\n newOptions = [value];\r\n }\r\n\r\n if (results) {\r\n newOptions = [...newOptions, ...results];\r\n }\r\n\r\n setOptions(newOptions);\r\n }\r\n });\r\n\r\n return () => {\r\n active = false;\r\n };\r\n }, [value, inputValue, fetch, props?.destination?.googleOptions?.types]);\r\n\r\n const getInitialValue = (): any => {\r\n if (inputValue) {\r\n return inputValue;\r\n }\r\n return value || \"\";\r\n };\r\n\r\n return (\r\n (typeof option === \"string\" ? option : option?.description?.split(\",\")[0] || \"\")}\r\n clearOnBlur={false}\r\n filterOptions={(x) => x}\r\n options={options}\r\n includeInputInList\r\n filterSelectedOptions\r\n value={getInitialValue()}\r\n getOptionSelected={(option, value) => option.place_id === value?.place_id}\r\n onChange={(event, newValue: GoogleAddress) => {\r\n getDetails(newValue);\r\n }}\r\n onInputChange={(event, newInputValue) => onInputChange(newInputValue)}\r\n renderInput={(params) => (\r\n
\r\n \r\n \r\n )}\r\n renderOption={(option) => {\r\n const matches = option.structured_formatting.main_text_matched_substrings;\r\n const parts = parse(\r\n option.structured_formatting.main_text,\r\n matches.map((match: any) => [match.offset, match.offset + match.length])\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n\r\n \r\n {option.structured_formatting.secondary_text}\r\n \r\n \r\n \r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default GoogleAutoComplete;\r\n","import React, { Fragment, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { Address, BuyerAddress } from \"ordercloud-javascript-sdk\";\r\nimport {\r\n FormControl,\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n useMediaQuery,\r\n TextField,\r\n Grid,\r\n Theme,\r\n RadioGroup,\r\n FormControlLabel,\r\n Radio,\r\n Typography,\r\n makeStyles,\r\n createStyles,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardActions,\r\n} from \"@material-ui/core\";\r\nimport deliveryService from \"../../../services/delivery.service\";\r\nimport { cloneDeep, get, set } from \"lodash\";\r\nimport geography from \"../../../constants/geography\";\r\nimport { Destination } from \"../../../constants/destinations\";\r\nimport stringService from \"../../../services/string.service\";\r\nimport PhoneMaskInput from \"../PhoneMaskInput\";\r\nimport { Autocomplete } from \"@material-ui/lab\";\r\nimport { neutral } from \"../../../themes/colors\";\r\nimport { EditedTracker, RequiredValue } from \"../../../models/address\";\r\nimport locationService from \"../../../services/locationService\";\r\nimport GoogleAutoComplete from \"../AutoComplete/GoogleAutoComplete\";\r\n\r\nexport interface AddressFormProps {\r\n variant: \"Shipping\" | \"Billing\" | \"InStorePickUp\";\r\n address?: BuyerAddress;\r\n disabled?: boolean;\r\n addressStatic?: BuyerAddress;\r\n onAddressChange?: (value: BuyerAddress) => void;\r\n destinationOptions?: Destination[];\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n InStorePickUpWrapper: {\r\n display: \"flex\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n \"& MuiGrid-item:first-child\": {\r\n flex: \"none\",\r\n width: \"100%\",\r\n },\r\n },\r\n },\r\n CardStoreInformation: {\r\n backgroundColor: neutral.offwhite_bg,\r\n borderRadius: 0,\r\n flexGrow: 1,\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n [theme.breakpoints.up(\"lg\")]: { height: \"100%\" },\r\n },\r\n CardStoreActions: {\r\n justifyContent: \"flex-end\",\r\n gap: theme.spacing(1),\r\n marginTop: \"auto\",\r\n \"& a\": {\r\n color: neutral.strikethrough,\r\n margin: \"0 !important\",\r\n fontSize: 12,\r\n padding: theme.spacing(0.5, 1.5),\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst initialEditedTracker: EditedTracker = {\r\n FirstName: false,\r\n LastName: false,\r\n Street1: false,\r\n State: false,\r\n City: false,\r\n Zip: false,\r\n Phone: false,\r\n \"xp.addressType\": false,\r\n \"xp.Email\": false,\r\n CompanyName: false,\r\n};\r\n\r\nconst requiredFields: RequiredValue[] = [\r\n \"FirstName\",\r\n \"LastName\",\r\n \"Street1\",\r\n \"City\",\r\n \"Zip\",\r\n \"State\",\r\n \"Phone\",\r\n \"xp.addressType\",\r\n];\r\n\r\nconst AddressForm: React.FunctionComponent = (props) => {\r\n const { address, onAddressChange, addressStatic, destinationOptions, variant, disabled } = props;\r\n const [edited, setEdited] = useState();\r\n const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down(\"sm\"));\r\n const [bachmansStores, setBachmansStores] = useState();\r\n const [churchOption, setChurchOption] = useState(\"Staff\");\r\n const phoneInputRef = useRef(null);\r\n const classes = useStyles();\r\n const directionsUrl = locationService.DirectionsUrlPrefix;\r\n\r\n useEffect(() => {\r\n deliveryService.GetPickUpStores().then((stores) => setBachmansStores(stores));\r\n }, []);\r\n\r\n useEffect(() => {\r\n setEdited(initialEditedTracker);\r\n }, [addressStatic]);\r\n\r\n const handleAddressChange = (path: string, value?: string) => {\r\n if (edited) {\r\n setEdited(set(cloneDeep(edited), path, true));\r\n }\r\n const addressToUpdate = cloneDeep(address);\r\n let val = value || \"\";\r\n if ([\"Zip\", \"Phone\"].includes(path)) {\r\n val = stringService.OnlyNumbers(val);\r\n } else if ([\"FirstName\", \"LastName\", \"Email\"].includes(path)) {\r\n val = stringService.OnlyAlpha(val);\r\n }\r\n const updatedAddress = set(addressToUpdate || {}, path, val);\r\n if (onAddressChange) onAddressChange(updatedAddress);\r\n };\r\n\r\n const handleStateChange = (state: string | null) => {\r\n const addressToUpdate = {\r\n ...address,\r\n };\r\n if (state && state !== null) {\r\n addressToUpdate.State = state;\r\n }\r\n if (onAddressChange) {\r\n onAddressChange(addressToUpdate);\r\n }\r\n };\r\n\r\n const handleStoreSelect = (event: React.ChangeEvent) => {\r\n const selectedStore = bachmansStores?.find((store) => store.CompanyName === event.target.value);\r\n if (selectedStore) {\r\n set(selectedStore, \"xp.addressType\", \"InStorePickUp\");\r\n handleAddressSelect(selectedStore);\r\n }\r\n };\r\n\r\n const handleAddressSelect = (newAddress: Address) => {\r\n let updatedAddress = cloneDeep(address);\r\n if (updatedAddress) {\r\n updatedAddress.CompanyName = newAddress.CompanyName;\r\n updatedAddress.Street1 = newAddress.Street1;\r\n updatedAddress.Street2 = newAddress.Street2;\r\n updatedAddress.City = newAddress.City;\r\n updatedAddress.State = newAddress.State;\r\n updatedAddress.Zip = newAddress.Zip;\r\n if (newAddress.xp) {\r\n updatedAddress.xp = {\r\n addressType: updatedAddress.xp?.addressType,\r\n NickName: newAddress.xp?.NickName || updatedAddress?.xp?.NickName,\r\n ...newAddress.xp,\r\n };\r\n const addressToUpdate = {\r\n ...address,\r\n };\r\n const businessName = updatedAddress.CompanyName ? updatedAddress.CompanyName.toString().trim() : \"\";\r\n addressToUpdate.CompanyName = businessName;\r\n if (onAddressChange) {\r\n onAddressChange(addressToUpdate);\r\n }\r\n }\r\n if (newAddress.Phone && variant !== \"InStorePickUp\") {\r\n updatedAddress.Phone = newAddress.Phone;\r\n }\r\n if (onAddressChange) onAddressChange(updatedAddress);\r\n if ((!updatedAddress.Phone || updatedAddress.Phone === \"\") && phoneInputRef?.current && !isMobile) {\r\n phoneInputRef.current.selectionStart = 1;\r\n phoneInputRef.current.selectionEnd = 1;\r\n phoneInputRef.current.focus();\r\n }\r\n }\r\n };\r\n\r\n const displayError = (field: RequiredValue) => {\r\n const requiresCompanyName =\r\n destination?.googleOptions?.types && destination?.googleOptions.types[0] === \"establishment\";\r\n const editedValue = get(address, field) || \"\";\r\n return (\r\n edited &&\r\n edited[field] &&\r\n (requiredFields.includes(field) || (requiresCompanyName && field === \"CompanyName\")) &&\r\n (editedValue === \"\" ||\r\n (field === \"Phone\" && editedValue.length < 10) ||\r\n (field === \"Zip\" && editedValue.length < 5))\r\n );\r\n };\r\n\r\n const destination = useMemo(() => {\r\n return deliveryService.GetDestinationTypes().find((dest) => dest.type === address?.xp?.addressType);\r\n }, [address?.xp?.addressType]);\r\n\r\n return (\r\n \r\n {(address?.xp?.addressType === \"Church\" ||\r\n address?.xp?.addressType === \"FuneralHome\" ||\r\n address?.xp?.addressType === \"Cemetery\" ||\r\n address?.xp?.addressType === \"Hospital\") &&\r\n address?.xp?.addressType !== \"Email\" && (\r\n \r\n setChurchOption(e.target.value)}>\r\n } />\r\n }\r\n />\r\n \r\n \r\n )}\r\n {variant === \"InStorePickUp\" ? (\r\n \r\n \r\n \r\n \r\n {address?.CompanyName || \"\"}\r\n \r\n {address?.Street1 || \"\"}\r\n {address?.Street2 || \"\"}\r\n \r\n \r\n {address?.City || \"\"}, {address?.State || \"\"} {address?.Zip || \"\"}\r\n \r\n \r\n \r\n store.CompanyName === address?.CompanyName)?.Phone}`}\r\n >\r\n {bachmansStores?.find((store) => store.CompanyName === address?.CompanyName)?.Phone}\r\n \r\n store.CompanyName === address?.CompanyName)?.xp?.PlaceID\r\n }&destination=${\r\n bachmansStores?.find((store) => store.CompanyName === address?.CompanyName)?.xp?.Location?.lat\r\n },${bachmansStores?.find((store) => store.CompanyName === address?.CompanyName)?.xp?.Location?.lng}`}\r\n >\r\n Get Directions\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Store Selector */}\r\n \r\n \r\n Select a Store\r\n \r\n {bachmansStores?.map((store, index) => (\r\n \r\n {store.CompanyName}\r\n \r\n ))}\r\n \r\n \r\n \r\n {/* First Name */}\r\n \r\n handleAddressChange(\"FirstName\", e.target.value)}\r\n >\r\n \r\n {/* Last Name */}\r\n \r\n handleAddressChange(\"LastName\", e.target.value)}\r\n >\r\n \r\n \r\n handleAddressChange(\"Phone\", e.target.value)}\r\n onFocus={() =>\r\n setEdited({\r\n ...(edited || initialEditedTracker),\r\n FirstName: true,\r\n LastName: true,\r\n Phone: true,\r\n Street1: true,\r\n CompanyName: true,\r\n })\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {variant === \"Shipping\" && address?.xp?.addressType !== \"Email\" && (\r\n \r\n \r\n \r\n handleAddressChange(\"xp.addressType\", e.target.value)}\r\n value={address?.xp?.addressType || \"\"}\r\n >\r\n {destinationOptions\r\n ? destinationOptions.map((destination, index) => (\r\n \r\n {destination.label}{\" \"}\r\n \r\n ))\r\n : deliveryService.GetDestinationTypes()?.map((destination, index) => (\r\n \r\n {destination.label}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n handleAddressChange(\"xp.NickName\", e.target.value)}\r\n error={(address?.xp?.NickName || \"\").length >= 15}\r\n helperText={(address?.xp?.NickName || \"\").length >= 15 && \"The maximum line limit is 15 characters\"}\r\n inputProps={{ maxLength: 15 }}\r\n >\r\n \r\n \r\n )}\r\n \r\n handleAddressChange(\"FirstName\", e.target.value)}\r\n >\r\n \r\n \r\n handleAddressChange(\"LastName\", e.target.value)}\r\n >\r\n \r\n \r\n {destination?.googleOptions?.types && destination?.googleOptions.types[0] === \"establishment\" && (\r\n handleAddressChange(\"CompanyName\", val)}\r\n />\r\n )}\r\n \r\n {address?.xp?.addressType !== \"Email\" && (\r\n \r\n {address?.xp?.addressType === \"Residence\" ? (\r\n handleAddressChange(\"Street1\", val)}\r\n />\r\n ) : (\r\n handleAddressChange(\"Street1\", e.target.value)}\r\n >\r\n )}\r\n \r\n )}\r\n {address?.xp?.addressType == \"Hospital\" && (\r\n \r\n handleAddressChange(\"Street2\", e.target.value)}\r\n >\r\n \r\n )}\r\n {address?.xp?.addressType !== \"Email\" && address?.xp?.addressType !== \"Hospital\" && (\r\n \r\n handleAddressChange(\"Street2\", e.target.value)}\r\n >\r\n \r\n )}\r\n {address?.xp?.addressType !== \"Email\" && (\r\n \r\n handleAddressChange(\"City\", e.target.value)}\r\n >\r\n \r\n )}\r\n {address?.xp?.addressType !== \"Email\" && (\r\n \r\n handleStateChange(newVal)}\r\n onKeyPress={(e) => {\r\n e.key === \"Enter\" && e.preventDefault();\r\n }}\r\n disableClearable={true}\r\n options={geography.States.map((s) => s.value)}\r\n renderInput={(params) => (\r\n
\r\n \r\n \r\n )}\r\n />\r\n
\r\n )}\r\n {address?.xp?.addressType !== \"Email\" && (\r\n \r\n handleAddressChange(\"Zip\", e.target.value)}\r\n >\r\n \r\n )}\r\n \r\n handleAddressChange(\"Phone\", e.target.value)}\r\n onFocus={() =>\r\n setEdited({\r\n ...(edited || initialEditedTracker),\r\n FirstName: true,\r\n LastName: true,\r\n Phone: true,\r\n CompanyName: true,\r\n Street1: true,\r\n \"xp.addressType\": true,\r\n \"xp.Email\": true,\r\n })\r\n }\r\n >\r\n \r\n {address?.xp?.addressType === \"Email\" && (\r\n \r\n handleAddressChange(\"xp.Email\", e.target.value)}\r\n >\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default AddressForm;\r\n","import { BuyerProduct, Categories, LineItem, ListPageWithFacets, ShipmentItem } from \"ordercloud-javascript-sdk\";\r\nimport { BachmansProduct, ContentfulImage } from \"../models/product\";\r\nimport algolia from \"../services/algolia.service\";\r\nimport bachDateTime from \"../services/bachDateTime.service\";\r\nimport { map, flatten, compact, sortBy, filter, reduce, assign, pick, cloneDeep, uniq } from \"lodash\";\r\nimport { Category, Me, RequiredDeep } from \"ordercloud-javascript-sdk\";\r\nimport bachmansIntegrationsService from \"./bachmansIntegrations.service\";\r\nimport { OrderState } from \"../redux/slices/order\";\r\nimport { listAll } from \"../helpers/listAll\";\r\nimport productFilterService from \"../services/productFilter.service\";\r\nimport categoryService from \"./category.service\";\r\nimport AlgoliaAnalytics from \"search-insights\";\r\n\r\nvar colorMapCache: any;\r\n\r\nexport type FeaturedType = \"products\" | \"events\";\r\nlet userTokenn: any;\r\nAlgoliaAnalytics(\"init\", {\r\n appId: process.env.REACT_APP_ALGOLIA_APP as string,\r\n apiKey: process.env.REACT_APP_ALGOLIA_KEY as string,\r\n useCookie: true,\r\n});\r\nAlgoliaAnalytics(\"getUserToken\", null, (err, newUserToken) => {\r\n if (err) {\r\n console.error(err);\r\n return;\r\n }\r\n userTokenn = newUserToken;\r\n});\r\n// Always use this function to list products from OC\r\nconst listOcProducts = async (listOptions?: any): Promise>> => {\r\n //1. List Products\r\n if (!listOptions) listOptions = {};\r\n listOptions.filters = { ...listOptions?.filters, \"xp.Visible\": true };\r\n\r\n const productsObject = await Me.ListProducts(listOptions);\r\n //console.log(\"Listoptions--->\", listOptions);\r\n //2. Filter Products that should be visible\r\n const inDateProducts = listOptions.pastEvents\r\n ? productsObject.Items\r\n : productFilterService.ProductInventoryDateFilter(productsObject.Items);\r\n const inInventoryProducts = productFilterService.InventoryCodeB3(inDateProducts);\r\n const result: RequiredDeep> = {\r\n ...productsObject,\r\n Items: inInventoryProducts,\r\n };\r\n // console.log(\"Result of original search--->\", result);\r\n return result;\r\n};\r\n\r\nfunction getDefaultProduct(productGroup?: BachmansProduct[]) {\r\n if (!productGroup) {\r\n return;\r\n }\r\n if (productGroup.length > 1) {\r\n var result = productGroup.find((p) => p.xp.IsDefaultProduct);\r\n return result || productGroup[0];\r\n } else {\r\n return productGroup[0];\r\n }\r\n}\r\n\r\nfunction getProductName(product: any) {\r\n if (!(product && product.Name)) return;\r\n //if (product.xp && product.xp.WebFacingProductTitle) return product.xp.WebFacingProductTitle;\r\n if (\r\n window.location.search.includes(\"dotcom_products_asc\") == true ||\r\n window.location.search.includes(\"dotcom_products_desc\") == true\r\n ) {\r\n if (product && product.Name)\r\n return product.Name.replace(/\\w\\S*/g, function (txt: string) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n } else {\r\n if (product.xp && product.xp.WebFacingProductTitle) return product.xp.WebFacingProductTitle;\r\n }\r\n return product.Name.replace(/\\w\\S*/g, function (txt: string) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n //return product.Name;\r\n}\r\n\r\nasync function listProductsByCodes(\r\n productCodes: string[],\r\n onlyDefault?: boolean,\r\n all?: boolean\r\n): Promise {\r\n var options: any = {\r\n catalogID: \"Bachmans\",\r\n filters: {\r\n \"xp.ProductCode\": productCodes?.join(\"|\"),\r\n },\r\n };\r\n if (onlyDefault) {\r\n options.filters[\"xp.IsDefaultProduct\"] = \"true\";\r\n }\r\n if (all) {\r\n return listAll(listOcProducts, options);\r\n } else {\r\n options.page = 1;\r\n options.pageSize = 100;\r\n const events = await listOcProducts(options);\r\n return events.Items;\r\n }\r\n}\r\nexport interface ContentfulOptions {\r\n query: string;\r\n searchOptions: any;\r\n}\r\nexport interface AlgoliaListOptions {\r\n query: string;\r\n searchOptions: any;\r\n // userToken: any;\r\n}\r\n\r\n// Function to create a payload to fetch contentful data from algolia\r\n\r\nfunction buildContentfulOptions(filters?: any): ContentfulOptions {\r\n let query: string = ``;\r\n\r\n if (filters) {\r\n if (filters.query) query = filters.query;\r\n }\r\n let searchOptions: any = {\r\n contenttype: \"article\",\r\n };\r\n return {\r\n query: query,\r\n searchOptions: searchOptions,\r\n };\r\n}\r\n\r\nfunction buildListOptions(\r\n filters?: any,\r\n l2categoryChildren?: Category[],\r\n categoryFilters?: string[]\r\n): AlgoliaListOptions {\r\n let timestamp = bachDateTime.GetLocalTimeStamp();\r\n let dateFilter = \"StartDate <=\" + timestamp + \" AND EndDate >=\" + timestamp;\r\n //let userTokenn:any;\r\n // Algolia Init method for sending Events\r\n\r\n let searchOptions: any = {\r\n filters: [\"Visible = 1\", \"(InfiniteInventory = 1 OR Inventory > 0)\", \"Active = 1\", dateFilter],\r\n facetFilters: [\"IsWorkShopEvent:false\"],\r\n facets: algolia.facetToCollect,\r\n distinct: true,\r\n hitsPerPage: 54,\r\n // sortFacetValuesBy: \"alpha\",\r\n userToken: userTokenn,\r\n };\r\n\r\n searchOptions.clickAnalytics = true;\r\n searchOptions.userToken = userTokenn;\r\n searchOptions.filters = searchOptions.filters.join(\" AND \");\r\n let query: string = ``;\r\n if (filters) {\r\n if (filters.query) query = filters.query;\r\n if (filters.pageSize) searchOptions.hitsPerPage = filters.pageSize;\r\n if (filters.page) searchOptions.page = filters.page - 1;\r\n if (filters.facets) {\r\n const keys = uniq(filters?.facets?.map((f: string) => f?.split(\":\")[0]));\r\n\r\n // group facets in a nested array to create correct AND/ OR logic\r\n //https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/in-depth/filters-and-facetfilters/#multiple-filters\r\n let facetsLogic: string[][] = [];\r\n keys.forEach((key) => {\r\n const facetsInKey = filters.facets.filter((facet: string) => facet.split(\":\")[0] === key);\r\n facetsLogic.push(facetsInKey);\r\n });\r\n\r\n searchOptions.facetFilters = [...searchOptions.facetFilters, ...facetsLogic];\r\n }\r\n if (filters.categoryid) {\r\n let categorylist: any = []; // set in sub array so it triggers OR logic for algolia\r\n if (!categoryFilters || categoryFilters.length === 0) {\r\n if (l2categoryChildren && l2categoryChildren.length) {\r\n //show all children\r\n l2categoryChildren.forEach((category) => {\r\n categorylist.push(\"CategoryId:\" + category.ID);\r\n });\r\n }\r\n categorylist.push(\"CategoryId:\" + filters.categoryid);\r\n } else {\r\n categoryFilters.forEach((catID) => {\r\n categorylist.push(\"CategoryId:\" + catID);\r\n });\r\n }\r\n searchOptions.facetFilters.push(categorylist);\r\n }\r\n if (filters.onSale) {\r\n searchOptions.filters = filters.onSale\r\n ? searchOptions.filters.concat(\" AND OnSale = 1\")\r\n : searchOptions.filters.concat(\" AND OnSale = 0\");\r\n }\r\n }\r\n // Get the userToken and send it in payload for dynamic synonms\r\n\r\n return {\r\n query: query,\r\n searchOptions: searchOptions,\r\n };\r\n}\r\n\r\nasync function listProducts(\r\n filters?: any,\r\n l2categoryChildren?: Category[],\r\n categoryFilters?: string[],\r\n quickSearchFlag?: any\r\n) {\r\n let sortIndex: any;\r\n if (\r\n (window.location.href.includes(\"?query\") == true && window.location.href.includes(\"&category\") !== true) ||\r\n quickSearchFlag == true\r\n ) {\r\n sortIndex = algolia.SearchResultSortIndex(filters);\r\n } else {\r\n sortIndex = algolia.getSortIndex(filters);\r\n }\r\n\r\n let index = algolia.getProductIndex(sortIndex);\r\n const noFacetFilters = cloneDeep(filters);\r\n noFacetFilters.facets = [];\r\n const options = buildListOptions(filters, l2categoryChildren, categoryFilters);\r\n const noFacetOptions = buildListOptions(noFacetFilters, l2categoryChildren, categoryFilters);\r\n const [res, noFacetRes] = await Promise.all([\r\n index.search(options.query, options.searchOptions),\r\n index.search(noFacetOptions.query, noFacetOptions.searchOptions),\r\n ]);\r\n (res as any).emptyFacets = noFacetRes.facets;\r\n return await decorateAlgoliaResults(res);\r\n //return index.search(options.query, options.searchOptions).then(decorateAlgoliaResults);\r\n}\r\n\r\n// For BI-479: Algolia Multiple Indices Search\r\nasync function buildNoFacetOptions(filters?: any, l2categoryChildren?: Category[], categoryFilters?: string[]) {\r\n const noFacetFilters = cloneDeep(filters);\r\n noFacetFilters.facets = [];\r\n const noFacetOptions = await buildListOptions(noFacetFilters, l2categoryChildren, categoryFilters);\r\n return noFacetOptions;\r\n}\r\n\r\n// Passes Algolia results for OC reponse integration\r\nasync function integrateOCAlgolia(res: any) {\r\n return await decorateAlgoliaResults(res);\r\n}\r\n\r\n// Product suggestions\r\n\r\nasync function listProductsSuggestions(filters?: any) {\r\n let searchOptions: any = {\r\n clickAnalytics: true,\r\n userToken: userTokenn,\r\n };\r\n const sortIndex = algolia.getQuerySuggestionIndex(filters);\r\n let index = algolia.getQueryIndex(sortIndex);\r\n const options = buildListOptions(filters);\r\n const [res] = await Promise.all([index.search(options.query, searchOptions)]);\r\n console.log(\"Product suggestion data-->\", res);\r\n return await res;\r\n}\r\n\r\n// Call to fetch contentfull date from algolia\r\n\r\nasync function listContentFulData(filters?: any) {\r\n let searchOptions: any = {\r\n clickAnalytics: true,\r\n userToken: userTokenn,\r\n //filters: \"contenttype:article\",\r\n };\r\n const sortIndex = algolia.getAlgoliaContentIndex(filters);\r\n let index = algolia.getProductIndex(sortIndex);\r\n const options = buildContentfulOptions(filters);\r\n const [res] = await Promise.all([index.search(options.query, searchOptions)]);\r\n return await res;\r\n}\r\n\r\nasync function decorateAlgoliaResults(response: any) {\r\n var algoliaResponse = cloneDeep(response);\r\n algoliaResponse.page++;\r\n if (algoliaResponse && algoliaResponse.hits && algoliaResponse.hits.length) {\r\n let productCodeFilter = map(algoliaResponse.hits, \"ProductCode\").join(\"|\");\r\n const ocProducts = await listAll(listOcProducts, { filters: { \"xp.ProductCode\": productCodeFilter } });\r\n let productsToList = compact(\r\n map(algoliaResponse.hits, function (hit, index) {\r\n let matchingProducts = sortBy(\r\n map(\r\n filter(ocProducts, function (p) {\r\n return p.xp.ProductCode === hit.ProductCode;\r\n }),\r\n function (p) {\r\n p.BestAlgoliaMatch = (p.ID === hit.ID)!;\r\n return p;\r\n }\r\n ),\r\n function (p) {\r\n return p.PriceSchedule.PriceBreaks[0].Price;\r\n },\r\n function (p) {\r\n return (p.Position = index);\r\n }\r\n );\r\n //console.log('Product-->',hit.Name + ' '+ \"Index-->\",index);\r\n return matchingProducts.length ? matchingProducts : null;\r\n })\r\n );\r\n algoliaResponse.hits = productsToList;\r\n algoliaResponse.queryID = response.queryID;\r\n return algoliaResponse;\r\n } else {\r\n return algoliaResponse;\r\n }\r\n}\r\n\r\ninterface facetValues {\r\n [key: string]: number;\r\n}\r\ninterface facetList {\r\n [key: string]: facetValues;\r\n //AlgoliaAttribute : { facet: number}\r\n}\r\n\r\n//goal is to update all facet values that are apart of the new Facet Results, and set the remaining facet values that werent returned from new facet results to 0;\r\nfunction updateFacet(facetValues: facetValues, FacetNameKey: string, index: number, facetResults: facetList) {\r\n let updatedFacetValues = Object.fromEntries(Object.entries(facetValues).map(([key, fctVal]) => [key, 0])); // default facet values to zero,\r\n return assign(updatedFacetValues, pick(facetResults[FacetNameKey], Object.keys(facetValues))); // then updating facets that are apart of new results.\r\n}\r\nfunction mapFacetResultsToInitFacetList(facetList: facetList, facetResults: facetList) {\r\n let origFacetList = cloneDeep(facetList);\r\n let newFacetResults = cloneDeep(facetResults);\r\n return Object.fromEntries(\r\n Object.entries(origFacetList)?.map(([key, value], i) => [key, updateFacet(value, key, i, newFacetResults)])\r\n );\r\n}\r\n\r\nfunction getProductGroup(productCode: string) {\r\n return listOcProducts({\r\n pageSize: 100,\r\n filters: { \"xp.ProductCode\": productCode },\r\n }).then((productListData) => {\r\n if (productListData.Items.length) {\r\n return sortBy(productListData.Items, function (item) {\r\n return item.PriceSchedule.PriceBreaks[0].Price;\r\n });\r\n } else {\r\n //history.push('/404')\r\n Promise.reject(\"Product group not found\");\r\n }\r\n });\r\n}\r\n\r\nfunction getColorMap(): Promise {\r\n if (colorMapCache) {\r\n return Promise.resolve(colorMapCache);\r\n } else {\r\n return bachmansIntegrationsService.getColorMap().then(function (colorMap) {\r\n colorMapCache = colorMap;\r\n return colorMapCache;\r\n });\r\n }\r\n}\r\n\r\nfunction determineAddedQuantity(item: any, currentOrder: OrderState) {\r\n var productID = item.Product ? item.Product.ID : item.ID;\r\n var otherLines = filter(flatten(map(currentOrder.shipments, \"LineItems\")), function (line: ShipmentItem) {\r\n if (item.Product) return line.LineItemID !== item.ID && productID === line.Product?.ID;\r\n return productID === line.Product?.ID;\r\n });\r\n return otherLines.length > 0\r\n ? reduce(\r\n map(otherLines, \"Quantity\"),\r\n function (qty, n) {\r\n return qty + n;\r\n },\r\n 0\r\n )\r\n : 0;\r\n}\r\n\r\nfunction finishMaxQuantity(item: any, max: number, currentOrder: OrderState) {\r\n var maxQuantity = max - determineAddedQuantity(item, currentOrder);\r\n return maxQuantity;\r\n}\r\n\r\nfunction determineMaxLineItemQuantity(lineItem: any, currentOrder: OrderState) {\r\n const product = lineItem.Product;\r\n if (Number(product?.xp?.SafetyStock) > 0) {\r\n return finishMaxQuantity(\r\n lineItem,\r\n product?.Inventory?.QuantityAvailable - Number(product.xp.SafetyStock),\r\n currentOrder\r\n );\r\n }\r\n if (product.Inventory.QuantityAvailable)\r\n return finishMaxQuantity(lineItem, product.Inventory.QuantityAvailable, currentOrder);\r\n return finishMaxQuantity(lineItem, product.PriceSchedule.MaxQuantity || 10000000, currentOrder);\r\n}\r\n\r\nfunction determineMaxQuantity(item: any, currentOrder: OrderState) {\r\n var product = item.Product ? item.Product : item;\r\n if (!product?.Inventory?.Enabled || product.xp.CodeB3 === \"9\") return 10000;\r\n if (item.Product) {\r\n return determineMaxLineItemQuantity(item, currentOrder);\r\n } else {\r\n if (Number(product.xp.SafetyStock) > 0) {\r\n return finishMaxQuantity(\r\n item,\r\n product.Inventory.QuantityAvailable - Number(product.xp.SafetyStock),\r\n currentOrder\r\n );\r\n }\r\n if (product.Inventory.QuantityAvailable)\r\n return finishMaxQuantity(item, product.Inventory.QuantityAvailable, currentOrder);\r\n return finishMaxQuantity(item, product.PriceSchedule.MaxQuantity || 10000000, currentOrder);\r\n }\r\n}\r\n\r\nfunction determineMinQuantity(item: any) {\r\n var product = item.Product ? item.Product : item;\r\n if (product && product.PriceSchedule && product.PriceSchedule.MinQuantity) return product.PriceSchedule.MinQuantity;\r\n return 1;\r\n}\r\n\r\nfunction productNameFilter(product: BuyerProduct) {\r\n if (!(product && product.Name)) return;\r\n if (product.xp && product.xp.WebFacingProductTitle) return product.xp.WebFacingProductTitle;\r\n return product.Name.replace(/\\w\\S*/g, function (txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n}\r\n\r\nfunction getDefaultImage(product: BuyerProduct) {\r\n return product.xp &&\r\n product.xp.Contentful &&\r\n product.xp.Contentful &&\r\n product.xp.Contentful.Images &&\r\n product.xp.Contentful.Images.length\r\n ? product.xp.Contentful.Images[0].url\r\n : undefined;\r\n}\r\nexport interface frequentCategoriesInfoResponse {\r\n categoryL2: Category | null;\r\n categoryL1: Category | null;\r\n}\r\n\r\nfunction getMostFrequentCategory(\r\n categoryIdFacets: { [index: string]: number },\r\n allCategories: RequiredDeep[]\r\n): Category {\r\n if (!categoryIdFacets) categoryIdFacets = {};\r\n const topResults = Object.keys(categoryIdFacets).sort((a, b) => categoryIdFacets[b] - categoryIdFacets[a]);\r\n const topL2s = topResults.filter((id) => id.split(\"_\").length === 2);\r\n const mostFrequentCatID = topL2s.find((id) => allCategories.map((c) => c.ID).includes(id));\r\n const result = allCategories.find((cat) => cat.ID === mostFrequentCatID);\r\n return result as Category;\r\n}\r\n\r\nconst getProductCategory = async (productID: string, categories: Category[]) => {\r\n const activeCatIDs = categories.map((c) => c.ID);\r\n const assignments = await Categories.ListProductAssignments(\"Bachmans\", { pageSize: 100, productID: productID });\r\n const validAssignments = assignments.Items.filter((assignment) => activeCatIDs.includes(assignment.CategoryID));\r\n var bestMatch = \"\";\r\n validAssignments.forEach((assignment) => {\r\n if (assignment.CategoryID.split(\"_\").length >= bestMatch.split(\"_\").length) {\r\n bestMatch = assignment.CategoryID;\r\n }\r\n });\r\n return categories.find((c) => c.ID === bestMatch) || categories[0];\r\n};\r\n\r\nconst getBreadCrumbsFromProduct = async (productID: string, categories: Category[]): Promise => {\r\n const cat = await getProductCategory(productID, categories);\r\n return await categoryService.BuildBreadCrumb(cat.ID!, productID, categories);\r\n};\r\n\r\nconst getProductImage = (product: BuyerProduct): ContentfulImage => {\r\n if (product.ID === \"GFITCARD\") {\r\n var image = product.xp?.Contentful?.Images?.find((i: ContentfulImage) => i.title === \"GiftCard\");\r\n } else {\r\n image = product.xp?.Contentful?.Images?.find((i: ContentfulImage) => i.title === product.ID);\r\n }\r\n return image || product.xp?.Contentful?.Images[0];\r\n};\r\n\r\nconst isNationWideAvailable = (product?: BuyerProduct): boolean => {\r\n return product?.xp?.CodeB2 === \"Y\";\r\n};\r\n\r\nconst productOutOfStock = (product: BuyerProduct): boolean => {\r\n return !!(\r\n product?.xp?.CodeB3 !== \"9\" &&\r\n product?.Inventory &&\r\n (product?.Inventory?.QuantityAvailable || 0) - Number(product?.xp?.SafetyStock) <= 0\r\n );\r\n};\r\n\r\nconst getLineItemColorType = (lineItem: LineItem) => {\r\n return lineItem?.Product?.xp?.SpecsOptions?.ColorVarient\r\n ? ` Color: ${lineItem?.Product?.xp?.SpecsOptions?.ColorVarient}`\r\n : \"\";\r\n};\r\n\r\nconst getLineItemSizeType = (lineItem: LineItem) => {\r\n return lineItem?.Product?.xp?.SpecsOptions?.Size ? ` Type: ${lineItem?.Product?.xp?.SpecsOptions?.Size}` : \"\";\r\n};\r\n\r\nconst getLineItemName = (lineItem?: LineItem) => {\r\n const titleOrName = lineItem?.Product?.xp?.WebFacingProductTitle || lineItem?.Product?.Name;\r\n if (lineItem?.Product?.xp?.IsWorkShopEvent) {\r\n return lineItem?.xp?.EventName || titleOrName;\r\n } else return titleOrName;\r\n};\r\n\r\nconst service = {\r\n GetDefaultProduct: getDefaultProduct,\r\n GetProductName: getProductName,\r\n GetProductGroup: getProductGroup,\r\n GetColorMap: getColorMap,\r\n GetMostFrequentCategory: getMostFrequentCategory,\r\n ListProductsByCodes: listProductsByCodes,\r\n ListProducts: listProducts,\r\n ListContentFulData: listContentFulData,\r\n ListProductsSuggestions: listProductsSuggestions,\r\n ListOcProducts: listOcProducts,\r\n DetermineMaxQuantity: determineMaxQuantity,\r\n ProductNameFilter: productNameFilter,\r\n GetDefaultImage: getDefaultImage,\r\n DetermineMinQuantity: determineMinQuantity,\r\n MapFacetResultsToInitFacetList: mapFacetResultsToInitFacetList,\r\n GetProductCategory: getProductCategory,\r\n GetBreadCrumbsFromProduct: getBreadCrumbsFromProduct,\r\n IsNationWideAvailable: isNationWideAvailable,\r\n GetProductImage: getProductImage,\r\n ProductOutOfStock: productOutOfStock,\r\n GetLineItemColorType: getLineItemColorType,\r\n GetLineItemSizeType: getLineItemSizeType,\r\n GetLineItemName: getLineItemName,\r\n BuildNoFacetOptions: buildNoFacetOptions,\r\n IntegrateOCAlgolia: integrateOCAlgolia,\r\n};\r\n\r\nexport default service;\r\n","import { compact } from \"lodash\";\r\nimport moment from \"moment\";\r\nimport { BuyerProduct, RequiredDeep } from \"ordercloud-javascript-sdk\";\r\nimport bachDateTime from \"./bachDateTime.service\";\r\nimport { BachmansProduct } from \"../models/product\";\r\n\r\nconst isProductAvailable = (product: BuyerProduct, showPast?: boolean) => {\r\n const currentDate = bachDateTime.Today();\r\n if (showPast) return currentDate.isSameOrAfter(product?.xp?.ReleaseDate1, \"d\");\r\n return currentDate.isBetween(\r\n moment(product.xp.ReleaseDate1, \"YYYY-MM-DD\").tz(\"America/Chicago\").startOf(\"d\"),\r\n moment(product.xp.ReleaseDate2, \"YYYY-MM-DD\").tz(\"America/Chicago\").endOf(\"d\"),\r\n null,\r\n \"[]\"\r\n );\r\n};\r\n\r\nconst productInventoryDateFilter = (\r\n products: RequiredDeep[],\r\n showPast?: boolean\r\n): RequiredDeep[] => {\r\n return products.filter((p) => isProductAvailable(p));\r\n};\r\n\r\nconst inventoryCodeB3 = (\r\n products: RequiredDeep[],\r\n showPast?: boolean\r\n): RequiredDeep[] => {\r\n const checkProduct = (product: BuyerProduct) => {\r\n if (showPast) return true;\r\n else\r\n return (\r\n (product && product.xp && product.xp.CodeB3 === \"9\") ||\r\n (product.Inventory && product.Inventory?.QuantityAvailable! - Number(product?.xp?.SafetyStock) > 0)\r\n );\r\n };\r\n\r\n const hasOtherProductOptions = (product: BuyerProduct) => {\r\n return (\r\n product?.xp?.ProductCode &&\r\n products.filter((p) => p?.xp?.ProductCode === product?.xp?.ProductCode)?.filter((p) => checkProduct(p))?.length >\r\n 1\r\n );\r\n };\r\n\r\n const res1 = products.map((p) => {\r\n if (checkProduct(p)) {\r\n return p as RequiredDeep;\r\n } else {\r\n if (hasOtherProductOptions(p) || p?.xp?.IsWorkShopEvent) {\r\n (p as BachmansProduct).DisableAddtoCart = true;\r\n return p as RequiredDeep;\r\n } else return null;\r\n }\r\n });\r\n\r\n return compact(res1);\r\n};\r\n\r\nconst service = {\r\n IsProductAvailable: isProductAvailable,\r\n ProductInventoryDateFilter: productInventoryDateFilter,\r\n InventoryCodeB3: inventoryCodeB3,\r\n};\r\n\r\nexport default service;\r\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core\";\r\nimport JwtDecode from \"jwt-decode\";\r\nimport { Auth, Configuration, DecodedToken, Me, MeUser, Tokens } from \"ordercloud-javascript-sdk\";\r\nimport React, { createContext, FunctionComponent, useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { useCookies } from \"react-cookie\";\r\nimport appConfig, { scope } from \"../constants/app.constants\";\r\nimport DOMPurify from \"dompurify\";\r\nimport deliveryResource from \"../services/delivery-resource.service\";\r\nimport BachmansLoading from \"../components/Shared/BachmansLoading\";\r\nimport { initOrder, transferAndInitOrder } from \"../redux/slices/order\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { AppDispatch } from \"../redux/store\";\r\nimport moment from \"moment\";\r\nimport { BuyerXp } from \"../models/buyerXp\";\r\nimport { useAppSelector } from \"../redux/store-hook\";\r\n\r\nConfiguration.Set({\r\n baseApiUrl: appConfig.apiUrl,\r\n clientID: appConfig.clientID,\r\n cookieOptions: {\r\n path: \"/\",\r\n prefix: `${appConfig.name}.${process.env.REACT_APP_ENVIRONMENT}`,\r\n },\r\n});\r\n\r\nconst clientId = appConfig.clientID as string;\r\n\r\ninterface SessionContextInterface {\r\n login?: (username: string, password: string, rememberMe: boolean) => Promise;\r\n logout?: () => Promise;\r\n patchUser?: (patchObl: Partial) => Promise;\r\n setUserTokens?: (token: string) => void; //sets tokens to trigger fresh and set user in context\r\n setAnonTokens?: () => void; //set method to trigger refresh-\r\n anonymous: boolean;\r\n cookiePrefix: string;\r\n token?: string;\r\n user?: BachmansUser;\r\n}\r\n\r\nexport interface BachmansUser extends MeUser {\r\n Orphaned: boolean;\r\n}\r\n\r\nexport const SessionContext = createContext({\r\n anonymous: true,\r\n cookiePrefix: `${appConfig.name}.${process.env.REACT_APP_ENVIRONMENT}`,\r\n});\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n loadingPane: {\r\n height: \"100vh\",\r\n width: \"100vw\",\r\n display: \"grid\",\r\n placeItems: \"center center\",\r\n color: theme.palette.primary.main,\r\n },\r\n })\r\n);\r\n\r\nconst SessionProvider: FunctionComponent = ({ children }) => {\r\n const classes = useStyles();\r\n const [user, setUser] = useState();\r\n const currentOrder = useAppSelector((state) => state.order);\r\n // eslint-disable-next-line\r\n const [tokenTimeout, setTokenTimeout] = useState();\r\n const [token, setToken] = useState(Tokens.GetAccessToken());\r\n const [cookies, setCookie, removeCookie] = useCookies();\r\n const dispatch = useDispatch();\r\n const cookiePrefix = `${process.env.REACT_APP_NAME}.${process.env.REACT_APP_ENVIRONMENT}`;\r\n\r\n const isOrphaned = useCallback((meUser: MeUser, buyerXp: BuyerXp) => {\r\n const MAX_ALLOWED_DAYS_WITHOUT_SYNC = 0;\r\n\r\n const hasBeenSynced = (lastUserSyncTimestamp: string, lastSyncTimestamp: string): boolean => {\r\n const lastSyncMoment = moment.utc(lastSyncTimestamp).startOf(\"d\");\r\n const lastUserSyncMoment = moment.utc(lastUserSyncTimestamp).startOf(\"d\");\r\n const daysSinceLastSync = lastSyncMoment.diff(lastUserSyncMoment, \"days\", true);\r\n return daysSinceLastSync <= MAX_ALLOWED_DAYS_WITHOUT_SYNC;\r\n };\r\n\r\n const wasCreatedToday = (dateCreated: string): boolean => {\r\n const today = moment.utc().startOf(\"d\");\r\n const createdMoment = moment.utc(dateCreated).startOf(\"d\");\r\n return today.isSame(createdMoment, \"d\");\r\n };\r\n\r\n if (!meUser || meUser.ID === \"299999\") {\r\n return false;\r\n }\r\n if (meUser?.xp?.OrderCloudToCecsCustomerStatus && meUser?.xp?.OrderCloudToCecsCustomerStatus === \"Success\") {\r\n return false;\r\n }\r\n if (meUser?.xp?.CecsCustomerNumber) {\r\n return false;\r\n }\r\n if (\r\n meUser?.xp?.EagleToFour51CustomerUpdateTimeStamp &&\r\n hasBeenSynced(meUser?.xp?.EagleToFour51CustomerUpdateTimeStamp, buyerXp.LastCustomerSyncTimeStamp)\r\n ) {\r\n return false;\r\n }\r\n if (\r\n meUser?.xp?.CreatedFrom === \"web\" &&\r\n meUser?.xp?.Four51ToEagleCustomerFileStatus === \"Success\" &&\r\n wasCreatedToday(\r\n meUser?.xp?.Four51ToEagleCustomerFileStatus === \"Success\"\r\n ? meUser.xp.Four51ToEagleCustomerFileTimeStamp\r\n : meUser.DateCreated\r\n )\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n }, []);\r\n\r\n const setBachmansUser = useCallback(\r\n (meUser: MeUser, buyerXp: BuyerXp) => {\r\n const bachUser: BachmansUser = {\r\n ...meUser,\r\n Orphaned: isOrphaned(meUser, buyerXp),\r\n };\r\n setUser(bachUser);\r\n },\r\n [isOrphaned]\r\n );\r\n\r\n // Inits by looking for validate token and setting anon or profiled User tokens\r\n const validateToken = useCallback(async () => {\r\n try {\r\n const validToken = await Tokens.GetValidToken();\r\n Tokens.SetAccessToken(validToken);\r\n setToken(validToken);\r\n } catch {\r\n const anon = await Auth.Anonymous(clientId, scope);\r\n Tokens.SetAccessToken(anon.access_token);\r\n Tokens.SetRefreshToken(anon.refresh_token);\r\n setToken(anon.access_token);\r\n } finally {\r\n deliveryResource.Init();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n validateToken();\r\n }, [validateToken]);\r\n\r\n const setAnonTokens = useCallback(async () => {\r\n const anon = await Auth.Anonymous(clientId, scope);\r\n Tokens.SetAccessToken(anon.access_token);\r\n setToken(anon.access_token);\r\n Tokens.SetRefreshToken(anon.refresh_token);\r\n return anon.access_token;\r\n }, []);\r\n\r\n //sets Anon or Profiled User tokens\r\n const attemptRefresh = useCallback(async () => {\r\n const refreshToken = Tokens.GetRefreshToken();\r\n if (refreshToken) {\r\n try {\r\n const refreshed = await Auth.RefreshToken(refreshToken, clientId);\r\n Tokens.SetAccessToken(refreshed.access_token);\r\n setToken(refreshed.access_token);\r\n } catch {\r\n await setAnonTokens();\r\n }\r\n }\r\n }, [setAnonTokens]);\r\n\r\n // if token is detected, create a time out & refresh user object and tokens\r\n const createTokenTimeout = useCallback(\r\n (decoded: DecodedToken) => {\r\n var currentSeconds = Date.now() / 1000;\r\n var currentSecondsWithBuffer = currentSeconds - 10;\r\n var refreshTimeInMilliseconds = (decoded.exp - currentSecondsWithBuffer) * 1000;\r\n return setTimeout(attemptRefresh, refreshTimeInMilliseconds);\r\n },\r\n [attemptRefresh]\r\n );\r\n\r\n useEffect(() => {\r\n if (token && !tokenTimeout) {\r\n const decoded = JwtDecode(token);\r\n setTokenTimeout(createTokenTimeout(decoded));\r\n } else if (tokenTimeout) {\r\n clearTimeout(tokenTimeout);\r\n }\r\n }, [token, createTokenTimeout, tokenTimeout]);\r\n\r\n const refreshUser = useCallback(async () => {\r\n try {\r\n const [meUser, buyerXp] = await Promise.all([Me.Get(), deliveryResource.GetBuyerXp()]);\r\n setBachmansUser(meUser, buyerXp);\r\n // //const meUser = await Me.Get();\r\n // setUser(meUser);\r\n } catch {\r\n setUser(undefined);\r\n }\r\n }, [setBachmansUser]);\r\n\r\n useEffect(() => {\r\n if (token) {\r\n refreshUser();\r\n }\r\n }, [token, refreshUser]);\r\n\r\n const handleRememberMe = useCallback(\r\n (rememberMe: boolean, username: string, refreshToken?: string) => {\r\n if (rememberMe) {\r\n // auth.refresh_token is not returning from the api\r\n // Tokens.SetRefreshToken(refreshToken);\r\n setCookie(`${cookiePrefix}.rememberme`, DOMPurify.sanitize(username));\r\n }\r\n if (cookies[`${cookiePrefix}.rememberme`] && !rememberMe) {\r\n removeCookie(`${cookiePrefix}.rememberme`);\r\n }\r\n },\r\n [cookiePrefix, setCookie, removeCookie, cookies]\r\n );\r\n\r\n const login = useCallback(\r\n async (username: string, password: string, rememberMe: boolean) => {\r\n try {\r\n const auth = await Auth.Login(username, password, clientId, scope);\r\n const currentAnonToken = Tokens.GetAccessToken();\r\n Tokens.SetAccessToken(auth.access_token);\r\n if (currentAnonToken && currentOrder?.order?.LineItemCount && currentOrder.order.LineItemCount > 0) {\r\n await dispatch(transferAndInitOrder(currentAnonToken));\r\n } else {\r\n await dispatch(initOrder());\r\n }\r\n Tokens.SetAccessToken(auth.access_token);\r\n handleRememberMe(rememberMe, username, auth.refresh_token);\r\n setToken(auth.access_token);\r\n } catch (err) {\r\n throw err;\r\n }\r\n },\r\n [currentOrder, dispatch, handleRememberMe]\r\n );\r\n\r\n const logout = useCallback(async () => {\r\n try {\r\n const anon = await Auth.Anonymous(clientId, scope);\r\n Tokens.SetAccessToken(anon.access_token);\r\n Tokens.SetRefreshToken(anon.refresh_token);\r\n setToken(anon.access_token);\r\n } finally {\r\n await dispatch(initOrder());\r\n }\r\n }, [dispatch]);\r\n\r\n const patchUser = useCallback(\r\n async (patchObject: Partial) => {\r\n try {\r\n const [update, buyerXp] = await Promise.all([Me.Patch(patchObject), deliveryResource.GetBuyerXp()]);\r\n setBachmansUser(update, buyerXp);\r\n return update;\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n },\r\n [setBachmansUser]\r\n );\r\n\r\n const setUserTokens = useCallback((token: string) => {\r\n Tokens.SetAccessToken(token);\r\n Tokens.SetRefreshToken(\"\");\r\n setToken(token);\r\n }, []);\r\n const contextValue = useMemo(() => {\r\n return {\r\n login,\r\n logout,\r\n patchUser,\r\n setUserTokens,\r\n setAnonTokens,\r\n token,\r\n user,\r\n cookiePrefix,\r\n anonymous: !user || user.ID === \"299999\",\r\n };\r\n }, [token, user, login, logout, patchUser, setUserTokens, setAnonTokens, cookiePrefix]);\r\n return (\r\n \r\n {contextValue.token ? (\r\n children\r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default SessionProvider;\r\n","import moment, { Moment } from \"moment-timezone\";\r\nimport { BuyerXp, DeliveryTypes } from \"../models/buyerXp\";\r\nimport Holidays from \"date-holidays\";\r\nimport { HolidayMatch } from \"../constants/Holidays\";\r\n\r\nexport const dateFormat = \"MM-DD-YYYY\";\r\n\r\nvar hd: any;\r\n\r\nconst getCST = () => moment().tz(\"America/Chicago\");\r\nconst getUTC = (date: Date) => moment(moment.utc(date).format(dateFormat), dateFormat);\r\n\r\nconst getLocalTimeStamp = () => {\r\n return today().valueOf();\r\n};\r\n\r\nconst today = () => moment(getCST().startOf(\"d\"));\r\n\r\nconst tomorrow = () => moment(getCST().startOf(\"d\").add(1, \"d\"));\r\n/**\r\n *'MMM d, y' (e.g. September 3, 2010)\r\n */\r\nconst getMediumDate = (date: string) => {\r\n if (!date) return;\r\n return moment(date).utc().format(\"LL\");\r\n};\r\n\r\nconst sameDayCutoff = (buyerXp: BuyerXp) => {\r\n var sameDayCutoff = buyerXp.Shippers.LocalDelivery.SameDayDeliveryCountDownTimer.split(\":\");\r\n var sameDay = getCST();\r\n sameDay.startOf(\"day\").add(sameDayCutoff[0], \"hour\").add(sameDayCutoff[1], \"minutes\");\r\n return sameDay;\r\n};\r\n\r\nconst sameDayEnabled = (buyerXp: BuyerXp, method?: DeliveryTypes): boolean => {\r\n if (method === \"Courier\") return true;\r\n var cutoff = sameDayCutoff(buyerXp);\r\n var cst = getCST();\r\n return !cutoff.isSameOrBefore(cst) && buyerXp.Shippers.LocalDelivery.SameDayDelivery;\r\n};\r\n\r\nconst countDown = (buyerXp: BuyerXp) => {\r\n var cutoff = sameDayCutoff(buyerXp);\r\n var cst = getCST();\r\n var timeLeftSuffix = \" Left For
Same-Day Delivery\";\r\n if (!sameDayEnabled(buyerXp)) {\r\n return false;\r\n } else {\r\n if (cutoff.diff(cst, \"hours\")) return moment.utc(cutoff.diff(cst)).format(\"h:mm\") + timeLeftSuffix;\r\n return moment.utc(cutoff.diff(cst)).format(\"0:mm\") + timeLeftSuffix;\r\n }\r\n};\r\n\r\nconst initHolidays = () => {\r\n hd = new Holidays(\"US\");\r\n};\r\n\r\nconst isHoliday = (date: Moment, holidayArray: string[]) => {\r\n if (!hd) initHolidays();\r\n var thisHoliday = hd.isHoliday(date);\r\n const holidayObj = Array.isArray(thisHoliday) ? thisHoliday[0] : thisHoliday;\r\n if (holidayObj && holidayObj.name) {\r\n var thisHolidayName = getMyHolidays([holidayObj.name]);\r\n var allHolidays = getMyHolidays(holidayArray);\r\n return thisHolidayName[0] && allHolidays?.includes(thisHolidayName[0]);\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nconst getMyHolidays = (holidayArray: string[]) => {\r\n const myHolidays = holidayArray?.map((holiday) => {\r\n return Object.keys(HolidayMatch).find((h) => {\r\n const holidayNoPunct = holiday.replace(/[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]/g, \"\").toLowerCase();\r\n const holidayList = HolidayMatch[h];\r\n return holidayList.includes(holidayNoPunct);\r\n });\r\n });\r\n return myHolidays;\r\n};\r\n\r\nconst isSameDay = (dayMoment: Date, dateNeeded: Date) => {\r\n var utcDateNeeded = getUTC(dateNeeded);\r\n var utcMoment = getUTC(dayMoment);\r\n return utcMoment.isSame(utcDateNeeded, \"day\");\r\n};\r\n\r\nconst isAfterNextDayAMCutoff = (buyerXp: BuyerXp) => {\r\n let momentMins = getCST().minutes();\r\n let momentHours = getCST().hour();\r\n let updatedmomentMins = moment(momentMins, \"m\").format(\"mm\");\r\n // let updatedmomentHours = moment(momentHours, \"h\").format(\"hh\"); // converts into 12 hr format instead of 24\r\n let updatedmomentHours = moment(momentHours, \"h\").format(\"HH\");\r\n let getCurrentTime = updatedmomentHours + \":\" + updatedmomentMins;\r\n let getTomorrowsCutoffTime =\r\n buyerXp.Shippers.LocalDelivery.NextDayAMDeliveryCutoff.split(\":\")[0] +\r\n \":\" +\r\n buyerXp.Shippers.LocalDelivery.NextDayAMDeliveryCutoff.split(\":\")[1];\r\n return getCurrentTime >= getTomorrowsCutoffTime;\r\n};\r\n\r\nconst isBeforeMinDate = (dateNeeded: Date, minDateOption?: Date) => {\r\n var utcDateNeeded = getUTC(dateNeeded);\r\n return utcDateNeeded.isBefore(minDateOption);\r\n};\r\n\r\nconst service = {\r\n GetCST: getCST,\r\n GetUTC: getUTC,\r\n GetLocalTimeStamp: getLocalTimeStamp,\r\n Today: today,\r\n Tomorrow: tomorrow,\r\n GetMediumDate: getMediumDate,\r\n IsHoliday: isHoliday,\r\n IsSameDay: isSameDay,\r\n IsAfterNextDayAMCutoff: isAfterNextDayAMCutoff,\r\n IsBeforeMinDate: isBeforeMinDate,\r\n SameDay: {\r\n SameDayCutoff: sameDayCutoff,\r\n SameDayEnabled: sameDayEnabled,\r\n CountDown: countDown,\r\n },\r\n};\r\n\r\nexport default service;\r\n","export interface HolidayNamesType {\r\n [key: string]: string[];\r\n}\r\n\r\nexport const HolidayMatch: HolidayNamesType = {\r\n \"New Years Day\": [\"new years\", \"new years day\"],\r\n \"Martin Luther King Jr Day\": [\"martin luther king jr day\", \"martin luther king day\", \"martin luther day\"],\r\n \"Independence Day\": [\"independence day\", \"july 4th\", \"4th of july\", \"fourth of july\", \"july fourth\"],\r\n \"Labor Day\": [\"labor day\"],\r\n \"Veterans Day\": [\"veterans day\"],\r\n Thanksgiving: [\"thanksgiving\", \"thanksgiving day\"],\r\n \"Black Friday\": [\"black friday\", \"day after thanksgiving\"],\r\n \"Christmas Eve\": [\"christmas eve\", \"christmas evening\", \"christmas night\"],\r\n \"Christmas Day\": [\"christmas day\", \"christmas\"],\r\n \"Valentines Day\": [\"valentines day\", \"valentines\"],\r\n \"Presidents Day\": [\"presidents day\"],\r\n Easter: [\"easter\", \"easter sunday\"],\r\n \"Cinco de Mayo\": [\"cinco de mayo\"],\r\n \"Mothers Day\": [\"mothers day\"],\r\n \"Memorial Day\": [\"memorial day\"],\r\n Halloween: [\"halloween\"],\r\n};\r\n","import algoliasearch, { SearchIndex } from \"algoliasearch\";\r\nimport appConstants from \"../constants/app.constants\";\r\n\r\nclass Algolia {\r\n private client: any;\r\n\r\n constructor() {\r\n this.client = algoliasearch(\r\n process.env.REACT_APP_ALGOLIA_APP as string,\r\n process.env.REACT_APP_ALGOLIA_KEY as string\r\n );\r\n }\r\n\r\n public getSortIndex = (filters: any): string => {\r\n return filters && filters.query\r\n ? filters && filters.sort\r\n ? filters.sort\r\n : \"products_name_asc\"\r\n : filters && filters.sort\r\n ? filters.sort\r\n : \"products\";\r\n };\r\n\r\n public SearchResultSortIndex = (filters: any): string => {\r\n return filters && filters.query\r\n ? filters && filters.sort\r\n ? filters.sort\r\n : \"dotcom_products\"\r\n : filters && filters.sort\r\n ? filters.sort\r\n : \"new_products\";\r\n };\r\n\r\n public getQuickSearchProducts = (): string => {\r\n return \"dotcom_products\";\r\n };\r\n\r\n public getCategoryProducts = (): string => {\r\n return \"products\";\r\n };\r\n\r\n public getQuerySuggestionIndex = (filters?: any): string => {\r\n return \"products_query_suggestions\";\r\n };\r\n\r\n public getAlgoliaContentIndex = (filters?: any): string => {\r\n return \"contentful_data\";\r\n };\r\n\r\n public getProductIndex(sortIndex?: string): SearchIndex {\r\n return this.client.initIndex((appConstants.algoliaIndexPrefix || \"\") + sortIndex);\r\n }\r\n public getQueryIndex(sortIndex?: string): SearchIndex {\r\n return this.client.initIndex((appConstants.algoliaQueryIndexPrefix || \"\") + sortIndex);\r\n }\r\n // to Initialize Multiple Indices Query: BI-479\r\n public async getQueriesInit(filters?: any, options?: any): Promise {\r\n let sortedQueries: any[] = [];\r\n const envPrefix = appConstants.algoliaIndexPrefix || \"\";\r\n const createQuery = [\r\n {\r\n indexName: envPrefix + this.getQuickSearchProducts(), //dotcom_products\r\n query: filters,\r\n params: {\r\n hitsPerPage: 40,\r\n },\r\n },\r\n {\r\n indexName: this.getQuerySuggestionIndex(), // products_query_suggestions\r\n query: filters,\r\n params: {\r\n clickAnalytics: true,\r\n },\r\n },\r\n {\r\n indexName: envPrefix + this.getAlgoliaContentIndex(), // contentful_data\r\n query: filters,\r\n },\r\n {\r\n indexName: envPrefix + this.getCategoryProducts(), // products\r\n query: filters,\r\n },\r\n ];\r\n\r\n createQuery.map((item) => {\r\n sortedQueries.push(this.client.initIndex((appConstants.algoliaQueryIndexPrefix || \"\") + item.indexName));\r\n });\r\n return sortedQueries;\r\n }\r\n\r\n // Performs search on multiple indices on a single instance BI-479\r\n public async performMultipleSearch(queryArr?: any): Promise {\r\n let responseArray: any = [];\r\n try {\r\n const results = await this.client.multipleQueries(queryArr);\r\n if (results && results.results) {\r\n results.results.forEach((resp: any) => {\r\n responseArray.push(resp);\r\n });\r\n }\r\n } catch (error) {\r\n console.log(\"Some error: \", error);\r\n }\r\n return responseArray;\r\n }\r\n\r\n public facetToCollect = [\r\n \"PriceRange\",\r\n \"Brand\",\r\n \"Color\",\r\n \"Attributes.Occasion\",\r\n \"Size\",\r\n \"Attributes.ColorVariant\",\r\n \"Attributes.BloomTiming\",\r\n \"Attributes.Collection\",\r\n \"Attributes.ContainerVolumes\",\r\n \"Attributes.HandlingFee\",\r\n \"Attributes.HardinessZone\",\r\n \"Attributes.HardscapesColor\",\r\n \"Attributes.HardscapesStyle\",\r\n \"Attributes.LightLevel\",\r\n \"Attributes.Material\",\r\n \"Attributes.MatureHeight\",\r\n \"Attributes.MatureWidthSpread\",\r\n \"Attributes.StyleForm\",\r\n \"CategoryId\",\r\n ];\r\n\r\n public facetsToDisplay = [\r\n \"PriceRange\",\r\n \"Brand\",\r\n \"Color\",\r\n \"Attributes.Occasion\",\r\n \"Size\",\r\n \"Attributes.ColorVariant\",\r\n \"Attributes.BloomTiming\",\r\n \"Attributes.Collection\",\r\n \"Attributes.ContainerVolumes\",\r\n // \"Attributes.HandlingFee\",\r\n \"Attributes.HardinessZone\",\r\n \"Attributes.HardscapesColor\",\r\n \"Attributes.HardscapesStyle\",\r\n \"Attributes.LightLevel\",\r\n \"Attributes.Material\",\r\n \"Attributes.MatureHeight\",\r\n \"Attributes.MatureWidthSpread\",\r\n \"Attributes.StyleForm\",\r\n ];\r\n}\r\n\r\nexport default new Algolia();\r\n","import {\r\n Link as MaterialLink,\r\n LinkProps as MaterialLinkProps,\r\n} from \"@material-ui/core\";\r\nimport React, { FunctionComponent } from \"react\";\r\nimport { Link as RouterLink } from \"react-router-dom\";\r\n\r\ninterface LinkProps extends MaterialLinkProps {\r\n to: string;\r\n}\r\n\r\nconst Link: FunctionComponent = (props) => {\r\n return ;\r\n};\r\n\r\nexport default Link;\r\n","import React from \"react\";\r\nimport { Button, ButtonProps, CircularProgress, createStyles, makeStyles, Theme } from \"@material-ui/core\";\r\n\r\nconst useStyle = (styleProps: any) =>\r\n makeStyles((theme: Theme) =>\r\n createStyles({\r\n DoubleOutlinedBtn: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderWidth: 2,\r\n outline: `1px solid ${theme.palette.grey[300]}`,\r\n outlineOffset: 2,\r\n ...styleProps,\r\n \"&:hover, &:focus, &:active\": {\r\n borderWidth: 2,\r\n outline: `1px solid ${theme.palette.grey[400]}`,\r\n outlineOffset: 2,\r\n },\r\n },\r\n buttonProgress: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n })\r\n );\r\n\r\ninterface DoubleOutlinedBtnProps {\r\n buttonText?: string;\r\n buttonProps?: ButtonProps;\r\n styleProps?: any;\r\n loading?: boolean;\r\n loadingText?: string;\r\n className?: string | null;\r\n dataUrl?: string;\r\n}\r\n\r\nexport const DoubleOutlinedBtn: React.FunctionComponent = (props) => {\r\n const classes = useStyle(props?.styleProps)();\r\n const buttonProps = {\r\n color: props?.buttonProps?.color || \"primary\",\r\n variant: props?.buttonProps?.variant || \"contained\",\r\n dataUrl: props?.dataUrl,\r\n ...props.buttonProps,\r\n };\r\n return (\r\n \r\n {props.loadingText && props.loading ? props.loadingText : props?.buttonText}\r\n {props?.loading && }\r\n \r\n );\r\n};\r\n\r\ninterface DoubleOutlinedLinkBtnProps extends DoubleOutlinedBtnProps {\r\n href: string;\r\n target?: string;\r\n}\r\nexport const DoubleOutlinedLinkBtn: React.FunctionComponent = (props) => {\r\n const classes = useStyle(props?.styleProps)();\r\n return (\r\n \r\n {props?.buttonText}\r\n \r\n );\r\n};\r\n\r\nexport default DoubleOutlinedBtn;\r\n","import axios, { AxiosInstance, AxiosResponse, AxiosRequestConfig } from \"axios\";\r\nimport { Address, LineItem, MeUser, RequiredDeep, Tokens } from \"ordercloud-javascript-sdk\";\r\nimport BachmansOrder from \"../models/order\";\r\nimport { BachmansShipmentWithLineItems } from \"../models/shipment\";\r\nimport { BuyerXp } from \"../models/buyerXp\";\r\nimport { BachmansMeUser, RegisterUserResponse } from \"../models/user\";\r\nimport appConfig from \"../constants/app.constants\";\r\nimport { AvalaraAddressReq, AvalaraResponse } from \"../models/Avalara\";\r\nimport { BachmansPay } from \"../models/Payment\";\r\nimport { BachmansCategory } from \"../models/Category\";\r\n\r\nexport interface OrderCalculateResponse {\r\n Order: BachmansOrder;\r\n CalculatorShipments: BachmansShipmentWithLineItems[];\r\n}\r\n\r\nfunction guid() {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return s4() + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + s4() + s4();\r\n}\r\n\r\nclass bachmansIntegrations {\r\n private axios: AxiosInstance;\r\n constructor() {\r\n this.axios = axios.create({\r\n baseURL: appConfig.bachmansIntegrationsUrl,\r\n });\r\n }\r\n private buildConfig = (): AxiosRequestConfig => {\r\n return { headers: { Authorization: `Bearer ${Tokens.GetAccessToken()}` } };\r\n };\r\n\r\n private orderCalculate = async (orderId: string) => {\r\n return this.axios\r\n .post(\r\n \"/api/calculateorder\",\r\n {\r\n OrderID: orderId,\r\n OrderDirection: \"Outgoing\",\r\n },\r\n {\r\n headers: {\r\n Authorization: `Bearer ${Tokens.GetAccessToken()}`,\r\n },\r\n }\r\n )\r\n .then((response) => response.data);\r\n };\r\n\r\n private orderSubmit = async (orderId: string, approvedTotal: number, payments: BachmansPay) => {\r\n return this.axios.post(\r\n \"/api/submitorder\",\r\n {\r\n OrderID: orderId,\r\n OrderDirection: \"Outgoing\",\r\n ApprovedTotal: approvedTotal,\r\n BachmansPayments: payments,\r\n },\r\n {\r\n headers: {\r\n Authorization: `Bearer ${Tokens.GetAccessToken()}`,\r\n },\r\n }\r\n );\r\n };\r\n\r\n public order = {\r\n calculate: this.orderCalculate,\r\n submit: this.orderSubmit,\r\n };\r\n\r\n public upsertLineItem = async (orderID: string, lineItemReq: LineItem) => {\r\n let response = await this.axios.put(`/api/order/${orderID}/lineitems`, lineItemReq, this.buildConfig());\r\n return response.data;\r\n };\r\n\r\n public updateCCAsync = async (ccID: string, ccRequestBody: any) => {\r\n return await this.axios.post>(`/api/creditcard/${ccID}`, ccRequestBody, this.buildConfig());\r\n };\r\n public deleteCCAsync = async (ccID: string) => {\r\n return await this.axios.delete(`/api/creditcard/${ccID}`, this.buildConfig());\r\n };\r\n\r\n public getCatalogCache = async (catalogID: string) => {\r\n return this.axios.get[]>(`api/catalogs/${catalogID}`, {\r\n headers: { Authorization: `Bearer ${Tokens.GetAccessToken()}` },\r\n });\r\n };\r\n\r\n public getBuyerXp() {\r\n const url = appConfig.blobStorageUrl as string;\r\n return axios.get(`${url}/buyerxp.json`, {\r\n params: { guid: guid() },\r\n });\r\n }\r\n\r\n public getColorMap = async () => {\r\n const url = appConfig.blobStorageUrl as string;\r\n return axios.get(`${url}/colors.json`, {\r\n params: { guid: guid() },\r\n });\r\n };\r\n\r\n public searchGoogleAddress = async (address: string) => {\r\n const url =\r\n \"https://maps.googleapis.com/maps/api/geocode/json?address=\" +\r\n address +\r\n `&key=${process.env.REACT_APP_GOOGLE_API_KEY}`;\r\n return axios.get(url);\r\n };\r\n\r\n public registerUserAsync = async (user: BachmansMeUser): Promise => {\r\n let token = Tokens.GetAccessToken();\r\n let response = await this.axios.post>(\r\n `/api/register?token=${token}`,\r\n user,\r\n this.buildConfig()\r\n );\r\n return response.data;\r\n };\r\n\r\n // public GetPurplePerks = async (loyaltyID: string) => {\r\n // const url = appConfig.jitterbitUrl + \"/PurplePerksBalanceCheck\";\r\n // return axios.post(url, { card_number: `777777${loyaltyID}` });\r\n // };\r\n\r\n // !todo - cleanup this commented code\r\n // public GetPurplePerks = async (LoyaltyCardNumber: string) => {\r\n // const url = appConfig.bachmansIntegrationsUrl + \"/api/cecs/customerloyaltyaccountinfobycardnumber\";\r\n // console.log(\"LoyaltyCardNumber\", LoyaltyCardNumber);\r\n // return axios.post(url, { cardNumber: LoyaltyCardNumber });\r\n // };\r\n\r\n public GetPurplePerks = async (user: MeUser) => {\r\n const eagleUser = Boolean(user?.xp?.LoyaltyID && !user?.xp?.LoyaltyCardNumber);\r\n // for CECS customer Perks account details\r\n const purple_perks_url = appConfig.bachmansIntegrationsUrl + \"/api/cecs/customerloyaltyaccountinfobycardnumber\";\r\n // for Eagle customer Perks account details\r\n const purple_perks_url_for_eagle_user =\r\n appConfig.bachmansIntegrationsUrl + \"/api/cecs/customerprofilebylegacycustomerid\";\r\n\r\n if (eagleUser) {\r\n const response = await axios.post(purple_perks_url_for_eagle_user, { customerId: user?.xp?.EagleCustomerNumber });\r\n return {\r\n data: {\r\n ...response.data,\r\n EagleUser: true,\r\n },\r\n };\r\n }\r\n\r\n return axios.post(purple_perks_url, { cardNumber: user?.xp?.LoyaltyCardNumber });\r\n };\r\n\r\n public verifyRecaptcha = async (value: string) => {\r\n return this.axios.post(`/api/recaptcha/${value}`, this.buildConfig());\r\n };\r\n\r\n public updateEagleCustomer = async (user: any, action: string) => {\r\n console.log(\"user Eagle File Drop\", user);\r\n const url = appConfig.jitterbitUrl + \"/four51_to_eagle_filecreate\";\r\n const data = {\r\n CustomerID: user.xp && user.xp.EagleCustomerNumber ? user.xp.EagleCustomerNumber.toString() : user.ID,\r\n OMSAccountNumber: user.ID,\r\n Action: action,\r\n };\r\n return axios.post(url, data);\r\n };\r\n\r\n public validateAddress = async (address: Address): Promise => {\r\n const toValidate: AvalaraAddressReq = {\r\n addressline1: address.Street1,\r\n addressline2: address.Street2 ? address.Street2 : null,\r\n city: address.City,\r\n zipcode: address.Zip,\r\n country: address.Country,\r\n state: address.State,\r\n };\r\n const res = await this.axios.post>(\r\n `/api/Avalara/AddressValidation`,\r\n toValidate,\r\n this.buildConfig()\r\n );\r\n return res.data;\r\n };\r\n\r\n public validateGiftCard = async (giftCardCount: number, PinEnabled?: boolean): Promise => {\r\n const config = this.buildConfig();\r\n config.params = { count: giftCardCount, PinEnabled: PinEnabled };\r\n const res = await this.axios.get(\"/api/giftcards/validate\", config);\r\n return res.data;\r\n };\r\n\r\n // public giftCardBalance = async (cardNumber: string): Promise => {\r\n // const url = appConfig.jitterbitUrl + \"/GiftCardBalance\";\r\n // const data = {\r\n // card_number: cardNumber,\r\n // };\r\n // const result = await axios.post(url, data);\r\n\r\n // //EK: Keep for now for testing Gift Cards.\r\n // // A giftcard of 1234 will always return a valid card with $100 (in test)\r\n // if (cardNumber === \"1234\" && process.env.NODE_ENV !== \"production\") {\r\n // return {\r\n // data: {\r\n // card_value: 100,\r\n // },\r\n // };\r\n // } else return result;\r\n // };\r\n public giftCardBalance = async (cardNumber: string): Promise => {\r\n //EK: Keep for now for testing Gift Cards.\r\n // A giftcard of 1234 will always return a valid card with $100 (in test)\r\n if (cardNumber === \"1234\" && process.env.NODE_ENV !== \"production\") {\r\n return {\r\n data: {\r\n return: {\r\n AccountState: {\r\n Balance: {\r\n Amount: \"100\",\r\n },\r\n },\r\n },\r\n },\r\n };\r\n }\r\n const url = appConfig.bachmansIntegrationsUrl + \"/api/cecs/inquirygiftcard\";\r\n const data = {\r\n cardNumber: cardNumber,\r\n };\r\n const result = await axios.post(url, data);\r\n\r\n return result;\r\n };\r\n\r\n public BraintreeToken = async () => {\r\n const res = await this.axios.get(\"/api/braintree\");\r\n return res.data;\r\n };\r\n\r\n public getCECSCustomerID = async (userID: string): Promise => {\r\n const url = appConfig.bachmansIntegrationsUrl + \"/api/cecs/searchcustomer/\" + userID;\r\n try {\r\n const result = await axios.get(url);\r\n return result;\r\n } catch {\r\n return null;\r\n }\r\n };\r\n}\r\n\r\nexport interface GiftCardValidation {\r\n IsValid: boolean;\r\n NumberAvailable: number;\r\n}\r\n\r\nexport default new bachmansIntegrations();\r\n","import { createClient, ContentfulClientApi, EntryCollection, ContentTypeCollection } from \"contentful\";\r\nimport { StaticPageState } from \"../providers/contentful\";\r\nimport { each, filter, find, groupBy, map, sortBy } from \"lodash\";\r\nimport { SimpleContentModel } from \"../models/contentful/SimpleContent\";\r\nimport { ComplexContentModel } from \"../models/contentful/ComplexContent\";\r\nimport appConfig from \"../constants/app.constants\";\r\n\r\nimport { SimpleContentsBlockState, ComplexContentsBlockState } from \"../providers/contentful\";\r\n\r\nexport type contentfulBlockType = \"banner\" | \"full\" | \"inline\" | \"stacked\" | \"dynamic\";\r\n// interface PagesGroupedBySection {\r\n// [key: string]: StaticPage[];\r\n// }\r\nclass Contentful {\r\n private client: ContentfulClientApi;\r\n\r\n constructor() {\r\n this.client = createClient({\r\n space: process.env.REACT_APP_CONTENTFUL_SPACE as string,\r\n environment: appConfig.contentfulEnv as string,\r\n accessToken: process.env.REACT_APP_CONTENTFUL_KEY as string,\r\n });\r\n }\r\n public getContentTypes(query?: any): Promise {\r\n return this.client.getContentTypes(query);\r\n }\r\n\r\n public getEntries(query?: any): Promise> {\r\n return this.client.getEntries(query);\r\n }\r\n\r\n public getParsedEntries = (query?: any) => {\r\n return this.client.getEntries(query).then(this.client.parseEntries);\r\n };\r\n\r\n public getContentTypeAsync = (contentTypeID: string) => {\r\n return this.client.getContentType(contentTypeID);\r\n };\r\n\r\n public getAssets = (query?: any) => {\r\n return this.client.getAssets(query);\r\n };\r\n\r\n public groupStaticPagesBySection = (staticPages: StaticPageState) => {\r\n if (staticPages.data) {\r\n let sections = groupBy(\r\n sortBy(\r\n filter(staticPages.data, (p: any) => p.fields.navigation && !p.fields.parentPage),\r\n (p: any) => p.fields.listOrder\r\n ),\r\n (p: any) => p.fields.section\r\n );\r\n //format and add links to pages; sections: PagesGroupedBySection\r\n return each(sections, (pages: any) => {\r\n //pages: StaticPage[]\r\n pages = map(pages, (page: any) => {\r\n page.fields.link = `/${page.fields?.section}/${page.fields?.slug}`;\r\n return page;\r\n });\r\n });\r\n } else {\r\n return {};\r\n }\r\n };\r\n\r\n public getArticlesByTag = () => {\r\n return this.getContentTypeAsync(\"article\").then((results) => {\r\n let tags = find(results.fields, { id: \"tags\" })?.items?.validations[0]?.in;\r\n return map(tags, (tag) => {\r\n return { link: `/information/resource-hub?tag=${tag}`, title: tag };\r\n });\r\n });\r\n };\r\n\r\n public getWorkshopAndEventsLinks = async () => {\r\n let response = await this.getEntries({\r\n content_type: \"eventsLanding\",\r\n include: 2,\r\n });\r\n let parsedRespone: any = this.client.parseEntries(response);\r\n let complexContent = parsedRespone.items[0]?.fields?.navLinks;\r\n return map(complexContent, (c) => {\r\n return { link: c?.fields?.link, title: c?.fields?.title };\r\n });\r\n };\r\n\r\n public getSimpleContentFromIDs(ids: string[], simpleContent: SimpleContentsBlockState): SimpleContentModel[] {\r\n var matched = simpleContent.data?.filter((d) => ids?.includes(d.sys.id));\r\n return matched?.map((simple) => simple.fields) || [];\r\n }\r\n\r\n public getComplexContentFromIDs(ids: string[], complexContent: ComplexContentsBlockState): ComplexContentModel[] {\r\n var matched = complexContent.data?.filter((d) => ids?.includes(d.sys.id));\r\n return matched?.map((complex) => complex.fields) || [];\r\n }\r\n\r\n // private PaginateVirtually(\r\n // items: Entry[],\r\n // page: number = 1,\r\n // pageSize: number = 10\r\n // ) {\r\n // return items.slice((page - 1) * pageSize, page * pageSize);\r\n // }\r\n}\r\n\r\nexport default new Contentful();\r\n","import React from \"react\";\r\nimport { Box, CircularProgress, Typography } from \"@material-ui/core\";\r\n\r\ninterface BachmansLoadingProps {\r\n text?: string;\r\n}\r\n\r\nconst BachmansLoading: React.FunctionComponent = (props) => {\r\n return (\r\n \r\n \r\n \r\n {props.text || \"Loading...\"}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BachmansLoading;\r\n","import { flatten, intersection, isUndefined, keys, uniq, values } from \"lodash\";\r\nimport { Address, BuyerAddress, BuyerProduct, Category, LineItem, Me } from \"ordercloud-javascript-sdk\";\r\nimport { BuyerXp, DeliveryTypes } from \"../models/buyerXp\";\r\nimport bachDateTime from \"./bachDateTime.service\";\r\nimport dcfService from \"./dcf.service\";\r\nimport { Moment } from \"moment\";\r\nimport { defaultTypes, Destination } from \"../constants/destinations\";\r\nimport deliveryResourceService from \"./delivery-resource.service\";\r\nimport stringService from \"./string.service\";\r\nimport moment from \"moment\";\r\nimport { DeliveryMethods } from \"../models/delivery\";\r\nimport productService from \"./product.service\";\r\nimport { OrderState } from \"../redux/slices/order\";\r\nimport { DeliveryOption } from \"../components/Product/ProductDetail\";\r\n\r\nconst getDestinationTypes = (methods?: any): Destination[] => {\r\n if (!methods) {\r\n return defaultTypes;\r\n } else if (isPickUp(Object.keys(methods).join(\"\"))) {\r\n return defaultTypes.filter((d) => isPickUp(d.type));\r\n } else {\r\n return defaultTypes.filter((d) => {\r\n var result = methods ? d.validMethods === \"*\" || intersection(d.validMethods, keys(methods)).length > 0 : true;\r\n return result;\r\n });\r\n }\r\n};\r\n\r\nconst getDeliveryTypeFromAddress = (\r\n products: BuyerProduct[],\r\n methods: DeliveryMethods,\r\n address: BuyerAddress,\r\n currentMethod?: DeliveryTypes\r\n): DeliveryTypes | undefined => {\r\n if (address.xp?.addressType === \"InStorePickUp\" && methods.InStorePickUp?.enabled) {\r\n return isPickUp(currentMethod || \"\") ? currentMethod : \"InStorePickUp\";\r\n }\r\n if (currentMethod === \"USPS\" && products.every((p) => p.ID === \"GIFTCARD\")) {\r\n return currentMethod;\r\n } else if (\r\n isLocalDelivery(address.Zip || \"\", address.City || \"\") &&\r\n methods.LocalDelivery?.enabled &&\r\n currentMethod !== \"Email\"\r\n ) {\r\n return \"LocalDelivery\";\r\n } else if (currentMethod === \"Email\") {\r\n return \"Email\";\r\n } else if (!isLocalDelivery(address.Zip || \"\", address.City || \"\")) {\r\n const allProdsNationWideEligible = products.every((p) => canDeliverNationwide(methods, p));\r\n if (allProdsNationWideEligible) {\r\n if (methods.Courier) {\r\n if (products.every((p) => canDeliveryWire(p))) {\r\n return \"Wired\";\r\n } else if (products.some((p) => canDeliveryWire(p))) {\r\n // if some but not all can be wired do not return a method\r\n return undefined;\r\n }\r\n }\r\n if (products.every((p) => p.ID === \"GIFTCARD\") && methods.USPS) {\r\n return \"USPS\";\r\n } else if (methods.UPS) {\r\n return \"UPS\";\r\n } else if (methods.USPS) {\r\n return \"USPS\";\r\n }\r\n }\r\n }\r\n};\r\n\r\nconst getAvailableDeliveryMethods = (products: BuyerProduct[], dcfCategories: Category[]): DeliveryMethods => {\r\n const methodsArray: DeliveryMethods[] = products.map((p) => dcfService.GetDcfSetting(p, \"Delivery\", dcfCategories));\r\n const methods: DeliveryMethods = {};\r\n let types: DeliveryTypes[] = [\"Wired\", \"Courier\", \"InStorePickUp\", \"CurbsidePickUp\", \"LocalDelivery\", \"USPS\", \"UPS\"];\r\n if (products.some((p) => p?.ID === \"GIFTCARD\")) {\r\n types = [\"CurbsidePickUp\", \"InStorePickUp\", \"LocalDelivery\", \"USPS\"];\r\n }\r\n types.forEach((type) => {\r\n const thisType = methodsArray.map((m) => m[type]).filter((item) => item !== undefined);\r\n if (thisType && thisType.length) {\r\n const enabled = !(thisType.filter((t) => !t?.enabled).length >= 1);\r\n if (enabled) {\r\n methods[type] = {\r\n enabled: !(thisType.filter((t) => !t?.enabled).length >= 1),\r\n leadDays: Math.max(...thisType.map((t) => t?.leadDays || 0)),\r\n };\r\n }\r\n }\r\n });\r\n return methods;\r\n};\r\n\r\nconst getRouteCode = (zipCode: string, city: string, localAddresses?: any[]): boolean | string => {\r\n if (localAddresses === null) {\r\n localAddresses = deliveryResourceService.GetMatchingAddress(zipCode);\r\n }\r\n var routeCode = false;\r\n localAddresses?.forEach((address: any) => {\r\n if (\r\n stringService.PreCompare(address.City) === \"minnesota\" ||\r\n stringService.PreCompare(address.City) === stringService.PreCompare(city)\r\n ) {\r\n routeCode = address.CompanyName;\r\n }\r\n });\r\n return routeCode;\r\n};\r\n\r\nconst isLocalDelivery = (zipCode: string, city: string): boolean | string => {\r\n var addressMatchingZip = deliveryResourceService.GetMatchingAddress(zipCode);\r\n return !city ? !!addressMatchingZip.length : getRouteCode(zipCode, city, addressMatchingZip);\r\n};\r\n\r\nexport interface DeliveryMethodAndRouteCode {\r\n method?: DeliveryTypes;\r\n routeCode?: boolean | string;\r\n}\r\n\r\nconst isClosedHoliday = (holidays: any[], currentMoment: Moment) => {\r\n var closedHolidays = holidays?.filter((holiday) => holiday.time.toLowerCase() === \"closed\").map((h) => h.day);\r\n return bachDateTime.IsHoliday(currentMoment, closedHolidays);\r\n};\r\n\r\nconst isDateDisabled = (\r\n shippingAddress: Address,\r\n products: BuyerProduct[],\r\n buyerXp: BuyerXp,\r\n lyndaleStore: Address,\r\n delMethod?: DeliveryTypes,\r\n current?: CurrentDateObj\r\n) => {\r\n if (!current) return false;\r\n if (current.mode !== \"day\") return false;\r\n var isDisabled = false;\r\n var currentMoment = bachDateTime.GetUTC(current.date);\r\n var week = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\r\n var weekday = week[currentMoment.isoWeekday() - 1];\r\n if (isPickUp(delMethod)) {\r\n shippingAddress?.xp?.WorkingHrs?.forEach((workingRange: any) => {\r\n if (currentMoment.isBetween(workingRange.StartDate, workingRange.EndDate, null, \"[]\")) {\r\n isDisabled = workingRange[weekday].Closed;\r\n }\r\n if (isClosedHoliday(shippingAddress.xp.Holidays, currentMoment)) {\r\n isDisabled = true;\r\n }\r\n });\r\n } else if (delMethod !== \"Courier\") {\r\n //DISABLE EVERY SUNDAY (BACHMAN'S / FLORISTS DO NOT DELIVER SUNDAYS)\r\n if (weekday === \"Sun\") isDisabled = true;\r\n\r\n //DISABLE HOLIDAYS WHERE LYNDALE STORE (delivery store) IS CLOSED\r\n if (isClosedHoliday(lyndaleStore.xp.Holidays, currentMoment)) isDisabled = true;\r\n\r\n //DISABLE DAYS WHERE ALL DELIVERY RUNS ARE DISABLED (IF LOCAL DELIVERY)\r\n if (delMethod === \"LocalDelivery\") {\r\n if (buyerXp.DeliveryDatesN[currentMoment.format(\"YYYY-MM-DD\")]) {\r\n isDisabled = areDeliveryRunsDisabled(buyerXp, currentMoment);\r\n }\r\n }\r\n }\r\n var skuDisabled = flatten(products.map((p) => p?.xp?.NonDeliveryDates || []));\r\n //var skuDisabled = product?.xp?.NonDeliveryDates?.length ? product?.xp?.NonDeliveryDates?.length : [];\r\n if (skuDisabled && skuDisabled.length && delMethod !== \"Courier\") {\r\n skuDisabled.forEach((date: any) => {\r\n if (currentMoment.isSame(date, \"day\")) isDisabled = true;\r\n });\r\n }\r\n\r\n return isDisabled;\r\n};\r\n\r\nexport interface DeliveryDateData {\r\n minDate: Date;\r\n standardMinDate: Date;\r\n commonMinDate?: Date;\r\n}\r\n\r\nexport type DeliveryDateOptions = {\r\n [key in DeliveryTypes]?: DeliveryDateData;\r\n};\r\n\r\nexport interface DateOptionParameters {\r\n products: BuyerProduct[];\r\n deliveryMethods: DeliveryMethods;\r\n currentOrder?: OrderState;\r\n shippingAddress?: any;\r\n}\r\nconst getDateOptions = async (params: DateOptionParameters): Promise => {\r\n const { products, deliveryMethods, currentOrder, shippingAddress } = params;\r\n const [buyerXp, lyndaleStore] = await Promise.all([\r\n deliveryResourceService.GetBuyerXp(),\r\n deliveryResourceService.GetLyndaleStore(),\r\n ]);\r\n\r\n const determineMinimumDate = (\r\n deliveryType: DeliveryTypes,\r\n shippingAddress?: any,\r\n includeSameDay: boolean = true\r\n ): Date => {\r\n if (!shippingAddress && isPickUp(deliveryType)) shippingAddress = lyndaleStore;\r\n let dateFormat = \"MM-DD-YYYY\";\r\n let deliveryMethodBuffer = deliveryMethods[deliveryType]?.leadDays;\r\n var minimumDate;\r\n if (includeSameDay && bachDateTime.SameDay.CountDown(buyerXp)) {\r\n minimumDate = bachDateTime.Today();\r\n } else {\r\n minimumDate = bachDateTime.Tomorrow();\r\n }\r\n if (\r\n isDateDisabled(shippingAddress, products, buyerXp, lyndaleStore, deliveryType, {\r\n mode: \"day\",\r\n date: minimumDate.toDate(),\r\n })\r\n ) {\r\n var minimumDisabled = true;\r\n while (minimumDisabled) {\r\n minimumDate = minimumDate.add(1, \"day\");\r\n minimumDisabled = isDateDisabled(shippingAddress, products, buyerXp, lyndaleStore, deliveryType, {\r\n mode: \"day\",\r\n date: minimumDate.toDate(),\r\n });\r\n }\r\n }\r\n if (deliveryMethodBuffer) {\r\n //Ignore disabled days when applying the delivery method buffer\r\n //Example: deliverMethodBuffer is 4 days, if bachmans does not deliver or is closed on one of those days\r\n // the deliveryMethodBuffer should not count that day as part of the MinDays.\r\n while (deliveryMethodBuffer > 0) {\r\n minimumDate.add(1, \"d\");\r\n if (\r\n !isDateDisabled(shippingAddress, products, buyerXp, lyndaleStore, deliveryType, {\r\n mode: \"day\",\r\n date: minimumDate.toDate(),\r\n })\r\n ) {\r\n deliveryMethodBuffer--;\r\n }\r\n }\r\n }\r\n return moment(minimumDate.format(dateFormat), dateFormat).toDate();\r\n };\r\n\r\n const determineCommonDate = (deliveryType: DeliveryTypes, minDate: Date): Date | undefined => {\r\n let commonDate;\r\n if (currentOrder?.shipments?.filter((s) => s.Shipper === deliveryType)?.length === 1) {\r\n const commonShipment = currentOrder.shipments.find((s) => s.Shipper === deliveryType);\r\n if (moment(commonShipment?.xp?.RequestedDeliveryDate) >= moment(minDate)) {\r\n commonDate = moment(commonShipment?.xp?.RequestedDeliveryDate).toDate();\r\n }\r\n }\r\n return commonDate;\r\n };\r\n const obj: DeliveryDateOptions = {};\r\n Object.keys(deliveryMethods)?.forEach((type) => {\r\n const minDate = determineMinimumDate(type as DeliveryTypes, shippingAddress, true);\r\n obj[type as DeliveryTypes] = {\r\n minDate: minDate,\r\n standardMinDate: determineMinimumDate(type as DeliveryTypes, shippingAddress, false),\r\n commonMinDate: determineCommonDate(type as DeliveryTypes, minDate),\r\n };\r\n if (obj.InStorePickUp) {\r\n obj.CurbsidePickUp = obj.InStorePickUp;\r\n }\r\n });\r\n return obj;\r\n};\r\n\r\nexport interface CurrentDateObj {\r\n mode: string;\r\n date: Date;\r\n}\r\n\r\nconst areDeliveryRunsDisabled = (buyerXp: BuyerXp, currentMoment: Moment): boolean => {\r\n const deliverySetting = buyerXp.DeliveryDatesN[currentMoment.format(\"YYYY-MM-DD\")];\r\n const runsDisabled = (settingsArray: any[], disabledAmount: number) =>\r\n settingsArray.filter((v) => !v.checkedRun)?.length === disabledAmount;\r\n if (deliverySetting) {\r\n var settingsArray = values(deliverySetting);\r\n return (\r\n runsDisabled(settingsArray, 3) ||\r\n (runsDisabled(settingsArray, 2) &&\r\n deliverySetting.AM.checkedRun &&\r\n (bachDateTime.IsSameDay(currentMoment.toDate(), bachDateTime.Today().toDate()) ||\r\n (bachDateTime.IsSameDay(currentMoment.toDate(), bachDateTime.Tomorrow().toDate()) &&\r\n bachDateTime.IsAfterNextDayAMCutoff(buyerXp))))\r\n );\r\n } else return false;\r\n};\r\nexport interface LocalAddressData {\r\n isLocal: boolean;\r\n routeCode?: string;\r\n}\r\nconst preCompare = (text?: string) => {\r\n //remove whitespace, periods and lowercase text\r\n return text && typeof text === \"string\" ? text.replace(/\\s/g, \"\").replace(/\\./g, \"\").toLowerCase() : \"\";\r\n};\r\n\r\nconst isAddressLocal = (address: Address, localAddresses: Address[]): LocalAddressData => {\r\n const addressesMatchingZip = localAddresses.filter((a) => a.Zip === address?.Zip);\r\n let rc;\r\n addressesMatchingZip.forEach((a) => {\r\n if (preCompare(a.City) === \"minnesota\" || preCompare(a.City) === preCompare(address?.City)) {\r\n rc = a.CompanyName;\r\n }\r\n });\r\n return {\r\n isLocal: address?.City ? !isUndefined(rc) : !!addressesMatchingZip.length,\r\n routeCode: rc,\r\n };\r\n};\r\n\r\nconst getPickUpStores = async () => {\r\n const storeDestination = getDestinationTypes().find((d) => isPickUp(d.type));\r\n const stores = await Me.ListAddresses({\r\n filters: storeDestination?.filters,\r\n });\r\n return stores.Items;\r\n};\r\n\r\nconst canDeliveryWire = (product?: BuyerProduct): boolean => {\r\n return !isUndefined(product) && product.xp.CodeB2 === \"Y\" && [\"E\", \"F\", \"T\"].includes(product.xp?.CodeB4 || \"\");\r\n};\r\n\r\nconst canDeliverNationwide = (methods?: DeliveryMethods, product?: BuyerProduct) => {\r\n return (methods?.UPS || methods?.USPS) && productService.IsNationWideAvailable(product);\r\n};\r\n\r\nconst canDeliver = (methods?: DeliveryMethods, product?: BuyerProduct) => {\r\n return methods?.LocalDelivery || canDeliverNationwide();\r\n};\r\n\r\nconst getDeliveryRun = (date: moment.Moment, buyerXp: BuyerXp) => {\r\n return buyerXp.DeliveryDatesN[date.utc().format(\"YYYY-MM-DD\")] || buyerXp.DeliveryRuns[0];\r\n};\r\n\r\nconst getAddressName = (address: Address, isPickUp?: boolean) => {\r\n if (address.xp?.NickName) {\r\n return address.xp.NickName;\r\n } else if (address.CompanyName && isPickUp === false) {\r\n return `${address.CompanyName}, ${address.FirstName} ${address.LastName}`;\r\n } else if (address.CompanyName) {\r\n return address.CompanyName;\r\n } else {\r\n return `${address.FirstName} ${address.LastName}`;\r\n }\r\n};\r\n\r\nconst isPickUp = (val?: string) => [\"InStorePickUp\", \"CurbsidePickUp\"].includes(val || \"\");\r\n\r\nconst allShipmentsArePickUp = (order: OrderState) => {\r\n return order.shipments?.length && order.shipments.every((s) => isPickUp(s.Shipper));\r\n};\r\n\r\nconst getMatchingDeliveryMethod = (methods: DeliveryMethods, currentOrder: OrderState): DeliveryTypes | undefined => {\r\n const deliveryShipments = currentOrder.shipments?.filter((s) => !isPickUp(s.Shipper));\r\n const currentDeliveryMethods = uniq(deliveryShipments?.map((s) => s.Shipper || \"\"));\r\n if (currentDeliveryMethods.length === 1 && methods && methods[currentDeliveryMethods[0] as DeliveryTypes]) {\r\n return currentDeliveryMethods[0] as DeliveryTypes;\r\n } else {\r\n return undefined;\r\n }\r\n};\r\n\r\nconst ensureDateNeededAfterDateAdded = (partial: Partial, dateAdded?: string): Partial => {\r\n if (partial.DateNeeded) {\r\n const added = moment(dateAdded);\r\n const newDate = moment(partial.DateNeeded);\r\n if (added.day() === newDate.day()) {\r\n const hours = added.hours();\r\n const minutes = added.minutes();\r\n newDate.add(hours, \"hours\");\r\n newDate.add(minutes + 1, \"minutes\");\r\n partial.DateNeeded = newDate.toISOString();\r\n }\r\n }\r\n return partial;\r\n};\r\n\r\nconst buildDeliveryOption = (type: DeliveryTypes, options?: DeliveryDateOptions): DeliveryOption => {\r\n let date: string | undefined;\r\n if (options) {\r\n date = options[type]?.commonMinDate\r\n ? options[type]?.commonMinDate?.toDateString()\r\n : options[type]?.minDate.toDateString();\r\n }\r\n return {\r\n selectedOption: isPickUp(type) ? \"PickUp\" : \"Delivery\",\r\n type: type,\r\n date: date,\r\n };\r\n};\r\n\r\nconst service = {\r\n GetAvailableDeliveryMethods: getAvailableDeliveryMethods,\r\n GetDestinationTypes: getDestinationTypes,\r\n GetDateOptions: getDateOptions,\r\n IsLocalDelivery: isLocalDelivery,\r\n IsDateDisabled: isDateDisabled,\r\n IsAddressLocal: isAddressLocal,\r\n GetPickUpStores: getPickUpStores,\r\n CanDeliver: canDeliver,\r\n CanDeliveryNationWide: canDeliverNationwide,\r\n CanDeliverWire: canDeliveryWire,\r\n GetDeliveryRun: getDeliveryRun,\r\n GetAddressName: getAddressName,\r\n EnsureDateNeededAfterDateAdded: ensureDateNeededAfterDateAdded,\r\n IsPickUp: isPickUp,\r\n AllShipmentsArePickUp: allShipmentsArePickUp,\r\n GetMatchingDeliveryMethod: getMatchingDeliveryMethod,\r\n BuildDeliveryDateOption: buildDeliveryOption,\r\n GetDeliveryTypeFromAddress: getDeliveryTypeFromAddress,\r\n};\r\n\r\nexport default service;\r\n","import React, { Fragment, FunctionComponent, useMemo, useCallback, useEffect, useState } from \"react\";\r\nimport {\r\n Collapse,\r\n createStyles,\r\n Grid,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n ListItem,\r\n ListItemText,\r\n List,\r\n} from \"@material-ui/core\";\r\nimport { Add, Remove } from \"@material-ui/icons\";\r\nimport Link from \"../../Shared/Link\";\r\nimport { Category } from \"ordercloud-javascript-sdk\";\r\nimport { contentfulEventArticleLinks, contenfulStaticPage } from \"../../../models/contentful/links\";\r\nimport { map } from \"lodash\";\r\nimport categoryService from \"../../../services/category.service\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nexport type linkCoulmnType = \"eventLink\" | \"categoryLink\" | \"resourcehublink\";\r\ninterface LinkColumnProps {\r\n title: string;\r\n expandedIndex: number;\r\n expandCallback: (index: number) => void;\r\n index: number;\r\n links: Array;\r\n isDesktop: boolean;\r\n type: linkCoulmnType;\r\n}\r\n\r\ninterface formattedLink {\r\n Title: string;\r\n Link: string;\r\n Type: string;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n desktopGridColumn: {\r\n \"&:not(:last-child)\": {\r\n \"& > div\": {\r\n height: \"100%\",\r\n borderRight: `1px solid ${theme.palette.grey[200]}`,\r\n marginRight: theme.spacing(2.5),\r\n paddingRight: theme.spacing(2.5),\r\n },\r\n },\r\n },\r\n desktopColumnHeader: {\r\n marginBottom: theme.spacing(1.5),\r\n },\r\n desktopLinkItem: {\r\n marginBottom: theme.spacing(1),\r\n },\r\n })\r\n);\r\n\r\nconst LinkColumn: FunctionComponent = (props) => {\r\n const { title, expandedIndex, index, expandCallback, links, isDesktop, type } = props;\r\n const classes = useStyle();\r\n const [formatedLinks, setFormattedLinks] = useState([]);\r\n let history = useHistory();\r\n useEffect(() => {\r\n if (links && links.length) {\r\n if (\"ID\" in links[0]) {\r\n //logic for category\r\n let formatted: any = map(links, (cat) => {\r\n if (\"ID\" in cat) {\r\n if (cat.ID == \"OnSale\") {\r\n return { Link: `${cat.xp?.Link}`, Title: cat.Name };\r\n }\r\n return { Link: `${cat.ID}`, Title: cat.Name };\r\n }\r\n });\r\n if (formatted) {\r\n setFormattedLinks(formatted);\r\n }\r\n }\r\n if (\"fields\" in links[0]) {\r\n //logic for contentfulStaticPage\r\n let formatted: any = map(links, (page) => {\r\n if (\"fields\" in page) {\r\n return { Link: `${page.fields.link}`, Title: page.fields.title };\r\n }\r\n });\r\n if (formatted) {\r\n if (type === \"resourcehublink\") {\r\n formatted.unshift({ Link: \"/information/resource-hub\", Title: \"All Care Guides\" });\r\n }\r\n setFormattedLinks(formatted);\r\n }\r\n }\r\n if (\"title\" in links[0]) {\r\n //logic for events & article\r\n let formatted: any = map(links, (info) => {\r\n if (\"title\" in info) {\r\n return { Link: `${info.link}`, Title: info.title };\r\n }\r\n });\r\n if (formatted) {\r\n setFormattedLinks(formatted);\r\n }\r\n }\r\n }\r\n }, [links]);\r\n\r\n const handleExpandClick = useCallback(\r\n (index: number) => (e: React.MouseEvent) => {\r\n expandCallback(index);\r\n },\r\n [expandCallback]\r\n );\r\n\r\n const getRoute = (link: formattedLink) => {\r\n return link?.Link.includes(\"/\") ? link?.Link || \"\" : `${categoryService.BuildCategoryUrlFromId(link.Link, \"c\")}`;\r\n };\r\n\r\n const goToRoute = (link: formattedLink) => {\r\n const route = getRoute(link);\r\n history.push(route);\r\n };\r\n\r\n const isExpanded = useMemo(() => {\r\n return expandedIndex === index;\r\n }, [expandedIndex, index]);\r\n\r\n return isDesktop ? (\r\n \r\n
\r\n \r\n {title}\r\n \r\n {formatedLinks &&\r\n formatedLinks.map((link: formattedLink, i: number) => (\r\n \r\n {link.Title}\r\n \r\n ))}\r\n
\r\n
\r\n ) : (\r\n \r\n \r\n \r\n {isExpanded ? : }\r\n \r\n \r\n \r\n {formatedLinks &&\r\n formatedLinks.map((link: formattedLink, index) => (\r\n goToRoute(link)}>\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LinkColumn;\r\n","import React, { FunctionComponent } from \"react\";\r\nimport { createStyles, IconButton, makeStyles, Theme } from \"@material-ui/core\";\r\nimport { Facebook, Instagram, Pinterest, YouTube } from \"@material-ui/icons\";\r\nimport { neutral, purple } from \"../../../themes/colors\";\r\n\r\ninterface SociaMediaLinksProps {}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n backgroundColor: neutral.offwhite_bg,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\",\r\n justifyContent: \"center\",\r\n padding: theme.spacing(4, 0, 3, 0),\r\n \"& > a\": { margin: theme.spacing(0, 1, 0, 1) },\r\n \"& .MuiSvgIcon-root\": {\r\n fontSize: \"1.9rem\",\r\n },\r\n // reduced Mui iconButton padding-x below 'xs' breakpoints\r\n [theme.breakpoints.down(\"xs\")]: {\r\n \"& .MuiIconButton-root\": {\r\n padding: \"12px 0\",\r\n },\r\n },\r\n },\r\n })\r\n);\r\nconst SocialMediaLinks: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n\r\n const TikTokIcon = ({ color = purple.regular }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const NewTwitterX = ({ color = purple.regular }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SocialMediaLinks;\r\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\r\nimport { Container, createStyles, Grid, makeStyles, Theme, Typography, useMediaQuery, List } from \"@material-ui/core\";\r\nimport { neutral, purple, green } from \"../../../themes/colors\";\r\nimport LinkColumn from \"./LinkColumn\";\r\nimport SocialMediaLinks from \"./SocialMediaLinks\";\r\nimport PurplePerks from \"../../Shared/PurplePerksCard\";\r\nimport logoBadge from \"../../../assets/svg/logoBadge.svg\";\r\nimport { Dictionary } from \"@reduxjs/toolkit\";\r\nimport contentful from \"../../../services/contentful.service\";\r\nimport { StaticPageContext, FooterContext } from \"../../../providers/contentful\";\r\nimport { CatalogContext } from \"../../../providers/catalog\";\r\nimport { Category } from \"ordercloud-javascript-sdk\";\r\nimport { contentfulEventArticleLinks, contenfulStaticPage } from \"../../../models/contentful/links\";\r\nimport ReactMarkdown from \"react-markdown\";\r\nimport gfm from \"remark-gfm\";\r\nimport { linkCoulmnType } from \"./LinkColumn\";\r\nimport { usePathname } from \"./usePathname\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n backgroundColor: neutral.offwhite_bg,\r\n borderTop: `1px solid ${theme.palette.grey[200]}`,\r\n paddingTop: theme.spacing(10),\r\n marginTop: 0,\r\n color: neutral.text_white_bg,\r\n position: \"relative\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n paddingTop: theme.spacing(14),\r\n },\r\n },\r\n rootMarginTop: {\r\n marginTop: theme.spacing(12),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n marginTop: theme.spacing(14),\r\n },\r\n },\r\n purpleFooterSummary: {\r\n background: purple.regular,\r\n color: neutral.text_utility_bg,\r\n padding: theme.spacing(5, 0),\r\n },\r\n logoFooter: {\r\n margin: theme.spacing(0, 2, 2, 0),\r\n width: \"clamp(80px, 9vw, 105px)\",\r\n float: \"left\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n margin: theme.spacing(0, 4, 0, 0),\r\n float: \"unset\",\r\n },\r\n },\r\n container: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n },\r\n copyright: {\r\n background: purple.hover,\r\n color: neutral.text_utility_bg,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n paddingTop: theme.spacing(1),\r\n paddingBottom: theme.spacing(1),\r\n },\r\n footerMarkdown: {\r\n fontSize: theme.typography.body1.fontSize,\r\n fontFamily: theme.typography.body1.fontFamily,\r\n color: \"inherit\",\r\n textAlign: \"justify\",\r\n \"& a\": {\r\n color: green.promo,\r\n textDecoration: \"none\",\r\n fontWeight: theme.typography.fontWeightBold,\r\n \"&:hover, &:focus\": {\r\n textDecoration: \"underline\",\r\n },\r\n },\r\n },\r\n })\r\n);\r\n\r\ninterface FooterProps {}\r\n\r\nconst Footer = (props: FooterProps) => {\r\n const classes = useStyles();\r\n const [expandedIndex, setExpandedIndex] = React.useState(-1);\r\n const [formattedPages, setFormattedPages] = useState>([]);\r\n const [topCategories, setTopCategories] = useState([]);\r\n const [workshopEventLinks, setWorkshopEventLinks] = useState>([]);\r\n const [footerListGroups, setfooterListGroups] = useState<{\r\n [key: string]: Category | contentfulEventArticleLinks | contenfulStaticPage | any;\r\n }>({});\r\n const staticPages = useContext(StaticPageContext);\r\n const { categories } = useContext(CatalogContext);\r\n const footerContentful = useContext(FooterContext);\r\n const path = usePathname();\r\n\r\n useEffect(() => {\r\n contentful.getWorkshopAndEventsLinks().then((response) => {\r\n setWorkshopEventLinks(response);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (categories) {\r\n let topCats = categories.filter((c: Category) => !c.ParentID).filter((c: Category) => c.ID !== \"WorkshopsEvents\");\r\n topCats.push({\r\n ID: \"OnSale\",\r\n Name: \"On Sale\",\r\n Description: \"\",\r\n ListOrder: 0,\r\n Active: true,\r\n ParentID: \"\",\r\n ChildCount: 0,\r\n xp: {\r\n Link: \"/customer-service/on-sale-this-week\",\r\n },\r\n });\r\n setTopCategories(topCats);\r\n }\r\n }, [categories]);\r\n\r\n useEffect(() => {\r\n if (staticPages.ready) {\r\n setFormattedPages(contentful.groupStaticPagesBySection(staticPages));\r\n }\r\n }, [staticPages, footerContentful]);\r\n\r\n useEffect(() => {\r\n if (formattedPages) {\r\n setfooterListGroups({\r\n \"Bachman's Products\": topCategories,\r\n \"Workshop & Events\": workshopEventLinks,\r\n Services: formattedPages?.services,\r\n \"Resource Hub\": formattedPages.information,\r\n \"Customer Service\": formattedPages[\"customer-service\"],\r\n Corporate: formattedPages.corporate,\r\n });\r\n }\r\n }, [staticPages, formattedPages, workshopEventLinks, setfooterListGroups, topCategories]);\r\n\r\n const handleExpandClick = useCallback((selectedIndex: number) => {\r\n setExpandedIndex((currentState) => (currentState === selectedIndex ? -1 : selectedIndex));\r\n }, []);\r\n\r\n const isDesktop = useMediaQuery((theme: Theme) => theme.breakpoints.up(\"md\"));\r\n\r\n const innerContent = useMemo(() => {\r\n return Object.entries(footerListGroups).map(([title, links], index) => {\r\n let type: linkCoulmnType = \"categoryLink\";\r\n if (title === \"Resource Hub\") {\r\n type = \"resourcehublink\";\r\n }\r\n if (title === \"Workshop & Events\") type = \"eventLink\";\r\n return (\r\n \r\n );\r\n });\r\n }, [expandedIndex, handleExpandClick, isDesktop, footerListGroups]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {isDesktop ? (\r\n \r\n \r\n {innerContent}\r\n \r\n \r\n ) : (\r\n {innerContent}\r\n )}\r\n \r\n
\r\n \r\n \"Bachmans.com\"\r\n {footerContentful.data && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n © Copyright {new Date().getFullYear()}, Bachman's Inc.\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import { useLocation } from \"react-router-dom\";\r\n\r\n// custom hook to get the current pathname in React\r\n\r\nexport const usePathname = () => {\r\n const location = useLocation();\r\n return location.pathname;\r\n};\r\n","export default __webpack_public_path__ + \"static/media/iconResource.963b57ac.svg\";","import {\r\n alpha,\r\n Breadcrumbs as MaterialBreadcrumbs,\r\n Container,\r\n createStyles,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport React, { FunctionComponent } from \"react\";\r\n\r\nimport { useAppSelector } from \"../../../redux/store-hook\";\r\nimport Link from \"../../Shared/Link\";\r\nimport { neutral } from \"../../../themes/colors\";\r\n\r\nconst useStyles = (dark?: boolean) =>\r\n makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n backgroundColor: dark ? alpha(theme.palette.grey[900], 0.8) : alpha(neutral.offwhite_bg, 0.8),\r\n padding: theme.spacing(1, 0),\r\n boxShadow: \"0px 2px 5px 0px rgb(0 0 0 / 5%)\",\r\n },\r\n textColor: {\r\n color: dark ? \"white\" : \"inherit\",\r\n },\r\n })\r\n );\r\n\r\nconst Breadcrumbs: FunctionComponent = (props) => {\r\n const { visible, links, current, dark, hideHome } = useAppSelector((state) => state.breadcrumbs);\r\n const classes = useStyles(dark)();\r\n return visible ? (\r\n
\r\n \r\n \"} className={classes.textColor}>\r\n {!hideHome && (\r\n \r\n Home\r\n \r\n )}\r\n {links.map((l, i) => (\r\n \r\n {l.label}\r\n \r\n ))}\r\n {current && current !== \"\" && {current}}\r\n \r\n \r\n
\r\n ) : null;\r\n};\r\n\r\nexport default Breadcrumbs;\r\n","import React, { Fragment, FunctionComponent, useContext, useMemo } from \"react\";\r\nimport { createStyles, List, ListItem, makeStyles, Theme } from \"@material-ui/core\";\r\nimport { Category } from \"ordercloud-javascript-sdk\";\r\nimport { neutral, purple } from \"../../../../themes/colors\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { CatalogContext } from \"../../../../providers/catalog\";\r\nimport categoryService from \"../../../../services/category.service\";\r\n\r\ninterface MegaMenuSubCategoryProps {\r\n subcategory: Category;\r\n onItemClick: any;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n listRoot: {\r\n marginBottom: theme.spacing(2),\r\n padding: theme.spacing(0, 2, 0, 4),\r\n },\r\n listHeader: {\r\n padding: 0,\r\n },\r\n subCatTitle: {\r\n fontSize: theme.typography.h5.fontSize,\r\n fontWeight: theme.typography.fontWeightBold,\r\n color: purple.utility,\r\n textDecoration: \"none\",\r\n \"&:hover\": {\r\n color: purple.regular,\r\n },\r\n },\r\n subCatListItem: {\r\n padding: \"4px 0\",\r\n \"& a\": {\r\n color: neutral.text_white_bg,\r\n fontSize: theme.typography.body1.fontSize,\r\n textDecoration: \"none\",\r\n \"&:hover\": {\r\n color: neutral.strikethrough,\r\n },\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst MegaMenuSubCategory: FunctionComponent = (props) => {\r\n const { categories } = useContext(CatalogContext);\r\n const { subcategory, onItemClick } = props;\r\n const classes = useStyle();\r\n\r\n const subCategoryChildren = useMemo(() => {\r\n if (subcategory && categories) {\r\n let subCategoryChildren = categories.filter((c: Category) => c.ParentID === subcategory.ID);\r\n\r\n //TODO: link to second level category page with query params.\r\n return subCategoryChildren.map((cat: Category, index: number) => (\r\n \r\n {cat.Name}\r\n \r\n ));\r\n }\r\n }, [subcategory, categories, classes.subCatListItem, onItemClick]);\r\n return (\r\n \r\n \r\n \r\n {subcategory.Name}\r\n \r\n \r\n }\r\n >\r\n {subCategoryChildren}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MegaMenuSubCategory;\r\n","import React, { FunctionComponent } from \"react\";\r\nimport { createStyles, makeStyles, Theme, Popover, ClickAwayListener } from \"@material-ui/core\";\r\n\r\ninterface MegaMenuProps {\r\n open: boolean;\r\n anchorEl: any;\r\n onClickAway: (event: React.MouseEvent) => void;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n popoverRoot: {\r\n pointerEvents: \"none\",\r\n },\r\n paperRoot: {\r\n pointerEvents: \"all\",\r\n display: \"flex\",\r\n width: \"100%\",\r\n maxHeight: 550,\r\n position: \"relative\",\r\n zIndex: theme.zIndex.appBar + 1,\r\n maxWidth: \"1280px !important\",\r\n transition: \"height 3s ease\",\r\n },\r\n })\r\n);\r\n\r\nconst MegaMenu: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { children, open, anchorEl, onClickAway } = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default MegaMenu;\r\n","import React, { FunctionComponent, useMemo } from \"react\";\r\nimport { Button, createStyles, List, ListItem, ListItemText, makeStyles, Theme } from \"@material-ui/core\";\r\nimport { purple } from \"../../../../themes/colors\";\r\nimport { KeyboardArrowRightSharp } from \"@material-ui/icons\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\ninterface article {\r\n title: string;\r\n id: string;\r\n slug: string;\r\n}\r\ninterface RelatedArticlesProps {\r\n articles: article[];\r\n categoryId: string;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n title: {\r\n color: purple.utility,\r\n },\r\n articleItem: {\r\n margin: 0,\r\n padding: theme.spacing(0, 2),\r\n },\r\n articleTitle: {},\r\n ButtonViewAll: {\r\n flex: \"none\",\r\n color: theme.palette.primary.main,\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n \"&:hover\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst RelatedArticles: FunctionComponent> = (props) => {\r\n const classes = useStyle();\r\n const { className, articles, categoryId } = props;\r\n const history = useHistory();\r\n\r\n const articleLinks = useMemo(() => {\r\n if (articles.length > 0) {\r\n return articles.map((article: article, index: number) => (\r\n \r\n \r\n {\r\n if (article?.slug) {\r\n history.push(`/information/resource-hub/${article.slug}`);\r\n return;\r\n }\r\n handleViewAllArticles();\r\n }}\r\n />\r\n \r\n \r\n ));\r\n } else {\r\n return null;\r\n }\r\n }, [articles, classes.articleTitle, classes.articleItem]);\r\n\r\n const handleViewAllArticles = () => {\r\n history.push(`/information/resource-hub?catID=${categoryId}`);\r\n };\r\n //TODO: Link to related Articles\r\n //TODO: link to ALL related Articles\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {articleLinks}\r\n \r\n }\r\n >\r\n View All Articles\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default RelatedArticles;\r\n","import { useEffect, useState } from \"react\";\r\n\r\n// Hook\r\nfunction useDebounce(\r\n value: any,\r\n delay: number,\r\n options?: {\r\n toggle?: \"default\" | \"on\" | \"off\";\r\n }\r\n) {\r\n // State and setters for debounced value\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(\r\n () => {\r\n if (typeof value === \"boolean\") {\r\n if (options && options.toggle === \"on\" && !value) {\r\n return setDebouncedValue(value);\r\n }\r\n if (options && options.toggle === \"off\" && value) {\r\n return setDebouncedValue(value);\r\n }\r\n }\r\n\r\n // Update debounced value after delay\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n\r\n // Cancel the timeout if value changes (also on delay change or unmount)\r\n // This is how we prevent debounced value from updating if value is changed ...\r\n // .. within the delay period. Timeout gets cleared and restarted.\r\n return () => {\r\n clearTimeout(handler);\r\n };\r\n },\r\n [value, delay, options] // Only re-call effect if value or delay changes\r\n );\r\n\r\n return debouncedValue;\r\n}\r\n\r\nexport default useDebounce;\r\n","import React, { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState, useContext } from \"react\";\r\nimport { Container, createStyles, makeStyles, Theme } from \"@material-ui/core\";\r\nimport { Skeleton } from \"@material-ui/lab\";\r\nimport { Categories, Category, RequiredDeep } from \"ordercloud-javascript-sdk\";\r\n\r\nimport MegaMenuSubCategory from \"./MegaMenuSubCatergory\";\r\nimport MegaMenu from \"./MegaMenu\";\r\nimport RelatedArticles from \"./RelatedArticles\";\r\nimport { neutral, purple } from \"../../../../themes/colors\";\r\nimport Link from \"../../../Shared/Link\";\r\nimport useDebounce from \"../../../Shared/hooks/useDebounce\";\r\nimport CategoryService from \"../../../../services/category.service\";\r\nimport { CatalogContext } from \"../../../../providers/catalog\";\r\nimport { find } from \"lodash\";\r\n\r\ninterface TopLevelCategoriesProps {}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n alignItems: \"stretch\",\r\n width: \"100%\",\r\n },\r\n topLevelCat: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n zIndex: theme.zIndex.appBar,\r\n color: neutral.text_white_bg,\r\n },\r\n subcategoriesContainer: {\r\n display: \"flex\",\r\n height: \"100%\",\r\n margin: 0,\r\n padding: theme.spacing(3, 2),\r\n },\r\n subcategories: {\r\n flex: \"1 0 83.33%\",\r\n columns: \"200px auto\",\r\n columnFill: \"balance\",\r\n columnRule: `solid 1px ${theme.palette.grey[300]}`,\r\n overflowX: \"auto\",\r\n position: \"relative\",\r\n\r\n \"& .MuiList-subheader\": {\r\n padding: \"0 16px\",\r\n pageBreakInside: \"avoid\",\r\n \"& li:not(:only-child):last-child\": {\r\n marginBottom: 16,\r\n pageBreakAfter: \"always\",\r\n },\r\n \"& li:first-child\": {\r\n paddingBottom: 0,\r\n },\r\n \"& li:only-child\": {\r\n paddingBottom: 16,\r\n },\r\n },\r\n \"& li\": {\r\n lineHeight: \"initial\",\r\n },\r\n },\r\n relatedArticles: {\r\n flex: \"1 0 16.67%\",\r\n backgroundColor: purple.light,\r\n \"& ul\": {\r\n display: \"flex\",\r\n flexFlow: \"column nowrap\",\r\n height: \"100%\",\r\n },\r\n },\r\n onSale: {\r\n color: purple.regular,\r\n },\r\n })\r\n);\r\n\r\nconst TopLevelCategories: FunctionComponent = (props) => {\r\n const { categories } = useContext(CatalogContext);\r\n\r\n const containerRef = useRef();\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const debouncedOpen = useDebounce(isOpen, 400, { toggle: \"on\" });\r\n const [l2Categories, setL2Categories] = useState([]);\r\n const [selectedCat, setSelectedCat] = useState>();\r\n const classes = useStyle();\r\n\r\n useEffect(() => {\r\n if (containerRef.current && categories) {\r\n setAnchorEl(containerRef.current);\r\n }\r\n }, [containerRef, categories]);\r\n\r\n const handleMenuOpen = useCallback(() => {\r\n setIsOpen(true);\r\n }, []);\r\n\r\n const handleMenuClose = useCallback(() => {\r\n setIsOpen(false);\r\n }, []);\r\n\r\n const onCategoryMouseEnter = useCallback(\r\n (categoryId: string) => async () => {\r\n if ([\"GiftCards\", \"OnSale\"].includes(categoryId)) {\r\n return handleMenuClose();\r\n }\r\n if (categories) {\r\n setL2Categories(\r\n categories.filter((c: Category) => {\r\n return c.ParentID === categoryId;\r\n })\r\n );\r\n\r\n if (isOpen === false) {\r\n //handle scenario where hovering cat links doesn't open after hovering over giftcards && on sale\r\n handleMenuOpen();\r\n }\r\n\r\n var activeCategory = await Categories.Get(\"Bachmans\", categoryId);\r\n setSelectedCat(activeCategory);\r\n }\r\n },\r\n [categories, handleMenuClose, handleMenuOpen, isOpen]\r\n );\r\n\r\n //--- TEMPLATES ---//\r\n\r\n const subCategories = useMemo(() => {\r\n if (l2Categories.length === 0) return [];\r\n return l2Categories.map((cat: Category, index: number) => (\r\n \r\n ));\r\n }, [l2Categories, handleMenuClose]);\r\n\r\n const topCatLinks = useMemo(() => {\r\n if (!categories) return [];\r\n let topCats = categories\r\n .filter((c: Category) => !c.ParentID)\r\n .filter((c: Category) => ![\"WorkshopsEvents\"].includes(c.ID || \"\"));\r\n\r\n return topCats.map((cat: RequiredDeep, index: number) => (\r\n \r\n {cat.Name}\r\n \r\n ));\r\n }, [categories, classes.topLevelCat, onCategoryMouseEnter]);\r\n\r\n return !categories ? (\r\n \r\n ) : (\r\n
\r\n {topCatLinks}\r\n \r\n On Sale\r\n \r\n \r\n \r\n
{subCategories}
\r\n {selectedCat?.xp?.Articles && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TopLevelCategories;\r\n","import React, { FunctionComponent } from \"react\";\r\nimport {\r\n Container,\r\n createStyles,\r\n makeStyles,\r\n Theme,\r\n Toolbar,\r\n} from \"@material-ui/core\";\r\n\r\nimport TopLevelCategories from \"./MegaMenu/TopLevelCategories\";\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"none\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"flex\",\r\n },\r\n \"& .MuiLink-root\": {\r\n \"&:not(:last-child)\": {\r\n marginRight: theme.spacing(3),\r\n },\r\n },\r\n alignItems: \"stretch\",\r\n },\r\n container: {\r\n display: \"flex\",\r\n },\r\n })\r\n);\r\n\r\ninterface CategoryToolbarProps {}\r\n\r\nconst CategoryToolbar: FunctionComponent = (props) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CategoryToolbar;\r\n","import { Badge, createStyles, makeStyles, Theme, Typography, IconButton, Hidden, SvgIcon } from \"@material-ui/core\";\r\nimport { isUndefined } from \"lodash\";\r\nimport React, { Fragment, FunctionComponent, useMemo } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useAppSelector } from \"../../../redux/store-hook\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n mobile: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n desktop: {\r\n display: \"none\",\r\n alignItems: \"center\",\r\n cursor: \"pointer\",\r\n \"& > div\": {\r\n marginLeft: theme.spacing(1),\r\n },\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"flex\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst MiniCart: FunctionComponent = () => {\r\n const currentOrder = useAppSelector((state) => state.order);\r\n const classes = useStyles();\r\n const history = useHistory();\r\n\r\n const cartCount = useMemo(() => {\r\n return currentOrder?.order?.CartCount || 0;\r\n }, [currentOrder]);\r\n\r\n const goToCart = () => history.push(\"/cart\");\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Cart\r\n \r\n {!isUndefined(cartCount) && (\r\n \r\n {`${cartCount} Item(s)`}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MiniCart;\r\n","import React, { FunctionComponent } from \"react\";\r\nimport { createStyles, makeStyles, Theme, Typography, useMediaQuery } from \"@material-ui/core\";\r\nimport { ChevronRight } from \"@material-ui/icons\";\r\nimport Link from \"../Shared/Link\";\r\nimport { searchType } from \"../../models/search\";\r\ninterface SearchResultsHeaderProps {\r\n variant: searchType;\r\n queryTerm: string;\r\n toggleMenu: () => void;\r\n result: any;\r\n queryID?: any;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n position: \"sticky\",\r\n top: 0,\r\n backgroundColor: \"white\",\r\n zIndex: theme.zIndex.mobileStepper,\r\n padding: theme.spacing(2, 1),\r\n margin: theme.spacing(0, -1),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n padding: theme.spacing(2.5, 0),\r\n margin: \"unset\",\r\n },\r\n },\r\n link: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n lineHeight: 1,\r\n fontWeight: theme.typography.fontWeightBold,\r\n \"& .MuiSvgIcon-root\": {\r\n fontSize: \"inherit\",\r\n },\r\n },\r\n title: {\r\n marginRight: theme.spacing(2),\r\n },\r\n })\r\n);\r\n\r\nconst SearchResultsHeader: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { variant, queryTerm, toggleMenu, result, queryID } = props;\r\n const isDesktop = useMediaQuery((theme: Theme) => theme.breakpoints.up(\"md\"));\r\n const handleRoute = () => {\r\n switch (variant) {\r\n case \"Products\":\r\n return `/search?query=${queryTerm}&type=Products&queryid=${queryID}`;\r\n case \"Events\":\r\n return `/search?query=${queryTerm}&type=Events`;\r\n case \"CareInfo\":\r\n return `/search?query=${queryTerm}&type=CareInfo`;\r\n case \"Query Suggestions\":\r\n return `/search?query=${queryTerm}&type=Query Suggestions`;\r\n case \"Categories\":\r\n return `/search?query=${queryTerm}&type=Categories`;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {isDesktop && (\r\n \r\n {variant === \"CareInfo\" ? \"Resource Hub\" : variant === \"Query Suggestions\" ? \"Popular Searches\" : variant}\r\n \r\n )}\r\n {!isDesktop && (\r\n \r\n {variant === \"Categories\"\r\n ? null\r\n : variant === \"CareInfo\"\r\n ? \"Resource Hub \"\r\n : variant === \"Query Suggestions\"\r\n ? \"Popular Searches\"\r\n : variant}\r\n \r\n )}\r\n\r\n {variant !== \"Query Suggestions\" &&\r\n variant !== \"Categories\" &&\r\n (variant === \"Products\" ? (\r\n
\r\n \r\n See All\r\n \r\n \r\n
\r\n ) : (\r\n
\r\n \r\n See All\r\n \r\n \r\n
\r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default SearchResultsHeader;\r\n","import React, { FunctionComponent, useCallback, useEffect, useState } from \"react\";\r\nimport {\r\n Avatar,\r\n createStyles,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemText,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport productService from \"../../services/product.service\";\r\nimport noImg from \"../../assets/images/noimg.jpg\";\r\nimport ProductPrice from \"../Product/ProductPrice\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport AlgoliaAnalytics from \"search-insights\";\r\nimport algolia from \"../../services/algolia.service\";\r\ninterface SearchResultProps {\r\n variant: \"Products\" | \"Events\" | \"CareInfo\" | \"Query Suggestions\" | \"Categories\";\r\n result: any;\r\n queryTerm?: string;\r\n toggleMenu: () => void;\r\n results: any;\r\n queryID?: any;\r\n index?: any;\r\n clickAll?: (params: any) => any;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n imgWrapper: {\r\n marginRight: theme.spacing(1),\r\n },\r\n imgAvatar: {\r\n width: theme.spacing(7),\r\n height: theme.spacing(7),\r\n objectFit: \"cover\",\r\n },\r\n resultTitle: {\r\n fontSize: theme.typography.overline.fontSize,\r\n width: 200,\r\n overflowWrap: \"normal\",\r\n },\r\n careInfoTitle: {\r\n fontSize: theme.typography.overline.fontSize,\r\n fontWeight: \"normal\",\r\n },\r\n })\r\n);\r\n\r\nconst SearchResult: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { variant, result, toggleMenu, queryTerm, results, queryID, index, clickAll } = props;\r\n const defaultProduct = productService.GetDefaultProduct(result);\r\n const [filteredCategories, setfilteredCategories] = useState([]);\r\n let history = useHistory();\r\n\r\n const handleResultSelection = useCallback(\r\n (e) => {\r\n let userToken;\r\n\r\n // Algolia Init method for sending Events\r\n AlgoliaAnalytics(\"init\", {\r\n appId: process.env.REACT_APP_ALGOLIA_APP as string,\r\n apiKey: process.env.REACT_APP_ALGOLIA_KEY as string,\r\n useCookie: true,\r\n });\r\n\r\n // Get AlgoliaUser Token from here\r\n AlgoliaAnalytics(\"getUserToken\", null, (err, newUserToken) => {\r\n if (err) {\r\n console.error(err);\r\n return;\r\n }\r\n userToken = newUserToken;\r\n });\r\n\r\n // Fetch Product Index and store it in variable\r\n const sortIndex = algolia.getQuickSearchProducts();\r\n let index = algolia.getProductIndex(sortIndex);\r\n\r\n // Fetch CareInfor Index and store it in variable\r\n const careinfosortIndex = algolia.getAlgoliaContentIndex();\r\n let careinfoindex = algolia.getProductIndex(careinfosortIndex);\r\n\r\n // Fetch Indexes for Popular Searches and Category\r\n\r\n const querySuggestionsortIndex = algolia.getQuerySuggestionIndex();\r\n let querySuggestionindex = algolia.getProductIndex(querySuggestionsortIndex);\r\n\r\n switch (variant) {\r\n case \"Products\":\r\n AlgoliaAnalytics(\"clickedObjectIDsAfterSearch\", {\r\n userToken: userToken, // required for Node.js\r\n eventName: \"Product clicked from quick search\",\r\n index: index.indexName,\r\n queryID: queryID,\r\n objectIDs: [result[0].ID],\r\n positions: [result[0].Position + 1],\r\n });\r\n history.push(\r\n `/p/${defaultProduct?.xp.ProductCode}/${defaultProduct?.Name?.replaceAll(\" \", \"-\")}?queryid=${queryID}`,\r\n {\r\n path: \"/search\",\r\n search: queryTerm ? `?query=${encodeURIComponent(queryTerm)}` : undefined,\r\n }\r\n );\r\n break;\r\n case \"Events\":\r\n history.push(`/event/${result?.xp?.ProductCode}`, {\r\n path: \"/search\",\r\n search: queryTerm ? `?query=${encodeURIComponent(queryTerm)}` : undefined,\r\n });\r\n break;\r\n case \"CareInfo\":\r\n let pos = parseInt(e.currentTarget.getAttribute(\"data-index\"));\r\n pos = pos + 1;\r\n AlgoliaAnalytics(\"clickedObjectIDsAfterSearch\", {\r\n userToken: userToken, // required for Node.jsired for Node.js\r\n eventName: \"CareInfo item\",\r\n index: careinfoindex.indexName,\r\n queryID: queryID,\r\n objectIDs: [result.objectID],\r\n positions: [pos],\r\n });\r\n if (result?.section) {\r\n history.push(`/${result?.section}/${result.slug}`);\r\n } else {\r\n history.push(`/information/resource-hub/${result.slug}`);\r\n }\r\n break;\r\n case \"Query Suggestions\":\r\n let Suggestionpos = parseInt(e.currentTarget.getAttribute(\"data-index\"));\r\n Suggestionpos = Suggestionpos + 1;\r\n AlgoliaAnalytics(\"clickedObjectIDsAfterSearch\", {\r\n userToken: userToken, // required for Node.jsired for Node.js\r\n eventName: \"Query Suggestions item clicked\",\r\n index: querySuggestionindex.indexName,\r\n queryID: queryID,\r\n objectIDs: [result.objectID],\r\n positions: [Suggestionpos],\r\n });\r\n history.push(`/search?query=${result?.query}&queryid=${queryID}`, {\r\n path: \"/search\",\r\n search: queryTerm ? `?query=${encodeURIComponent(result?.query)}` : undefined,\r\n });\r\n if (clickAll) {\r\n clickAll(result?.query);\r\n }\r\n\r\n break;\r\n case \"Categories\":\r\n let Catpos = parseInt(e.currentTarget.getAttribute(\"data-index\"));\r\n Catpos = Catpos + 1;\r\n AlgoliaAnalytics(\"clickedObjectIDsAfterSearch\", {\r\n userToken: userToken, // required for Node.jsired for Node.js\r\n eventName: \"Category item clicked\",\r\n index: querySuggestionindex.indexName,\r\n queryID: queryID,\r\n objectIDs: [result.objectID],\r\n positions: [Catpos],\r\n });\r\n history.push(\r\n `/search?query=${encodeURIComponent(\r\n result?.products?.facets?.exact_matches?.Category[0]?.value\r\n )}&queryid=${queryID}`,\r\n {\r\n path: \"/search\",\r\n search: queryTerm\r\n ? `?query=${encodeURIComponent(result?.products?.facets?.exact_matches?.Category[0]?.value)}`\r\n : undefined,\r\n }\r\n );\r\n\r\n if (clickAll) {\r\n clickAll(encodeURIComponent(result?.products?.facets?.exact_matches?.Category[0]?.value));\r\n }\r\n break;\r\n }\r\n\r\n toggleMenu();\r\n },\r\n [\r\n variant,\r\n toggleMenu,\r\n history,\r\n defaultProduct?.xp?.ProductCode,\r\n defaultProduct?.Name,\r\n queryTerm,\r\n result?.xp?.ProductCode,\r\n result?.fields?.section,\r\n result?.fields?.slug,\r\n ]\r\n );\r\n // let filteredCatArr : any=[];\r\n // useEffect(() => {\r\n // if(variant == \"Categories\"){\r\n // results.map(\r\n // (result: any, index: number) => {\r\n // filteredCatArr.push(result?.products?.facets?.exact_matches?.Category[0]?.value);\r\n // })\r\n\r\n // filteredCatArr = Array.from(new Set(filteredCatArr));\r\n // setfilteredCategories(filteredCatArr);\r\n // }\r\n // }, [variant])\r\n // console.log(\"Variant------>\",variant);\r\n // console.log(\"Result------->\",result);\r\n // commenting this unnecessary useEffect that does not exectute anything and overheads the js exectuion\r\n // useEffect(() => {}, [result]);\r\n return (\r\n \r\n {variant === \"Categories\" && result?.products ? (\r\n \r\n ) : null}\r\n {variant === \"Query Suggestions\" && result?.query && }\r\n {variant === \"Products\" && (\r\n \r\n \r\n \r\n )}\r\n \r\n {productService.GetProductName(defaultProduct)}\r\n {!defaultProduct ? result.Name : null}\r\n \r\n }\r\n secondary={\r\n \r\n {variant === \"CareInfo\" ? (\r\n \r\n {result.title}\r\n \r\n ) : null}\r\n {[\"Products\", \"Events\"].includes(variant) && (\r\n {defaultProduct ? `Item # ${defaultProduct.ID}` : \"\"}\r\n )}\r\n \r\n }\r\n />\r\n {[\"Products\", \"Events\"].includes(variant) && (\r\n \r\n {variant === \"Products\" && }\r\n {variant === \"Events\" &&\r\n (result.xp.IsWorkshop ? : {\"Free to attend\"})}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default SearchResult;\r\n","import React, { Fragment, FunctionComponent, useEffect, useState } from \"react\";\r\nimport { Theme, useMediaQuery } from \"@material-ui/core\";\r\nimport SearchResultsHeader from \"./SearchResultHeader\";\r\nimport SearchResult from \"./SearchResult\";\r\nimport { searchType } from \"../../models/search\";\r\n\r\ninterface SearchResultsProps {\r\n variant: searchType;\r\n results: any[];\r\n queryTerm: string;\r\n toggleMenu: () => void;\r\n queryID?: any;\r\n clickAll?: (params: any) => any;\r\n}\r\n\r\n// const useStyle = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// root: {\r\n// width: \"100%\",\r\n// },\r\n// })\r\n// );\r\n\r\nconst SearchResults: FunctionComponent = (props) => {\r\n const { variant, results, queryTerm, toggleMenu, queryID, clickAll } = props;\r\n const [limitedResults, setLimitedResults] = useState([]);\r\n const [limitedSuggestions, setLimitedSuggestions] = useState([]);\r\n const isDesktop = useMediaQuery((theme: Theme) => theme.breakpoints.up(\"md\"));\r\n let displayItems = 5;\r\n let displaySuggestions = 3;\r\n let processedResultsForCat: any = [];\r\n useEffect(() => {\r\n if (results) {\r\n if (variant === \"Categories\") {\r\n results.forEach((item, index) => {\r\n if (index === 0) {\r\n processedResultsForCat.push(item);\r\n } else {\r\n const found = processedResultsForCat.some(\r\n (someItem: any) =>\r\n item?.products?.facets?.exact_matches?.Category[0]?.value ===\r\n someItem?.products?.facets?.exact_matches?.Category[0]?.value\r\n );\r\n if (!found) processedResultsForCat.push(item);\r\n }\r\n });\r\n setLimitedResults([...processedResultsForCat].splice(0, isDesktop ? displayItems : 10));\r\n setLimitedSuggestions([...processedResultsForCat].splice(0, isDesktop ? displaySuggestions : 2));\r\n } else {\r\n setLimitedResults([...results].splice(0, isDesktop ? displayItems : 10));\r\n setLimitedSuggestions([...results].splice(0, isDesktop ? displaySuggestions : 2));\r\n }\r\n }\r\n }, [results, isDesktop, displayItems]);\r\n return (\r\n \r\n {results && variant !== \"Query Suggestions\" && variant !== \"Categories\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {limitedResults && variant !== \"Query Suggestions\" && variant !== \"Categories\"\r\n ? limitedResults.map((result: any, index: number) => (\r\n \r\n \r\n {/* */}\r\n \r\n ))\r\n : null}\r\n {limitedSuggestions && variant === \"Query Suggestions\"\r\n ? limitedSuggestions.map((result: any, index: number) => (\r\n \r\n \r\n {/* */}\r\n \r\n ))\r\n : null}\r\n {/* {limitedSuggestions && variant === \"Query Suggestions\" && (\r\n console.log(\"Filtered categoris which is 3 in number---?\",limitedSuggestions),\r\n limitedSuggestions.map(\r\n (result: any, index: number) =>\r\n setfilteredCategories(result?.products?.facets?.exact_matches?.Category[0]?.value)\r\n )\r\n )\r\n //

ad

\r\n } */}\r\n {isDesktop\r\n ? limitedSuggestions && variant === \"Categories\"\r\n ? limitedSuggestions.map(\r\n (result: any, index: number) =>\r\n result &&\r\n result.products && (\r\n \r\n \r\n {/* */}\r\n \r\n )\r\n )\r\n : null\r\n : null}\r\n
\r\n );\r\n};\r\n\r\nexport default SearchResults;\r\n","import React, { FunctionComponent } from \"react\";\r\nimport {\r\n Container,\r\n createStyles,\r\n Drawer,\r\n IconButton,\r\n InputBase,\r\n List,\r\n makeStyles,\r\n Tab,\r\n Tabs,\r\n Theme,\r\n} from \"@material-ui/core\";\r\nimport { Close, Search } from \"@material-ui/icons\";\r\nimport { neutral, purple } from \"../../themes/colors\";\r\nimport SearchResults from \"./SearchResults\";\r\n\r\ninterface MobileSearchMenuProps {\r\n menuOpen: boolean;\r\n toggleMenu: () => void;\r\n queryTerm: string;\r\n onInputChange: (event: React.ChangeEvent) => void;\r\n onInputClear: () => void;\r\n products: any[];\r\n events: any;\r\n careInfo: any;\r\n suggestions: any;\r\n categories: any;\r\n contentfulCandA: any;\r\n clickAll?: () => string;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n \"& > .MuiDrawer-paperAnchorBottom\": {\r\n height: \"100%\",\r\n },\r\n },\r\n header: {\r\n display: \"flex\",\r\n padding: theme.spacing(1, 2),\r\n boxShadow: `0px -2px 10px rgba(0,0,0,0.5)`,\r\n },\r\n closeButton: {\r\n borderRadius: \"0\",\r\n background: purple.regular,\r\n color: \"white\",\r\n \"&:hover\": {\r\n color: purple.regular,\r\n },\r\n },\r\n input: {\r\n width: \"100%\",\r\n margin: theme.spacing(0, 0, 0, 1.5),\r\n padding: theme.spacing(0, 2),\r\n backgroundColor: theme.palette.grey[200],\r\n [theme.breakpoints.down(\"sm\")]: {\r\n fontSize: 16, // prevent iOS zooming by explicitly setting input height to 16px.\r\n },\r\n },\r\n tabs: {\r\n \"& .MuiTabs-flexContainer\": {\r\n marginTop: theme.spacing(1),\r\n background: neutral.text_utility_bg,\r\n borderBottom: `1px solid ${theme.palette.grey[400]}`,\r\n },\r\n \"& .MuiTab-root\": {\r\n flexGrow: 1,\r\n fontWeight: theme.typography.fontWeightRegular,\r\n lineHeight: 1.2,\r\n margin: theme.spacing(0, 0.5),\r\n borderStyle: \"solid\",\r\n borderWidth: \"thin\",\r\n borderColor: theme.palette.grey[400],\r\n borderBottom: \"none\",\r\n },\r\n },\r\n activeTab: {\r\n background: \"white\",\r\n borderBottom: \"1px solid white !important\",\r\n marginBottom: \"-1px !important\",\r\n },\r\n })\r\n);\r\ninterface TabPanelProps {\r\n children?: React.ReactNode;\r\n index: any;\r\n value: any;\r\n}\r\n\r\nfunction TabPanel(props: TabPanelProps) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n
\r\n {expandIcons}\r\n \r\n \r\n {subCategoryChildren}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MobileMenuSubCategory;\r\n","import React, { FunctionComponent, useCallback, useContext, useMemo, useState } from \"react\";\r\nimport {\r\n createStyles,\r\n Drawer,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n alpha,\r\n} from \"@material-ui/core\";\r\n\r\nimport { ChevronLeft, ChevronRightSharp, Close } from \"@material-ui/icons\";\r\nimport { neutral, purple } from \"../../../../themes/colors\";\r\nimport { CatalogContext } from \"../../../../providers/catalog\";\r\nimport CategoryService from \"../../../../services/category.service\";\r\nimport { Category, RequiredDeep } from \"ordercloud-javascript-sdk\";\r\nimport MobileMenuSubCategory from \"../MegaMenu/MobileMenuSubCategory\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useEffect } from \"react\";\r\n\r\ninterface MobileMegaMenuProps {\r\n menuOpen: boolean;\r\n toggleMenu: () => void;\r\n}\r\n\r\nconst useStyle = (displayMobileSubCategoryState?: boolean) =>\r\n makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n mobileMenu: {\r\n \"& > .MuiDrawer-paperAnchorLeft\": {\r\n height: \"100%\",\r\n width: \"100%\",\r\n backgroundColor: displayMobileSubCategoryState ? neutral.offwhite_bg : purple.inline,\r\n },\r\n },\r\n mobileMenuBottom: {\r\n boxShadow: `0px -2px 10px rgba(0,0,0,0.2)`,\r\n position: \"fixed\",\r\n bottom: 0,\r\n display: \"flex\",\r\n \"& > div\": {\r\n flex: \"1 0 0\",\r\n },\r\n alignItems: \"center\",\r\n background: neutral.offwhite_bg,\r\n width: \"100%\",\r\n },\r\n closeButton: {\r\n borderRadius: \"0\",\r\n background: purple.regular,\r\n color: neutral.offwhite_bg,\r\n \"&:hover\": {\r\n color: purple.regular,\r\n },\r\n },\r\n mobileMenuTitle: {\r\n margin: theme.spacing(0, 0, 0, 3),\r\n \"& > .MuiTypography-h1\": {\r\n fontSize: \"21px\",\r\n color: neutral.text_colored_bg,\r\n },\r\n },\r\n topCatList: {\r\n margin: theme.spacing(2, 0, 0, 0),\r\n },\r\n backToTopCategories: {\r\n margin: theme.spacing(0, 0, 1.5, 0),\r\n },\r\n categoryTitleWrapper: {\r\n alignItems: \"stretch\",\r\n color: theme.palette.grey[800],\r\n \"&:nth-last-of-type(3)\": {\r\n borderBottom: `1px solid ${theme.palette.primary.light}`,\r\n paddingBottom: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n },\r\n \"& > div:first-of-type\": {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n },\r\n categoryTitle: {\r\n width: \"50%\",\r\n flexGrow: 1,\r\n margin: \"0\",\r\n \"& > .MuiTypography-h5\": {\r\n fontSize: \"19px\",\r\n },\r\n },\r\n categoryIconButton: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n flexGrow: 0,\r\n padding: 0,\r\n color: \"inherit\",\r\n },\r\n viewRelatedArticleListItem: {\r\n margin: theme.spacing(3, 0, 0, 0),\r\n },\r\n viewRelatedArticlesWrapper: {\r\n backgroundColor: alpha(purple.inline, 0.4),\r\n display: \"flex\",\r\n width: \"100%\",\r\n alignContent: \"center\",\r\n },\r\n viewRelatedArticles: {\r\n flex: \"1 0 0\",\r\n margin: theme.spacing(2, 0, 1, 3),\r\n fontSize: \"1rem !important\",\r\n textDecoration: \"underline\",\r\n color: purple.regular,\r\n },\r\n })\r\n );\r\n//TODO: Refactor so that it could use MobileDrawer in shared folder\r\nconst MobileMegaMenu: FunctionComponent = (props) => {\r\n const [displayMobileSubCategoryState, setMobileDisplaySubCategoryState] = useState(false);\r\n const classes = useStyle(displayMobileSubCategoryState)();\r\n const { menuOpen, toggleMenu } = props;\r\n const { categories } = useContext(CatalogContext);\r\n const [menuTitle, setMenuTitle] = useState(\"Close Menu\"); // bachmans products || l1 category name\r\n const [l2Categories, setL2Categories] = useState([]);\r\n const [selectedCat, setSelectedCat] = useState();\r\n const [expandedIndex, setExpandedIndex] = useState(-1);\r\n let history = useHistory();\r\n\r\n useEffect(() => {\r\n setMobileDisplaySubCategoryState(false);\r\n }, [menuOpen]);\r\n\r\n const handleCatSelect = useCallback(\r\n (category: Category, showSubCat = false) => () => {\r\n if (categories && showSubCat) {\r\n setL2Categories(\r\n categories.filter((c: Category) => {\r\n return c.ParentID === category.ID;\r\n })\r\n );\r\n setSelectedCat(category);\r\n setMobileDisplaySubCategoryState(true);\r\n if (category.Name) setMenuTitle(category.Name);\r\n }\r\n if (category.ID && !showSubCat) {\r\n history.push(`${CategoryService.BuildCategoryUrlFromId(category.ID, \"c\")}`);\r\n toggleMenu();\r\n }\r\n },\r\n [categories, history, toggleMenu]\r\n );\r\n\r\n const handleOnSaleSelect = useCallback(\r\n () => () => {\r\n history.push(\"/customer-service/on-sale-this-week\");\r\n toggleMenu();\r\n },\r\n [history, toggleMenu]\r\n );\r\n\r\n const handleArticlesSelect = useCallback(() => {\r\n history.push(`/information/resource-hub${selectedCat ? `?catID=${selectedCat.ID}` : null}`);\r\n toggleMenu();\r\n }, [toggleMenu, history, selectedCat]);\r\n\r\n const handleExpandClick = useCallback((selectedIndex: number) => {\r\n setExpandedIndex((currentState) => (currentState === selectedIndex ? -1 : selectedIndex));\r\n }, []);\r\n\r\n /// Templates ////\r\n\r\n const topCatLinks = useMemo(() => {\r\n if (!categories) return [];\r\n let topCats = categories.filter((c: Category) => !c.ParentID).filter((c: Category) => c.ID !== \"WorkshopsEvents\");\r\n\r\n return (\r\n \r\n {topCats.map((cat: RequiredDeep, index: number) => (\r\n \r\n \r\n {cat.Name !== \"Gift Cards\" && (\r\n \r\n \r\n \r\n )}\r\n \r\n ))}\r\n \r\n
\r\n \r\n \r\n );\r\n }, [\r\n categories,\r\n handleCatSelect,\r\n handleOnSaleSelect,\r\n classes.categoryTitle,\r\n classes.categoryIconButton,\r\n classes.categoryTitleWrapper,\r\n classes.topCatList,\r\n ]);\r\n\r\n const mobileSubCats = useMemo(() => {\r\n if (!categories || l2Categories.length === 0) return [];\r\n return (\r\n \r\n {\r\n setMobileDisplaySubCategoryState(false);\r\n setMenuTitle(\"Close Menu\");\r\n }}\r\n className={classes.backToTopCategories}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {l2Categories.map((subcat: Category, index: number) => (\r\n \r\n ))}\r\n\r\n {selectedCat?.xp?.Articles?.length > 0 && (\r\n \r\n
\r\n \r\n {\"View Related Articles\"}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n }, [\r\n categories,\r\n l2Categories,\r\n expandedIndex,\r\n handleExpandClick,\r\n handleCatSelect,\r\n handleArticlesSelect,\r\n selectedCat?.xp?.Articles,\r\n classes.backToTopCategories,\r\n classes.viewRelatedArticles,\r\n classes.viewRelatedArticlesWrapper,\r\n classes.viewRelatedArticleListItem,\r\n ]);\r\n\r\n return (\r\n \r\n
\r\n {displayMobileSubCategoryState ? mobileSubCats : topCatLinks}\r\n
\r\n \r\n \r\n \r\n
\r\n Close Menu\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MobileMegaMenu;\r\n","import React, { Fragment, FunctionComponent, useCallback, useState } from \"react\";\r\nimport {\r\n Container,\r\n createStyles,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n makeStyles,\r\n Theme,\r\n} from \"@material-ui/core\";\r\nimport MobileDrawer from \"../../Shared/MobileDrawer\";\r\nimport { ContentLinks, contentfulContentLinkAndTitle, contenfulStaticPageInfo } from \"../Header/ContentLinksMenu\";\r\nimport { isOfType } from \"../../../models/generics\";\r\nimport { ChevronLeft, ChevronRightSharp } from \"@material-ui/icons\";\r\nimport { useMemo } from \"react\";\r\nimport { useHistory, useRouteMatch } from \"react-router-dom\";\r\nimport MobileMenuSubCategory from \"../Header/MegaMenu/MobileMenuSubCategory\";\r\nimport { StaticPage } from \"../../../models/contentful/staticPage\";\r\nimport { useEffect } from \"react\";\r\nimport { each } from \"lodash\";\r\nimport { neutral } from \"../../../themes/colors\";\r\ninterface MobileContentLinksMenuProps {\r\n contentLinks: ContentLinks[];\r\n open: boolean;\r\n toggleMenu: () => void;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n menuItemHeading: {\r\n fontSize: theme.typography.h4.fontSize,\r\n fontFamily: theme.typography.body1.fontFamily,\r\n fontWeight: theme.typography.fontWeightBold,\r\n color: neutral.text_white_bg,\r\n padding: 0,\r\n },\r\n title: {\r\n paddingTop: theme.spacing(1.5),\r\n fontSize: theme.typography.h5.fontSize,\r\n },\r\n containerDrawer: {\r\n padding: 0,\r\n },\r\n link: {},\r\n sectionIconButton: {},\r\n backToResources: {\r\n color: neutral.text_white_bg,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n \"& .MuiListItemText-root\": {\r\n flex: \"unset\",\r\n },\r\n },\r\n categoryTitle: {\r\n width: \"50%\",\r\n flexGrow: 1,\r\n margin: \"0\",\r\n \"& > .MuiTypography-h5\": {\r\n fontSize: \"19px\",\r\n paddingLeft: theme.spacing(3),\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst MobileContentLinksMenu: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { contentLinks, open, toggleMenu } = props;\r\n const [displaySubCat, setDisplaySubCat] = useState(false);\r\n const [selectedSubCats, setSelectedSubCats] = useState();\r\n const [expandedIndex, setExpandedIndex] = useState(-1);\r\n const [title, setTitle] = useState(\"Resources\");\r\n let routeInfo = useRouteMatch(\"/:section/:rootSlug/:branchSlug?/:leafSlug?\");\r\n let params = routeInfo?.params;\r\n let history = useHistory();\r\n\r\n const handleHeaderClick = useCallback(\r\n (list: ContentLinks) => (e: React.MouseEvent) => {\r\n if (isOfType(list.Links[0], \"fields\")) {\r\n history.push(list?.Links[0]?.fields?.link);\r\n }\r\n if (isOfType(list.Links[0], \"link\")) {\r\n history.push(list?.Links[0]?.link);\r\n }\r\n toggleMenu();\r\n },\r\n [history, toggleMenu]\r\n );\r\n\r\n const handleSectionListSelect = useCallback((list: any) => {\r\n setDisplaySubCat(true);\r\n let sortedReferenceToolsArr: any[] = [];\r\n if (list.Title === \"References & Tools\") {\r\n list.Links.forEach((value: any, index: any) => {\r\n if (value.fields?.slug === \"plant-tree-and-shrub-library\") {\r\n sortedReferenceToolsArr.unshift(value);\r\n } else {\r\n sortedReferenceToolsArr.push(value);\r\n }\r\n });\r\n list.Links = sortedReferenceToolsArr;\r\n }\r\n setSelectedSubCats(list);\r\n setTitle(list.Title);\r\n }, []);\r\n\r\n const handleExpandClick = useCallback((selectedIndex: number) => {\r\n setExpandedIndex((currentState) => (currentState === selectedIndex ? -1 : selectedIndex));\r\n }, []);\r\n const handleResourceSelect = useCallback(\r\n (resource: StaticPage | contentfulContentLinkAndTitle) => () => {\r\n if (isOfType(resource, \"fields\")) {\r\n if (!resource.fields?.link) {\r\n //assuming its a nested static page\r\n history.push(`${resource.fields?.parentPage?.fields?.link}/${resource.fields?.slug}`);\r\n } else {\r\n history.push(resource?.fields?.link || \"\");\r\n }\r\n }\r\n if (isOfType(resource, \"link\")) {\r\n // if (resource.title !== \"All Care Guides\") {\r\n // history.push(window.location.pathname);\r\n // } else {\r\n // history.push(window.location.pathname + \"?tag=\" + encodeURIComponent(resource.title));\r\n // }\r\n // resource.link = resource.link.replace(\"&\", \"%26\");\r\n // resource.link = .stringify({\r\n // tag: newParams.tag,\r\n // });\r\n\r\n if (resource.title === \"All Care Guides\") {\r\n history.push(resource.link);\r\n } else {\r\n history.push(`/information/resource-hub?tag=` + encodeURIComponent(resource.title));\r\n }\r\n }\r\n toggleMenu();\r\n },\r\n [history, toggleMenu]\r\n );\r\n // check url and open the corresponding section in nav\r\n useEffect(() => {\r\n if (params?.section && contentLinks.length) {\r\n each(contentLinks, (pageInfo: ContentLinks) => {\r\n //if params is info - check if query param tag is there - then find pageinfo with type article / else do type static page.\r\n if (params?.section === \"information\" && params.rootSlug === \"resource-hub\") {\r\n if (pageInfo.Type === \"article\") {\r\n handleSectionListSelect(pageInfo);\r\n setTitle(pageInfo?.Title ? pageInfo.Title : \"Resources\");\r\n }\r\n } else if (isOfType(pageInfo.Links[0], \"fields\")) {\r\n //look at first child\r\n if (params.section === pageInfo.Links[0].fields?.section) {\r\n handleSectionListSelect(pageInfo);\r\n setTitle(pageInfo?.Title ? pageInfo.Title : \"Resources\");\r\n }\r\n }\r\n });\r\n }\r\n }, [open, contentLinks, handleSectionListSelect, params?.rootSlug, params?.section]);\r\n const subCategoryList = useMemo(() => {\r\n return (\r\n
\r\n \r\n {/* go back to resources */}\r\n {\r\n setDisplaySubCat(false);\r\n setSelectedSubCats(null);\r\n setTitle(\"Resources\");\r\n }}\r\n className={classes.backToResources}\r\n >\r\n \r\n \r\n \r\n\r\n {selectedSubCats &&\r\n selectedSubCats.Links.map((pageLinkInfo: StaticPage | contentfulContentLinkAndTitle, index: number) => (\r\n \r\n ))}\r\n \r\n
\r\n );\r\n }, [selectedSubCats, classes.backToResources, expandedIndex, handleResourceSelect, handleExpandClick, params]);\r\n\r\n const resourceLinks = useMemo(() => {\r\n return (\r\n \r\n {contentLinks.map((list, index) => (\r\n \r\n \r\n \r\n\r\n handleSectionListSelect(list)}\r\n className={classes.sectionIconButton}\r\n >\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n }, [\r\n contentLinks,\r\n handleSectionListSelect,\r\n handleHeaderClick,\r\n classes.categoryTitle,\r\n classes.menuItemHeading,\r\n classes.sectionIconButton,\r\n ]);\r\n\r\n return (\r\n \r\n \r\n {displaySubCat ? subCategoryList : resourceLinks}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MobileContentLinksMenu;\r\n","import React, { FunctionComponent } from \"react\";\r\nimport { createStyles, List, ListItem, ListItemText, makeStyles, Theme } from \"@material-ui/core\";\r\nimport MobileDrawer from \"../../Shared/MobileDrawer\";\r\n\r\ninterface MobileContactUsProps {\r\n menuOpen: boolean;\r\n toggleMenu: () => void;\r\n}\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n })\r\n);\r\n\r\nconst MobileContactUs: FunctionComponent = (props) => {\r\n const classes = useStyle();\r\n const { menuOpen, toggleMenu } = props;\r\n // TODO: figure out if this information is coming from static Pages-\r\n return (\r\n
\r\n \r\n \r\n \r\n Frequently Asked Questions\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MobileContactUs;\r\n","export default __webpack_public_path__ + \"static/media/iconProducts.62d5f3f2.svg\";","export default __webpack_public_path__ + \"static/media/iconEvents.c96fd7ed.svg\";","export default __webpack_public_path__ + \"static/media/iconLocations.1f29c429.svg\";","export default __webpack_public_path__ + \"static/media/iconContact.e2ce2169.svg\";","import React, { Fragment, FunctionComponent, useContext, useEffect, useState } from \"react\";\r\nimport {\r\n AppBar,\r\n BottomNavigation,\r\n BottomNavigationAction,\r\n Box,\r\n Container,\r\n createStyles,\r\n Hidden,\r\n makeStyles,\r\n Theme,\r\n Toolbar,\r\n Typography,\r\n useMediaQuery,\r\n} from \"@material-ui/core\";\r\nimport iconResource from \"./../../../assets/svg/iconResource.svg\";\r\nimport { neutral, purple } from \"../../../themes/colors\";\r\nimport Link from \"../../Shared/Link\";\r\nimport Breadcrumbs from \"./Breadcrumbs\";\r\nimport CategoryToolbar from \"./CategoryToolbar\";\r\nimport MiniCart from \"./MiniCart\";\r\nimport Search from \"../../Search/Search\";\r\nimport User from \"./User\";\r\nimport ContentLinksMenu, { contentfulContentLinkAndTitle } from \"./ContentLinksMenu\";\r\nimport MobileMegaMenu from \"./MegaMenu/MobileMegaMenu\";\r\nimport { StaticPageContext } from \"../../../providers/contentful\";\r\nimport contentful from \"../../../services/contentful.service\";\r\nimport { Dictionary } from \"@reduxjs/toolkit\";\r\nimport MobileContentLinksMenu from \"./MobileContentLinksMenu\";\r\nimport AuthDialog from \"../../Authentication/AuthDialog\";\r\nimport { SessionContext } from \"../../../providers/session\";\r\nimport MobileAccountMenu from \"./MobileAccountMenu\";\r\nimport MobileContactUs from \"./MobileContactUs\";\r\n\r\nimport logoPurple from \"../../../assets/svg/logoPurple.svg\";\r\nimport iconProducts from \"../../../assets/svg/iconProducts.svg\";\r\nimport iconEvents from \"../../../assets/svg/iconEvents.svg\";\r\nimport iconLocations from \"../../../assets/svg/iconLocations.svg\";\r\nimport iconContact from \"../../../assets/svg/iconContact.svg\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useAppSelector } from \"../../../redux/store-hook\";\r\nimport { AppDispatch } from \"../../../redux/store\";\r\nimport { setBreadcrumbs } from \"../../../redux/slices/breadcrumbs\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport { filter, find } from \"lodash\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n zIndex: theme.zIndex.appBar,\r\n position: \"sticky\",\r\n top: 0,\r\n [theme.breakpoints.down(\"sm\")]: {\r\n borderTop: `6px solid ${theme.palette.primary.main}`,\r\n },\r\n },\r\n rootShadow: {\r\n boxShadow: `0px 2px 10px rgba(0,0,0,0.2)`,\r\n zIndex: theme.zIndex.appBar + 1,\r\n position: \"relative\",\r\n },\r\n MobileContentMenu: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n \"& button:first-child\": {\r\n \"&::after\": {\r\n content: \"'|'\",\r\n marginLeft: theme.spacing(3),\r\n paddingRight: theme.spacing(2),\r\n marginTop: theme.spacing(0.5),\r\n },\r\n },\r\n },\r\n },\r\n utility: {\r\n background: purple.utility,\r\n color: neutral.text_utility_bg,\r\n },\r\n utilityLinks: {\r\n flexGrow: 1,\r\n display: \"flex\",\r\n alignItems: \"stretch\", //do this so that the context menu displays at bottom of toolbar\r\n justifyContent: \"flex-end\",\r\n \"& > div\": {\r\n display: \"flex\",\r\n alignItems: \"center\", //align content center\r\n \"& .MuiLink-root\": {\r\n position: \"relative\",\r\n color: \"inherit\",\r\n margin: theme.spacing(0, 1.5, 0, 1.5),\r\n [theme.breakpoints.down(\"sm\")]: {\r\n \"&:not(:last-child)\": {\r\n marginRight: theme.spacing(1.5),\r\n },\r\n },\r\n },\r\n },\r\n },\r\n utilityLinkTel: {\r\n color: \"inherit\",\r\n textDecoration: \"none\",\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n },\r\n },\r\n mainNav: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n padding: theme.spacing(1, 3),\r\n },\r\n },\r\n navBrand: {\r\n display: \"block\",\r\n width: \"100%\",\r\n marginRight: \"auto\",\r\n maxWidth: 125,\r\n [theme.breakpoints.up(\"md\")]: {\r\n maxWidth: 200,\r\n marginRight: theme.spacing(5),\r\n },\r\n },\r\n logo: {\r\n display: \"block\",\r\n width: \"100%\",\r\n height: \"auto\",\r\n },\r\n navMenuRight: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n gap: theme.spacing(2),\r\n marginLeft: \"auto\",\r\n },\r\n },\r\n menuItems: {\r\n marginLeft: \"auto\",\r\n alignItems: \"center\",\r\n \"& > div\": {\r\n padding: theme.spacing(3, 0, 3, 3),\r\n },\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"flex\",\r\n },\r\n },\r\n mobileNavigation: {\r\n height: theme.spacing(8),\r\n boxShadow: `0px -2px 10px rgba(0,0,0,0.2)`,\r\n position: \"fixed\",\r\n bottom: 0,\r\n width: \"100%\",\r\n zIndex: theme.zIndex.appBar,\r\n background: theme.palette.background.paper,\r\n ...theme.typography.body2,\r\n \"& > .MuiBottomNavigationAction-root\": {\r\n minWidth: 70,\r\n },\r\n },\r\n iconMobileNavigation: {\r\n height: 35,\r\n color: theme.palette.primary.main,\r\n textAlign: \"center\",\r\n fontSize: 0,\r\n marginBottom: 3,\r\n },\r\n resourceIcon: {\r\n fontsize: \"2.2rem\",\r\n color: theme.palette.primary.main,\r\n },\r\n articleLinksNav: {\r\n display: \"flex\",\r\n alignItems: \"stretch\",\r\n width: \"100%\",\r\n \"& > p\": {\r\n flex: \"1 0 0\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nconst Header: FunctionComponent = () => {\r\n const classes = useStyles();\r\n const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down(\"sm\"));\r\n const [bottomNavValue, setBottomNavValue] = useState(null);\r\n const [menuOpen, setMenuOpen] = useState(false);\r\n const [accountMobileMenuOpen, setAccountMobileMenuOpen] = useState(false);\r\n const [contactUsMobileMenuOpen, setContactUsMobileMenuOpen] = useState(false);\r\n const [articleTagList, setArticleTagList] = useState>([]);\r\n const [formattedPages, setFormattedPages] = useState>();\r\n const [workshopEventLinks, setWorkshopEventLinks] = useState>([]);\r\n const [bachmansBlog, setBachmansBlog] = useState();\r\n const staticPages = useContext(StaticPageContext);\r\n const { anonymous } = useContext(SessionContext);\r\n const breadCrumbState = useAppSelector((state) => state.breadcrumbs);\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (staticPages.ready) {\r\n let pages = contentful.groupStaticPagesBySection(staticPages);\r\n pages[\"customer-service\"].shift(); /// remove \"on sale\" from list\r\n setFormattedPages(pages);\r\n }\r\n }, [staticPages, articleTagList, workshopEventLinks]);\r\n\r\n useEffect(() => {\r\n contentful.getArticlesByTag().then((articleTags) => {\r\n if (articleTags) {\r\n let blog = find(articleTags, (tagInfo: contentfulContentLinkAndTitle) => tagInfo.title === \"Bachman's Blog\");\r\n if (blog) {\r\n setBachmansBlog(blog);\r\n }\r\n articleTags = filter(\r\n articleTags,\r\n (tagInfo: contentfulContentLinkAndTitle) => tagInfo.title !== \"Bachman's Blog\"\r\n );\r\n articleTags.unshift({ link: \"/information/resource-hub\", title: \"All Care Guides\" });\r\n setArticleTagList(articleTags);\r\n }\r\n });\r\n contentful.getWorkshopAndEventsLinks().then((response) => {\r\n setWorkshopEventLinks(response);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n //set bachmans blog to top of information section\r\n if (formattedPages?.information && bachmansBlog) {\r\n formattedPages?.information.unshift(bachmansBlog);\r\n }\r\n }, [bachmansBlog, formattedPages]);\r\n\r\n const toggleMenu = () => {\r\n setMenuOpen(!menuOpen);\r\n };\r\n const toggleAccountMobileMenu = () => {\r\n setAccountMobileMenuOpen(!accountMobileMenuOpen);\r\n };\r\n const toggleContactUsMobileMenu = () => {\r\n setContactUsMobileMenuOpen(!contactUsMobileMenuOpen);\r\n };\r\n\r\n const toggleResourceMobileMenu = () => {\r\n let resourceStatus = breadCrumbState.resourceDrawerOpen;\r\n dispatch(\r\n setBreadcrumbs({\r\n resourceDrawerOpen: !resourceStatus,\r\n })\r\n );\r\n };\r\n\r\n const handleAuthDialogOpen = () => {\r\n dispatch(setBreadcrumbs({ authDialogOpen: true }));\r\n };\r\n\r\n const handleAuthDialogClose = () => {\r\n dispatch(setBreadcrumbs({ authDialogOpen: false }));\r\n };\r\n\r\n const handleBottomNavPress = (event: React.ChangeEvent<{}>, newValue: any) => {\r\n if (newValue === \"products\") {\r\n toggleMenu();\r\n }\r\n if (newValue === \"account\") {\r\n anonymous ? handleAuthDialogOpen() : toggleAccountMobileMenu();\r\n }\r\n if (newValue === \"resources\") toggleResourceMobileMenu();\r\n if (newValue === \"contact\") {\r\n history.push(\"/customer-service/contact-us\");\r\n }\r\n if (newValue === \"locations\") {\r\n history.push(\"/store-locator\");\r\n }\r\n if (newValue === \"events\") {\r\n history.push(\"/workshops-and-events\");\r\n }\r\n\r\n setBottomNavValue(newValue);\r\n };\r\n\r\n return (\r\n \r\n {location.pathname === \"/checkout\" ? null : (\r\n \r\n \r\n
\r\n \r\n \r\n (\r\n \r\n )}\r\n >\r\n {!isMobile ? (\r\n \r\n \r\n Order Local: 612-861-7311\r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n\r\n {formattedPages && Object.keys(formattedPages).length && (\r\n
\r\n {!isMobile ? (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Store Locator\r\n \r\n
\r\n
\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n )}\r\n \r\n
\r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n Bachman's\r\n \r\n \"Bachman's\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {isMobile && (\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n />\r\n \r\n }\r\n />\r\n {formattedPages && Object.keys(formattedPages).length && (\r\n \r\n )}\r\n \r\n }\r\n />\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import { useEffect, useState } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport ReactGA from \"react-ga\";\r\n\r\n//https://stackoverflow.com/questions/34836500/how-to-set-up-google-analytics-for-react-router\r\nconst usePageTracking = () => {\r\n ReactGA.plugin.require(\"ec\");\r\n const location = useLocation();\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n useEffect(() => {\r\n //const isTest = process.env.REACT_APP_ENVIRONMENT !== \"production\";\r\n ReactGA.initialize(process.env.REACT_APP_GA_TRACKING_ID!, { debug: false });\r\n setInitialized(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (initialized) {\r\n ReactGA.pageview(location.pathname + location.search);\r\n }\r\n }, [initialized, location]);\r\n};\r\n\r\nexport default usePageTracking;\r\n","import axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\r\nimport * as OrderCloud from \"ordercloud-javascript-sdk\";\r\nimport appConstants from \"../../constants/app.constants\";\r\n\r\nexport interface SeoSettings {\r\n seo: {\r\n MetaTitle: string;\r\n MetaDescription: string;\r\n };\r\n}\r\n\r\nexport interface SeoPages {\r\n \"Care, Advice and Info\": SeoSettings;\r\n \"Store Locator\": SeoSettings;\r\n \"Event Calendar\": SeoSettings;\r\n}\r\n\r\nexport interface BuyerXpDeliveryDates {\r\n [date: string]: BuyerXpDeliveryRun;\r\n}\r\n\r\nexport type BuyerXpDeliveryRunKey = \"AM\" | \"PM\" | \"NO PREF\";\r\n\r\nexport interface BuyerXpDeliveryRun {\r\n AM: BuyerXpDeliveryRunPreference;\r\n PM: BuyerXpDeliveryRunPreference;\r\n \"NO PREF\": BuyerXpDeliveryRunPreference;\r\n}\r\n\r\nexport interface BuyerXpDeliveryRunPreference {\r\n Name: string;\r\n TimeSlot: string;\r\n charge: string;\r\n checkedRun: boolean;\r\n Surcharge: string;\r\n}\r\n\r\nexport interface BuyerXpShippers {\r\n LocalDelivery: {\r\n StandardDeliveryFees: string;\r\n SameDayDeliveryFees: string;\r\n SpecialDeliverySameDayFees: string;\r\n Funeral_ChurchFees: string;\r\n SameDayDelivery: boolean;\r\n SameDayDeliveryCountDownTimer: string;\r\n DeliveryMessage: string;\r\n NextDayMessage: string;\r\n FuneralFees: string;\r\n ChurchFees: string;\r\n CemeteryFees: string;\r\n SameDayDeliveryUpCharge: string;\r\n NextDayAMDeliveryCutoff: string;\r\n };\r\n InStorePickUp: {\r\n CurbsideCharges: string;\r\n };\r\n UPS: {\r\n UPSCharges: string;\r\n StandardUPSCharges: string;\r\n };\r\n DirectShip: {\r\n StandardDelivery: string;\r\n };\r\n Courier: {\r\n OMS: string;\r\n };\r\n USPS: {\r\n USPSCharges: string;\r\n };\r\n Faster: {\r\n StandardDelivery: string;\r\n FirstRule: string;\r\n SecondRule: string;\r\n };\r\n Handling: {\r\n Quantity: string;\r\n };\r\n}\r\n\r\nexport interface GiftCardSettingsI {\r\n ThresholdSetting: {\r\n GiftcardThresholdLimit: number;\r\n EGiftcardThresholdLimit: number;\r\n };\r\n PurchaseSetting: {\r\n MaxPurchaseAmt: number;\r\n MinPurchaseAmt: number;\r\n };\r\n}\r\n\r\nexport interface BuyerXp {\r\n Shippers: BuyerXpShippers;\r\n DeliveryDatesN: BuyerXpDeliveryDates;\r\n DeliveryRuns: BuyerXpDeliveryRun[];\r\n GiftCardSettings: GiftCardSettingsI;\r\n SEOPages: SeoPages;\r\n StoreServices: string[];\r\n BachmansPicks: string[];\r\n FeaturedEvents: string[];\r\n wireOrder: WireOrderData;\r\n}\r\n\r\ninterface WireOrderData {\r\n IncomingOrders: WiredIncoming;\r\n OutgoingOrders: WiredOutgoing;\r\n}\r\ninterface WiredIncoming {\r\n WiredDeliveryFees: string;\r\n Destinations: any[];\r\n}\r\n\r\ninterface WiredOutgoing {\r\n WiredServiceFees: number;\r\n WiredDeliveryFees: string;\r\n Destinations: any[];\r\n}\r\n\r\nexport interface RedirectsShape {\r\n [originalUrl: string]: string;\r\n}\r\n\r\nfunction guid() {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return s4() + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + \"-\" + s4() + s4() + s4();\r\n}\r\n\r\nclass BachmansMiddleware {\r\n private session: AxiosInstance;\r\n constructor() {\r\n this.session = axios.create({\r\n baseURL: `${appConstants.bachmansIntegrationsUrl}/api`,\r\n });\r\n\r\n // append auth token to all outgoing requests\r\n this.session.interceptors.request.use((config) => {\r\n const token = OrderCloud.Tokens.GetAccessToken();\r\n config.headers.Authorization = `Bearer ${token}`;\r\n return config;\r\n });\r\n }\r\n\r\n public getBuyerXp() {\r\n const url = appConstants.blobStorageUrl as string;\r\n return axios.get(`${url}/buyerxp.json`, {\r\n params: { guid: guid() },\r\n });\r\n }\r\n\r\n public saveBuyerXp(update: BuyerXp) {\r\n return this.put(\"/webdata/buyerxp\", update);\r\n }\r\n\r\n public getSitemap() {\r\n const url = appConstants.blobStorageUrl as string;\r\n return axios.get(`${url}/sitemap.xml`, {\r\n params: { guid: guid() },\r\n });\r\n }\r\n\r\n public getRedirects() {\r\n const url = appConstants.blobStorageUrl as string;\r\n return axios.get(`${url}/redirects.json`, {\r\n params: { guid: guid() },\r\n });\r\n }\r\n\r\n public removeRedirect(key: string) {\r\n const url = appConstants.bachmansIntegrationsUrl as string;\r\n return this.session.delete(`${url}/api/redirects`, {\r\n params: { slug: key },\r\n });\r\n }\r\n\r\n public addRedirect(newRedirect: any) {\r\n const url = appConstants.bachmansIntegrationsUrl as string;\r\n return this.session.put(`${url}/api/redirects`, newRedirect);\r\n }\r\n\r\n public get(url: string, config?: AxiosRequestConfig) {\r\n return this.session.get(url, config).then((r) => r.data);\r\n }\r\n\r\n public post(url: string, data?: any, config?: AxiosRequestConfig) {\r\n return this.session.post(url, data, config).then((r) => r.data);\r\n }\r\n public put(url: string, data?: any, config?: AxiosRequestConfig) {\r\n return this.session.put(url, data, config).then((r) => r.data);\r\n }\r\n\r\n public patch(url: string, data?: any, config?: AxiosRequestConfig) {\r\n return this.session.patch(url, data, config).then((r) => r.data);\r\n }\r\n\r\n public delete(url: string, config?: AxiosRequestConfig) {\r\n return this.session.delete(url, config).then((r) => r.data);\r\n }\r\n\r\n public refreshCategoryCache(catalogID: string) {\r\n const url = appConstants.bachmansIntegrationsUrl as string;\r\n return this.session.post(`${url}/api/catalogs/${catalogID}/refresh`);\r\n }\r\n}\r\n\r\nexport default new BachmansMiddleware();\r\n","import React, { FunctionComponent, useEffect, useState } from \"react\";\r\nimport { PayPalScriptProvider as ScriptProvider } from \"@paypal/react-paypal-js\";\r\nimport config from \"../constants/app.constants\";\r\nimport bachmansIntegrationsService from \"../services/bachmansIntegrations.service\";\r\n\r\nconst PayPalScriptProvider: FunctionComponent = ({ children }) => {\r\n const [clientToken, setClientToken] = useState(null);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n const Braintreeresponse = await bachmansIntegrationsService.BraintreeToken();\r\n console.log(Braintreeresponse);\r\n setClientToken(Braintreeresponse?.clientToken || Braintreeresponse?.clientToken);\r\n })();\r\n }, []);\r\n\r\n return (\r\n <>\r\n {clientToken ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PayPalScriptProvider;\r\n","import React, { useContext, Suspense, lazy, useEffect } from \"react\";\r\nimport { Switch, Route, useLocation, useHistory, RouteComponentProps } from \"react-router-dom\";\r\nimport NotFound from \"../Shared/NotFound\";\r\nimport { SessionContext } from \"../../providers/session\";\r\nimport axios from \"axios\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { AppDispatch } from \"../../redux/store\";\r\nimport { initOrder } from \"../../redux/slices/order\";\r\nimport usePageTracking from \"../../components/Shared/hooks/usePageViews\";\r\nimport categoryService from \"../../services/category.service\";\r\nimport seoService from \"../../services/seo-service\";\r\nimport $ from \"jquery\";\r\nimport { HomeContentContext } from \"../../providers/contentful\";\r\nimport BachmansMiddleware, { RedirectsShape } from \"../Shared/BachmansMiddleware\";\r\nimport PayPalScriptProvider from \"../../providers/paypalScript\";\r\nimport BachmansLoading from \"../Shared/BachmansLoading\";\r\n\r\n// Lazy loading pages components\r\nconst Home = lazy(() => import(\"../Home/Home\"));\r\nconst Catalog = lazy(() => import(\"../Catalog/Catalog\"));\r\nconst ProductDetail = lazy(() => import(\"../Product/ProductDetail\"));\r\nconst Account = lazy(() => import(\"../Account/Account\"));\r\nconst StyleGuide = lazy(() => import(\"../../themes/StyleGuide\"));\r\nconst StoreDetail = lazy(() => import(\"../StoreLocator/StoreDetail\"));\r\nconst SearchResultsContainer = lazy(() => import(\"../Search/SearchResultsContainer\"));\r\nconst StoreLocator = lazy(() => import(\"../StoreLocator\"));\r\nconst EventsLanding = lazy(() => import(\"../Events\"));\r\nconst EventList = lazy(() => import(\"../Events/EventList\"));\r\nconst EventCalendar = lazy(() => import(\"../Events/EventCalendar\"));\r\nconst EventDetail = lazy(() => import(\"../Events/EventDetail/index\"));\r\nconst StaticPages = lazy(() => import(\"../StaticPages/index\"));\r\nconst OnSaleThisWeek = lazy(() => import(\"../StaticPages/OnSaleThisWeek\"));\r\nconst GiftCard = lazy(() => import(\"../Product/GiftCard\"));\r\nconst Cart = lazy(() => import(\"../Cart\"));\r\nconst Checkout = lazy(() => import(\"../Checkout\"));\r\nconst OrderConfirmation = lazy(() => import(\"../Checkout/OrderConfirmation\"));\r\nconst ProductNotFound = lazy(() => import(\"../Product/ProductNotFound\"));\r\nconst ResetPassword = lazy(() => import(\"../Authentication/ResetPassword\"));\r\n\r\nconst MainContent = () => {\r\n usePageTracking();\r\n const dispatch = useDispatch();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const { anonymous, setAnonTokens } = useContext(SessionContext);\r\n const homeContent = useContext(HomeContentContext);\r\n\r\n axios.interceptors.response.use(undefined, async (error) => {\r\n if (error.response.status === 401) {\r\n if (setAnonTokens) {\r\n //TODO: update logic when OC api returns refresh token for profiled users;\r\n let token = await setAnonTokens();\r\n error.config.headers[\"Authorization\"] = \"Bearer \" + token;\r\n error.config.baseURL = undefined;\r\n return axios.request(error.config);\r\n }\r\n }\r\n return Promise.reject(error);\r\n });\r\n\r\n useEffect(() => {\r\n dispatch(initOrder());\r\n }, [dispatch]);\r\n\r\n const MapRedirectsToArray = (data: RedirectsShape) => {\r\n return Object.entries(data).map((value) => {\r\n return {\r\n slug: value[0],\r\n destination: value[1],\r\n };\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (location.pathname.includes(\"category\")) {\r\n const pathArray = location.pathname.split(\"/\");\r\n const id = pathArray[2];\r\n const urlToRoute = categoryService.BuildCategoryUrlFromId(id, \"c\");\r\n history.push(urlToRoute);\r\n } else if (location.pathname.includes(\"/product/\")) {\r\n const urlToRoute = location.pathname.replace(\"/product/\", \"/p/\");\r\n history.push(urlToRoute);\r\n } else if (location.pathname.includes(\"/p/G0000GIFTCARD\")) {\r\n history.push(\"/c/gift-cards\");\r\n }\r\n\r\n //Check for redirects from Admin Portal\r\n BachmansMiddleware.getRedirects().then((response) => {\r\n var redirects = MapRedirectsToArray(response.data);\r\n if (redirects && redirects.length > 0) {\r\n var currentRelPath = `${location.pathname.trim()}${location.search.trim()}`;\r\n var redirect = redirects.find((item) => item.slug.toLowerCase().trim() === currentRelPath.toLowerCase().trim());\r\n if (redirect && redirect.slug.toLowerCase().trim() !== redirect.destination.toLowerCase().trim()) {\r\n history.push(redirect.destination);\r\n }\r\n }\r\n });\r\n //Check for redirects from Admin Portal\r\n\r\n //Check Validation for updatedFilteredFacets from sessionStorage\r\n var updatedFilteredFacets = sessionStorage.getItem(\"updatedFilteredFacets\");\r\n if (updatedFilteredFacets !== null) {\r\n var currentPathname = location.pathname.trim() as string;\r\n\r\n if ((currentPathname.match(/-events/g) || []).length === 1) {\r\n sessionStorage.removeItem(\"updatedFilteredFacets\");\r\n }\r\n }\r\n //Check Validation for updatedFilteredFacets from sessionStorage\r\n\r\n //Start - Updating Dynamic Seo Elements Data\r\n const pageSeoKeyId = getPageKeyContext();\r\n if (\r\n pageSeoKeyId !== \"Category\" &&\r\n pageSeoKeyId !== \"Product\" &&\r\n pageSeoKeyId !== \"Services\" &&\r\n pageSeoKeyId !== \"Workshops and Events\"\r\n ) {\r\n seoService.SetSeoData(pageSeoKeyId, homeContent);\r\n }\r\n //End - Updating Dynamic Seo Elements Data\r\n }, [history, location, homeContent]);\r\n\r\n function getPageKeyContext() {\r\n const currentPathname = window.location.pathname.toLowerCase().trim();\r\n var isForCareAdviceAndInfoPages = currentPathname.includes(\"/information/\");\r\n var isForSearchResultsPage = currentPathname === \"/search\";\r\n var isForCategoryPages = currentPathname.includes(\"/c/\") || currentPathname.includes(\"/category/\");\r\n var isForProductPages = currentPathname.includes(\"/p/\") || currentPathname.includes(\"/product/\");\r\n var isForServicesPages = currentPathname.includes(\"/services\");\r\n var isForWorkshopAndEventsLandingPage = currentPathname.includes(\"/workshops-and-events\");\r\n var isForStoreLocatorPage = currentPathname === \"/store-locator\" || currentPathname === \"/store-locator/\";\r\n var isForEventCalendarPage = currentPathname === \"/event-calendar\";\r\n var isForPlantLibrary = currentPathname.includes(\"plant-tree-and-shrub-library\");\r\n var isFor404Pages =\r\n currentPathname.includes(\"/item-not-found/\") || ($(\"#page-not-found-h1\") && $(\"#page-not-found-h1\").length === 1);\r\n\r\n if (isForCareAdviceAndInfoPages && !isForPlantLibrary) {\r\n return \"Care, Advice and Info\";\r\n } else if (isForSearchResultsPage) {\r\n return \"Search Result\";\r\n } else if (isForCategoryPages) {\r\n return \"Category\";\r\n } else if (isForProductPages) {\r\n return \"Product\";\r\n } else if (isForServicesPages) {\r\n return \"Services\";\r\n } else if (isForWorkshopAndEventsLandingPage) {\r\n return \"Workshops and Events\";\r\n } else if (isForStoreLocatorPage) {\r\n return \"Store Locator\";\r\n } else if (isForEventCalendarPage) {\r\n return \"Event Calendar\";\r\n } else if (isForPlantLibrary) {\r\n return \"Plant Library\";\r\n } else if (isFor404Pages) {\r\n return \"404\";\r\n } else {\r\n return \"Home Page\";\r\n }\r\n }\r\n\r\n return (\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n } // using render because if we use component \"you provide an inline function to the component attribute, you would create a new component every render.\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!anonymous && }\r\n \r\n \r\n\r\n (\r\n \r\n \r\n \r\n )}\r\n >\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MainContent;\r\n","import React, { Fragment, FunctionComponent, useEffect } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst ScrollToTop: FunctionComponent = ({ children }) => {\r\n const { pathname } = useLocation();\r\n\r\n useEffect(() => {\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: \"smooth\",\r\n });\r\n }, [pathname]);\r\n\r\n return {children};\r\n};\r\n\r\nexport default ScrollToTop;\r\n","export default __webpack_public_path__ + \"static/media/something-went-wrong.b7eda1ee.svg\";","import { Accordion, AccordionDetails, AccordionSummary, Box, Container, Theme, Typography } from \"@material-ui/core\";\r\nimport { ExpandMore } from \"@material-ui/icons\";\r\nimport { createStyles, withStyles } from \"@material-ui/styles\";\r\nimport React, { ErrorInfo } from \"react\";\r\nimport svgError from \"../../assets/svg/something-went-wrong.svg\";\r\nimport { Link } from \"react-router-dom\";\r\nimport DoubleOutlinedBtn from \"../Shared/DoubleOutlinedBtn\";\r\n\r\ntype ErrorBoundaryProp = {\r\n classes: any;\r\n};\r\ntype ErrorBoundaryState = {\r\n error: any;\r\n errorInfo: any;\r\n};\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n container: {\r\n minHeight: \"65vh\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n minHeight: \"50vh\",\r\n marginTop: \"10vh\",\r\n },\r\n display: \"grid\",\r\n placeItems: \"center center\",\r\n },\r\n text: {\r\n margin: theme.spacing(3, 0, 2, 0),\r\n },\r\n goBackLink: {\r\n textDecoration: \"none\",\r\n },\r\n errorText: {\r\n whiteSpace: \"pre-wrap\",\r\n fontSize: \".5rem\",\r\n color: theme.palette.grey[700],\r\n border: `1px solid ${theme.palette.error.light}`,\r\n boxShadow: theme.shadows[1],\r\n },\r\n });\r\n\r\nclass ErrorBoundary extends React.Component {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { error: null, errorInfo: null };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n // Catch errors in any components below and re-render with error message\r\n this.setState({\r\n error: error,\r\n errorInfo: errorInfo,\r\n });\r\n // You can also log error messages to an error reporting service here\r\n }\r\n\r\n render() {\r\n if (this.state.errorInfo) {\r\n // Error path\r\n return (\r\n \r\n \r\n \"illustration\r\n \r\n \r\n Something went wrong.\r\n \r\n \r\n this.setState({ error: null, errorInfo: null }),\r\n }}\r\n />\r\n \r\n \r\n } aria-controls=\"panel1a-content\" id=\"panel1a-header\">\r\n {this.state.error && this.state.error.toString()}\r\n \r\n \r\n {this.state.errorInfo.componentStack}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n // Normally, just render children\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ErrorBoundary);\r\n","import { CssBaseline } from \"@material-ui/core\";\r\nimport React, { FunctionComponent, useEffect } from \"react\";\r\nimport { BrowserRouter as Router } from \"react-router-dom\";\r\nimport { withCookies } from \"react-cookie\";\r\n\r\nimport Footer from \"./components/Layout/Footer/Footer\";\r\nimport Header from \"./components/Layout/Header/Header\";\r\nimport MainContent from \"./components/Layout/MainContent\";\r\nimport ScrollToTop from \"./components/Layout/ScrollToTop\";\r\nimport ContentfulProvider from \"./providers/contentful\";\r\nimport SessionProvider from \"./providers/session\";\r\nimport CatalogProvider from \"./providers/catalog\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport ErrorBoundary from \"./components/Shared/ErrorBoundary\";\r\n\r\nconst App: FunctionComponent = () => {\r\n useEffect(() => {\r\n document.title = process.env.REACT_APP_ENVIRONMENT === \"production\" ? \"Bachmans\" : \"Bachmans Test\";\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withCookies(App);\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === \"localhost\" ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === \"[::1]\" ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener(\"load\", () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n \"This web app is being served cache-first by a service \" +\r\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === \"installed\") {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n \"New content is available and will be used when all \" +\r\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log(\"Content is cached for offline use.\");\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error(\"Error during service worker registration:\", error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { \"Service-Worker\": \"script\" },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get(\"content-type\");\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n \"No internet connection found. App is running in offline mode.\"\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if (\"serviceWorker\" in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import { configureStore, Action, ThunkAction } from \"@reduxjs/toolkit\";\r\n\r\nimport breadcrumbsReducer from \"./slices/breadcrumbs\";\r\nimport orderReducer from \"./slices/order\";\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n breadcrumbs: breadcrumbsReducer,\r\n order: orderReducer,\r\n }, // combines reducers if we pass an object\r\n});\r\n\r\nexport type AppDispatch = typeof store.dispatch;\r\n\r\nexport type RootState = ReturnType; // will allow typescript to know what types are on rootstate\r\n\r\nexport type AppThunk = ThunkAction>;\r\n\r\nexport default store;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport { Provider } from \"react-redux\";\r\nimport * as serviceWorker from \"./serviceWorker\";\r\nimport { ThemeProvider } from \"@material-ui/core\";\r\nimport { CookiesProvider } from \"react-cookie\";\r\nimport theme from \"./themes/main\";\r\nimport store from \"./redux/store\";\r\n\r\n// Load Roboto Slab typeface\r\nrequire(\"typeface-roboto-slab\");\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","import React, { createContext, FunctionComponent, useEffect, useState } from \"react\";\r\nimport { Entry } from \"contentful\";\r\nimport contentful from \"../services/contentful.service\";\r\nimport { HomeContent } from \"../models/contentful/HomeContent\";\r\nimport { SimpleContent } from \"../models/contentful/SimpleContent\";\r\nimport { PurplePerksContent } from \"../models/contentful/PurplePerks\";\r\nimport { WorkWithBachmansContent } from \"../models/contentful/WorkWithBachmans\";\r\nimport { EventsLandingContent } from \"../models/contentful/EventsLandingContent\";\r\n\r\ninterface ContextState {\r\n ready: boolean;\r\n data?: T;\r\n}\r\n\r\nexport interface StaticPageState extends ContextState[]> {}\r\nexport interface ArticlesState extends ContextState[]> {}\r\nexport interface SimpleContentsBlockState extends ContextState {}\r\nexport interface ComplexContentsBlockState extends ContextState[]> {}\r\nexport interface HomeContentState extends ContextState {}\r\nexport interface PurplePerksState extends ContextState {}\r\nexport interface WorkWithBachmansState extends ContextState {}\r\nexport interface EventsLandingState extends ContextState {}\r\ninterface FooterState extends ContextState> {}\r\n\r\nexport const StaticPageContext = createContext({\r\n ready: false,\r\n});\r\nexport const ArticlesContext = createContext({\r\n ready: false,\r\n});\r\nexport const SimpleContentBlocksContext = createContext({\r\n ready: false,\r\n});\r\nexport const ComplexContentBlocksContext = createContext({\r\n ready: false,\r\n});\r\nexport const HomeContentContext = createContext({\r\n ready: false,\r\n});\r\nexport const FooterContext = createContext({ ready: false });\r\nexport const PurplePerksContext = createContext({ ready: false });\r\nexport const WorkWithBachmansContext = createContext({ ready: false });\r\nexport const EventsLandingContext = createContext({ ready: false });\r\n\r\nconst ContentfulProvider: FunctionComponent = ({ children }) => {\r\n const [staticPages, setStaticPages] = useState({\r\n ready: false,\r\n });\r\n const [articles, setArticles] = useState({\r\n ready: false,\r\n });\r\n const [simpleContentBlocks, setSimpleContentBlocks] = useState({\r\n ready: false,\r\n });\r\n const [complexContentBlocks, setComplexContentBlocks] = useState({\r\n ready: false,\r\n });\r\n const [homeContent, setHomeContentPage] = useState({\r\n ready: false,\r\n });\r\n const [footer, setFooter] = useState({ ready: false });\r\n\r\n const [purplePerks, setPurplePerks] = useState({ ready: false });\r\n const [WorkWithBachmans, setWorkWithBachmans] = useState({ ready: false });\r\n const [eventsLanding, setEventsLanding] = useState({ ready: false });\r\n\r\n useEffect(() => {\r\n contentful\r\n .getEntries({ content_type: \"homeContent\", limit: 1 })\r\n .then((response) => setHomeContentPage({ ready: true, data: response.items[0] }));\r\n contentful.getEntries({ content_type: \"simpleContentBlock\", limit: 1000 }).then((response) => {\r\n setSimpleContentBlocks({ ready: true, data: response.items });\r\n });\r\n contentful.getEntries({ content_type: \"complexContentBlock\", limit: 1000 }).then((response) => {\r\n setComplexContentBlocks({ ready: true, data: response.items });\r\n });\r\n contentful\r\n .getEntries({ content_type: \"globalFooter\", limit: 1 })\r\n .then((response) => setFooter({ ready: true, data: response.items[0] }));\r\n contentful\r\n .getEntries({ content_type: \"staticPage\", limit: 1000 })\r\n .then((response) => setStaticPages({ ready: true, data: response.items }));\r\n contentful\r\n .getEntries({ content_type: \"article\", limit: 1000 })\r\n .then((response) => setArticles({ ready: true, data: response.items }));\r\n contentful.getEntries({ content_type: \"WorkWithBachmans\", limit: 1 }).then((response) => {\r\n console.log(\"THIS IS RESP :\", response.items[0]);\r\n setWorkWithBachmans({ ready: true, data: response.items[0] });\r\n });\r\n contentful\r\n .getEntries({ content_type: \"purplePerks\", limit: 1 })\r\n .then((response) => setPurplePerks({ ready: true, data: response.items[0] }));\r\n contentful\r\n .getEntries({ content_type: \"eventsLanding\", limit: 1 })\r\n .then((response) => setEventsLanding({ ready: true, data: response.items[0] }));\r\n }, []);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContentfulProvider;\r\n","import Case from \"case\";\r\nimport bachDateTime from \"./bachDateTime.service\";\r\nimport moment from \"moment-timezone\";\r\nimport productService from \"./product.service\";\r\nimport { Category, Me, RequiredDeep } from \"ordercloud-javascript-sdk\";\r\nimport { findIndex, isNull, isUndefined } from \"lodash\";\r\n\r\nconst buildCategoryUrlFromId = (id: string, urlPrefixKey: string, pageDesc?: string, queryID?: any): string => {\r\n let url = id.split(\"_\").map(Case.kebab).join(\"/\");\r\n var cleanPageDesc = pageDesc ? stripHtml(pageDesc).toLowerCase() : \"\";\r\n if (cleanPageDesc && cleanPageDesc.includes(\"redirect:\")) {\r\n var redirectSuffix = cleanPageDesc.replace(\"redirect:\", \"\");\r\n return `/${redirectSuffix}`;\r\n }\r\n var finalUrl = `/${urlPrefixKey}/${url}`;\r\n if (isL3Category(id)) {\r\n return finalUrl.replace(/.(?!.*\\/)/, \"?c=\");\r\n }\r\n return finalUrl;\r\n};\r\n\r\nconst stripHtml = (value: string): string => {\r\n return value.replace(/(<([^>]+)>)/gi, \"\").trim();\r\n};\r\n\r\nconst isL3Category = (id: string) => id.split(\"_\").length >= 3;\r\n\r\n//to return l3 from this eg. BachmansDesignStudio to this bachmans-design-studio\r\nconst buildCategoryIdforQuery = (id: string) => {\r\n let param = id.split(\"_\").map(Case.kebab).join(\"/\");\r\n let formattedCatID = param.match(/[^/]*$/);\r\n return formattedCatID ? formattedCatID[0] : \"\";\r\n};\r\n\r\nconst categoriesFilter = (items: RequiredDeep[]) => {\r\n var now = bachDateTime.Today();\r\n var newArray: RequiredDeep[] = [];\r\n if (items && items.length > 0) {\r\n items.forEach((category) => {\r\n if (category) {\r\n var startDate = moment(category.xp.StartDate).tz(\"America/Chicago\").startOf(\"d\");\r\n var endDate = moment(category.xp.EndDate).tz(\"America/Chicago\").endOf(\"d\");\r\n if (now.isBetween(startDate, endDate) && category.Active) {\r\n newArray.push(category);\r\n }\r\n }\r\n });\r\n }\r\n return newArray;\r\n};\r\n\r\nconst hasContentOnCategory = (category: Category) => {\r\n if (isUndefined(category?.xp?.Content) || isNull(category?.xp?.Content)) return false;\r\n return true;\r\n};\r\n\r\nconst getAseCategoriesFromIDs = (aseCategoryIDs: string[]) => {\r\n if (aseCategoryIDs && aseCategoryIDs.length > 0) {\r\n return Me.ListCategories({ catalogID: \"ASE\", filters: { ID: aseCategoryIDs.join(\"|\") } }).then((response) => {\r\n if (response.Items.length === 0) return [];\r\n var orderedArray: Category[] = [];\r\n aseCategoryIDs.forEach((id) => {\r\n var cat = response?.Items?.find((item) => item.ID === id);\r\n if (cat) {\r\n orderedArray.push(cat);\r\n }\r\n });\r\n return orderedArray;\r\n });\r\n } else {\r\n return Promise.resolve([]);\r\n }\r\n};\r\nconst buildCategoryIdFromParts = (parts: string[]): string => {\r\n return parts.map(Case.pascal).join(\"_\");\r\n};\r\n\r\nconst buildBreadcrumb = async (categoryID: string, productID: string, categories: Category[]): Promise => {\r\n var eventLanding = { Name: \"Workshops & Events\", ID: \"workshopEventLanding\", IsPage: true };\r\n var breadcrumb: any[] = [];\r\n\r\n const build = (categories: Category[], catID: string): any[] => {\r\n const category = categories.find((c) => c.ID === catID);\r\n if (!category && breadcrumb.length) return breadcrumb;\r\n (category as any).event = category?.ID && category?.ID?.indexOf(\"WorkshopsEvents\") > -1;\r\n breadcrumb?.unshift(category);\r\n if (category?.ParentID) return build(categories, category.ParentID);\r\n return breadcrumb;\r\n };\r\n\r\n const complete = (currentCat: any): any[] => {\r\n if (currentCat.ID === \"WorkshopsEvents\") {\r\n currentCat.Name = \"All Seminars & Events\";\r\n breadcrumb.push(eventLanding);\r\n } else if (currentCat.event) {\r\n breadcrumb[findIndex(breadcrumb, { ID: \"WorkshopsEvents\" })] = eventLanding;\r\n }\r\n breadcrumb.push(currentCat);\r\n return breadcrumb;\r\n };\r\n\r\n var myCrumbs = build(categories, categoryID);\r\n if (myCrumbs.length) {\r\n return complete(myCrumbs.pop());\r\n } else if (productID) {\r\n const cat = await productService.GetProductCategory(productID, categories);\r\n return complete(cat);\r\n } else return [];\r\n};\r\n\r\nconst service = {\r\n BuildCategoryUrlFromId: buildCategoryUrlFromId,\r\n BuildCategoryIdforQuery: buildCategoryIdforQuery,\r\n BuildCategoryIdFromParts: buildCategoryIdFromParts,\r\n CategoriesFilter: categoriesFilter,\r\n HasContentOnCategory: hasContentOnCategory,\r\n GetAseCategoriesFromIDs: getAseCategoriesFromIDs,\r\n BuildBreadCrumb: buildBreadcrumb,\r\n};\r\nexport default service;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { AuthDialogTab } from \"../../components/Authentication/AuthDialog\";\r\n\r\nexport interface BreadcrumbLink {\r\n path: string;\r\n label: string;\r\n}\r\n\r\nexport interface BreadcrumbsState {\r\n visible: boolean;\r\n hideHome: boolean;\r\n links: BreadcrumbLink[];\r\n current: string;\r\n dark?: boolean;\r\n resourceDrawerOpen: boolean; /// didn't want to make a new slice for this one state.//probably a better way of handling this.\r\n authDialogOpen: boolean;\r\n authDialogState: AuthDialogTab;\r\n}\r\n\r\nconst initialState: BreadcrumbsState = {\r\n visible: false,\r\n hideHome: false,\r\n links: [],\r\n current: \"\",\r\n resourceDrawerOpen: false,\r\n authDialogOpen: false,\r\n authDialogState: \"login\",\r\n};\r\n\r\nconst breadcrumbsSlice = createSlice({\r\n name: \"breadcrumbs\",\r\n initialState: initialState,\r\n reducers: {\r\n setBreadcrumbs: (state, action: PayloadAction>) => {\r\n const {\r\n current,\r\n visible,\r\n hideHome,\r\n links,\r\n dark,\r\n resourceDrawerOpen,\r\n authDialogOpen,\r\n authDialogState,\r\n } = action.payload;\r\n if (links !== undefined) {\r\n state.links = links;\r\n }\r\n if (current !== undefined) {\r\n state.current = current;\r\n }\r\n if (visible !== undefined) {\r\n state.visible = visible;\r\n }\r\n state.hideHome = hideHome || false;\r\n if (dark !== undefined) {\r\n state.dark = dark;\r\n }\r\n if (resourceDrawerOpen !== undefined) {\r\n state.resourceDrawerOpen = resourceDrawerOpen;\r\n }\r\n if (authDialogState !== undefined) {\r\n state.authDialogState = authDialogState;\r\n }\r\n if (authDialogOpen !== undefined) {\r\n state.authDialogOpen = authDialogOpen;\r\n if (!state.authDialogOpen && state.authDialogState !== \"login\") state.authDialogState = \"login\";\r\n }\r\n },\r\n },\r\n});\r\n\r\nexport const { setBreadcrumbs } = breadcrumbsSlice.actions;\r\n\r\nexport default breadcrumbsSlice.reducer;\r\n","import { Address, Addresses, Me } from \"ordercloud-javascript-sdk\";\r\nimport { listAll } from \"../helpers/listAll\";\r\nimport { BuyerXp } from \"../models/buyerXp\";\r\nimport bachmansIntegrationsService from \"./bachmansIntegrations.service\";\r\n\r\nconst init = () => {\r\n getLocalCities();\r\n getLyndaleStore();\r\n};\r\n\r\nconst getMatchingAddress = (zipCode: string) => {\r\n const check = () => service.LocalCities?.filter((city: Address) => city.Zip === zipCode);\r\n\r\n const wait = () => {\r\n setTimeout(() => (service.LocalCities ? wait() : check()), 100);\r\n };\r\n return !service.LocalCities ? wait() : check();\r\n};\r\n\r\nconst getLyndaleStore = (): Promise
=> {\r\n if (!service.LyndaleStore) {\r\n return Me.GetAddress(\"Store-Lyndale-6010--612-861-7676\").then((store) => {\r\n service.LyndaleStore = store;\r\n return store;\r\n });\r\n } else {\r\n return Promise.resolve(service.LyndaleStore);\r\n }\r\n};\r\n\r\nconst getLocalCities = (): Promise => {\r\n if (!service.LocalCities) {\r\n var LocalCities: Address[] = [];\r\n var addressOptions = {\r\n page: 1,\r\n pageSize: 100,\r\n filters: { ID: \"LDCity-*\" },\r\n };\r\n return listAll(Addresses.List, \"Bachmans\", addressOptions).then((res) => {\r\n LocalCities = LocalCities.concat(res);\r\n service.LocalCities = LocalCities;\r\n return LocalCities;\r\n });\r\n } else {\r\n return Promise.resolve(service.LocalCities);\r\n }\r\n};\r\n\r\nconst getBuyerXp = async (): Promise => {\r\n if (!service.BuyerXp) {\r\n var buyerxp = await bachmansIntegrationsService.getBuyerXp();\r\n service.BuyerXp = buyerxp.data;\r\n return buyerxp.data;\r\n } else {\r\n return Promise.resolve(service.BuyerXp);\r\n }\r\n};\r\n\r\n// Point of this service is to store resources as variables to prevent making numerous calls to get the same items\r\ninterface IResourceService {\r\n BuyerXp?: BuyerXp;\r\n LocalCities?: Address[];\r\n LyndaleStore?: Address;\r\n Init: () => void;\r\n GetMatchingAddress: (zipCode: string) => any;\r\n GetLyndaleStore: () => Promise
;\r\n GetLocalCities: () => Promise;\r\n GetBuyerXp: () => Promise;\r\n}\r\n\r\nconst service: IResourceService = {\r\n Init: init,\r\n GetMatchingAddress: getMatchingAddress,\r\n GetLyndaleStore: getLyndaleStore,\r\n GetLocalCities: getLocalCities,\r\n GetBuyerXp: getBuyerXp,\r\n};\r\n\r\nexport default service;\r\n","import React, { createContext, FunctionComponent, useContext, useEffect, useMemo, useState } from \"react\";\r\nimport { Catalog, Category, RequiredDeep } from \"ordercloud-javascript-sdk\";\r\nimport bachmansIntegrations from \"../services/bachmansIntegrations.service\";\r\nimport { SessionContext } from \"./session\";\r\nimport CategoryService from \"../services/category.service\";\r\nimport { cloneDeep, sortBy } from \"lodash\";\r\n\r\ninterface ICatalogContext {\r\n catalog?: Catalog;\r\n DCFcategories?: RequiredDeep[];\r\n categories?: RequiredDeep[];\r\n}\r\n\r\nexport const CatalogContext = createContext({});\r\n\r\nconst CatalogProvider: FunctionComponent = ({ children }) => {\r\n const { token } = useContext(SessionContext);\r\n const [categories, setCategories] = useState[]>();\r\n const [DCFcategories, setDCFCategories] = useState[]>();\r\n // const [catalog, setCatalog] = useState();\r\n\r\n useEffect(() => {\r\n if (token && (!categories || !DCFcategories)) {\r\n initCategories();\r\n }\r\n }, [token, categories, DCFcategories]);\r\n\r\n const initCategories = async () => {\r\n try {\r\n const response = await Promise.all([\r\n bachmansIntegrations.getCatalogCache(\"Bachmans\"),\r\n bachmansIntegrations.getCatalogCache(\"DCF\"),\r\n ]);\r\n const inSeasonCategories = CategoryService.CategoriesFilter(response[0].data);\r\n // need to filter out categories that have parents or grandparents that have already been excluded\r\n const filtered = cloneDeep(inSeasonCategories).filter((c) => {\r\n var exclude = false;\r\n const parent = inSeasonCategories.find((cat) => cat.ID === c.ParentID);\r\n if (c.ParentID && c.ParentID !== null && c.ParentID !== \"\" && (!parent || parent === null)) {\r\n exclude = true;\r\n }\r\n if (parent) {\r\n const grandparent = inSeasonCategories.find((cat) => cat.ID === parent.ParentID);\r\n if (\r\n parent.ParentID &&\r\n parent.ParentID !== null &&\r\n parent.ParentID !== \"\" &&\r\n (!grandparent || grandparent === null)\r\n ) {\r\n exclude = true;\r\n }\r\n }\r\n return !exclude;\r\n });\r\n const categoriesSortbyListOrder = sortBy(filtered, [\"ListOrder\"]);\r\n setCategories(categoriesSortbyListOrder);\r\n setDCFCategories(response[1].data);\r\n } catch {}\r\n };\r\n\r\n const value = useMemo(() => {\r\n return {\r\n // catalog,\r\n categories,\r\n DCFcategories,\r\n };\r\n }, [categories, DCFcategories]);\r\n\r\n return {children};\r\n};\r\n\r\nexport default CatalogProvider;\r\n","import queryString from \"querystring\";\r\nimport { StaticPageRouteData } from \"../components/StaticPages/StaticPageNavigation\";\r\nimport { regexConstants } from \"../constants/regex.constants\";\r\n\r\nexport type StringOption = \"camel\" | \"dash\" | \"space\";\r\n\r\nconst camel2Dash = (val: string, stringOption: StringOption) => {\r\n var result;\r\n if (!stringOption) {\r\n return val;\r\n } else if (stringOption === \"camel\") {\r\n result = val.replace(/-([a-z])/g, function (g) {\r\n return g[1].toUpperCase();\r\n });\r\n return result.charAt(0).toUpperCase() + result.substr(1);\r\n } else if (stringOption === \"dash\") {\r\n result = val.replace(/([A-Z])/g, function (g) {\r\n return \"-\" + g[0].toLowerCase();\r\n });\r\n return result.substr(1);\r\n } else if (stringOption === \"space\") {\r\n if (val === \"TFE\" || val === \"FTD\") return \"Nationwide Delivery\";\r\n if (val === \"USPS\") return val;\r\n if (val === \"InStorePickUp\") return \"In-Store Pickup\";\r\n if (val === \"CurbsidePickUp\") return \"Curbside Pickup\";\r\n if (val === \"UPS\") return val;\r\n return val.charAt(0).toUpperCase() + val.substr(1).replace(/[A-Z]/g, \" $&\");\r\n } else {\r\n return val;\r\n }\r\n};\r\n\r\nconst getStaticPageParams = (location: Location): StaticPageRouteData => {\r\n const queryParams = queryString.parse(location.search.replace(\"?\", \"\"));\r\n const pathArray = location.pathname.split(\"/\").filter((p) => p !== \"\");\r\n return {\r\n tag: queryParams?.tag?.toString(),\r\n search: queryParams?.search?.toString(),\r\n page: parseInt(queryParams?.page?.toString()),\r\n section: pathArray && pathArray[0] ? pathArray[0] : undefined,\r\n rootslug: pathArray && pathArray[1] ? pathArray[1] : undefined,\r\n branchslug: pathArray && pathArray[2] ? pathArray[2] : undefined,\r\n leafslug: pathArray && pathArray[3] ? pathArray[3] : undefined,\r\n };\r\n};\r\n\r\nconst getQueryParamsFromLocation = (search: string): any => {\r\n return queryString.parse(search.replace(\"?\", \"\"));\r\n};\r\n\r\nconst capitalizeString = (str: string, separators?: string[]) => {\r\n if (str !== null && str !== undefined) {\r\n separators = separators || [\" \"];\r\n var regex = new RegExp(\"(^|[\" + separators.join(\"\") + \"])(\\\\w)\", \"g\");\r\n return str.toLowerCase().replace(regex, function (x) {\r\n return x.toUpperCase();\r\n });\r\n }\r\n return str;\r\n};\r\n\r\nconst arraysEqual = (arr1?: string[], arr2?: string[]) => {\r\n var equal = true;\r\n arr1?.forEach((i) => {\r\n if (!arr2?.includes(i)) {\r\n equal = false;\r\n }\r\n });\r\n arr2?.forEach((i) => {\r\n if (!arr1?.includes(i)) {\r\n equal = false;\r\n }\r\n });\r\n return equal;\r\n};\r\n\r\nconst amPmFormat = (input: any, char?: number) => {\r\n if (input) {\r\n char = char ? char - 1 : 0;\r\n let ampm = input.split(\" \");\r\n let letter = ampm[1].toLowerCase();\r\n let out = \"\";\r\n for (let i = 0; i < letter.length; i++) {\r\n out += letter[i] + \".\";\r\n }\r\n return ampm[0] + \" \" + out;\r\n }\r\n};\r\n\r\nconst getFirstPath = (pathName: string) => pathName.split(\"/\")[1];\r\n\r\nconst preCompare = (text: string) => {\r\n //remove whitespace, periods and lowercase text\r\n if (text && typeof text === \"string\") {\r\n return text.replace(/\\s/g, \"\").replace(/\\./g, \"\").toLowerCase();\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\nconst onlyNumbers = (val: string) => val.replace(regexConstants.nonNumeric, \"\");\r\n\r\nconst validEmail = (val: string): boolean => regexConstants.validEmail.test(val);\r\n\r\nconst onlyAlphaNumeric = (val: string) => {\r\n if (regexConstants.alphaNumeric.test(val)) {\r\n return val;\r\n }\r\n};\r\n\r\nconst onlyAlpha = (val: string) => val.replace(regexConstants.invalidName, \"\");\r\n\r\nconst service = {\r\n Camel2Dash: camel2Dash,\r\n CapitalizeString: capitalizeString,\r\n ArraysEqual: arraysEqual,\r\n AmPmFormat: amPmFormat,\r\n GetQueryParamsFromLocation: getQueryParamsFromLocation,\r\n GetStaticPageParams: getStaticPageParams,\r\n GetFirstPath: getFirstPath,\r\n PreCompare: preCompare,\r\n OnlyNumbers: onlyNumbers,\r\n ValidEmail: validEmail,\r\n OnlyAlphaNumeric: onlyAlphaNumeric,\r\n OnlyAlpha: onlyAlpha,\r\n};\r\n\r\nexport default service;\r\n"],"sourceRoot":""}