{"version":3,"sources":["webpack://client/./src/css/fonts/Stag-Sans-Bold-Italic.otf","webpack://client/./src/features/constants.js","webpack://client/./src/features/functions.js","webpack://client/./src/features/history.js","webpack://client/./src/features/tireResults/searchTiresSlice.js","webpack://client/./src/features/tireResults/highlightsTiresSlice.js","webpack://client/./src/features/tireResults/vehicleTiresSlice.js","webpack://client/./src/features/tireFinder/vehicleBrandsSlice.js","webpack://client/./src/features/tireFinder/vehicleModelsSlice.js","webpack://client/./src/features/tireFinder/vehicleYearsSlice.js","webpack://client/./src/features/tireFinder/vehicleVersionsSlice.js","webpack://client/./src/features/tireFinder/sizeWidthDiametersSlice.js","webpack://client/./src/features/tireFinder/sizeRatiosSlice.js","webpack://client/./src/features/tireFinder/sizeRimsSlice.js","webpack://client/./src/features/tireFinder/sizeSaeWidthsSlice.js","webpack://client/./src/features/tireFinder/sizeSaeRimsSlice.js","webpack://client/./src/features/tireFinder/vehicleTypeSlice.js","webpack://client/./src/features/tireResults/sizeTiresSlice.js","webpack://client/./src/features/tireResults/sizeSaeTiresSlice.js","webpack://client/./src/features/tireFinder/sizeCanvasSlice.js","webpack://client/./src/features/tireResults/codeTiresSlice.js","webpack://client/./src/features/tireFinder/searchSlice.js","webpack://client/./src/features/account/accountSlice.js","webpack://client/./src/features/alerts/alertsSlice.js","webpack://client/./src/features/cart/dealerShipAddressSlice.js","webpack://client/./src/features/orders/ordersSlice.js","webpack://client/./src/features/orders/orderConfirmationSlice.js","webpack://client/./src/features/account/citiesSlice.js","webpack://client/./src/features/account/countiesSlice.js","webpack://client/./src/features/account/shipAddressSlice.js","webpack://client/./src/features/account/invoiceAddressSlice.js","webpack://client/./src/features/account/statesSlice.js","webpack://client/./src/features/account/accountCardsSlice.js","webpack://client/./src/features/contact/contactSlice.js","webpack://client/./src/features/account/loginSlice.js","webpack://client/./src/features/tagmanager.js","webpack://client/./src/features/cart/paymentCardSlice.js","webpack://client/./src/features/cart/cartSlice.js","webpack://client/./src/components/tireFinder/Search.js","webpack://client/./src/components/account/AccountMenu.js","webpack://client/./src/features/account/registerSlice.js","webpack://client/./src/components/home/MainMenu.js","webpack://client/./src/components/slider/SliderItem.js","webpack://client/./src/components/Loader.js","webpack://client/./src/components/slider/BannerSlider.js","webpack://client/./src/components/tireFinder/VehicleFinder.js","webpack://client/./src/components/tireFinder/TireCanvas.js","webpack://client/./src/components/tireFinder/SizeFinder.js","webpack://client/./src/components/tireFinder/TireFinder.js","webpack://client/./src/components/tireResults/ProductDetailsQty.js","webpack://client/./src/components/tireResults/ProductDetails.js","webpack://client/./src/components/tireResults/Highlights.js","webpack://client/./src/components/tireResults/ResultProduct.js","webpack://client/./src/components/tireResults/TireDetails.js","webpack://client/./src/components/tireResults/ResultVehicle.js","webpack://client/./src/components/tireResults/ResultSize.js","webpack://client/./src/components/tireResults/ResultSizeSae.js","webpack://client/./src/components/tireResults/ResultCode.js","webpack://client/./src/components/home/HomeDealers.js","webpack://client/./src/components/contact/ContactForm.js","webpack://client/./src/components/home/HomeFooter.js","webpack://client/./src/components/home/HomeContent.js","webpack://client/./src/components/cart/CartDetailsQty.js","webpack://client/./src/components/cart/CartDetailsRemove.js","webpack://client/./src/components/cart/CartCoupon.js","webpack://client/./src/components/cart/CartDetails.js","webpack://client/./src/components/cart/CartShipToButton.js","webpack://client/./src/components/cart/CartShipTo.js","webpack://client/./src/components/cart/CartShipAddressItem.js","webpack://client/./src/features/account/shipAddressEditSlice.js","webpack://client/./src/components/cart/CartShipAddress.js","webpack://client/./src/components/cart/CartShipDealer.js","webpack://client/./src/components/cart/CartShip.js","webpack://client/./src/components/cart/CartInvoiceAddressItem.js","webpack://client/./src/features/account/invoiceAddressEditSlice.js","webpack://client/./src/components/cart/CartInvoiceAddress.js","webpack://client/./src/components/cart/CartInvoice.js","webpack://client/./src/components/cart/CartPayment.js","webpack://client/./src/features/account/accountCardAddSlice.js","webpack://client/./src/components/cart/OpenPayCardForm.js","webpack://client/./src/components/cart/OpenPayCvvCardForm.js","webpack://client/./src/components/cart/CartSummary.js","webpack://client/./src/components/cart/PaymentCreditCardForm.js","webpack://client/./src/components/cart/PaymentPayPalForm.js","webpack://client/./src/components/cart/Cart.js","webpack://client/./src/components/cart/CartModal.js","webpack://client/./src/components/order/PaynetOrderConfirmation.js","webpack://client/./src/components/order/OrderConfirmation.js","webpack://client/./src/components/order/OrderConfirmationModal.js","webpack://client/./src/features/account/resetPasswordSlice.js","webpack://client/./src/features/account/confirmationSlice.js","webpack://client/./src/components/account/LoginModal.js","webpack://client/./src/components/account/RegisterModal.js","webpack://client/./src/components/account/ResetPasswordModal.js","webpack://client/./src/components/account/ConfirmationModal.js","webpack://client/./src/components/account/AddressItem.js","webpack://client/./src/components/account/ShipAddressModal.js","webpack://client/./src/features/account/zipCodesSlice.js","webpack://client/./src/features/account/neighborhoodsSlice.js","webpack://client/./src/components/autosuggest/ZipCodeAutosuggest.js","webpack://client/./src/components/autosuggest/NeighborhoodAutosuggest.js","webpack://client/./src/components/autosuggest/CityAutosuggest.js","webpack://client/./src/components/autosuggest/CountyAutosuggest.js","webpack://client/./src/components/account/ShipAddressAddModal.js","webpack://client/./src/components/account/InvoiceAddressModal.js","webpack://client/./src/components/account/InvoiceAddressAddModal.js","webpack://client/./src/components/account/InvoiceAddressEditModal.js","webpack://client/./src/components/account/AccountOrders.js","webpack://client/./src/components/account/OrderModal.js","webpack://client/./src/features/account/accountEditSlice.js","webpack://client/./src/components/account/AccountDetailsModal.js","webpack://client/./src/components/account/AccountEditModal.js","webpack://client/./src/features/account/activationSlice.js","webpack://client/./src/components/account/ActivationModal.js","webpack://client/./src/components/alert/AlertModal.js","webpack://client/./src/components/account/ShipAddressEditModal.js","webpack://client/./src/components/cart/OpenPayPointsModal.js","webpack://client/./src/features/account/accountCardEditSlice.js","webpack://client/./src/components/account/AccountCards.js","webpack://client/./src/components/account/AccountCardEdit.js","webpack://client/./src/components/account/AccountCardDelete.js","webpack://client/./src/components/home/Home.js","webpack://client/./src/features/banners/bannersSlice.js","webpack://client/./src/features/cfdi/cfdiRegimeSlice.js","webpack://client/./src/features/cfdi/cfdiUsoSlice.js","webpack://client/./src/components/account/Confirmation.js","webpack://client/./src/components/account/TermsDisclaimer.js","webpack://client/./src/features/routes.js","webpack://client/./src/components/account/Terms.js","webpack://client/./src/components/App.js","webpack://client/./src/features/account/footerSlice.js","webpack://client/./src/features/reducers.js","webpack://client/./src/components/CacheBuster.js","webpack://client/./src/client.js","webpack://client/./src/app/store.js","webpack://client/./src/images/login-bg-2.jpg","webpack://client/./src/images/tire-finder-art.png","webpack://client/webpack/bootstrap","webpack://client/webpack/runtime/compat get default export","webpack://client/webpack/runtime/define property getters","webpack://client/webpack/runtime/global","webpack://client/webpack/runtime/hasOwnProperty shorthand","webpack://client/webpack/runtime/make namespace object","webpack://client/webpack/runtime/node module decorator","webpack://client/webpack/runtime/publicPath","webpack://client/webpack/runtime/jsonp chunk loading","webpack://client/webpack/startup"],"names":["module","exports","BASE_API_URL","process","SITE_TITLE","SITE_DESCRIPTION","SITE_HOST","CART_STEPS","DETAILS","SHIP","INVOICE","PAYMENT","SUMMARY","SHIP_TYPES","ADDRESS","FACTORY","EMPLEADOS","DHL_EMPLEADOS","DEALER","properties","name","shortname","fullname","PAYMENT_METHODS","DEPOSIT","CREDITCARD","PAYPAL","SAFETYPAY","PAYNET","imageUrl","disabledImageUrl","OPENPAY_CARD_LIMIT","OPENPAY_TOKEN_ACTION","PAY","SAVE","VEHICLE_TYPES","PLT","CAR","SUV","BIKE","VAN","value","slug","ORDER_STATUS_TYPES","INCOMPLETE","RESERVE","VALIDATION","AUTORIZED","PROCESS","NOT_AUTHORIZED","NOT_PAYED","DELIVERY","DELIVERY_FACTORY","DELIVERY_EMPLEADOS","SHIPED","TRANSIT","DHL_LOCATION","HR_LOCATION","DEALER_LOCATION","DELIVERED","EXCEPTON","CANCELLED","className","GENDER_TYPES","MALE","FEMALE","COUPON_STATUS","VALID","USED","INVALID","INVALID_USER","WITHOUT_COUPON","message","IMAGE_TYPES","CART","CAROUSEL","CFDI_TYPE","FISICA","MORAL","TIRE_SPECS","Camara","Key","Value","Cara","Carga","Construccion","Radial","Velocidad","isServer","window","document","createElement","currencyFormat","num","toFixed","replace","stringNumberFormat","length","stringNumber","substring","validateMail","email","test","validatePwd","pwd","validatePhone","phone","cleanPhone","validateZip","zip","validateRFC","rfc","validateRazonSocial","match","validateInvoiceAddress","address","regimenes","usos","Alias","RFC","RegimenFiscal","Uso","cfdiType","getCfdiType","regime","filter","el","Id","uso","Moral","Fisica","RazonSocial","trim","mapCfdiOptions","list","filtered","map","item","index","label","Nombre","validateCardYear","cardYear","validateCardMonth","cardMonth","mmToIn","mm","pos","digits","Math","pow","round","isEmpty","obj","key","hasOwnProperty","getPropertyArray","array","self","findIndex","t","imageFormat","image","search","getTireTags","tire","title","TireProduct","Name","Size","description","Slogan","url","Code","BrandSlug","vt","VehicleTypeId","Slug","SizeShort","getSizeTags","width","ratio","rim","dept","size","type","img","Image","getSizeSaeTags","diameter","getBrandClass","brand","toLowerCase","getModalButtonClass","disabled","getVehicleTypeClass","vehicleType","renderOriginalPrice","qty","Discount","Minimum","ListPrice","renderPrice","Price","formatDetails","details","infoArray","split","RegExp","join","getDept","deptId","result","renderRadial","valor","renderIndiceCarga","renderIndiceVelocidad","renderSsr","renderDureza","renderCamara","formatShipAddress","numint","NumInt","Calle","NumExt","Colonia","CP","Municipio","Estado","formatInvoiceAddress","doesDiscountAplies","articulosDescuento","cuponDescuento","aplicaDescuento","Campania","CampaniaId","MinProductos","formatProductCount","escapeRegexCharacters","str","getMatchingItems","state","escapedValue","itemList","regex","getMatchingItemsBlank","getMatchingItemsYears","anio","getMatchingItemsTireSize","getMatchingItemsZipCodes","Codigo","getMatchingItemsNeighborhoods","getMatchingItemsCities","Cd","getMatchingItemsCounties","getMatchingSearchItems","getMatchingItemById","productId","createMemoryHistory","initialEntries","createBrowserHistory","initialState","isLoading","hide","searchTires","createSlice","reducers","requestSearchResultsTiresList","receiveSearchResultsTiresList","action","payload","clearSearchResultsTiresList","hideSearchResultsList","clearSearchResultData","actions","shouldFetchSearchResultsTiresList","tires","selectedItem","fetchSearchResultsTireListIfNeeded","dispatch","getState","theState","fetchSearchResultsTiresList","id","options","method","headers","coupon","cart","fetch","then","response","ok","json","text","error","Promise","reject","highlightsTires","requestHighlightsTiresList","receiveHighlightsTiresList","clearHighlightsTiresList","hideHighlightsTiresList","clearHighlightsData","fetchHighlightsTiresList","axios","data","vehicleTires","requestVehicleTiresList","receiveVehicleTiresList","clearVehicleTiresData","fetchVehicleTiresListIfNeeded","selectedBrand","selectedModel","selectedYear","selectedVersion","vehicleBrands","vehicleModels","vehicleYears","vehicleVersions","Object","keys","ID","BrandId","ModelId","Year","VersionId","fetchVehicleTiresList","model","year","version","ReactGA","category","suggestions","requestVehicleBrandsList","receiveVehicleBrandsList","loadVehicleBrandsSuggestionsBegin","maybeUpdateVehicleBrandsSuggestions","updateVehicleBrandValue","updateVehicleBrandItem","clearVehicleBrandsSuggestions","clearVehicleBrandValue","clearVehicleBrandData","fetchVehicleBrandsIfNeeded","fetchVehicleBrands","loadVehicleBrandsSuggestions","setTimeout","renderInput","requestVehicleModelsList","receiveVehicleModelsList","loadVehicleModelsSuggestionsBegin","maybeUpdateVehicleModelsSuggestions","updateVehicleModelValue","updateVehicleModelItem","clearVehicleModelsSuggestions","clearVehicleModelValue","clearVehicleModelData","shouldFetchVehicleModels","brandId","fetchVehicleModelsIfNeeded","fetchVehicleModels","loadVehicleModelsSuggestions","requestVehicleYearsList","receiveVehicleYearsList","loadVehicleYearsSuggestionsBegin","maybeUpdateVehicleYearsSuggestions","updateVehicleYearValue","updateVehicleYearItem","clearVehicleYearsSuggestions","clearVehicleYearValue","clearVehicleYearData","shouldFetchVehicleYears","modelId","fetchVehicleYearsIfNeeded","fetchVehicleYears","loadVehicleYearsSuggestions","requestVehicleVersionsList","receiveVehicleVersionsList","loadVehicleVersionsSuggestionsBegin","maybeUpdateVehicleVersionsSuggestions","updateVehicleVersionValue","updateVehicleVersionItem","clearVehicleVersionsSuggestions","clearVehicleVersionValue","clearVehicleVersionData","shouldFetchVehicleVersions","yearItem","fetchVehicleVersionsIfNeeded","fetchVehicleVersions","loadVehicleVersionsSuggestions","sizeWidthDiameters","requestWidthDiametersList","receiveWidthDiametersList","setSizeVehicleType","loadWidthDiametersSuggestionsBegin","maybeUpdateWidthDiametersSuggestions","updateWidthDiameterValue","updateWidthDiameterItem","IsSae","clearWidthDiametersSuggestions","clearWidthDiameterValue","clearWidthDiameterData","shouldFetchWidthDiameters","fetchWidthDiametersIfNeeded","fetchWidthDiameters","loadWidthDiametersSuggestions","showInput","sizeRatios","requestSizeRatiosList","receiveSizeRatiosList","loadSizeRatiosSuggestionsBegin","maybeUpdateSizeRatiosSuggestions","updateSizeRatioValue","updateSizeRatioItem","clearSizeRatiosSuggestions","clearSizeRatioValue","clearSizeRatiosData","fetchSizeRatiosIfNeeded","selectedWidth","newWidth","fetchSizeRatios","OriginalValue","loadSizeRatiosSuggestions","sizeRims","requestSizeRimsList","receiveSizeRimsList","loadSizeRimsSuggestionsBegin","maybeUpdateSizeRimsSuggestions","updateSizeRimValue","updateSizeRimItem","clearSizeRimsSuggestions","clearSizeRimValue","clearSizeRimData","fetchSizeRimsIfNeeded","selectedRatio","newRatio","fetchSizeRims","loadSizeRimsSuggestions","sizeSaeWidths","requestWidthSaesList","receiveWidthSaesList","loadWidthSaesSuggestionsBegin","maybeUpdateWidthSaesSuggestions","updateWidthSaeValue","updateWidthSaeItem","clearWidthSaesSuggestions","clearWidthSaeValue","clearWidthSaeData","fetchWidthSaesIfNeeded","selectedDiameter","newDiameter","fetchWidthsSae","loadWidthSaesSuggestions","originalValue","sizeSaeRims","requestSizeRimSaesList","receiveSizeRimSaesList","loadSizeRimSaesSuggestionsBegin","maybeUpdateSizeRimSaesSuggestions","updateSizeRimSaeValue","updateSizeRimSaeItem","clearSizeRimSaesSuggestions","clearSizeRimSaeValue","clearSizeRimSaesData","fetchSizeRimSaesIfNeeded","fetchSizeRimSaes","loadSizeRimSaesSuggestions","setVehicleType","scroll","sizeTires","requestSizeTiresList","receiveSizeTiresList","setSizeTiresScroll","clearSizeTiresList","clearSizeTiresData","setSizeTiresSize","fetchSizeTiresListIfNeeded","selectedRim","newRim","fetchSizeTiresList","hitType","page","v","scrollToSizeTires","Scroll","target","getElementById","targetPos","offsetWidth","offsetTop","scrollTo","smooth","delay","duration","sizeSaeTires","requestSizeSaeTiresList","receiveSizeSaeTiresList","setSizeSaeTiresScroll","clearSizeSaeTiresList","clearSizeSaeTiresData","fetchSizeSaeTiresListIfNeeded","fetchSizeSaeTiresList","encodeURIComponent","scrollToSizeSaeTires","sizeCanvas","require","focus","isSAE","first","second","third","firstLoad","setCanvasFirstItem","setCanvasSecondItem","setCanvasThirdItem","setCanvasFocus","code","codeTires","requestCodeTiresList","receiveCodeTiresList","setCodeTiresCode","setCodeTiresScroll","clearCodeTiresData","shouldFetchCodeTiresList","fetchCodeTiresList","Origin","scrollToCodeTires","showField","requestSearchList","receiveSearchList","loadSearchSuggestionsBegin","maybeUpdateSearchSuggestions","update","updateSearchValue","updateSearchItem","clearSearchSuggestions","clearSearchValue","toggleShowSearchField","clearSearchData","clearSearchActions","changeSearchActions","clearVehicleBrandActions","clearVehicleModelActions","clearVehicleYearActions","clearVehicleVersionActions","clearSizeWidthDiameterActions","clearSizeRatioActions","clearSizeRimActions","clearSizeSaeWidthActions","clearSizeSaeRimActions","fetchSearchIfNeeded","fetchSearch","loadSearchSuggestions","updateSearchResultTiresFromURL","accountSlice","isOpen","requestAccountData","receiveAccountData","toggleShowAccountData","alert","setAlert","toggleShowAlert","stateList","selectedState","cityList","selectedCity","dealerShipAddress","requestDealerShipAddress","receiveDealerShipAddress","setDealerShipAddressStateList","setDealerShipAddressSelectedState","setDealerShipAddressCityList","State","setDealerShipAddressSelectedCity","clearDealerShipAddressData","shouldFetchDealerShipAddressList","fetchDealerShipAddressListIfNeeded","fetchDealerShipAddress","setDealerShipAddressDefaultSelectedCity","sessionService","session","Authorization","loginData","access_token","responseStatus","status","setCartShipAddress","shipAddress","shipAddressItem","City","runUnauthorizedActions","err","console","log","isLoadingItem","isOpenItem","orders","requestOrdersList","receiveOrdersList","toggleShowOrdersList","setOrdersListSelectedItem","toggleShowOrdersListItem","requestOrder","receiveOrder","clearOrdersData","shouldFetchOrder","selected","oldSelected","fetchOrderIfNeeded","fetchOrder","fetchOrdersList","Numero","orderId","order","hasQueryString","orderConfirmation","requestOrderConfirmation","receiveOrderConfirmation","setOrderConfirmationId","toggleShowOrderConfirmation","setOrderConfirmationQueryString","clearOrderConfirmationData","fetchOrderConfirmation","Estatus","cities","stateId","requestCitiesList","receiveCitiesList","loadCitiesSuggestionsBegin","maybeUpdateCitiesSuggestions","setCitiesStateId","updateCityValue","updateCityItem","clearCitiesSuggestions","clearCityValue","shouldFetchCities","fetchCitiesIfNeeded","fetchCities","loadCitiesSuggestions","counties","requestCountiesList","receiveCountiesList","loadCountiesSuggestionsBegin","maybeUpdateCountiesSuggestions","setCountiesStateId","updateCountyValue","updateCountyItem","clearCountiesSuggestions","clearCountyValue","shouldFetchCounties","fetchCountiesIfNeeded","fetchCounties","loadCountiesSuggestions","isOpenAdd","city","errorMsg","requestShipAddress","receiveShipAddress","toggleShowShipAddressAdd","toggleShowShipAddress","setShipAddressSelectedState","requestShipAddressCity","receiveShipAddressCity","setShipAddressErrorMessage","setShipAddressAddFinish","clearShipAddressAddData","clearShipAddressData","shouldFetchShipAddressList","fetchShipAddressListIfNeeded","fetchShipAddress","Envio","clearCartShipAddress","fetchShipAddressCity","zipCode","fetchAddShipAddress","body","JSON","stringify","tipo","alias","tel","calle","street","numext","ext","cp","col","neighborhood","cd","mpio","county","edo","rsoc","lat","lon","Message","setInvoiceAddressAddFinish","setInvoiceAddressErrorMessage","invoiceAddress","requestInvoiceAddress","receiveInvoiceAddress","toggleShowInvoiceAddressAdd","toggleShowInvoiceAddress","setInvoiceAddressSelectedState","requestInvoiceAddressCity","receiveInvoiceAddressCity","clearInvoiceAddressAddData","clearInvoiceAddressData","shouldFetchInvoiceAddressList","fetchInvoiceAddressListIfNeeded","fetchInvoiceAddress","setCartInvoiceAddress","invoiceAddressItem","Facturacion","clearCartInvoiceAddress","fetchInvoiceAddressCity","fetchAddInvoiceAddress","regimen","states","requestStatesList","receiveStatesList","setStatesOptions","selectedCard","accountCards","requestCards","receiveCards","toggleShowAccountCards","setCardsIsLoading","setSelectedCard","clearAccountCardsData","toggleShowSelectedCard","mapOptions","Marca","toUpperCase","Mes","Anio","push","fetchAccountCards","cardOptions","setCartPaymentCard","paymentCard","paymentCardItem","done","contact","requestContactMessage","receiveContactMessage","setContactErrorMsg","setContactDone","clearContactForm","fetchContactMessage","priority","sess","user","lastname","mail","Email","Type","Priority","system","loginSlice","fromCart","success","requestLoginData","receiveLoginData","toggleShowLogin","setFromCart","setLoginSuccess","setLoginErrorMessage","fetchLogin","password","qs","username","grant_type","runAuthenticatedActions","error_description","history","fetchCartObjectIfNeeded","cartLoadOpenPay","logout","clearCartData","doLogout","GTM_PURCHASE_BUTTON","GTM_CART_LOGIN_BUTTON","GTM_CART_SHIP_BUTTON","GTM_CART_BILL_BUTTON","GTM_CART_PAYMENT_BUTTON","GTM_CART_CHECKOUT_BUTTON","GTM_ORDER_CONFIRMATION","gtm","GoogleTagManager","eventsMap","event","product","Brand","transactionId","transactionTotal","Total","transactionTax","IVA","transactionShip","transactionDate","Fecha","transactionProducts","Elementos","i","Tipo","variant","Medida","price","Precio","quantity","Cantidad","paymentType","p","MetodoPago","shipType","s","TipoEnvio","gtmMiddleware","createMiddleware","logger","gtmTriggerAddItemToCart","gtmTriggerCartLoginButton","gtmTriggerCartBillButton","gtmTriggerCartPaymentButton","gtmTriggerCartCheckoutButton","gtmTriggerOrderConfirmation","requestPaymentCardList","receivePaymentCardList","setPaymentCardSelected","clearPaymentCardData","fetchPaymentCardListIfNeeded","fetchPaymentCardList","isProcessing","showTab","cartObject","shipLocationId","creditCardResponse","payPalResponse","safetyPayResponse","depositResponse","paynetResponse","openPayLoaded","isOpenPoints","pointsData","requestCartObject","receiveCartObject","removeCartLoading","setCartActiveTab","setCartShipType","setCartShipLocationId","clearCartShipLocationId","setCartPaymentType","toggleShowCart","setPaymentProcess","receivePaymentCard","receivePaymentPayPal","receivePaymentSafetyPay","receivePaymentDeposit","receivePaymentPaynet","requestValidateCoupon","receiveValidateCoupon","setCartOpenPayLoaded","toggleShowPoints","setCartUserData","getCartAlias","shouldFetchCartObject","strIdBolsa","fetchCartObject","fetchAddItemToCartObject","tireId","cartId","TireId","Qty","Coupon","fetchDeleteItemFromCartObject","fetchPaymentCard","token","tokenId","accountCardAdd","deviceSessionId","sessId","card","save","usePoints","cardId","cvv","delivery","invoice","payment","promo","cardPromo","authorized","LocationId","Url","location","fetchPaymentPayPal","fetchPaymentSafetyPay","fetchPaymentDeposit","Order","fetchPaymentPaynet","removeCoupon","fetchValidateCoupon","couponCode","cupon","Status","evaluateCartNextStep","nextTab","cartItems","Tire","VehicleType","currency","CuponDescuento","CodigoCupon","items","shipping_tier","payment_type","openpay","OpenPay","setId","setApiKey","setSandboxMode","getClassName","Search","clearSearch","useDispatch","useSelector","searchRef","useRef","useHistory","useLocation","onClick","inputProps","placeholder","onChange","newValue","tabIndex","ref","highlightFirstSuggestion","onSuggestionsFetchRequested","onSuggestionsClearRequested","getSuggestionValue","suggestion","renderSuggestion","src","alt","onSuggestionSelected","current","blur","AccountMenu","useState","dropdownClass","setDropdownClass","dropdownIsActive","setDropdownIsActive","toggleShowMenu","buttonText","onMouseDown","e","preventDefault","stopPropagation","onBlur","register","requestRegistration","completeRegistration","toggleShowRegister","setRegistrationErrorMsg","clearRegisterData","fetchRegister","usrname","lastName","mothername","motherName","gender","birthdate","subscribe","kart","includes","parse","MainMenu","authenticated","checked","handleShowRegisterClick","totalItems","Articulos","renderRegister","SliderItem","props","slideStyles","backgroundImage","targetUrl","cursor","style","open","Loader","msg","sliderDivStyle","height","BannerSlider","banners","dots","infinite","slidesToShow","speed","autoplaySpeed","autoplay","swipeToSlide","Imagen","Titulo","Texto","renderYearSuggestion","getYearSuggestionValue","VehicleFinder","tireList","modelRef","yearRef","versionRef","handleFocus","select","useEffect","brandProps","onFocus","modelProps","yearProps","versionProps","shouldRenderSuggestions","canvasParams","shadowsImage","radius","center","x","y","values","template","white_color","yellow_color","soft_light","indexFocus","separator","sae_mode","sae_separator","build","offset","angle","PI","imageWidth","imageHeight","matrix","path2d","path2d_inverse","firstPath","separatorPath","secondPath","buildPath","thirdPath","ottfont","getGlyphWidth","glyph","fontSize","scale","unitsPerEm","advanceWidth","TireCanvas","canvasRef","drawType","context","drawImage","clip","restore","fillStyle","fill","mode","canvas","getContext","setValues","newValues","reshape","string","Path2D","perimeter","textWidth","kerning","glyphs","stringToGlyphs","getTextWidth","centerAngle","point","firstPart","forEachGlyph","gX","gY","gFontSize","glyphPath","getPath","letterAngle","cos","sin","Matrix","translate","rotate","commands","applyToPoint","moveTo","lineTo","point1","x1","y1","point2","x2","y2","bezierCurveTo","closePath","separatorPart","secondPart","buildPart","thirdPart","buildFontPath","clearRect","_canvas","getElementsByTagName","appendChild","_context","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","toDataURL","onload","removeChild","renderShadows","imgSrc","fontSrc","load","_font","loadOpenTypeFont","updateCanvas","canvasImage","canvasFont","focusSize","SizeFinder","tireSaeList","ratioRef","rimRef","saeWidthRef","saeRimRef","handleLocationReset","handleVehicleTypeChange","handleBlur","widthDiameterProps","ratioProps","rimProps","saeWidthProps","saeRimProps","htmlFor","TireFinder","ProductDetailsQty","Kartis","Number","onKeyPress","onKeyDown","Element","getIndex","ProductDetails","option","setOption","optionIndex","setOptionIndex","defaultValue","setDefaultValue","setQty","showDetails","setShowDetails","_onSelect","Tires","toggleDetailsClick","defaultOption","renderDropdown","opIndex","item_id","item_name","item_brand","item_category","item_variant","Load","Speed","SSR","Strength","Tube","Details","Link","Highlights","activeProduct","setActiveProduct","productDetails","active","settings","centerMode","centerPadding","afterChange","responsive","breakpoint","slidesToScroll","initialSlide","innerWidth","ProductId","to","renderProducts","ScrollLink","ResultProduct","handleCloseClick","TireDetails","getTirePrice","ResultVehicle","activeSize","setActiveSize","activeAlternative","setActiveAlternative","activeList","tireDetails","Sizes","Alternatives","Sports","Array","from","currentSlide","setCurrentSlide","paddingTop","renderTireDetails","animateScroll","ResultSize","tireTags","Helmet","content","property","ResultSizeSae","ResultCode","HomeDealers","ContactForm","setSelected","selectedIndex","setSelectedIndex","setName","setMail","setMessage","setPriority","accept","setAccept","renderError","padding","margin","classNames","errorMessages","inverted","valid","href","rel","HomeFooter","handleTermsClick","HomeContent","CartDetailsQty","defaultQty","setDefaultQty","newQty","CartDetailsRemove","CartCoupon","setCouponCode","handleClick","Campaign","MaxProducts","CartDetails","campania","ArticulosDescuento","element","subtotal","Costo_Envio","CartShipToButton","splitted","isDisabled","amount","getShipToButtonClass","CartShipTo","CartShipAddressButton","loaded","shipAddressEdit","requestShipAddressEdit","receiveShipAddressEdit","setShipAddressEdit","setShipAddressEditErrorMsg","setShipAddressEditLoaded","toggleShowShipAddressEdit","clearShipAddressEdit","fetchShipAddressEdit","nuevoAlias","newAlias","CartShipAddress","handleAddClick","Numero_Interior","Numero_Exterior","Codigo_Postal","Delegacion","Estado_Descripcion","Telefono","formatAddress","Apartment","Street","Neighbourhood","Zip","CartShipDealer","filteredList","Dealer","renderAddressList","CartShip","totalAmount","CartInvoiceAddressButton","invoiceAddressEdit","requestInvoiceAddressEdit","receiveInvoiceAddressEdit","setInvoiceAddressEdit","setInvoiceAddressEditErrorMsg","setInvoiceAddressEditLoaded","toggleShowInvoiceAddressEdit","clearInvoiceAddressEdit","fetchInvoiceAddressEdit","CartInvoiceAddress","cssAlert","cssTag","addressRegime","addressUso","regimeList","cfdiRegime","usoList","cfdiUso","color","fontWeight","fontStyle","textAlign","isValid","isPaynetDisabled","total","shipping","CartPayment","selectedCardOption","setSelectedCardOption","handleSelectPayment","handleSelectCard","getCssClass","renderPaymentButtonImg","selectedOption","renderCreditCardDropdown","requestCardAdd","receiveCardAdd","setCardAddErrorMsg","setCardAddId","clearCardAddToken","clearCardAddData","fetchCardToken","tokenAction","op","card_number","holder_name","expiration_year","expiration_month","month","cvv2","device_session_id","create","points_card","fetchAddCard","OpenPayCardForm","isLoadingCart","promoList","cardList","cardValidators","setCardValidators","setCard","cardType","setCardType","setMonth","setYear","setCode","setSave","setPromo","validateName","cardName","validateCard","cardNumber","validateCardNumber","cType","validateMonth","validateYear","expiry","validateExpiry","validateCode","cardCode","validateCVC","handlePromoChange","handleSubmit","validName","validCard","validMonth","validYear","validCode","deviceData","setup","newCardValidators","getFieldProps","onSubmit","autoComplete","validatedCard","validatedName","maxLength","validatedMonth","validatedYear","validatedCode","Minimo","Mensaje","renderPromoDropdown","maxWidth","onPrev","OpenPayCvvCardForm","Puntos","Msi","CartSummary","handlePrevClick","handleFinishClick","finishStatus","onFinish","renderCvvForm","PaymentCreditCardForm","formRef","submit","PaymentPayPalForm","Cart","assign","renderSummary","CartModal","getTabProps","tab","overlayClassName","onRequestClose","contentLabel","PaynetOrderConfirmation","format","parseISO","Paynet","DueDate","BarcodeUrl","Reference","Acumuladas","MerchantName","Phone","OrderConfirmation","purchaseLog","orderItems","forEach","transaction_id","Importe","tax","o","OrderConfirmationModal","renderLoader","resetPassword","requestPassword","completePassword","toggleShowPassword","setPasswordErrorMsg","fetchPasswordReset","sendConfirmation","requestConfirmation","completeConfirmation","toggleShowConfirmation","setConfirmationErrorMsg","clearConfirmationData","fetchSendConfirmation","LoginModal","login","setUsrname","setPwd","usrnameRef","pwdRef","handleUsrnameChange","handleUsrnameKeyPress","handlePwdChange","handleReset","handleRegisterClick","handleResetPasswordClick","handleConfirmationClick","prevAuthenticated","errClass","onReset","renderLoginForm","RegisterModal","setLastName","setMotherName","setPhone","setGender","setBirthdate","setSubscribe","defaultBirthdate","setDefaultBirthdate","usernameRef","handleGenderChange","date","minDate","sub","Date","years","maxDate","showYearDropdown","showMonthDropdown","dropdownMode","calendarClassName","shouldCloseOnSelect","strictParsing","placeholderText","PasswordModal","handleLoginClick","renderForm","ConfirmationModal","renderErrorMsg","AddressItem","ShipAddressModal","handleSelect","zipCodes","requestZipCodesList","receiveZipCodesList","loadZipCodesSuggestionsBegin","maybeUpdateZipCodesSuggestions","updateZipCodeValue","updateZipCodeItem","setZipCodesStateId","clearZipCodesSuggestions","clearZipCodeValue","shouldFetchZipCodes","fetchZipCodesIfNeeded","fetchZipCodes","loadZipCodesSuggestions","neighborhoods","requestNeighborhoodsList","receiveNeighborhoodsList","loadNeighborhoodsSuggestionsBegin","maybeUpdateNeighborhoodsSuggestions","setNeighborhoodsZipCode","updateNeighborhoodValue","updateNeighborhoodItem","clearNeighborhoodsSuggestions","clearNeighborhoodValue","shouldFetchNeighborhoods","fetchNeighborhoodsIfNeeded","fetchNeighborhoods","loadNeighborhoodsSuggestions","ZipCodeAutosuggest","fixed","onSelect","NighborhoodAutosuggest","CityAutosuggest","CountyAutosuggest","clearCityCountyError","ShipAddressAddModal","isLoadingAdd","zipValue","cityValue","countyValue","setAlias","setStreet","setExt","int","setInt","setSelectedState","setZip","setNeighborhood","setCity","setCounty","prevZipValue","prevCityValue","prevCountyValue","InvoiceAddressModal","handleEditClick","renderIncomplete","renderEditButton","InvoiceAddressAddModal","setRfc","setCfdiType","setRegime","setUso","regimeOptions","defaultRegimeOption","usoOptions","defaultUsoOption","rfcType","regimeFiltered","usoFiltered","InvoiceAddressEditModal","aliasRef","selState","Estado_Clave","Ciudad","errMsg","regimeOption","usoOption","AccountOrders","handleClose","locale","es","OrderModal","strItems","Guia","Carrier","CarrierURL","DireccionEnvio","DireccionFacturacion","accountEditSlice","requestAccountEdit","receiveAccountEdit","toggleShowAccountEdit","setAccountEditErrorMsg","clearAccountEditData","fetchAccountEdit","AccountDetailsModal","account","AccountEditModal","accountEdit","nameRef","activation","requestActivation","receiveActivation","toggleShowActivation","clearActivationData","ActivationModal","AlertModal","ShipAddressEditModal","OpenPayPointsModal","handleNoClick","minWidth","marginRight","isOpenDelete","accountCardEdit","requestCardEdit","receiveCardEdit","setCardEditErrorMsg","toggleShowEditCard","toggleShowDeleteCard","clearCardEditData","fetchCardEdit","fetchCardDelete","AccountCards","renderAddCard","now","getFullYear","expired","getMonth","renderCardList","AccountCardEdit","AccountCardDelete","Home","requestBanners","receiveBanners","fetchBannersList","requestCfdiRegimeList","receiveCfdiRegimeList","requestCfdiUsoList","receiveCfdiUsoList","TermsDisclaimer","activeClass","containerId","routes","path","component","pathname","errors","bgImage","exact","params","productcode","loadData","store","query","userId","promises","searchtype","vehicletype","s1","s2","resolve","vType","queryString","depto","medida","marca","encodeValuesOnly","Width","Ratio","Rim","fetchSizeStringTireList","Diameter","fetchSizeSaeStringTireList","all","footer","isOpenTerms","toggleShowTerms","combineReducers","accountReducer","accountCardAddReducer","accountCardEditReducer","accountCardsReducer","accountEditReducer","activationReducer","alertReducer","bannersReducer","cartReducer","cfdiRegimeReducer","cfdiUsoReducer","citiesReducer","codeTiresReducer","contactReducer","countiesReducer","dealerShipAddressReducer","footerReducer","highlightsTiresReducer","invoiceAddressReducer","invoiceAddressEditReducer","loginReducer","neighborhoodsReducer","ordersReducer","orderConfirmationReducer","paymentCardReducer","registerReducer","resetPasswordReducer","router","connectRouter","searchReducer","searchTiresReducer","sendConfirmationReducer","sessionReducer","shipAddressReducer","shipAddressEditReducer","sizeCanvasReducer","sizeWidthDiametersReducer","sizeRatiosReducer","sizeRimsReducer","sizeTiresReducer","sizeSaeWidthsReducer","sizeSaeRimsReducer","sizeSaeTiresReducer","statesReducer","vehicleTypeReducer","vehicleTiresReducer","vehicleBrandsReducer","vehicleModelsReducer","vehicleYearsReducer","vehicleVersionsReducer","zipCodesReducer","global","appVersion","packageJson","Modal","setDefaultLocale","configureStore","reducer","createRootReducer","middleware","getDefaultMiddleware","concat","routerMiddleware","devTools","preloadedState","initStore","__PRELOADED_STATE__","hydrate","loading","setLoading","isLatestVersion","setIsLatestVersion","meta","latestVersion","versionA","versionB","versionsA","versionsB","a","shift","b","isNaN","semverGreaterThan","children","refreshCacheAndReload","caches","names","reload","route","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","call","m","n","getter","__esModule","d","definition","defineProperty","enumerable","get","g","globalThis","this","Function","prop","prototype","r","Symbol","toStringTag","nmd","paths","installedChunks","deferredModules","checkDeferredModules","webpackJsonpCallback","parentChunkLoadingFunction","chunkId","chunkIds","moreModules","runtime","executeModules","resolves","apply","chunkLoadingGlobal","checkDeferredModulesImpl","deferredModule","fulfilled","j","depId","splice","bind","startup","__webpack_exports__"],"mappings":"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CLC,MAAO,eAER,CACCD,IAAK,KACLC,MAAO,cAER,CACCD,IAAK,KACLC,MAAO,aAER,CACCD,IAAK,KACLC,MAAO,cAER,CACCD,IAAK,KACLC,MAAO,UAER,CACCD,IAAK,KACLC,MAAO,UAER,CACCD,IAAK,KACLC,MAAO,QAER,CACCD,IAAK,KACLC,MAAO,cAER,CACCD,IAAK,KACLC,MAAO,QAER,CACCD,IAAK,KACLC,MAAO,cAER,CACCD,IAAK,KACLC,MAAO,UAER,CACCD,IAAK,KACLC,MAAO,WAGTK,UAAW,CACV,CACCN,IAAK,KACLC,MAAO,UAER,CACCD,IAAK,KACLC,MAAO,WAER,CACCD,IAAK,KACLC,MAAO,WAER,CACCD,IAAK,KACLC,MAAO,WAER,CACCD,IAAK,KACLC,MAAO,WAER,CACCD,IAAK,KACLC,MAAO,WAER,CACCD,IAAK,KACLC,MAAO,WAER,CACCD,IAAK,KACLC,MAAO,WAER,CACCD,IAAK,IACLC,MAAO,WAER,CACCD,IAAK,IACLC,MAAO,WAER,CACCD,IAAK,IACLC,MAAO,WAER,CACCD,IAAK,IACLC,MAAO,WAER,CACCD,IAAK,IACLC,MAAO,WAER,CACCD,IAAK,IACLC,MAAO,WAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,YAER,CACCD,IAAK,IACLC,MAAO,c,kBCpgBGM,IAEZC,OAAOC,UACPD,OAAOC,SAASC,eAGJC,EAAiB,SAACC,GAC9B,MAAO,IAAMA,EAAIC,QAAQ,GAAGC,QAAQ,0BAA2B,MAC/D,EAIYC,EAAqB,SAAC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","file":"static/js/client.00805485.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/Stag-Sans-Bold-Italic.77394da0.otf\";","export const BASE_API_URL = process.env.RAZZLE_API_URL;\nexport const GOOGLE_ANALYTICS = process.env.RAZZLE_GOOGLE_ANALYTICS;\nexport const SITE_DOMAIN = process.env.RAZZLE_DOMAIN;\nexport const SITE_TITLE = process.env.RAZZLE_SITE_TITLE;\nexport const SITE_DESCRIPTION = \"La tienda en línea de Continental Tire de México.\";\nexport const SITE_SRV_HOST = process.env.RAZZLE_SRV_HOST;\nexport const SITE_HOST = process.env.RAZZLE_HOST;\n\nexport const CART_STEPS = {\n\tDETAILS: 1,\n\tSHIP: 2,\n\tINVOICE: 3,\n\tPAYMENT: 4,\n\tSUMMARY: 5,\n};\n\nexport const SHIP_TYPES = {\n\tADDRESS: 1,\n\tFACTORY: 2,\n\tEMPLEADOS: 4,\n\tDHL_EMPLEADOS: 5,\n\tDEALER: 6,\n\tproperties: {\n\t\t1: {\n\t\t\tname: \"Domicilio\",\n\t\t\tshortname: \"Domicilio\",\n\t\t\tfullname: \"Enviar a una Dirección\",\n\t\t},\n\t\t2: {\n\t\t\tname: \"Factory Store\",\n\t\t\tshortname: \"Factory\",\n\t\t\tfullname: \"Recoger en Factory Store\",\n\t\t},\n\t\t4: {\n\t\t\tname: \"Empleados\",\n\t\t\tshortname: \"Empleados\",\n\t\t\tfullname: \"Recoger en Recursos Humanos\",\n\t\t},\n\t\t5: {\n\t\t\tname: \"Localidad DHL\",\n\t\t\tshortname: \"DHL Empleados\",\n\t\t\tfullname: \"Recoger en DHL\",\n\t\t},\n\t\t6: {\n\t\t\tname: \"Sucursal Distribuidor\",\n\t\t\tshortname: \"Distribuidor\",\n\t\t\tfullname: \"Recoger con Distribuidor\",\n\t\t},\n\t},\n};\nexport const PAYMENT_METHODS = {\n\tDEPOSIT: 1,\n\tCREDITCARD: 2,\n\tPAYPAL: 3,\n\tSAFETYPAY: 5,\n\tPAYNET: 6,\n\tproperties: {\n\t\t1: {\n\t\t\tname: \"Depósito Bancario\",\n\t\t\tshortname: \"Depósito\",\n\t\t\tfullname: \"Depósito en Sucursal Bancaria\",\n\t\t\timageUrl: \"/images/cart/logo-deposito-bbva-bancomer.png\",\n\t\t\tdisabledImageUrl: \"/images/cart/logo-deposito-bbva-bancomer_disabled.png\",\n\t\t},\n\t\t2: {\n\t\t\tname: \"Tarjeta de Crédito o Débito\",\n\t\t\tshortname: \"TarjetaCrédito\",\n\t\t\tfullname: \"Tarjeta de Crédito o Débito\",\n\t\t\timageUrl: \"/images/cart/logo-tc-visa-mastercard.png\",\n\t\t\tdisabledImageUrl: \"/images/cart/logo-tc-visa-mastercard_disabled.png\",\n\t\t},\n\t\t3: {\n\t\t\tname: \"PayPal\",\n\t\t\tshortname: \"PayPal\",\n\t\t\tfullname: \"PayPal Pagos Seguros\",\n\t\t\timageUrl: \"/images/cart/logo-paypal.png\",\n\t\t\tdisabledImageUrl: \"/images/cart/logo-paypal_disabled.png\",\n\t\t},\n\t\t5: {\n\t\t\tname: \"SafetyPay\",\n\t\t\tshortname: \"SafetyPay\",\n\t\t\tfullname: \"SafetyPay Pagos Seguros\",\n\t\t\timageUrl: \"/images/cart/logo-safetypay.png\",\n\t\t\tdisabledImageUrl: \"/images/cart/logo-safetypay_disabled.png\",\n\t\t},\n\t\t6: {\n\t\t\tname: \"Pago en Establecimientos\",\n\t\t\tshortname: \"Paynet\",\n\t\t\tfullname: \"Pago en Establecimientos\",\n\t\t\timageUrl: \"/images/cart/logo-paynet-openpay.png\",\n\t\t\tdisabledImageUrl: \"/images/cart/logo-paynet-openpay_disabled.png\",\n\t\t},\n\t},\n};\n\nexport const OPENPAY_CARD_LIMIT = 3;\n\nexport const OPENPAY_TOKEN_ACTION = {\n\tPAY: 1,\n\tSAVE: 2,\n}\nexport const VEHICLE_TYPES = {\n\tPLT: 0,\n\tCAR: 1,\n\tSUV: 2,\n\tBIKE: 3,\n\tVAN: 4,\n\tproperties: {\n\t\t0: { name: \"Auto/Camioneta\", value: 0, slug: \"auto-camioneta\" },\n\t\t1: { name: \"Auto\", value: 1, slug: \"auto\" },\n\t\t2: { name: \"Camioneta\", value: 2, slug: \"camioneta\" },\n\t\t3: { name: \"Moto\", value: 3, slug: \"moto\" },\n\t\t4: { name: \"Van\", value: 4, slug: \"van\" },\n\t},\n};\nexport const ORDER_STATUS_TYPES = {\n\tINCOMPLETE: 10,\n\tRESERVE: 15,\n\tVALIDATION: 18,\n\tAUTORIZED: 20,\n\tPROCESS: 21,\n\tNOT_AUTHORIZED: 23,\n\tNOT_PAYED: 26,\n\tDELIVERY: 40,\n\tDELIVERY_FACTORY: 45,\n\tDELIVERY_EMPLEADOS: 47,\n\tSHIPED: 48,\n\tTRANSIT: 50,\n\tDHL_LOCATION: 55,\n\tHR_LOCATION: 58,\n\tDEALER_LOCATION: 59,\n\tDELIVERED: 60,\n\tEXCEPTON: 700,\n\tCANCELLED: 900,\n\tproperties: {\n\t\t10: {\n\t\t\tname: \"Incompleto\",\n\t\t\tshortname: \"Incompleto\",\n\t\t\tclassName: \"icon-invalid\",\n\t\t},\n\t\t15: {\n\t\t\tname: \"En Espera de tu Pago\",\n\t\t\tshortname: \"EsperandoPago\",\n\t\t\tclassName: \"icon-pending\",\n\t\t},\n\t\t18: {\n\t\t\tname: \"Pago Recibido\",\n\t\t\tshortname: \"PagoRecibido\",\n\t\t\tclassName: \"icon-pending\",\n\t\t},\n\t\t20: {\n\t\t\tname: \"Pago Validado\",\n\t\t\tshortname: \"PagoValidado\",\n\t\t\tclassName: \"icon-valid\",\n\t\t},\n\t\t21: { name: \"En Proceso\", shortname: \"EnProceso\", className: \"icon-valid\" },\n\t\t23: {\n\t\t\tname: \"No Autorizado\",\n\t\t\tshortname: \"NoAutorizado\",\n\t\t\tclassName: \"icon-invalid\",\n\t\t},\n\t\t26: { name: \"NoPagado\", shortname: \"NoPagado\", className: \"icon-invalid\" },\n\t\t40: {\n\t\t\tname: \"Preparando Envío\",\n\t\t\tshortname: \"PreparandoEnvío\",\n\t\t\tclassName: \"icon-valid\",\n\t\t},\n\t\t45: {\n\t\t\tname: \"Enviado a Factory Store\",\n\t\t\tshortname: \"Enviado\",\n\t\t\tclassName: \"icon-valid\",\n\t\t},\n\t\t47: { name: \"Enviado\", shortname: \"Enviado\", className: \"icon-valid\" },\n\t\t48: { name: \"Enviado\", shortname: \"Enviado\", className: \"icon-valid\" },\n\t\t50: {\n\t\t\tname: \"En Tránsito\",\n\t\t\tshortname: \"EnTránsito\",\n\t\t\tclassName: \"icon-valid\",\n\t\t},\n\t\t55: {\n\t\t\tname: \"En Sucursal DHL\",\n\t\t\tshortname: \"SucursalDHL\",\n\t\t\tclassName: \"icon-valid\",\n\t\t},\n\t\t58: {\n\t\t\tname: \"En Recursos Humanos\",\n\t\t\tshortname: \"LocalidadRH\",\n\t\t\tclassName: \"icon-valid\",\n\t\t},\n\t\t59: {\n\t\t\tname: \"En Sucursal de Distribuidor\",\n\t\t\tshortname: \"SucursalDistribuidor\",\n\t\t\tclassName: \"icon-valid\",\n\t\t},\n\t\t60: { name: \"Entregado\", shortname: \"Entregado\", className: \"icon-valid\" },\n\t\t700: {\n\t\t\tname: \"Excepción\",\n\t\t\tshortname: \"Excepción\",\n\t\t\tclassName: \"icon-invalid\",\n\t\t},\n\t\t900: {\n\t\t\tname: \"Cancelado\",\n\t\t\tshortname: \"Cancelado\",\n\t\t\tclassName: \"icon-invalid\",\n\t\t},\n\t},\n};\n\nexport const GENDER_TYPES = {\n MALE: \"M\",\n FEMALE: \"F\",\n properties: {\n \"M\": {name: \"Hombre\"},\n \"F\": {name: \"Mujer\"}\n }\n}\n\nexport const COUPON_STATUS = {\n VALID: 0,\n USED: 1,\n INVALID: 2,\n INVALID_USER: 3,\n WITHOUT_COUPON: 4,\n properties: {\n 0: {name: \"Válido\", message: \"\"},\n 1: {name: \"Utilizado\", message: \"Este cupón no es válido porque ya ha sido utilizado.\"},\n 2: {name: \"Inválido\", message: \"El código que escribió no es un cupón válido.\"},\n 3: {name: \"Usuario Inválido\", message: \"El código que escribió no es un cupón válido.\"},\n 4: {name: \"Sin cupón\", message: \"Sin cupón.\"}\n }\n}\n\nexport const IMAGE_TYPES = {\n\tCART: 1,\n\tDETAILS: 2,\n\tCAROUSEL: 3,\n}\n\nexport const CFDI_TYPE = {\n\tFISICA: 1,\n\tMORAL: 2,\n}\n\nexport const TIRE_SPECS = {\n\tCamara: [\n\t\t{\n\t\t\tKey: \"TL\",\n\t\t\tValue: \"Sin cámara\",\n\t\t},\n\t\t{\n\t\t\tKey: \"TT\",\n\t\t\tValue: \"Con cámara\",\n\t\t},\n\t],\n\tCara: [\n\t\t{\n\t\t\tKey: \"BSW\",\n\t\t\tValue: \"Black Sidewall\",\n\t\t},\n\t\t{\n\t\t\tKey: \"LW\",\n\t\t\tValue: \"White Letter Sidewall\",\n\t\t},\n\t\t{\n\t\t\tKey: \"OBL\",\n\t\t\tValue: \"Outline Black Letter\",\n\t\t},\n\t\t{\n\t\t\tKey: \"OWL\",\n\t\t\tValue: \"Outline White Letters\",\n\t\t},\n\t\t{\n\t\t\tKey: \"PW\",\n\t\t\tValue: \"White Sidewall\",\n\t\t},\n\t\t{\n\t\t\tKey: \"SBL\",\n\t\t\tValue: \"Serrated Black Letter\",\n\t\t},\n\t\t{\n\t\t\tKey: \"SRL\",\n\t\t\tValue: \"Solid Red Letter\",\n\t\t},\n\t\t{\n\t\t\tKey: \"VUL\",\n\t\t\tValue: \"Vulcanette Sidewall\",\n\t\t},\n\t\t{\n\t\t\tKey: \"WW\",\n\t\t\tValue: \"White Sidewall\",\n\t\t},\n\t],\n\tCarga: [\n\t\t{\n\t\t\tKey: \"FR\",\n\t\t\tValue: \"FRT\",\n\t\t},\n\t\t{\n\t\t\tKey: \"LL\",\n\t\t\tValue: \"LIGHT LOAD\",\n\t\t},\n\t\t{\n\t\t\tKey: \"RF\",\n\t\t\tValue: \"REINFORCED\",\n\t\t},\n\t\t{\n\t\t\tKey: \"S1\",\n\t\t\tValue: \"STAR 1 *\",\n\t\t},\n\t\t{\n\t\t\tKey: \"S2\",\n\t\t\tValue: \"STAR 2 **\",\n\t\t},\n\t\t{\n\t\t\tKey: \"S3\",\n\t\t\tValue: \"STAR 3 ***\",\n\t\t},\n\t\t{\n\t\t\tKey: \"SL\",\n\t\t\tValue: \"STAND.LOAD\",\n\t\t},\n\t\t{\n\t\t\tKey: \"VS\",\n\t\t\tValue: \"VERSTAERKT\",\n\t\t},\n\t\t{\n\t\t\tKey: \"XL\",\n\t\t\tValue: \"EXTRA LOAD\",\n\t\t},\n\t],\n\tConstruccion: [\n\t\t{\n\t\t\tKey: \"CT\",\n\t\t\tValue: \"CTS TIRE\",\n\t\t},\n\t\t{\n\t\t\tKey: \"LT\",\n\t\t\tValue: \"LIGHT TRUCK\",\n\t\t},\n\t\t{\n\t\t\tKey: \"P\",\n\t\t\tValue: \"P METRIC\",\n\t\t},\n\t\t{\n\t\t\tKey: \"ST\",\n\t\t\tValue: \"STEERING TRAILER\",\n\t\t},\n\t\t{\n\t\t\tKey: \"T\",\n\t\t\tValue: \"TEMPORARY USE\",\n\t\t},\n\t],\n\tRadial: [\n\t\t{\n\t\t\tKey: \" \",\n\t\t\tValue: \"Not Relevant\",\n\t\t},\n\t\t{\n\t\t\tKey: \"- \",\n\t\t\tValue: \"Bias\",\n\t\t},\n\t\t{\n\t\t\tKey: \"A \",\n\t\t\tValue: \"CSEasy Adapter\",\n\t\t},\n\t\t{\n\t\t\tKey: \"B \",\n\t\t\tValue: \"Bias Belted\",\n\t\t},\n\t\t{\n\t\t\tKey: \"C \",\n\t\t\tValue: \"CSE-Robust\",\n\t\t},\n\t\t{\n\t\t\tKey: \"G \",\n\t\t\tValue: \"Radial GS\",\n\t\t},\n\t\t{\n\t\t\tKey: \"L \",\n\t\t\tValue: \"Radial GST\",\n\t\t},\n\t\t{\n\t\t\tKey: \"R \",\n\t\t\tValue: \"Radial\",\n\t\t},\n\t\t{\n\t\t\tKey: \"T \",\n\t\t\tValue: \"Robust\",\n\t\t},\n\t\t{\n\t\t\tKey: \"U \",\n\t\t\tValue: \"2-PC\",\n\t\t},\n\t\t{\n\t\t\tKey: \"V \",\n\t\t\tValue: \"Vollreifen\",\n\t\t},\n\t\t{\n\t\t\tKey: \"W \",\n\t\t\tValue: \"3-PC\",\n\t\t},\n\t\t{\n\t\t\tKey: \"X \",\n\t\t\tValue: \"Hohlreifen\",\n\t\t},\n\t\t{\n\t\t\tKey: \"Y \",\n\t\t\tValue: \"CSEasy\",\n\t\t},\n\t\t{\n\t\t\tKey: \"ZR\",\n\t\t\tValue: \"Radial\",\n\t\t},\n\t],\n\tVelocidad: [\n\t\t{\n\t\t\tKey: \"A1\",\n\t\t\tValue: \"5 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"A2\",\n\t\t\tValue: \"10 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"A3\",\n\t\t\tValue: \"15 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"A4\",\n\t\t\tValue: \"20 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"A5\",\n\t\t\tValue: \"25 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"A6\",\n\t\t\tValue: \"30 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"A7\",\n\t\t\tValue: \"35 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"A8\",\n\t\t\tValue: \"40 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"B\",\n\t\t\tValue: \"50 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"C\",\n\t\t\tValue: \"60 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"D\",\n\t\t\tValue: \"65 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"E\",\n\t\t\tValue: \"70 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"F\",\n\t\t\tValue: \"80 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"G\",\n\t\t\tValue: \"90 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"H\",\n\t\t\tValue: \"210 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"J\",\n\t\t\tValue: \"100 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"K\",\n\t\t\tValue: \"110 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"L\",\n\t\t\tValue: \"120 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"M\",\n\t\t\tValue: \"130 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"N\",\n\t\t\tValue: \"140 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"P\",\n\t\t\tValue: \"150 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"Q\",\n\t\t\tValue: \"160 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"R\",\n\t\t\tValue: \"170 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"S\",\n\t\t\tValue: \"180 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"T\",\n\t\t\tValue: \"190 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"V\",\n\t\t\tValue: \"240 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"W\",\n\t\t\tValue: \"270 KM/H\",\n\t\t},\n\t\t{\n\t\t\tKey: \"Y\",\n\t\t\tValue: \"300 KM/H\",\n\t\t},\n\t],\n};\n","import {\n\tIMAGE_TYPES,\n\tTIRE_SPECS,\n\tSITE_TITLE,\n\tSITE_HOST,\n\tVEHICLE_TYPES as vt,\n\tCFDI_TYPE,\n} from \"./constants\";\n\nexport const isServer = !(\n\ttypeof window !== \"undefined\" &&\n\twindow.document &&\n\twindow.document.createElement\n);\n\nexport const currencyFormat = (num) => {\n\treturn \"$\" + num.toFixed(2).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n};\nexport const numberFormat = (num, places = 0) => {\n\treturn num.toFixed(places).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n};\nexport const stringNumberFormat = (num, length = 11) => {\n\tconst stringNumber = \"00000000000000000000\" + num;\n\treturn stringNumber.substring(stringNumber.length - length);\n};\nexport const validateMail = (email) => {\n\treturn /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(\n\t\temail\n\t);\n};\nexport const validatePwd = (pwd) => {\n\treturn /^(?=.*[0-9])(?=.*[-_.=()[\\]?/\\\\:,+!¡¿@#$%^&*])(?=.*[A-Z])(?=.*[a-z])[a-zA-Z0-9\\-_.=()[\\]?/\\\\:,+!¡¿@#$%^&*]{8,16}$/.test(\n\t\tpwd\n\t);\n};\nexport const validatePhone = (phone) => {\n\tconst cleanPhone = phone.replace(/([^0-9])/g, \"\");\n\treturn /^([0-9]{9,15})\\w$/.test(cleanPhone);\n};\nexport const validateZip = (zip) => {\n\treturn /^([0-9]{5})$/.test(zip);\n};\nexport const validateRFC = (rfc) => {\n\treturn /^([a-zA-Z&]{3,4})([0-9]{2})((([0]{1})([1-9]{1}))|(([1]{1})([0-2]{1})))(((([0]{1})([1-9]{1}))|(([1-2]{1})([0-9]{1})))|(([3]{1})([0-1]{1})))([a-zA-Z0-9]{3})$/.test(\n\t\trfc\n\t);\n};\nexport const validateRazonSocial = (name) => {\n\tconst hasMatch = name.match(/,\\sSA$|\\sS.A.|\\sDE\\sCV$|\\sSA$|\\sDE C.V.|\\sDE\\sC.V|S\\sDE\\sRL|\\sS\\sDE\\sRL|\\sS.\\sDE\\sR.L.|\\sDE\\sRL|\\sDE\\sR.L|\\sAC$|\\sA.C.$|\\sSAPI\\s|\\sS.A.P.I.\\s|\\sSC$|\\sS.C.$|\\sS.\\sEN\\sC.$|\\sS\\sEN\\sC$/);\n\treturn hasMatch == null;\n};\nexport const validateInvoiceAddress = (address, regimenes, usos) => {\n\tif (address == null) return false;\n\tif (address.Alias === \"Sin RFC\") return true;\n\tif (!validateRFC(address.RFC)) return false;\n\tif (address.RegimenFiscal == null) return false;\n\tif (address.Uso == null) return null;\n\tconst cfdiType = getCfdiType(address.RFC);\n\tconst regime = regimenes.filter((el) => el.Id === address.RegimenFiscal);\n\tconst uso = usos.filter((el) => el.Id === address.Uso);\n\tif (\n\t\t(cfdiType === CFDI_TYPE.MORAL && !regime[0].Moral) ||\n\t\t(cfdiType === CFDI_TYPE.FISICA && !regime[0].Fisica)\n\t) {\n\t\treturn false;\n\t}\n\tif (\n\t\t(cfdiType === CFDI_TYPE.MORAL && !uso[0].Moral) ||\n\t\t(cfdiType === CFDI_TYPE.FISICA && !uso[0].Fisica)\n\t) {\n\t\treturn false;\n\t}\n\tif (!validateRazonSocial(address.RazonSocial)) {\n\t\treturn null;\n\t}\n\treturn true;\n};\nexport const getCfdiType = (rfc) => {\n\tif (rfc == null) return CFDI_TYPE.FISICA;\n\treturn rfc.trim().length === 12 ? CFDI_TYPE.MORAL : CFDI_TYPE.FISICA;\n};\nexport const mapCfdiOptions = (list, cfdiType) => {\n\tif (isServer) return [];\n\tif (list == null || cfdiType == null) return [];\n\tlet filtered;\n\tswitch (cfdiType) {\n\t\tcase CFDI_TYPE.FISICA:\n\t\t\tfiltered = list.filter((el) => el.Fisica === true);\n\t\t\tbreak;\n\t\tcase CFDI_TYPE.MORAL:\n\t\tdefault:\n\t\t\tfiltered = list.filter((el) => el.Moral === true);\n\t\t\tbreak;\n\t}\n\treturn filtered.map(function (item, index) {\n\t\treturn { label: item.Nombre, value: item.Id, index: index };\n\t});\n};\nexport const validateCardYear = (cardYear) => {\n\treturn /^([0]){1}([1-9]){1}|([1-9]){1}([0-9]){1}$/.test(cardYear);\n};\nexport const validateCardMonth = (cardMonth) => {\n\treturn /^(0){1}([1-9]){1}|(1){1}([0-2]){1}$/.test(cardMonth);\n};\nexport const mmToIn = (mm, pos = 2) => {\n\tconst digits = pos > 0 ? Math.pow(10, pos) : 1;\n\treturn Math.round((mm * digits) / 25.4) / digits;\n};\nexport const isEmpty = (obj) => {\n\tfor (var key in obj) {\n\t\tif (obj.hasOwnProperty(key)) return false;\n\t}\n\treturn true;\n};\nexport const getPropertyArray = (array, key, filter) => {\n\tconst filteredArray = filter != null ? array.filter(filter) : array;\n\tconst listArray = filteredArray.map((item) => {\n\t\treturn { label: item[key], value: item[key] };\n\t});\n\tconst resultArray = listArray.filter(\n\t\t(item, index, self) =>\n\t\t\tindex ===\n\t\t\tself.findIndex((t) => t.label === item.label && t.value === item.value)\n\t);\n\treturn resultArray;\n};\n\n// Product & Tire Details\nexport const imageFormat = (image, type = IMAGE_TYPES.CART) => {\n\tswitch (type) {\n\t\tcase IMAGE_TYPES.CART:\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t\"/images/tires/cart/\" + image.substring(0, image.search(\"[.]\")) + \".png\"\n\t\t\t);\n\t\tcase IMAGE_TYPES.DETAILS:\n\t\t\treturn (\n\t\t\t\t\"/images/tires/details/\" +\n\t\t\t\timage.substring(0, image.search(\"[.]\")) +\n\t\t\t\t\".png\"\n\t\t\t);\n\t\tcase IMAGE_TYPES.CAROUSEL:\n\t\t\treturn (\n\t\t\t\t\"/images/tires/carousel/\" +\n\t\t\t\timage.substring(0, image.search(\"[.]\")) +\n\t\t\t\t\".png\"\n\t\t\t);\n\t}\n};\nexport const getTireTags = (tire) => {\n\treturn {\n\t\ttitle: tire.TireProduct.Name + \" \" + tire.Size + \" - \" + SITE_TITLE,\n\t\tdescription: tire.TireProduct.Slogan,\n\t\turl:\n\t\t\tSITE_HOST +\n\t\t\t\"/llanta/\" +\n\t\t\ttire.Code +\n\t\t\t\"/\" +\n\t\t\ttire.TireProduct.BrandSlug +\n\t\t\t\"/\" +\n\t\t\tvt.properties[tire.VehicleTypeId].slug +\n\t\t\t\"/\" +\n\t\t\ttire.TireProduct.Slug +\n\t\t\t\"/\" +\n\t\t\ttire.SizeShort,\n\t};\n};\nexport const getSizeTags = (width, ratio, rim, dept, tire = null) => {\n\tconst size = width + \"/\" + ratio + \"R\" + rim;\n\tconst type = vt.properties[dept].name;\n\tconst img =\n\t\ttire != null ? SITE_HOST + imageFormat(tire.TireProduct.Image) : null;\n\treturn {\n\t\ttitle: \"Llantas \" + size + \" para \" + type + \" - \" + SITE_TITLE,\n\t\tdescription:\n\t\t\t\"Resultado de búsqueda de medidas para \" + type + \" medida: \" + size,\n\t\turl: SITE_HOST + \"/llantas/medida/\" + vt.properties[dept].slug + \"/\" + size,\n\t\timage: img,\n\t};\n};\nexport const getSizeSaeTags = (diameter, width, rim, dept, tire = null) => {\n\tconst size = diameter + \"X\" + width + \"R\" + rim;\n\tconst type = vt.properties[dept].name;\n\tconst img =\n\t\ttire != null ? SITE_HOST + imageFormat(tire.TireProduct.Image) : null;\n\treturn {\n\t\ttitle: \"Llantas \" + size + \" para \" + type + \" - \" + SITE_TITLE,\n\t\tdescription:\n\t\t\t\"Resultado de búsqueda de medidas para \" + type + \" medida: \" + size,\n\t\turl: SITE_HOST + \"/llantas/medida/\" + vt.properties[dept].slug + \"/\" + size,\n\t\timage: img,\n\t};\n};\n\nexport const getBrandClass = (brand) => {\n\treturn \"brand-\" + brand.toLowerCase().replace(/ /g, \"\");\n};\nexport const getModalButtonClass = (disabled) => {\n\tif (!disabled) {\n\t\treturn \"modal-button\";\n\t}\n\treturn \"modal-button disabled\";\n};\nexport const getVehicleTypeClass = (vehicleType) => {\n\treturn \"product-type-\" + vehicleType.toLowerCase().replace(/ /g, \"\");\n};\nexport const renderOriginalPrice = (tire, qty) => {\n\tif (tire.Discount > 0 && qty >= tire.Minimum) {\n\t\treturn

{currencyFormat(tire.ListPrice * 1.16)}

;\n\t} else {\n\t\treturn null;\n\t}\n};\nexport const renderPrice = (tire, qty) => {\n\tif (tire.Discount > 0 && qty >= tire.Minimum) {\n\t\treturn (\n\t\t\t

\n\t\t\t\t{currencyFormat(tire.Price * 1.16)}\n\t\t\t\tMXN\n\t\t\t

\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t

\n\t\t\t\t{currencyFormat(tire.ListPrice * 1.16)}\n\t\t\t\tMXN\n\t\t\t

\n\t\t);\n\t}\n};\nexport const formatDetails = (details) => {\n\tlet sep = [\"
\", \"
\"];\n\tlet infoArray = details.split(new RegExp(sep.join(\"|\"), \"g\"));\n\treturn (\n\t\t
\n\t\t\t

Características / Beneficios

\n\t\t\t
\n\t\t\t\t{infoArray.map((item, index) => {\n\t\t\t\t\treturn

{item}

;\n\t\t\t\t})}\n\t\t\t
\n\t\t
\n\t);\n};\nexport const getDept = (deptId) => {\n\tlet result = \" para auto\";\n\tswitch (deptId) {\n\t\tcase \"1\":\n\t\tdefault:\n\t\t\tresult = \" para auto\";\n\t\t\tbreak;\n\t\tcase \"2\":\n\t\t\tresult = \" para camioneta\";\n\t\t\tbreak;\n\t\tcase \"3\":\n\t\t\tresult = \" para moto\";\n\t\t\tbreak;\n\t\tcase \"4\":\n\t\t\tresult = \" para van\";\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\nexport const renderRadial = (valor) => {\n\tif (valor !== \"\") {\n\t\tlet items = TIRE_SPECS.Radial.filter(function (el) {\n\t\t\treturn el.Key.trim() === valor;\n\t\t});\n\t\treturn items.map(function (item, index) {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t
Construcción Radial
\n\t\t\t\t\t
{item.Key}
\n\t\t\t\t\t
{item.Value}
\n\t\t\t\t
\n\t\t\t);\n\t\t});\n\t} else {\n\t\treturn null;\n\t}\n};\nexport const renderIndiceCarga = (value) => {\n\tif (value !== \"\") {\n\t\tvar index = value.search(\"/\");\n\t\tif (index === -1) {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t
Índice de Carga
\n\t\t\t\t\t
{value}
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t
Índice de Carga
\n\t\t\t\t\t
{value.substring(0, index)}
\n\t\t\t\t\t
{value.substring(index)}
\n\t\t\t\t
\n\t\t\t);\n\t\t}\n\t} else {\n\t\treturn null;\n\t}\n};\nexport const renderIndiceVelocidad = (valor) => {\n\tif (valor !== \"\") {\n\t\tlet items = TIRE_SPECS.Velocidad.filter(function (el) {\n\t\t\treturn el.Key.trim() === valor;\n\t\t});\n\t\treturn items.map(function (item, index) {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t
Índice de Velocidad
\n\t\t\t\t\t
{item.Key}
\n\t\t\t\t\t
{item.Value}
\n\t\t\t\t
\n\t\t\t);\n\t\t});\n\t} else {\n\t\treturn null;\n\t}\n};\nexport const renderSsr = (value) => {\n\tif (value !== \"\") {\n\t\treturn (\n\t\t\t
\n\t\t\t\t
Runflat
\n\t\t\t\t
{value}
\n\t\t\t\t
Self Supporting
\n\t\t\t
\n\t\t);\n\t} else {\n\t\treturn null;\n\t}\n};\nexport const renderDureza = (value) => {\n\tif (value !== \"\") {\n\t\treturn (\n\t\t\t
\n\t\t\t\t
Dureza de Piso
\n\t\t\t\t
{value.substring(0, 1)}
\n\t\t\t\t
{value}
\n\t\t\t
\n\t\t);\n\t} else {\n\t\treturn null;\n\t}\n};\nexport const renderCamara = (valor) => {\n\tif (valor !== \"\") {\n\t\tlet items = TIRE_SPECS.Camara.filter(function (el) {\n\t\t\treturn el.Key.trim() === valor;\n\t\t});\n\t\treturn items.map(function (item, index) {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t
Cámara
\n\t\t\t\t\t
{item.Key}
\n\t\t\t\t\t
{item.Value}
\n\t\t\t\t
\n\t\t\t);\n\t\t});\n\t} else {\n\t\treturn null;\n\t}\n};\n\n// Orders\nexport const formatShipAddress = (address) => {\n\tlet result =
 
;\n\tlet numint = \"\";\n\tif (address !== null) {\n\t\tif (address.NumInt.length > 0) {\n\t\t\tnumint = \" - \" + address.NumInt;\n\t\t}\n\t\tresult = (\n\t\t\t
\n\t\t\t\t{address.Calle + \" \" + address.NumExt + numint}\n\t\t\t\t
\n\t\t\t\tCol. {address.Colonia}\n\t\t\t\t
\n\t\t\t\t{address.CP + \" \" + address.Municipio}\n\t\t\t\t
\n\t\t\t\t{address.Estado}\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\treturn result;\n};\nexport const formatInvoiceAddress = (address) => {\n\tlet result =
 
;\n\tlet numint = \"\";\n\tif (address !== null) {\n\t\tif (address.NumInt.length > 0) {\n\t\t\tnumint = \" - \" + address.NumInt;\n\t\t}\n\t\tresult = (\n\t\t\t
\n\t\t\t\t{address.RFC}\n\t\t\t\t
\n\t\t\t\t{address.RazonSocial}\n\t\t\t\t
\n\t\t\t\t{address.Calle + \" \" + address.NumExt + numint}\n\t\t\t\t
\n\t\t\t\tCol. {address.Colonia}\n\t\t\t\t
\n\t\t\t\t{address.CP + \" \" + address.Municipio}\n\t\t\t\t
\n\t\t\t\t{address.Estado}\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\treturn result;\n};\n// Cart\nexport const doesDiscountAplies = (articulosDescuento, cuponDescuento) => {\n\tlet aplicaDescuento = false;\n\tif (cuponDescuento.Campania.CampaniaId !== 0) {\n\t\tif (articulosDescuento >= cuponDescuento.Campania.MinProductos) {\n\t\t\taplicaDescuento = true;\n\t\t}\n\t}\n\treturn aplicaDescuento;\n};\nexport const formatProductCount = (qty) => {\n\tif (qty === 1) {\n\t\treturn qty + \" Artículo\";\n\t}\n\treturn qty + \" Artículos\";\n};\n// OpenPay Paynet\nexport const openPaynetUrl = () => {\n\twindow.open(\"https://www.paynet.com.mx/\", \"_blank\");\n};\n// AutoSuggest\nexport const escapeRegexCharacters = (str) => {\n\treturn str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\nexport const getMatchingItems = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tif (escapedValue === \"\") {\n\t\treturn [];\n\t}\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(\"^\" + escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.Name));\n};\nexport const getMatchingItemsBlank = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(\"^\" + escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.Name));\n};\nexport const getMatchingItemsYears = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(\"^\" + escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.anio));\n};\nexport const getMatchingItemsTireSize = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(\"^\" + escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.Value));\n};\nexport const getMatchingItemsZipCodes = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tif (escapedValue.length < 3) {\n\t\treturn [];\n\t}\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(\"^\" + escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.Codigo));\n};\nexport const getMatchingItemsNeighborhoods = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(\"^\" + escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.Nombre));\n};\nexport const getMatchingItemsCities = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(\"^\" + escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.Cd));\n};\nexport const getMatchingItemsCounties = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(\"^\" + escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.Nombre));\n};\n\nexport const getMatchingSearchItems = (state, value) => {\n\tlet escapedValue = escapeRegexCharacters(value.trim());\n\tif (escapedValue === \"\") {\n\t\treturn [];\n\t}\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(escapedValue, \"i\");\n\treturn itemList.filter((item) => regex.test(item.Name));\n};\n\nexport const getMatchingItemById = (state, productId) => {\n\tlet escapedValue = escapeRegexCharacters(productId.trim());\n\tif (escapedValue === \"\") {\n\t\treturn null;\n\t}\n\tlet itemList = state.list;\n\tif (itemList == null) {\n\t\treturn [];\n\t}\n\tlet regex = new RegExp(escapedValue, \"i\");\n\tlet result = itemList.filter((item) => regex.test(item.Id));\n\treturn result ? result[0] : null;\n};\n\n","import { createBrowserHistory, createMemoryHistory } from \"history\";\nimport { isServer } from \"./functions\";\nconst history = isServer\n? createMemoryHistory({\n\t\tinitialEntries: ['/'],\n\t})\n: createBrowserHistory();\nexport default history;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { BASE_API_URL } from \"../constants\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\thide: false,\n};\nconst searchTires = createSlice({\n\tname: \"searchTires\",\n\tinitialState,\n\treducers: {\n\t\trequestSearchResultsTiresList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveSearchResultsTiresList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tclearSearchResultsTiresList(state) {\n\t\t\tstate.list = null;\n\t\t},\n\t\thideSearchResultsList(state, action) {\n\t\t\tstate.hide = action.payload.hide;\n\t\t},\n\t\tclearSearchResultData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestSearchResultsTiresList,\n\treceiveSearchResultsTiresList,\n\tclearSearchResultsTiresList,\n\thideSearchResultsList,\n\tclearSearchResultData,\n} = searchTires.actions;\n\nconst shouldFetchSearchResultsTiresList = (state) => {\n\tconst tires = state.searchTires;\n\tconst search = state.search;\n\tif (tires.list == null) {\n\t\treturn true;\n\t}\n\tif (tires.list.Id !== search.selectedItem.Id) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchSearchResultsTireListIfNeeded =\n\t() => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tif (shouldFetchSearchResultsTiresList(theState)) {\n\t\t\treturn dispatch(\n\t\t\t\tfetchSearchResultsTiresList(theState.search.selectedItem.Id)\n\t\t\t);\n\t\t}\n\t};\n\nexport const fetchSearchResultsTiresList =\n\t(id) => async (dispatch, getState) => {\n\t\tconst headers = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t};\n\t\tconst options = {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t};\n\t\tconst theState = getState();\n\t\tconst coupon =\n\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\tdispatch(requestSearchResultsTiresList());\n\t\tconst url =\n\t\t\tcoupon != null\n\t\t\t\t? BASE_API_URL + \"/api/Productos/?id=\" + id + \"&cupon=\" + coupon\n\t\t\t\t: BASE_API_URL + \"/api/Productos/?id=\" + id;\n\t\treturn fetch(url, options)\n\t\t\t.then((response) => {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\treturn response.json();\n\t\t\t\t} else {\n\t\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then((json) => {\n\t\t\t\tdispatch(receiveSearchResultsTiresList({ list: json }));\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// TODO: fetch error actions\n\t\t\t});\n\t};\n\nexport default searchTires.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"../constants\";\nimport { isServer } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\thide: false,\n};\n\nconst highlightsTires = createSlice({\n\tname: \"highlightsTires\",\n\tinitialState,\n\treducers: {\n\t\trequestHighlightsTiresList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveHighlightsTiresList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tclearHighlightsTiresList(state) {\n\t\t\tstate.list = null;\n\t\t},\n\t\thideHighlightsTiresList(state, action) {\n\t\t\tstate.hide = action.payload.hide;\n\t\t},\n\t\tclearHighlightsData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestHighlightsTiresList,\n\treceiveHighlightsTiresList,\n\tclearHighlightsTiresList,\n\thideHighlightsTiresList,\n\tclearHighlightsData,\n} = highlightsTires.actions;\n\nconst shouldFetchHighlightsTiresList = (state) => {\n\tif (state.highlightsTires.list == null) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchHighlightsTiresListIfNeeded =\n\t() => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tif (shouldFetchHighlightsTiresList(theState)) {\n\t\t\treturn dispatch(fetchHighlightsTiresList());\n\t\t}\n\t};\n\nexport const fetchHighlightsTiresList = () => async (dispatch, getState) => {\n\tconst headers = isServer\n\t\t? {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\"Origin\": [process.env.RAZZLE_SRV_HOST],\n\t\t }\n\t\t: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t };\n\tconst options = {\n\t\t//method: \"GET\",\n\t\theaders: headers,\n\t};\n\tconst theState = getState();\n\tconst coupon =\n\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\tdispatch(requestHighlightsTiresList());\n\tconst url =\n\t\tcoupon != null\n\t\t\t? BASE_API_URL + \"/api/Productos/Home/?cupon=\" + coupon\n\t\t\t: BASE_API_URL + \"/api/Productos/Home\";\n\tawait axios\n\t\t.get(url, options)\n\t\t.then((response) => {\n\t\t\tdispatch(receiveHighlightsTiresList({ list: response.data }));\n\t\t})\n\t\t.catch((error) => {\n\t\t});\n\t// return fetch(url, options)\n\t// \t.then((response) => {\n\t// \t\tif (response.ok) {\n\t// \t\t\treturn response.json();\n\t// \t\t} else {\n\t// \t\t\treturn response.text().then((error) => Promise.reject(error));\n\t// \t\t}\n\t// \t})\n\t// \t.then((json) => {\n\t// \t\tdispatch(receiveHighlightsTiresList({ list: json }));\n\t// \t})\n\t// \t.catch(() => {\n\t// \t\t// TODO: fetch error actions\n\t// \t});\n};\n\nexport default highlightsTires.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport axios from \"axios\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n};\nconst vehicleTires = createSlice({\n\tname: \"vehicleTires\",\n\tinitialState,\n\treducers: {\n\t\trequestVehicleTiresList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveVehicleTiresList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tclearVehicleTiresData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestVehicleTiresList,\n\treceiveVehicleTiresList,\n\tclearVehicleTiresData,\n} = vehicleTires.actions;\n\nconst shouldFetchVehicleTiresList = (state) => {\n\tconst selectedBrand = state.vehicleBrands.selectedItem;\n\tconst selectedModel = state.vehicleModels.selectedItem;\n\tconst selectedYear = state.vehicleYears.selectedItem;\n\tconst selectedVersion = state.vehicleVersions.selectedItem;\n\tconst tires = state.vehicleTires.list;\n\tif (Object.keys(selectedVersion).length === 0) {\n\t\treturn false;\n\t}\n\tif (tires == null) {\n\t\treturn true;\n\t}\n\tif (\n\t\tselectedBrand.ID !== tires.BrandId ||\n\t\tselectedModel.ID !== tires.ModelId ||\n\t\tselectedYear.anio !== tires.Year ||\n\t\tselectedVersion.ID !== tires.VersionId\n\t) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchVehicleTiresListIfNeeded =\n\t() => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tif (shouldFetchVehicleTiresList(theState)) {\n\t\t\treturn dispatch(\n\t\t\t\tfetchVehicleTiresList(\n\t\t\t\t\ttheState.vehicleBrands.selectedItem.ID,\n\t\t\t\t\ttheState.vehicleModels.selectedItem.ID,\n\t\t\t\t\ttheState.vehicleYears.selectedItem.anio,\n\t\t\t\t\ttheState.vehicleVersions.selectedItem.ID\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\n\nexport const fetchVehicleTiresList =\n\t(brand, model, year, version) => async (dispatch, getState) => {\n\t\tconst headers = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t};\n\t\tconst options = {\n\t\t\t//method: \"GET\",\n\t\t\theaders: headers,\n\t\t};\n\t\tconst theState = getState();\n\t\tconst coupon =\n\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\tdispatch(requestVehicleTiresList());\n\t\tconst url =\n\t\t\tcoupon != null\n\t\t\t\t? BASE_API_URL +\n\t\t\t\t \"/api/Vehiculos/Buscar/?marca=\" +\n\t\t\t\t brand +\n\t\t\t\t \"&modelo=\" +\n\t\t\t\t model +\n\t\t\t\t \"&anio=\" +\n\t\t\t\t year +\n\t\t\t\t \"&version=\" +\n\t\t\t\t version +\n\t\t\t\t \"&cupon=\" +\n\t\t\t\t coupon\n\t\t\t\t: BASE_API_URL +\n\t\t\t\t \"/api/Vehiculos/Buscar?marca=\" +\n\t\t\t\t brand +\n\t\t\t\t \"&modelo=\" +\n\t\t\t\t model +\n\t\t\t\t \"&anio=\" +\n\t\t\t\t year +\n\t\t\t\t \"&version=\" +\n\t\t\t\t version;\n\t\treturn axios\n\t\t\t.get(url, options)\n\t\t\t.then((response) => {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Llantas\",\n\t\t\t\t\taction: \"Vehículo\",\n\t\t\t\t\tlabel: response.data.Name + \" \" + response.data.Year,\n\t\t\t\t\tvalue: response.data.Id,\n\t\t\t\t});\n\t\t\t\tdispatch(receiveVehicleTiresList({ list: response.data }));\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// TODO: fetch error actions\n\t\t\t});\n\t};\n\nexport default vehicleTires.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItems } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n};\n\nconst vehicleBrands = createSlice({\n\tname: \"vehicleBrands\",\n\tinitialState,\n\treducers: {\n\t\trequestVehicleBrandsList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveVehicleBrandsList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tloadVehicleBrandsSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateVehicleBrandsSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value !== action.payload.value) {\n\t\t\t} else {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateVehicleBrandValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateVehicleBrandItem(state, action) {\n\t\t\tif (\n\t\t\t\taction.payload.selectedItem != null &&\n\t\t\t\taction.payload.selectedItem.Name != null\n\t\t\t) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Vehiculo\",\n\t\t\t\t\taction: \"Seleccionar Marca\",\n\t\t\t\t\tlabel: action.payload.selectedItem.Name,\n\t\t\t\t\tvalue: action.payload.selectedItem.ID,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\tclearVehicleBrandsSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearVehicleBrandValue(state) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t},\n\t\tclearVehicleBrandData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestVehicleBrandsList,\n\treceiveVehicleBrandsList,\n\tloadVehicleBrandsSuggestionsBegin,\n\tmaybeUpdateVehicleBrandsSuggestions,\n\tupdateVehicleBrandValue,\n\tupdateVehicleBrandItem,\n\tclearVehicleBrandsSuggestions,\n\tclearVehicleBrandValue,\n\tclearVehicleBrandData,\n} = vehicleBrands.actions;\n\nconst shouldFetchVehicleBrands = (state) => {\n\tif (state.vehicleBrands.list == null) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchVehicleBrandsIfNeeded = () => async (dispatch, getState) => {\n\tif (shouldFetchVehicleBrands(getState())) {\n\t\treturn dispatch(fetchVehicleBrands());\n\t}\n};\nexport const loadVehicleBrandsSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tdispatch(loadVehicleBrandsSuggestionsBegin());\n\t\tdispatch(fetchVehicleBrandsIfNeeded());\n\t\tconst theState = getState();\n\t\tsetTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateVehicleBrandsSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItems(theState.vehicleBrands, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\nexport const fetchVehicleBrands = () => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestVehicleBrandsList());\n\treturn fetch(BASE_API_URL + \"/api/Vehiculos/Buscar/Marcas\", options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveVehicleBrandsList({ list: json }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default vehicleBrands.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsBlank } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\trenderInput: false,\n\tlist: null,\n};\n\nconst vehicleModels = createSlice({\n\tname: \"vehicleModels\",\n\tinitialState,\n\treducers: {\n\t\trequestVehicleModelsList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveVehicleModelsList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tloadVehicleModelsSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateVehicleModelsSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value !== action.payload.value) {\n\t\t\t} else {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateVehicleModelValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateVehicleModelItem(state, action) {\n\t\t\tif (\n\t\t\t\taction.payload.selectedItem != null &&\n\t\t\t\taction.payload.selectedItem.Name != null\n\t\t\t) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Vehiculo\",\n\t\t\t\t\taction: \"Seleccionar Modelo\",\n\t\t\t\t\tlabel: action.payload.selectedItem.Name,\n\t\t\t\t\tvalue: action.payload.selectedItem.ID,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\tclearVehicleModelsSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearVehicleModelValue(state, action) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tclearVehicleModelData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestVehicleModelsList,\n\treceiveVehicleModelsList,\n\tloadVehicleModelsSuggestionsBegin,\n\tmaybeUpdateVehicleModelsSuggestions,\n\tupdateVehicleModelValue,\n\tupdateVehicleModelItem,\n\tclearVehicleModelsSuggestions,\n\tclearVehicleModelValue,\n\tclearVehicleModelData,\n} = vehicleModels.actions;\n\nconst shouldFetchVehicleModels = (state, brandId) => {\n\tconst brand = state.vehicleBrands.selectedItem;\n\tif (state.vehicleModels.list == null) {\n\t\tif (brand != null) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tif (brand?.ID !== brandId) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchVehicleModelsIfNeeded =\n\t(brandId) => async (dispatch, getState) => {\n\t\tif (shouldFetchVehicleModels(getState(), brandId)) {\n\t\t\treturn dispatch(fetchVehicleModels(brandId));\n\t\t}\n\t};\nexport const loadVehicleModelsSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tdispatch(loadVehicleModelsSuggestionsBegin());\n\t\tconst theState = getState();\n\t\tdispatch(\n\t\t\tfetchVehicleModelsIfNeeded(theState.vehicleBrands.selectedItem.ID)\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateVehicleModelsSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsBlank(theState.vehicleModels, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\nexport const fetchVehicleModels = (brandId) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestVehicleModelsList());\n\tconst url = BASE_API_URL + \"/api/Vehiculos/Buscar/Modelos?marca=\" + brandId;\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveVehicleModelsList({ list: json, renderInput: true }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default vehicleModels.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsYears } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\trenderInput: false,\n\tlist: null,\n};\n\nconst vehicleYears = createSlice({\n\tname: \"vehicleYears\",\n\tinitialState,\n\treducers: {\n\t\trequestVehicleYearsList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveVehicleYearsList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tloadVehicleYearsSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateVehicleYearsSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value !== action.payload.value) {\n\t\t\t} else {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateVehicleYearValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateVehicleYearItem(state, action) {\n\t\t\tif (\n\t\t\t\tObject.keys(action.payload.selectedItem).length !== 0 &&\n\t\t\t\taction.payload.selectedItem.anio != null\n\t\t\t) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Vehiculo\",\n\t\t\t\t\taction: \"Seleccionar Año\",\n\t\t\t\t\tlabel: action.payload.selectedItem.anio + \"\",\n\t\t\t\t\tvalue: action.payload.selectedItem.anio,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\tclearVehicleYearsSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearVehicleYearValue(state, action) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tclearVehicleYearData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestVehicleYearsList,\n\treceiveVehicleYearsList,\n\tloadVehicleYearsSuggestionsBegin,\n\tmaybeUpdateVehicleYearsSuggestions,\n\tupdateVehicleYearValue,\n\tupdateVehicleYearItem,\n\tclearVehicleYearsSuggestions,\n\tclearVehicleYearValue,\n\tclearVehicleYearData,\n} = vehicleYears.actions;\n\nconst shouldFetchVehicleYears = (state, modelId) => {\n\tconst model = state.vehicleModels.selectedItem;\n\tif (state.vehicleYears.list == null) {\n\t\tif (model != null) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tif (model?.ID !== modelId) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchVehicleYearsIfNeeded =\n\t(modelId) => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tif (shouldFetchVehicleYears(theState, modelId)) {\n\t\t\treturn dispatch(\n\t\t\t\tfetchVehicleYears(theState.vehicleBrands.selectedItem.ID, modelId)\n\t\t\t);\n\t\t}\n\t};\nexport const loadVehicleYearsSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tdispatch(loadVehicleYearsSuggestionsBegin());\n\t\tconst theState = getState();\n\t\tdispatch(fetchVehicleYearsIfNeeded(theState.vehicleModels.selectedItem.ID));\n\t\tsetTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateVehicleYearsSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsYears(theState.vehicleYears, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\nexport const fetchVehicleYears = (brandId, modelId) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestVehicleYearsList());\n\tconst url =\n\t\tBASE_API_URL +\n\t\t\"/api/Vehiculos/Buscar/Anios/?marca=\" +\n\t\tbrandId +\n\t\t\"&modelo=\" +\n\t\tmodelId;\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveVehicleYearsList({ list: json, renderInput: true }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default vehicleYears.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsBlank } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\trenderInput: false,\n\tlist: null,\n};\n\nconst vehicleVersions = createSlice({\n\tname: \"vehicleVersions\",\n\tinitialState,\n\treducers: {\n\t\trequestVehicleVersionsList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveVehicleVersionsList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tloadVehicleVersionsSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateVehicleVersionsSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value !== action.payload.value) {\n\t\t\t} else {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateVehicleVersionValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateVehicleVersionItem(state, action) {\n\t\t\tif (\n\t\t\t\taction.payload.selectedItem != null &&\n\t\t\t\taction.payload.selectedItem.Name != null\n\t\t\t) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Vehiculo\",\n\t\t\t\t\taction: \"Seleccionar Versión\",\n\t\t\t\t\tlabel: action.payload.selectedItem.Name,\n\t\t\t\t\tvalue: action.payload.selectedItem.ID,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\tclearVehicleVersionsSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearVehicleVersionValue(state, action) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tclearVehicleVersionData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestVehicleVersionsList,\n\treceiveVehicleVersionsList,\n\tloadVehicleVersionsSuggestionsBegin,\n\tmaybeUpdateVehicleVersionsSuggestions,\n\tupdateVehicleVersionValue,\n\tupdateVehicleVersionItem,\n\tclearVehicleVersionsSuggestions,\n\tclearVehicleVersionValue,\n\tclearVehicleVersionData,\n} = vehicleVersions.actions;\n\nconst shouldFetchVehicleVersions = (state, year) => {\n\tconst yearItem = state.vehicleYears.selectedItem;\n\tif (state.vehicleVersions.list == null) {\n\t\tif (yearItem != null) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tif (yearItem?.anio !== year) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchVehicleVersionsIfNeeded =\n\t(year) => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tif (shouldFetchVehicleVersions(theState, year)) {\n\t\t\treturn dispatch(\n\t\t\t\tfetchVehicleVersions(\n\t\t\t\t\ttheState.vehicleBrands.selectedItem.ID,\n\t\t\t\t\ttheState.vehicleModels.selectedItem.ID,\n\t\t\t\t\tyear\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\nexport const loadVehicleVersionsSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tdispatch(loadVehicleVersionsSuggestionsBegin());\n\t\tconst theState = getState();\n\t\tdispatch(\n\t\t\tfetchVehicleVersionsIfNeeded(theState.vehicleYears.selectedItem.anio + \"\")\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateVehicleVersionsSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsBlank(theState.vehicleVersions, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\nexport const fetchVehicleVersions =\n\t(brandId, modelId, year) => async (dispatch) => {\n\t\tconst headers = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t};\n\t\tconst options = {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: headers,\n\t\t};\n\t\tdispatch(requestVehicleVersionsList());\n\t\tconst url =\n\t\t\tBASE_API_URL +\n\t\t\t\"/api/Vehiculos/Buscar/Versiones?marca=\" +\n\t\t\tbrandId +\n\t\t\t\"&modelo=\" +\n\t\t\tmodelId +\n\t\t\t\"&anio=\" +\n\t\t\tyear;\n\t\treturn fetch(url, options)\n\t\t\t.then((response) => {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\treturn response.json();\n\t\t\t\t} else {\n\t\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then((json) => {\n\t\t\t\tdispatch(receiveVehicleVersionsList({ list: json, renderInput: true }));\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// TODO: fetch error actions\n\t\t\t});\n\t};\n\nexport default vehicleVersions.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsTireSize } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\tvehicleType: \"0\",\n};\n\nconst sizeWidthDiameters = createSlice({\n\tname: \"sizeWidthDiameters\",\n\tinitialState,\n\treducers: {\n\t\trequestWidthDiametersList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveWidthDiametersList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tsetSizeVehicleType(state, action) {\n\t\t\tstate.vehicleType = action.payload.vehicleType;\n\t\t},\n\t\tloadWidthDiametersSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateWidthDiametersSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateWidthDiameterValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateWidthDiameterItem(state, action) {\n\t\t\tconst selectedItem = action.payload.selectedItem;\n\t\t\tif (selectedItem != null && selectedItem.Value != null) {\n\t\t\t\tif (selectedItem.IsSae) {\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Medida SAE\",\n\t\t\t\t\t\taction: \"Seleccionar Diametro\",\n\t\t\t\t\t\tlabel: selectedItem.Value + \"\",\n\t\t\t\t\t\tvalue: selectedItem.Value,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Medida\",\n\t\t\t\t\t\taction: \"Seleccionar AnchoSección\",\n\t\t\t\t\t\tlabel: selectedItem.Value + \"\",\n\t\t\t\t\t\tvalue: selectedItem.Value,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.selectedItem = selectedItem;\n\t\t},\n\t\tclearWidthDiametersSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearWidthDiameterValue(state) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t},\n\t\tclearWidthDiameterData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestWidthDiametersList,\n\treceiveWidthDiametersList,\n\tsetSizeVehicleType,\n\tloadWidthDiametersSuggestionsBegin,\n\tmaybeUpdateWidthDiametersSuggestions,\n\tupdateWidthDiameterValue,\n\tupdateWidthDiameterItem,\n\tclearWidthDiametersSuggestions,\n\tclearWidthDiameterValue,\n\tclearWidthDiameterData,\n} = sizeWidthDiameters.actions;\n\nconst shouldFetchWidthDiameters = (state, value) => {\n\tif (state.sizeWidthDiameters.list == null) {\n\t\treturn true;\n\t}\n\tif (state.sizeWidthDiameters.value !== value) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchWidthDiametersIfNeeded = (value = \"\") => async (dispatch, getState) => {\n\tif (shouldFetchWidthDiameters(getState(), value)) {\n\t\tconst theState = getState();\n\t\treturn dispatch(\n\t\t\tfetchWidthDiameters(theState.vehicleType.value)\n\t\t);\n\t}\n};\nexport const loadWidthDiametersSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tdispatch(loadWidthDiametersSuggestionsBegin());\n\t\tdispatch(fetchWidthDiametersIfNeeded());\n\t\tconst theState = getState();\n\t\tsetTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateWidthDiametersSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsTireSize(\n\t\t\t\t\t\ttheState.sizeWidthDiameters,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\nexport const fetchWidthDiameters = (dept) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestWidthDiametersList());\n\treturn fetch(BASE_API_URL + \"/api/Medidas/?depto=\" + dept, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveWidthDiametersList({ list: json }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default sizeWidthDiameters.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsTireSize } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\trenderInput: false,\n\tshowInput: true,\n};\n\nconst sizeRatios = createSlice({\n\tname: \"sizeRatios\",\n\tinitialState,\n\treducers: {\n\t\trequestSizeRatiosList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveSizeRatiosList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tloadSizeRatiosSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateSizeRatiosSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateSizeRatioValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateSizeRatioItem(state, action) {\n\t\t\tconst selectedItem = action.payload.selectedItem;\n\t\t\tif (selectedItem != null && selectedItem.Value != null) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Medida\",\n\t\t\t\t\taction: \"Seleccionar RelaciónAspecto\",\n\t\t\t\t\tlabel: selectedItem.Value + \"\",\n\t\t\t\t\tvalue: selectedItem.Value,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = selectedItem;\n\t\t},\n\t\tclearSizeRatiosSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearSizeRatioValue(state, action) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t\tstate.list = null;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t\tstate.showInput = action.payload.showInput;\n\t\t},\n\t\tclearSizeRatiosData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestSizeRatiosList,\n\treceiveSizeRatiosList,\n\tloadSizeRatiosSuggestionsBegin,\n\tmaybeUpdateSizeRatiosSuggestions,\n\tupdateSizeRatioValue,\n\tupdateSizeRatioItem,\n\tclearSizeRatiosSuggestions,\n\tclearSizeRatioValue,\n\tclearSizeRatiosData,\n} = sizeRatios.actions;\n\nconst shouldFetchSizeRatios = (state, newWidth) => {\n\tif (state.sizeRatios.list == null) {\n\t\treturn true;\n\t}\n\tconst oldWidth = state.sizeWidthDiameters.selectedItem;\n\tif (oldWidth !== newWidth) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchSizeRatiosIfNeeded =\n\t(selectedWidth) => async (dispatch, getState) => {\n\t\tif (shouldFetchSizeRatios(getState(), selectedWidth)) {\n\t\t\tconst theState = getState();\n\t\t\treturn dispatch(\n\t\t\t\tfetchSizeRatios(theState.vehicleType.value, selectedWidth.OriginalValue)\n\t\t\t);\n\t\t}\n\t};\nexport const loadSizeRatiosSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tdispatch(loadSizeRatiosSuggestionsBegin());\n\t\tlet theState = getState();\n\t\tif (theState.sizeRatios.list == null) {\n\t\t\tdispatch(\n\t\t\t\tfetchSizeRatios(\n\t\t\t\t\ttheState.vehicleType.value,\n\t\t\t\t\ttheState.sizeWidthDiameters.selectedItem.OriginalValue\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\ttheState = getState();\n\t\treturn setTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateSizeRatiosSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsTireSize(theState.sizeRatios, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\nexport const fetchSizeRatios = (dept, width) => async (dispatch) => {\n\tif (width == null) return;\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestSizeRatiosList());\n\tconst url =\n\t\tBASE_API_URL +\n\t\t\"/api/Medidas/Serie/?depto=\" +\n\t\tdept +\n\t\t\"&marca=0&anchoseccion=\" +\n\t\twidth;\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveSizeRatiosList({ list: json, renderInput: true }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default sizeRatios.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsTireSize } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\trenderInput: false,\n\tshowInput: true,\n};\n\nconst sizeRims = createSlice({\n\tname: \"sizeRims\",\n\tinitialState,\n\treducers: {\n\t\trequestSizeRimsList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveSizeRimsList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tloadSizeRimsSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateSizeRimsSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateSizeRimValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateSizeRimItem(state, action) {\n\t\t\tconst selectedItem = action.payload.selectedItem;\n\t\t\tif (selectedItem != null && selectedItem.Value != null) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Medida\",\n\t\t\t\t\taction: \"Seleccionar Rim\",\n\t\t\t\t\tlabel: selectedItem.Value + \"\",\n\t\t\t\t\tvalue: selectedItem.Value,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = selectedItem;\n\t\t},\n\t\tclearSizeRimsSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearSizeRimValue(state, action) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t\tstate.list = null;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t\tstate.showInput = action.payload.showInput;\n\t\t},\n\t\tclearSizeRimData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestSizeRimsList,\n\treceiveSizeRimsList,\n\tloadSizeRimsSuggestionsBegin,\n\tmaybeUpdateSizeRimsSuggestions,\n\tupdateSizeRimValue,\n\tupdateSizeRimItem,\n\tclearSizeRimsSuggestions,\n\tclearSizeRimValue,\n\tclearSizeRimData,\n} = sizeRims.actions;\n\nconst shouldFetchSizeRims = (state, newRatio) => {\n\tif (state.sizeRims.list == null) {\n\t\treturn true;\n\t}\n\tconst oldRatio = state.sizeRatios.selectedItem;\n\tif (oldRatio !== newRatio) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchSizeRimsIfNeeded = (selectedRatio) => async (\n\tdispatch,\n\tgetState\n) => {\n\tif (shouldFetchSizeRims(getState(), selectedRatio)) {\n\t\tconst theState = getState();\n\t\treturn dispatch(\n\t\t\tfetchSizeRims(\n\t\t\t\ttheState.vehicleType.value,\n\t\t\t\ttheState.sizeWidthDiameters.selectedItem.OriginalValue,\n\t\t\t\tselectedRatio.Value\n\t\t\t)\n\t\t);\n\t}\n};\nexport const loadSizeRimsSuggestions = (value) => async (\n\tdispatch,\n\tgetState\n) => {\n\tlet theState = getState();\n\tdispatch(loadSizeRimsSuggestionsBegin());\n\tif (theState.sizeRims.list == null) {\n\t\tdispatch(\n\t\t\tfetchSizeRims(\n\t\t\t\ttheState.vehicleType.value,\n\t\t\t\ttheState.sizeWidthDiameters.selectedItem.OriginalValue,\n\t\t\t\ttheState.sizeRatios.selectedItem.Value\n\t\t\t)\n\t\t);\n\t}\n\ttheState = getState();\n\treturn setTimeout(() => {\n\t\tdispatch(\n\t\t\tmaybeUpdateSizeRimsSuggestions({\n\t\t\t\tsuggestions: getMatchingItemsTireSize(theState.sizeRims, value),\n\t\t\t\tvalue,\n\t\t\t})\n\t\t);\n\t});\n};\nexport const fetchSizeRims = (dept, width, ratio) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestSizeRimsList());\n\tconst url =\n\t\tBASE_API_URL +\n\t\t\"/api/Medidas/Rin/?depto=\" +\n\t\tdept +\n\t\t\"&marca=0&anchoseccion=\" +\n\t\t+width +\n\t\t\"&serie=\" +\n\t\tratio;\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveSizeRimsList({ list: json, renderInput: true }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default sizeRims.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsTireSize } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\trenderInput: false,\n\tshowInput: false,\n};\n\nconst sizeSaeWidths = createSlice({\n\tname: \"sizeSaeWidths\",\n\tinitialState,\n\treducers: {\n\t\trequestWidthSaesList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveWidthSaesList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tloadWidthSaesSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateWidthSaesSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateWidthSaeValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateWidthSaeItem(state, action) {\n\t\t\tconst selectedItem = action.payload.selectedItem;\n\t\t\tif (selectedItem != null && selectedItem.Value != null) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Medida SAE\",\n\t\t\t\t\taction: \"Seleccionar Ancho\",\n\t\t\t\t\tlabel: selectedItem.Value + \"\",\n\t\t\t\t\tvalue: selectedItem.Value,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = selectedItem;\n\t\t},\n\t\tclearWidthSaesSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearWidthSaeValue(state, action) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t\tstate.list = null;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t\tstate.showInput = action.payload.showInput;\n\t\t},\n\t\tclearWidthSaeData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestWidthSaesList,\n\treceiveWidthSaesList,\n\tloadWidthSaesSuggestionsBegin,\n\tmaybeUpdateWidthSaesSuggestions,\n\tupdateWidthSaeValue,\n\tupdateWidthSaeItem,\n\tclearWidthSaesSuggestions,\n\tclearWidthSaeValue,\n\tclearWidthSaeData,\n} = sizeSaeWidths.actions;\n\nconst shouldFetchWidthSaes = (state, newDiameter) => {\n\tif (state.sizeSaeWidths.list == null) {\n\t\treturn true;\n\t}\n\tconst oldDiameter = state.sizeWidthDiameters.selectedItem;\n\tif (oldDiameter !== newDiameter) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchWidthSaesIfNeeded =\n\t(selectedDiameter) => async (dispatch, getState) => {\n\t\tif (shouldFetchWidthSaes(getState(), selectedDiameter)) {\n\t\t\tconst theState = getState();\n\t\t\treturn dispatch(\n\t\t\t\tfetchWidthsSae(\n\t\t\t\t\ttheState.vehicleType.value,\n\t\t\t\t\tselectedDiameter.OriginalValue\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\nexport const loadWidthSaesSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tdispatch(loadWidthSaesSuggestionsBegin());\n\t\tlet theState = getState();\n\t\tif (theState.sizeSaeWidths.list == null) {\n\t\t\tdispatch(\n\t\t\t\tfetchWidthsSae(\n\t\t\t\t\ttheState.vehicleType.value,\n\t\t\t\t\ttheState.sizeWidthDiameters.selectedItem.OriginalValue\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\ttheState = getState();\n\t\treturn setTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateWidthSaesSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsTireSize(theState.sizeSaeWidths, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\nexport const fetchWidthsSae = (dept, originalValue) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestWidthSaesList());\n\tconst url =\n\t\tBASE_API_URL +\n\t\t\"/api/Medidas/AnchoSAE/?depto=\" +\n\t\tdept +\n\t\t\"&marca=0&diametro=\" +\n\t\toriginalValue;\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveWidthSaesList({ list: json, renderInput: true }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default sizeSaeWidths.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsTireSize } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\trenderInput: false,\n\tshowInput: false,\n};\n\nconst sizeSaeRims = createSlice({\n\tname: \"sizeSaeRims\",\n\tinitialState,\n\treducers: {\n\t\trequestSizeRimSaesList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveSizeRimSaesList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t},\n\t\tloadSizeRimSaesSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateSizeRimSaesSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateSizeRimSaeValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateSizeRimSaeItem(state, action) {\n\t\t\tconst selectedItem = action.payload.selectedItem;\n\t\t\tif (selectedItem != null && selectedItem.Value != null) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Medida SAE\",\n\t\t\t\t\taction: \"Seleccionar Rim\",\n\t\t\t\t\tlabel: selectedItem.Value + \"\",\n\t\t\t\t\tvalue: selectedItem.Value,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = selectedItem;\n\t\t},\n\t\tclearSizeRimSaesSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearSizeRimSaeValue(state, action) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t\tstate.list = null;\n\t\t\tstate.renderInput = action.payload.renderInput;\n\t\t\tstate.showInput = action.payload.showInput;\n\t\t},\n\t\tclearSizeRimSaesData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestSizeRimSaesList,\n\treceiveSizeRimSaesList,\n\tloadSizeRimSaesSuggestionsBegin,\n\tmaybeUpdateSizeRimSaesSuggestions,\n\tupdateSizeRimSaeValue,\n\tupdateSizeRimSaeItem,\n\tclearSizeRimSaesSuggestions,\n\tclearSizeRimSaeValue,\n\tclearSizeRimSaesData,\n} = sizeSaeRims.actions;\n\nconst shouldFetchSizeRimSaes = (state, newWidth) => {\n\tif (state.sizeSaeRims.list == null) {\n\t\treturn true;\n\t}\n\tconst oldWidth = state.sizeSaeWidths.selectedItem;\n\tif (oldWidth !== newWidth) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchSizeRimSaesIfNeeded =\n\t(selectedWidth) => async (dispatch, getState) => {\n\t\tif (shouldFetchSizeRimSaes(getState(), selectedWidth)) {\n\t\t\tconst theState = getState();\n\t\t\treturn dispatch(\n\t\t\t\tfetchSizeRimSaes(\n\t\t\t\t\ttheState.vehicleType.value,\n\t\t\t\t\ttheState.sizeWidthDiameters.selectedItem.OriginalValue,\n\t\t\t\t\tselectedWidth.OriginalValue\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\nexport const loadSizeRimSaesSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tdispatch(loadSizeRimSaesSuggestionsBegin());\n\t\tlet theState = getState();\n\t\tif (theState.sizeSaeRims.list == null) {\n\t\t\tdispatch(\n\t\t\t\tfetchSizeRimSaes(\n\t\t\t\t\ttheState.vehicleType.value,\n\t\t\t\t\ttheState.sizeWidthDiameters.selectedItem.OriginalValue,\n\t\t\t\t\ttheState.sizeSaeWidths.selectedItem.OriginalValue\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\ttheState = getState();\n\t\treturn setTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateSizeRimSaesSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsTireSize(theState.sizeSaeRims, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\nexport const fetchSizeRimSaes = (dept, diameter, width) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestSizeRimSaesList());\n\tconst url =\n\t\tBASE_API_URL +\n\t\t\"/api/Medidas/RinSAE/?depto=\" +\n\t\tdept +\n\t\t\"&marca=0&diametro=\" +\n\t\t+diameter +\n\t\t\"&anchoseccion=\" +\n\t\twidth;\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveSizeRimSaesList({ list: json, renderInput: true }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default sizeSaeRims.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nconst initialState = {\n\tvalue: \"0\",\n};\n\nconst vehicleType = createSlice({\n\tname: \"vehicleType\",\n\tinitialState,\n\treducers: {\n\t\tsetVehicleType(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t},\n});\n\nexport const { setVehicleType } = vehicleType.actions;\n\nexport default vehicleType.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport qs from \"qs\";\nimport Scroll from \"react-scroll\";\nimport { isServer } from \"features/functions\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL, VEHICLE_TYPES as v } from \"../constants\";\nimport { hideHighlightsTiresList } from \"./highlightsTiresSlice\";\nimport { setVehicleType } from \"features/tireFinder/vehicleTypeSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\twidth: null,\n\tratio: null,\n\trim: null,\n\tdept: null,\n\tscroll: false,\n};\nconst sizeTires = createSlice({\n\tname: \"sizeTires\",\n\tinitialState,\n\treducers: {\n\t\trequestSizeTiresList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveSizeTiresList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.width = action.payload.width;\n\t\t\tstate.ratio = action.payload.ratio;\n\t\t\tstate.rim = action.payload.rim;\n\t\t\tstate.dept = action.payload.dept;\n\t\t},\n\t\tsetSizeTiresScroll(state, action) {\n\t\t\tstate.scroll = action.payload.scroll;\n\t\t},\n\t\tclearSizeTiresList(state) {\n\t\t\tstate.list = null;\n\t\t\tstate.width = null;\n\t\t\tstate.ratio = null;\n\t\t\tstate.rim = null;\n\t\t},\n\t\tclearSizeTiresData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestSizeTiresList,\n\treceiveSizeTiresList,\n\tsetSizeTiresSize,\n\tsetSizeTiresScroll,\n\tclearSizeTiresList,\n\tclearSizeTiresData,\n} = sizeTires.actions;\n\nconst shouldFetchSizeTiresList = (state, newRim) => {\n\tif (state.sizeTires.list == null) {\n\t\treturn true;\n\t}\n\tconst oldRim = state.sizeRims.selectedItem;\n\tif (oldRim !== newRim) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchSizeTiresListIfNeeded =\n\t(selectedRim) => async (dispatch, getState) => {\n\t\tif (shouldFetchSizeTiresList(getState(), selectedRim)) {\n\t\t\tconst theState = getState();\n\t\t\treturn dispatch(\n\t\t\t\tfetchSizeTiresList(\n\t\t\t\t\ttheState.vehicleType.value,\n\t\t\t\t\ttheState.sizeWidthDiameters.selectedItem.OriginalValue,\n\t\t\t\t\ttheState.sizeRatios.selectedItem.Value,\n\t\t\t\t\tselectedRim.Value\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\n\nexport const fetchSizeTiresList =\n\t(dept, width, ratio, rim, brand = 0) =>\n\tasync (dispatch, getState) => {\n\t\tconst headers = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t};\n\t\tconst options = {\n\t\t\theaders: headers,\n\t\t};\n\t\tconst theState = getState();\n\t\tconst coupon =\n\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\tdispatch(requestSizeTiresList());\n\t\tconst url =\n\t\t\tcoupon != null\n\t\t\t\t? BASE_API_URL +\n\t\t\t\t \"/api/Productos/Buscar?anchoseccion=\" +\n\t\t\t\t width +\n\t\t\t\t \"&serie=\" +\n\t\t\t\t ratio +\n\t\t\t\t \"&rin=\" +\n\t\t\t\t rim +\n\t\t\t\t \"&depto=\" +\n\t\t\t\t dept +\n\t\t\t\t \"&marca=\" +\n\t\t\t\t brand +\n\t\t\t\t \"&cupon=\" +\n\t\t\t\t coupon\n\t\t\t\t: BASE_API_URL +\n\t\t\t\t \"/api/Productos/Buscar?anchoseccion=\" +\n\t\t\t\t width +\n\t\t\t\t \"&serie=\" +\n\t\t\t\t ratio +\n\t\t\t\t \"&rin=\" +\n\t\t\t\t rim +\n\t\t\t\t \"&depto=\" +\n\t\t\t\t dept +\n\t\t\t\t \"&marca=\" +\n\t\t\t\t brand;\n\t\treturn axios\n\t\t\t.get(url, options)\n\t\t\t.then((response) => {\n\t\t\t\tReactGA.send({\n\t\t\t\t\thitType: \"pageview\",\n\t\t\t\t\tpage:\n\t\t\t\t\t\t\"/llantas/medida/\" +\n\t\t\t\t\t\tv.properties[dept].slug +\n\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\twidth +\n\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\tratio +\n\t\t\t\t\t\t\"R\" +\n\t\t\t\t\t\trim,\n\t\t\t\t});\n\t\t\t\tdispatch(\n\t\t\t\t\treceiveSizeTiresList({ list: response.data, width, ratio, rim, dept })\n\t\t\t\t);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\t// TODO: fetch error actions\n\t\t\t});\n\t};\nexport const fetchSizeStringTireList =\n\t(vehicleType, size, brand = 0) =>\n\tasync (dispatch, getState) => {\n\t\tconst headers = isServer\n\t\t\t? {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tOrigin: [process.env.RAZZLE_SRV_HOST],\n\t\t\t }\n\t\t\t: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t };\n\t\tconst options = {\n\t\t\theaders: headers,\n\t\t};\n\t\tconst theState = getState();\n\t\tconst coupon =\n\t\t\ttheState.cart.coupon == null ? \"0\" : theState.cart.coupon.Code;\n\t\tconst vType = Object.keys(v.properties).filter(\n\t\t\t(item) => v.properties[item][\"slug\"] === vehicleType\n\t\t);\n\t\tconst queryString = {\n\t\t\tdepto: vType[0],\n\t\t\tmedida: size,\n\t\t\tmarca: brand,\n\t\t\tcupon: coupon,\n\t\t};\n\t\tconst url =\n\t\t\tBASE_API_URL +\n\t\t\t\"/api/Productos/BuscarMedida?\" +\n\t\t\tqs.stringify(queryString, { encodeValuesOnly: true });\n\t\tawait axios\n\t\t\t.get(url, options)\n\t\t\t.then((response) => {\n\t\t\t\tconst list = response.data;\n\t\t\t\tif (list != null && list.length > 0) {\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\treceiveSizeTiresList({\n\t\t\t\t\t\t\tlist,\n\t\t\t\t\t\t\tdept: vType[0],\n\t\t\t\t\t\t\twidth: list[0].Width,\n\t\t\t\t\t\t\tratio: list[0].Ratio,\n\t\t\t\t\t\t\trim: list[0].Rim,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t\tdispatch(hideHighlightsTiresList({ hide: true }));\n\t\t\t\t\tdispatch(setVehicleType({ value: vType[0] }));\n\t\t\t\t\tdispatch(setSizeTiresScroll({ scroll: true }));\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log(\"Error\", error);\n\t\t\t});\n\t};\nexport const scrollToSizeTires = () => async (dispatch, getState) => {\n\tconst theState = getState();\n\tif (theState.sizeTires.list != null && theState.sizeTires.scroll) {\n\t\tlet scroll = Scroll.animateScroll;\n\t\tlet target = document.getElementById(\"resultCarousel\");\n\t\tlet targetPos =\n\t\t\ttarget.offsetWidth > 980 ? target.offsetTop - 100 : target.offsetTop - 50;\n\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\tdispatch(setSizeTiresScroll({ scroll: false }));\n\t}\n};\n\nexport default sizeTires.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport qs from \"qs\";\nimport Scroll from \"react-scroll\";\nimport { mmToIn } from \"features/functions\";\nimport { isServer } from \"features/functions\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL, VEHICLE_TYPES as v } from \"../constants\";\nimport { hideHighlightsTiresList } from \"./highlightsTiresSlice\";\nimport { setVehicleType } from \"features/tireFinder/vehicleTypeSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\tdiameter: null,\n\twidth: null,\n\trim: null,\n\tdept: 0,\n\tscroll: false,\n};\nconst sizeSaeTires = createSlice({\n\tname: \"sizeSaeTires\",\n\tinitialState,\n\treducers: {\n\t\trequestSizeSaeTiresList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveSizeSaeTiresList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.diameter = action.payload.diameter;\n\t\t\tstate.width = action.payload.width;\n\t\t\tstate.rim = action.payload.rim;\n\t\t\tstate.dept = action.payload.dept;\n\t\t},\n\t\tsetSizeSaeTiresScroll(state, action) {\n\t\t\tstate.scroll = action.payload.scroll;\n\t\t},\n\t\tclearSizeSaeTiresList(state) {\n\t\t\tstate.list = null;\n\t\t\tstate.diameter = null;\n\t\t\tstate.width = null;\n\t\t\tstate.rim = null;\n\t\t},\n\t\tclearSizeSaeTiresData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestSizeSaeTiresList,\n\treceiveSizeSaeTiresList,\n\tsetSizeSaeTiresScroll,\n\tclearSizeSaeTiresList,\n\tclearSizeSaeTiresData,\n} = sizeSaeTires.actions;\n\nconst shouldFetchSizeSaeTiresList = (state, newRim) => {\n\tif (state.sizeSaeTires.list == null) {\n\t\treturn true;\n\t}\n\tconst oldRim = state.sizeSaeRims.selectedItem;\n\tif (oldRim !== newRim) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchSizeSaeTiresListIfNeeded =\n\t(selectedRim) => async (dispatch, getState) => {\n\t\tif (shouldFetchSizeSaeTiresList(getState(), selectedRim)) {\n\t\t\tconst theState = getState();\n\t\t\treturn dispatch(\n\t\t\t\tfetchSizeSaeTiresList(\n\t\t\t\t\ttheState.vehicleType.value,\n\t\t\t\t\ttheState.sizeWidthDiameters.selectedItem,\n\t\t\t\t\ttheState.sizeSaeWidths.selectedItem,\n\t\t\t\t\tselectedRim.Value\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\n\nexport const fetchSizeSaeTiresList =\n\t(dept, diameter, width, rim, brand = 0) =>\n\tasync (dispatch, getState) => {\n\t\tconst headers = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t};\n\t\tconst options = {\n\t\t\theaders: headers,\n\t\t};\n\t\tconst theState = getState();\n\t\tconst coupon =\n\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\tdispatch(requestSizeSaeTiresList());\n\t\tconst url =\n\t\t\tcoupon != null\n\t\t\t\t? BASE_API_URL +\n\t\t\t\t \"/api/Productos/Buscar/SAE/?diametro=\" +\n\t\t\t\t diameter.OriginalValue +\n\t\t\t\t \"&anchoseccion=\" +\n\t\t\t\t width.OriginalValue +\n\t\t\t\t \"&rin=\" +\n\t\t\t\t rim +\n\t\t\t\t \"&depto=\" +\n\t\t\t\t dept +\n\t\t\t\t \"&marca=\" +\n\t\t\t\t brand +\n\t\t\t\t \"&cupon=\" +\n\t\t\t\t coupon\n\t\t\t\t: BASE_API_URL +\n\t\t\t\t \"/api/Productos/Buscar/SAE/?diametro=\" +\n\t\t\t\t diameter.OriginalValue +\n\t\t\t\t \"&anchoseccion=\" +\n\t\t\t\t width.OriginalValue +\n\t\t\t\t \"&rin=\" +\n\t\t\t\t rim +\n\t\t\t\t \"&depto=\" +\n\t\t\t\t dept +\n\t\t\t\t \"&marca=0\";\n\t\treturn axios\n\t\t\t.get(url, options)\n\t\t\t.then((response) => {\n\t\t\t\tReactGA.send({\n\t\t\t\t\thitType: \"pageview\",\n\t\t\t\t\tpage:\n\t\t\t\t\t\t\"/llantas/medida/\" +\n\t\t\t\t\t\tv.properties[dept].slug +\n\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\tencodeURIComponent(diameter.Value + \"X\" + width.Value + \"R\" + rim),\n\t\t\t\t});\n\t\t\t\tdispatch(\n\t\t\t\t\treceiveSizeSaeTiresList({\n\t\t\t\t\t\tlist: response.data,\n\t\t\t\t\t\tdiameter: diameter.Value,\n\t\t\t\t\t\twidth: width.Value,\n\t\t\t\t\t\trim,\n\t\t\t\t\t\tdept,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\t// TODO: fetch error actions\n\t\t\t});\n\t};\nexport const fetchSizeSaeStringTireList =\n\t(vehicleType, size, brand = 0) =>\n\tasync (dispatch, getState) => {\n\t\tconst headers = isServer\n\t\t\t? {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tOrigin: [process.env.RAZZLE_SRV_HOST],\n\t\t\t }\n\t\t\t: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t };\n\t\tconst options = {\n\t\t\theaders: headers,\n\t\t};\n\t\tconst theState = getState();\n\t\tconst coupon =\n\t\t\ttheState.cart.coupon == null ? \"0\" : theState.cart.coupon.Code;\n\t\tconst vType = Object.keys(v.properties).filter(\n\t\t\t(item) => v.properties[item][\"slug\"] === vehicleType\n\t\t);\n\t\tconst queryString = {\n\t\t\tdepto: vType[0],\n\t\t\tmedida: size,\n\t\t\tmarca: brand,\n\t\t\tcupon: coupon,\n\t\t};\n\t\tconst url =\n\t\t\tBASE_API_URL +\n\t\t\t\"/api/Productos/BuscarMedida?\" +\n\t\t\tqs.stringify(queryString, { encodeValuesOnly: true });\n\t\tawait axios\n\t\t\t.get(url, options)\n\t\t\t.then((response) => {\n\t\t\t\tconst list = response.data;\n\t\t\t\tif (list != null && list.length > 0) {\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\treceiveSizeSaeTiresList({\n\t\t\t\t\t\t\tlist,\n\t\t\t\t\t\t\tdept: vType[0],\n\t\t\t\t\t\t\tdiameter: mmToIn(list[0].Diameter, 1),\n\t\t\t\t\t\t\twidth: mmToIn(list[0].Width),\n\t\t\t\t\t\t\trim: list[0].Rim,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t\tdispatch(hideHighlightsTiresList({ hide: true }));\n\t\t\t\t\tdispatch(setVehicleType({ value: vType[0] }));\n\t\t\t\t\tdispatch(setSizeSaeTiresScroll({ scroll: true }));\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log(\"Error\", error);\n\t\t\t});\n\t};\nexport const scrollToSizeSaeTires = () => async (dispatch, getState) => {\n\tconst theState = getState();\n\tif (theState.sizeSaeTires.list != null && theState.sizeSaeTires.scroll) {\n\t\tlet scroll = Scroll.animateScroll;\n\t\tlet target = document.getElementById(\"resultCarousel\");\n\t\tlet targetPos =\n\t\t\ttarget.offsetWidth > 980 ? target.offsetTop - 100 : target.offsetTop - 50;\n\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\tdispatch(setSizeSaeTiresScroll({ scroll: false }));\n\t}\n};\n\nexport default sizeSaeTires.reducer;\n","const { createSlice } = require(\"@reduxjs/toolkit\");\n\nconst initialState = {\n\tfocus: null,\n\tisSAE: false,\n\tfirst: null,\n\tsecond: null,\n\tthird: null,\n\tfirstLoad: true,\n};\n\nconst sizeCanvas = createSlice({\n\tname: \"sizeCanvas\",\n\tinitialState,\n\treducers: {\n\t\tsetCanvasFirstItem(state, action) {\n\t\t\tstate.first = action.payload.first;\n\t\t\tstate.second = null;\n\t\t\tstate.third = null;\n\t\t\tstate.focus = null;\n\t\t\tstate.isSAE = action.payload.isSAE;\n\t\t\tstate.firstLoad = false;\n\t\t},\n\t\tsetCanvasSecondItem(state, action) {\n\t\t\tstate.second = action.payload.second;\n\t\t\tstate.third = null;\n\t\t\tstate.firstLoad = false;\n\t\t},\n\t\tsetCanvasThirdItem(state, action) {\n\t\t\tstate.third = action.payload.third;\n\t\t\tstate.firstLoad = false;\n\t\t},\n\t\tsetCanvasFocus(state, action) {\n\t\t\tstate.focus = action.payload.focus;\n\t\t\tstate.firstLoad = false;\n\t\t},\n\t},\n});\n\nexport const { \n\tsetCanvasFirstItem, \n\tsetCanvasSecondItem,\n\tsetCanvasThirdItem,\n\tsetCanvasFocus,\n } = sizeCanvas.actions;\n\nexport default sizeCanvas.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport Scroll from \"react-scroll\";\nimport { BASE_API_URL } from \"../constants\";\nimport { isServer } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\tcode: null,\n\tscroll: false,\n};\nconst codeTires = createSlice({\n\tname: \"codeTires\",\n\tinitialState,\n\treducers: {\n\t\trequestCodeTiresList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCodeTiresList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tsetCodeTiresCode(state, action) {\n\t\t\tstate.code = action.payload.code;\n\t\t},\n\t\tsetCodeTiresScroll(state, action) {\n\t\t\tstate.scroll = action.payload.scroll;\n\t\t},\n\t\tclearCodeTiresData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestCodeTiresList,\n\treceiveCodeTiresList,\n\tsetCodeTiresCode,\n\tsetCodeTiresScroll,\n\tclearCodeTiresData,\n} = codeTires.actions;\n\nconst shouldFetchCodeTiresList = (state, code) => {\n\tconst tires = state.codeTires;\n\tif (tires.list == null) {\n\t\treturn true;\n\t}\n\tif (code != null && code !== tires.code) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchCodeTiresListIfNeeded =\n\t(code) => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tif (shouldFetchCodeTiresList(theState, code)) {\n\t\t\treturn dispatch(fetchCodeTiresList(code));\n\t\t}\n\t};\n\nexport const fetchCodeTiresList = (code) => async (dispatch, getState) => {\n\tconst headers = isServer\n\t\t? {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tOrigin: [process.env.RAZZLE_SRV_HOST],\n\t\t }\n\t\t: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t };\n\tconst options = {\n\t\t//method: \"GET\",\n\t\theaders: headers,\n\t};\n\tconst theState = getState();\n\tconst coupon =\n\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\tdispatch(requestCodeTiresList());\n\tconst url =\n\t\tcoupon != null\n\t\t\t? BASE_API_URL + \"/api/Productos/Codigo/?id=\" + code + \"&cupon=\" + coupon\n\t\t\t: BASE_API_URL + \"/api/Productos/Codigo/?id=\" + code;\n\tawait axios\n\t\t.get(url, options)\n\t\t.then((response) => {\n\t\t\tdispatch(receiveCodeTiresList({ list: response.data }));\n\t\t\tdispatch(setCodeTiresScroll({ scroll: true }));\n\t\t\tdispatch(setCodeTiresCode({ code }));\n\t\t})\n\t\t.catch((error) => {\n\t\t\t// TODO: fetch error actions\n\t\t\tdispatch(clearCodeTiresData());\n\t\t});\n};\nexport const scrollToCodeTires = () => async (dispatch, getState) => {\n\tconst theState = getState();\n\tif (theState.codeTires.list != null && theState.codeTires.scroll) {\n\t\tlet scroll = Scroll.animateScroll;\n\t\tlet target = document.getElementById(\"resultCarousel\");\n\t\tlet targetPos =\n\t\t\ttarget.offsetWidth > 980 ? target.offsetTop - 100 : target.offsetTop - 50;\n\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\tdispatch(setCodeTiresScroll({ scroll: false }));\n\t}\n};\nexport default codeTires.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport {\n\tgetMatchingSearchItems,\n\tgetMatchingItemById,\n} from \"features/functions\";\nimport {\n\tclearSearchResultData,\n\tfetchSearchResultsTireListIfNeeded,\n\thideSearchResultsList,\n} from \"features/tireResults/searchTiresSlice\";\nimport { hideHighlightsTiresList } from \"features/tireResults/highlightsTiresSlice\";\nimport { clearVehicleTiresData } from \"features/tireResults/vehicleTiresSlice\";\nimport { clearVehicleBrandValue } from \"./vehicleBrandsSlice\";\nimport { clearVehicleModelValue } from \"./vehicleModelsSlice\";\nimport { clearVehicleYearValue } from \"./vehicleYearsSlice\";\nimport { clearVehicleVersionValue } from \"./vehicleVersionsSlice\";\nimport { clearWidthDiameterValue } from \"./sizeWidthDiametersSlice\";\nimport { clearSizeRatioValue } from \"./sizeRatiosSlice\";\nimport { clearSizeRimValue } from \"./sizeRimsSlice\";\nimport { clearWidthSaeValue } from \"./sizeSaeWidthsSlice\";\nimport { clearSizeRimSaeValue } from \"./sizeSaeRimsSlice\";\nimport { clearSizeTiresList } from \"features/tireResults/sizeTiresSlice\";\nimport { clearSizeSaeTiresList } from \"features/tireResults/sizeSaeTiresSlice\";\nimport {\n\tsetCanvasFirstItem,\n\tsetCanvasSecondItem,\n\tsetCanvasThirdItem,\n} from \"features/tireFinder/sizeCanvasSlice\";\nimport { clearCodeTiresData } from \"features/tireResults/codeTiresSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\tshowField: false,\n};\n\nconst search = createSlice({\n\tname: \"search\",\n\tinitialState,\n\treducers: {\n\t\trequestSearchList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveSearchList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tloadSearchSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateSearchSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (action.payload.update) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateSearchValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateSearchItem(state, action) {\n\t\t\tconst selectedItem = action.payload.selectedItem;\n\t\t\tif (selectedItem != null && selectedItem.Value != null) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Producto\",\n\t\t\t\t\taction: \"Buscar\",\n\t\t\t\t\tlabel: selectedItem.Name,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.selectedItem = selectedItem;\n\t\t},\n\t\tclearSearchSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearSearchValue(state) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t},\n\t\ttoggleShowSearchField(state, action) {\n\t\t\tstate.showField = !action.payload.showField;\n\t\t},\n\t\tclearSearchData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestSearchList,\n\treceiveSearchList,\n\tloadSearchSuggestionsBegin,\n\tmaybeUpdateSearchSuggestions,\n\tupdateSearchValue,\n\tupdateSearchItem,\n\tclearSearchSuggestions,\n\tclearSearchValue,\n\ttoggleShowSearchField,\n\tclearSearchData,\n} = search.actions;\nexport const clearSearchActions = () => (dispatch) => {\n\tdispatch(clearSearchValue());\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasFirstItem({ first: null, isSAE: false }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleBrandValue());\n\tdispatch(clearVehicleModelValue({ renderInput: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearWidthDiameterValue());\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: true }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const changeSearchActions = () => (dispatch) => {\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasFirstItem({ first: null, isSAE: false }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleBrandValue());\n\tdispatch(clearVehicleModelValue({ renderInput: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearWidthDiameterValue());\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: true }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearVehicleBrandActions = () => (dispatch) => {\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasFirstItem({ first: null, isSAE: false }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleModelValue({ renderInput: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearWidthDiameterValue());\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: true }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearVehicleModelActions = () => (dispatch) => {\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasFirstItem({ first: null, isSAE: false }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearWidthDiameterValue());\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: true }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearVehicleYearActions = () => (dispatch) => {\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasFirstItem({ first: null, isSAE: false }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearWidthDiameterValue());\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: true }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearVehicleVersionActions = () => (dispatch) => {\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasFirstItem({ first: null, isSAE: false }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearWidthDiameterValue());\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: true }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearSizeWidthDiameterActions = () => (dispatch) => {\n\tdispatch(clearSearchValue());\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasSecondItem({ second: null }));\n\tdispatch(setCanvasThirdItem({ third: null }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleBrandValue());\n\tdispatch(clearVehicleModelValue({ renderInput: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: true }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearSizeRatioActions = () => (dispatch) => {\n\tdispatch(clearSearchValue());\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasThirdItem({ third: null }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleBrandValue());\n\tdispatch(clearVehicleModelValue({ renderInput: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearSizeRimActions = () => (dispatch) => {\n\tdispatch(clearSearchValue());\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasThirdItem({ third: null }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleBrandValue());\n\tdispatch(clearVehicleModelValue({ renderInput: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearSizeSaeWidthActions = () => (dispatch) => {\n\tdispatch(clearSearchValue());\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasThirdItem({ third: null }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleBrandValue());\n\tdispatch(clearVehicleModelValue({ renderInput: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: true }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nexport const clearSizeSaeRimActions = () => (dispatch) => {\n\tdispatch(clearSearchValue());\n\tdispatch(hideSearchResultsList({ hide: true }));\n\tdispatch(clearSearchResultData());\n\tdispatch(setCanvasThirdItem({ third: null }));\n\tdispatch(toggleShowSearchField({ showField: true }));\n\tdispatch(clearVehicleTiresData());\n\tdispatch(hideHighlightsTiresList({ hide: false }));\n\tdispatch(clearVehicleBrandValue());\n\tdispatch(clearVehicleModelValue({ renderInput: false }));\n\tdispatch(clearVehicleYearValue({ renderInput: false }));\n\tdispatch(clearVehicleVersionValue({ renderInput: false }));\n\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeRimValue({ renderInput: false, showInput: false }));\n\tdispatch(clearSizeTiresList());\n\tdispatch(clearSizeSaeTiresList());\n\tdispatch(clearCodeTiresData());\n};\nconst shouldFetchSearch = (state) => {\n\tif (state.search.list == null) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchSearchIfNeeded = () => async (dispatch, getState) => {\n\tconst theState = getState();\n\tif (shouldFetchSearch(theState)) {\n\t\treturn dispatch(fetchSearch());\n\t}\n};\nexport const loadSearchSuggestions = (value) => async (dispatch, getState) => {\n\tdispatch(loadSearchSuggestionsBegin());\n\tdispatch(fetchSearchIfNeeded());\n\tconst theState = getState();\n\tconst update = theState.search.value === value;\n\tsetTimeout(() => {\n\t\tdispatch(\n\t\t\tmaybeUpdateSearchSuggestions({\n\t\t\t\tsuggestions: getMatchingSearchItems(theState.search, value),\n\t\t\t\tupdate,\n\t\t\t})\n\t\t);\n\t});\n};\n\nexport const updateSearchResultTiresFromURL =\n\t(productId) => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tif (theState.search.list != null) {\n\t\t\t// filtrar el item por id\n\t\t\tconst item = getMatchingItemById(theState.search, productId);\n\t\t\tif (item != null) {\n\t\t\t\tdispatch(updateSearchItem({ selectedItem: item }));\n\t\t\t\tdispatch(fetchSearchResultsTireListIfNeeded());\n\t\t\t}\n\t\t}\n\t};\n\nexport const fetchSearch = (productId) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestSearchList());\n\tconst url = BASE_API_URL + \"/api/Productos\";\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveSearchList({ list: json }));\n\t\t\tif (productId != null) {\n\t\t\t\tdispatch(updateSearchResultTiresFromURL(productId));\n\t\t\t}\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport default search.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport ReactGA from \"react-ga4\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"../constants\";\nimport { runAuthenticatedActions, runUnauthorizedActions } from \"./loginSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n};\n\nconst accountSlice = createSlice({\n\tname: \"account\",\n\tinitialState,\n\treducers: {\n\t\trequestAccountData(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveAccountData(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\ttoggleShowAccountData(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\taction: \"Mostrar Detalles\"});\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t},\n});\n\nexport const { requestAccountData, receiveAccountData, toggleShowAccountData } =\n\taccountSlice.actions;\n\nexport const fetchAccount = () => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\t//method: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tdispatch(requestAccountData());\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta\";\n\t\t\treturn axios\n\t\t\t\t.get(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tsessionService\n\t\t\t\t\t\t.saveUser({ user: response.data })\n\t\t\t\t\t\t.then()\n\t\t\t\t\t\t.catch((error) => console.log(\"error\", error));\n\t\t\t\t\tdispatch(receiveAccountData());\n\t\t\t\t\tdispatch(runAuthenticatedActions());\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default accountSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\n\nconst alert = createSlice({\n\tname: \"resetPassword\",\n\tinitialState: {\n\t\tisOpen: false,\n\t\talert: null,\n\t},\n\treducers: {\n\t\tsetAlert(state, action) {\n\t\t\tstate.alert = action.payload.alert;\n\t\t},\n\t\ttoggleShowAlert(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Alerta\",\n\t\t\t\t\taction: \"Mostrar alerta\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t},\n});\n\nexport const { setAlert, toggleShowAlert } = alert.actions;\n\nexport default alert.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getPropertyArray } from \"../functions\";\nimport { runUnauthorizedActions } from \"features/account/loginSlice\";\nimport { setCartShipAddress } from \"./cartSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\tstateList: null,\n\tselectedState: null,\n\tcityList: null,\n\tselectedCity: null,\n};\n\nconst dealerShipAddress = createSlice({\n\tname: \"dealerShipAddress\",\n\tinitialState,\n\treducers: {\n\t\trequestDealerShipAddress(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveDealerShipAddress(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tsetDealerShipAddressStateList(state, action) {\n\t\t\tconst stateList = getPropertyArray(action.payload.list, \"State\");\n\t\t\tstate.stateList = stateList;\n\t\t},\n\t\tsetDealerShipAddressSelectedState(state, action) {\n\t\t\tstate.selectedState = action.payload.selectedState;\n\t\t},\n\t\tsetDealerShipAddressCityList(state, action) {\n\t\t\tconst filter = (item) => {\n\t\t\t\treturn item.State === action.payload.selectedState.value;\n\t\t\t};\n\t\t\tconst cityList = getPropertyArray(action.payload.list, \"City\", filter);\n\t\t\tstate.cityList = cityList;\n\t\t},\n\t\tsetDealerShipAddressSelectedCity(state, action) {\n\t\t\tstate.selectedCity = action.payload.selectedCity;\n\t\t},\n\t\tclearDealerShipAddressData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestDealerShipAddress,\n\treceiveDealerShipAddress,\n\tsetDealerShipAddressStateList,\n\tsetDealerShipAddressSelectedState,\n\tsetDealerShipAddressCityList,\n\tsetDealerShipAddressSelectedCity,\n\tclearDealerShipAddressData,\n} = dealerShipAddress.actions;\n\nconst shouldFetchDealerShipAddressList = (state) => {\n const {dealerShipAddress} = state\n\tif (dealerShipAddress.list == null) {\n\t\tif (!dealerShipAddress.isLoading){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n};\n\nexport const fetchDealerShipAddressListIfNeeded = () => async (\n\tdispatch,\n\tgetState\n) => {\n\tconst theState = getState();\n\tif (shouldFetchDealerShipAddressList(theState)) {\n\t\treturn dispatch(fetchDealerShipAddress());\n\t}\n};\n\nexport const setDealerShipAddressDefaultSelectedCity = () => async (\n\tdispatch,\n\tgetState\n) => {\n\tconst theState = getState();\n\tconst { dealerShipAddress } = theState;\n\tif (\n\t\tdealerShipAddress.cityList != null &&\n\t\tdealerShipAddress.cityList.length > 0\n\t) {\n\t\tdispatch(\n\t\t\tsetDealerShipAddressSelectedCity({\n\t\t\t\tselectedCity: dealerShipAddress.cityList[0],\n\t\t\t})\n\t\t);\n\t}\n};\n\nexport const fetchDealerShipAddress = () => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tdispatch(requestDealerShipAddress());\n\t\t\tconst url = BASE_API_URL + \"/api/Envios/Distribuidores\";\n\t\t\tlet responseStatus = 0;\n\t\t\treturn fetch(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tresponseStatus = response.status;\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((json) => {\n\t\t\t\t\tif (json.length === 0) {\n\t\t\t\t\t\tdispatch(setCartShipAddress({shipAddress: null, shipAddressItem: null}))\n\t\t\t\t\t\tdispatch(receiveDealerShipAddress({list: null}))\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst selectedState = {label: json[0].State, value: json[0].State}\n\t\t\t\t\t\tconst selectedCity = {label: json[0].City, value: json[0].City}\n\t\t\t\t\t\tdispatch(receiveDealerShipAddress({list: json}))\n\t\t\t\t\t\tdispatch(setDealerShipAddressStateList({list: json}))\n\t\t\t\t\t\tdispatch(setDealerShipAddressCityList({list: json, selectedState}))\n\t\t\t\t\t\tdispatch(setDealerShipAddressSelectedState({selectedState}))\n\t\t\t\t\t\tdispatch(setDealerShipAddressSelectedCity({selectedCity}))\n\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// TODO: fetch error actions\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (responseStatus === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default dealerShipAddress.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { runUnauthorizedActions } from \"features/account/loginSlice\";\nimport axios from \"axios\";\n\nconst initialState = {\n\tisLoading: false,\n\tisLoadingItem: false,\n\tlist: null,\n\tisOpen: false,\n\tisOpenItem: false,\n\tselectedItem: null,\n\titem: null,\n};\nconst orders = createSlice({\n\tname: \"orders\",\n\tinitialState,\n\treducers: {\n\t\trequestOrdersList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveOrdersList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\ttoggleShowOrdersList(state, action) {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\taction: \"Pedidos\",\n\t\t\t});\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetOrdersListSelectedItem(state, action) {\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\ttoggleShowOrdersListItem(state, action) {\n\t\t\tstate.isOpenItem = !action.payload.isOpenItem;\n\t\t},\n\t\trequestOrder(state) {\n\t\t\tstate.isLoadingItem = true;\n\t\t},\n\t\treceiveOrder(state, action) {\n\t\t\tstate.isLoadingItem = false;\n\t\t\tstate.item = action.payload.item;\n\t\t},\n\t\tclearOrdersData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestOrdersList,\n\treceiveOrdersList,\n\ttoggleShowOrdersList,\n\tsetOrdersListSelectedItem,\n\ttoggleShowOrdersListItem,\n\trequestOrder,\n\treceiveOrder,\n\tclearOrdersData,\n} = orders.actions;\n\nconst shouldFetchOrder = (state, selected) => {\n\tif (state.orders.item == null) {\n\t\treturn true;\n\t}\n\tconst oldSelected = state.orders.selectedItem;\n\tif (oldSelected == null) {\n\t\treturn true;\n\t}\n\tif (oldSelected !== selected) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchOrderIfNeeded = (selected) => async (dispatch, getState) => {\n\tconst theState = getState();\n\tif (shouldFetchOrder(theState, selected)) {\n\t\treturn dispatch(fetchOrder(selected.Id));\n\t}\n};\n\nexport const fetchOrdersList = () => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tdispatch(requestOrdersList());\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/MisPedidos\";\n\t\t\tlet responseStatus = 0;\n\t\t\treturn fetch(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tresponseStatus = response.status;\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((json) => {\n\t\t\t\t\tdispatch(receiveOrdersList({ list: json }));\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// TODO: fetch error actions\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (responseStatus === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport const fetchOrder = (id) => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tdispatch(requestOrder());\n\t\t\tconst url = BASE_API_URL + \"/api/Pedidos/MisPedidos/\" + id;\n\t\t\treturn axios\n\t\t\t\t.get(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tdispatch(toggleShowOrdersListItem({ isOpenItem: false }));\n\t\t\t\t\tdispatch(receiveOrder({ item: response.data }));\n\t\t\t\t\tdispatch(setOrdersListSelectedItem({ selectedItem: response.data.Id }));\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Usuario\",\n\t\t\t\t\t\taction: \"Pedidos\",\n\t\t\t\t\t\tlabel: \"Detalles de Pedido\",\n\t\t\t\t\t\tvalue: response.data.Numero,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tdispatch(receiveOrder({ item: null }));\n\t\t\t\t\tdispatch(setOrdersListSelectedItem({ selectedItem: null }));\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default orders.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport axios from \"axios\";\nimport { BASE_API_URL, ORDER_STATUS_TYPES } from \"../constants\";\nimport { runUnauthorizedActions } from \"features/account/loginSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\torderId: null,\n\torder: null,\n\thasQueryString: false,\n};\nconst orderConfirmation = createSlice({\n\tname: \"orderConfirmation\",\n\tinitialState,\n\treducers: {\n\t\trequestOrderConfirmation(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveOrderConfirmation(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.order = action.payload.order;\n\t\t},\n\t\tsetOrderConfirmationId(state, action) {\n\t\t\tstate.orderId = action.payload.orderId;\n\t\t},\n\t\ttoggleShowOrderConfirmation(state, action) {\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetOrderConfirmationQueryString(state, action) {\n\t\t\tstate.hasQueryString = action.payload.hasQueryString;\n\t\t},\n\t\tclearOrderConfirmationData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestOrderConfirmation,\n\treceiveOrderConfirmation,\n\tsetOrderConfirmationId,\n\ttoggleShowOrderConfirmation,\n\tsetOrderConfirmationQueryString,\n\tclearOrderConfirmationData,\n} = orderConfirmation.actions;\n\nexport const evaluateShowOrderConfirmation =\n\t() => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tconst order = theState.orderConfirmation.order;\n\t\tif (\n\t\t\torder.Estatus === ORDER_STATUS_TYPES.INCOMPLETE ||\n\t\t\torder.Estatus === ORDER_STATUS_TYPES.RESERVE ||\n\t\t\torder.Estatus === ORDER_STATUS_TYPES.VALIDATION ||\n\t\t\torder.Estatus === ORDER_STATUS_TYPES.NOT_AUTHORIZED\n\t\t) {\n\t\t\tdispatch(toggleShowOrderConfirmation({ isOpen: false }));\n\t\t} else {\n\t\t\tdispatch(receiveOrderConfirmation({ order: null }));\n\t\t\tdispatch(setOrderConfirmationId({ orderId: null }));\n\t\t}\n\t};\n\nexport const fetchOrderConfirmation = () => async (dispatch, getState) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst theState = getState();\n\t\t\tdispatch(requestOrderConfirmation());\n\t\t\tconst url =\n\t\t\t\tBASE_API_URL +\n\t\t\t\t\"/api/Pedidos/Confirmacion/\" +\n\t\t\t\ttheState.orderConfirmation.orderId;\n\t\t\treturn axios\n\t\t\t\t.get(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tdispatch(receiveOrderConfirmation({ order: response.data }));\n\t\t\t\t\tdispatch(evaluateShowOrderConfirmation());\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default orderConfirmation.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsCities } from \"../functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\tstateId: null,\n};\n\nconst cities = createSlice({\n\tname: \"cities\",\n\tinitialState,\n\treducers: {\n\t\trequestCitiesList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCitiesList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tloadCitiesSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateCitiesSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tsetCitiesStateId(state, action) {\n\t\t\tstate.stateId = action.payload.stateId;\n\t\t},\n\t\tupdateCityValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateCityItem(state, action) {\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\tclearCitiesSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearCityValue(state) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t},\n\t},\n});\n\nexport const {\n\trequestCitiesList,\n\treceiveCitiesList,\n\tloadCitiesSuggestionsBegin,\n\tmaybeUpdateCitiesSuggestions,\n\tsetCitiesStateId,\n\tupdateCityValue,\n\tupdateCityItem,\n\tclearCitiesSuggestions,\n\tclearCityValue,\n} = cities.actions;\n\nconst shouldFetchCities = (state, stateId) => {\n\tif (state.cities.list == null) {\n\t\treturn true;\n\t}\n\tif (state.cities.stateId !== stateId) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchCitiesIfNeeded = (stateId) => async (dispatch, getState) => {\n\tif (shouldFetchCities(getState(), stateId)) {\n\t\treturn dispatch(fetchCities(stateId));\n\t}\n};\n\nexport const loadCitiesSuggestions = (value) => async (dispatch, getState) => {\n\tconst theState = getState();\n\tdispatch(loadCitiesSuggestionsBegin());\n\tdispatch(fetchCitiesIfNeeded(theState.cities.stateId));\n\tsetTimeout(() => {\n\t\tdispatch(\n\t\t\tmaybeUpdateCitiesSuggestions({\n\t\t\t\tsuggestions: getMatchingItemsCities(theState.cities, value),\n\t\t\t\tvalue,\n\t\t\t})\n\t\t);\n\t});\n};\n\nexport const fetchCities = (stateId) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\t//method: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestCitiesList());\n\tconst url = BASE_API_URL + \"/api/Cuenta/Ciudades/\" + stateId;\n\treturn axios\n\t\t.get(url, options)\n\t\t.then((response) => {\n\t\t\tdispatch(receiveCitiesList({ list: response.data }));\n\t\t})\n\t\t.catch((error) => {\n\t\t\t// If 401 Unauthorized login failed\n\t\t});\n};\n\nexport default cities.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsCounties } from \"../functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\tstateId: null,\n};\n\nconst counties = createSlice({\n\tname: \"counties\",\n\tinitialState,\n\treducers: {\n\t\trequestCountiesList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCountiesList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tloadCountiesSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateCountiesSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tsetCountiesStateId(state, action) {\n\t\t\tstate.stateId = action.payload.stateId;\n\t\t},\n\t\tupdateCountyValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateCountyItem(state, action) {\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\tclearCountiesSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearCountyValue(state) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t},\n\t},\n});\n\nexport const {\n\trequestCountiesList,\n\treceiveCountiesList,\n\tloadCountiesSuggestionsBegin,\n\tmaybeUpdateCountiesSuggestions,\n\tsetCountiesStateId,\n\tupdateCountyValue,\n\tupdateCountyItem,\n\tclearCountiesSuggestions,\n\tclearCountyValue,\n} = counties.actions;\n\nconst shouldFetchCounties = (state, stateId) => {\n\tif (state.counties.list == null) {\n\t\treturn true;\n\t}\n\tif (state.counties.stateId !== stateId) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchCountiesIfNeeded =\n\t(stateId) => async (dispatch, getState) => {\n\t\tif (shouldFetchCounties(getState(), stateId)) {\n\t\t\treturn dispatch(fetchCounties(stateId));\n\t\t}\n\t};\n\nexport const loadCountiesSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tdispatch(loadCountiesSuggestionsBegin());\n\t\tdispatch(fetchCountiesIfNeeded(theState.counties.stateId));\n\t\tsetTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateCountiesSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsCounties(theState.counties, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\n\nexport const fetchCounties = (stateId) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestCountiesList());\n\treturn fetch(BASE_API_URL + \"/api/Cuenta/Municipios/\" + stateId, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveCountiesList({ list: json }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// If 401 Unauthorized login failed\n\t\t});\n};\n\nexport default counties.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport ReactGA from \"react-ga4\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"../constants\";\nimport {\n\tclearCartShipAddress,\n\tsetCartShipAddress,\n} from \"features/cart/cartSlice\";\nimport { updateCityValue } from \"./citiesSlice\";\nimport { updateCountyValue } from \"./countiesSlice\";\nimport { setAlert, toggleShowAlert } from \"features/alerts/alertsSlice\";\nimport { runUnauthorizedActions } from \"features/account/loginSlice\";\nimport { response } from \"express\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\tisOpenAdd: false,\n\tisOpen: false,\n\tselectedState: null,\n\tcity: { Cd: \"\", Municipio: \"\" },\n\terrorMsg: null,\n};\n\nconst shipAddress = createSlice({\n\tname: \"shipAddress\",\n\tinitialState,\n\treducers: {\n\t\trequestShipAddress(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveShipAddress(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\ttoggleShowShipAddressAdd(state, action) {\n\t\t\tif (!action.payload.isOpenAdd) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\taction: \"Agregar Dirección de Envío\"});\n\t\t\t}\n\t\t\tstate.isOpenAdd = !action.payload.isOpenAdd;\n\t\t},\n\t\ttoggleShowShipAddress(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\taction: \"Mostrar Direcciones de Envío\"});\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetShipAddressSelectedState(state, action) {\n\t\t\tstate.selectedState = action.payload.selectedState;\n\t\t},\n\t\trequestShipAddressCity(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveShipAddressCity(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.city = action.payload.city;\n\t\t},\n\t\tsetShipAddressErrorMessage(state, action) {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tsetShipAddressAddFinish(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\tclearShipAddressAddData(state) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.isOpenAdd = false;\n\t\t\tstate.selectedState = null;\n\t\t\tstate.city = { Cd: \"\", Municipio: \"\" };\n\t\t\tstate.errorMsg = null;\n\t\t},\n\t\tclearShipAddressData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestShipAddress,\n\treceiveShipAddress,\n\ttoggleShowShipAddressAdd,\n\ttoggleShowShipAddress,\n\tsetShipAddressSelectedState,\n\trequestShipAddressCity,\n\treceiveShipAddressCity,\n\tsetShipAddressErrorMessage,\n\tsetShipAddressAddFinish,\n\tclearShipAddressAddData,\n\tclearShipAddressData,\n} = shipAddress.actions;\n\nconst shouldFetchShipAddressList = (state) => {\n\tconst shipAddress = state.shipAddress;\n\tif (shipAddress.list == null) {\n\t\tif (!shipAddress.isLoading) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n};\nexport const fetchShipAddressListIfNeeded =\n\t() => async (dispatch, getState) => {\n\t\tawait sessionService.loadSession().then(() => {\n\t\t\tif (shouldFetchShipAddressList(getState())) {\n\t\t\t\treturn dispatch(fetchShipAddress());\n\t\t\t}\n\t\t\tconst theState = getState();\n\t\t\tif (theState.shipAddress.list !== null) {\n\t\t\t\tif (\n\t\t\t\t\ttheState.shipAddress.list.length > 0 &&\n\t\t\t\t\ttheState.cart.shipAddress === null\n\t\t\t\t) {\n\t\t\t\t\treturn dispatch(\n\t\t\t\t\t\tsetCartShipAddress({\n\t\t\t\t\t\t\tshipAddress: 0,\n\t\t\t\t\t\t\tshipAddressItem: theState.shipAddress.list[0],\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\nexport const fetchShipAddress = () => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\t//method: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\t//let responseStatus;\n\t\t\tdispatch(requestShipAddress());\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/MisDirecciones/2\";\n\t\t\treturn axios\n\t\t\t\t.get(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tif (response.data.Envio.length === 0) {\n\t\t\t\t\t\tdispatch(clearCartShipAddress());\n\t\t\t\t\t\tdispatch(receiveShipAddress({ list: null }));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetCartShipAddress({\n\t\t\t\t\t\t\t\tshipAddress: 0,\n\t\t\t\t\t\t\t\tshipAddressItem: response.data.Envio[0],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(receiveShipAddress({ list: response.data.Envio }));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\nexport const fetchShipAddressCity = (zipCode) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestShipAddressCity());\n\treturn fetch(BASE_API_URL + \"/api/Cuenta/Ciudad/\" + zipCode, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveShipAddressCity({ city: json }));\n\t\t\tdispatch(updateCityValue({ value: json.Cd }));\n\t\t\tdispatch(updateCountyValue({ value: json.Municipio }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport const fetchAddShipAddress = (address) => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst body = JSON.stringify({\n\t\t\t\ttipo: 2,\n\t\t\t\talias: address.alias,\n\t\t\t\ttel: address.phone,\n\t\t\t\tcalle: address.street,\n\t\t\t\tnumext: address.ext,\n\t\t\t\tnumint: address.int,\n\t\t\t\tcp: address.zip,\n\t\t\t\tcol: address.neighborhood,\n\t\t\t\tcd: address.city,\n\t\t\t\tmpio: address.county,\n\t\t\t\tedo: address.stateId,\n\t\t\t\trfc: \"\",\n\t\t\t\trsoc: \"\",\n\t\t\t\tlat: \"\",\n\t\t\t\tlon: \"\",\n\t\t\t});\n\t\t\tdispatch(requestShipAddress());\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/AgregaDireccion/\";\n\t\t\treturn axios\n\t\t\t\t.post(url, body, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tif (response.data.Envio.length > 0) {\n\t\t\t\t\t\tdispatch(receiveShipAddress({ list: response.data.Envio }));\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetCartShipAddress({\n\t\t\t\t\t\t\t\tshipAddress: 0,\n\t\t\t\t\t\t\t\tshipAddressItem: response.data.Envio[0],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(clearCartShipAddress());\n\t\t\t\t\t\tdispatch(receiveShipAddress({ list: null }));\n\t\t\t\t\t}\n\t\t\t\t\tdispatch(toggleShowShipAddressAdd({ isOpenAdd: true }));\n\t\t\t\t\tdispatch(setShipAddressErrorMessage({ errorMsg: null }));\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t\t// If 400 BadRequest model state\n\t\t\t\t\tif (error.response.status === 400) {\n\t\t\t\t\t\tif (error.response.data.Message != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido agregar la dirección. Verifique los datos y vuelva a intentar.\",\n\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(setInvoiceAddressAddFinish());\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\t\t\t\t\terrorMsg: { error: error.response.data.Message },\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default shipAddress.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport ReactGA from \"react-ga4\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"../constants\";\nimport {\n\tclearCartInvoiceAddress,\n\tsetCartInvoiceAddress,\n} from \"features/cart/cartSlice\";\nimport { updateCityValue } from \"./citiesSlice\";\nimport { updateCountyValue } from \"./countiesSlice\";\nimport { setAlert, toggleShowAlert } from \"features/alerts/alertsSlice\";\nimport { runUnauthorizedActions } from \"features/account/loginSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\tisOpenAdd: false,\n\tisOpen: false,\n\tselectedState: null,\n\tcity: { Cd: \"\", Municipio: \"\" },\n\terrorMsg: null,\n};\n\nconst invoiceAddress = createSlice({\n\tname: \"invoiceAddress\",\n\tinitialState,\n\treducers: {\n\t\trequestInvoiceAddress(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveInvoiceAddress(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\ttoggleShowInvoiceAddressAdd(state, action) {\n\t\t\tif (!action.payload.isOpenAdd) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\taction: \"Agregar Dirección de Facturación\"});\n\t\t\t}\n\t\t\tstate.isOpenAdd = !action.payload.isOpenAdd;\n\t\t},\n\t\ttoggleShowInvoiceAddress(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\taction: \"Mostrar Direcciones de Facturaicón\"});\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetInvoiceAddressSelectedState(state, action) {\n\t\t\tstate.selectedState = action.payload.selectedState;\n\t\t},\n\t\trequestInvoiceAddressCity(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveInvoiceAddressCity(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.city = action.payload.city;\n\t\t},\n\t\tsetInvoiceAddressErrorMessage(state, action) {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tsetInvoiceAddressAddFinish(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\tclearInvoiceAddressAddData(state) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.isOpenAdd = false;\n\t\t\tstate.selectedState = null;\n\t\t\tstate.city = { Cd: \"\", Municipio: \"\" };\n\t\t\tstate.errorMsg = null;\n\t\t},\n\t\tclearInvoiceAddressData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestInvoiceAddress,\n\treceiveInvoiceAddress,\n\ttoggleShowInvoiceAddressAdd,\n\ttoggleShowInvoiceAddress,\n\tsetInvoiceAddressSelectedState,\n\trequestInvoiceAddressCity,\n\treceiveInvoiceAddressCity,\n\tsetInvoiceAddressErrorMessage,\n\tsetInvoiceAddressAddFinish,\n\tclearInvoiceAddressAddData,\n\tclearInvoiceAddressData,\n} = invoiceAddress.actions;\n\nconst shouldFetchInvoiceAddressList = (state) => {\n\tconst invoiceAddress = state.invoiceAddress;\n\tif (invoiceAddress.list == null) {\n\t\tif (!invoiceAddress.isLoading) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n};\nexport const fetchInvoiceAddressListIfNeeded =\n\t() => async (dispatch, getState) => {\n\t\tawait sessionService.loadSession().then(() => {\n\t\t\tif (shouldFetchInvoiceAddressList(getState())) {\n\t\t\t\treturn dispatch(fetchInvoiceAddress());\n\t\t\t}\n\t\t\tconst theState = getState();\n\t\t\tif (theState.invoiceAddress.list !== null) {\n\t\t\t\tif (\n\t\t\t\t\ttheState.invoiceAddress.list.length > 0 &&\n\t\t\t\t\ttheState.cart.invoiceAddress === null\n\t\t\t\t) {\n\t\t\t\t\treturn dispatch(\n\t\t\t\t\t\tsetCartInvoiceAddress({\n\t\t\t\t\t\t\tinvoiceAddress: 0,\n\t\t\t\t\t\t\tinvoiceAddressItem: theState.invoiceAddress.list[0],\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\nexport const fetchInvoiceAddress = () => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\t//method: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tdispatch(requestInvoiceAddress());\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/MisDirecciones/3\";\n\t\t\treturn axios\n\t\t\t\t.get(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tif (response.data.Facturacion.length === 0) {\n\t\t\t\t\t\tdispatch(clearCartInvoiceAddress());\n\t\t\t\t\t\tdispatch(receiveInvoiceAddress({ list: null }));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetCartInvoiceAddress({\n\t\t\t\t\t\t\t\tinvoiceAddress: 0,\n\t\t\t\t\t\t\t\tinvoiceAddressItem: response.data.Facturacion[0],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\treceiveInvoiceAddress({ list: response.data.Facturacion })\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\nexport const fetchInvoiceAddressCity = (zipCode) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestInvoiceAddressCity());\n\treturn fetch(BASE_API_URL + \"/api/Cuenta/Ciudad/\" + zipCode, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveInvoiceAddressCity({ city: json }));\n\t\t\tdispatch(updateCityValue({ value: json.Cd }));\n\t\t\tdispatch(updateCountyValue({ value: json.Municipio }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// TODO: fetch error actions\n\t\t});\n};\n\nexport const fetchAddInvoiceAddress = (address) => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst data = JSON.stringify({\n\t\t\t\ttipo: 3,\n\t\t\t\talias: address.alias,\n\t\t\t\tcalle: address.street,\n\t\t\t\tnumext: address.ext,\n\t\t\t\tnumint: address.int,\n\t\t\t\tcp: address.zip,\n\t\t\t\tcol: address.neighborhood,\n\t\t\t\tcd: address.city,\n\t\t\t\tmpio: address.county,\n\t\t\t\tedo: address.stateId,\n\t\t\t\ttel: \"\",\n\t\t\t\trfc: address.rfc,\n\t\t\t\trsoc: address.name,\n\t\t\t\tlat: \"\",\n\t\t\t\tlon: \"\",\n\t\t\t\tregimen: address.regime,\n\t\t\t\tuso: address.uso,\n\t\t\t});\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/AgregaDireccion/\";\n\t\t\tdispatch(requestInvoiceAddress());\n\t\t\treturn axios\n\t\t\t\t.post(url, data, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tif (response.data.Facturacion.length > 0) {\n\t\t\t\t\t\tdispatch(receiveInvoiceAddress({ list: response.data.Facturacion }));\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetCartInvoiceAddress({\n\t\t\t\t\t\t\t\tinvoiceAddress: 0,\n\t\t\t\t\t\t\t\tinvoiceAddressItem: response.data.Facturacion[0],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(clearCartInvoiceAddress());\n\t\t\t\t\t\tdispatch(receiveInvoiceAddress({ list: null }));\n\t\t\t\t\t}\n\t\t\t\t\tdispatch(toggleShowInvoiceAddressAdd({ isOpenAdd: true }));\n\t\t\t\t\tdispatch(setInvoiceAddressErrorMessage({ errorMsg: null }));\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t\t// If 400 BadRequest model state\n\t\t\t\t\tif (error.response.status === 400) {\n\t\t\t\t\t\tif (error.response.data.Message != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido agregar la dirección. Verifique los datos y vuelva a intentar.\",\n\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(setInvoiceAddressAddFinish());\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\t\t\t\t\terrorMsg: { error: error.response.data.Message},\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default invoiceAddress.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"../constants\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\toptions: null,\n};\n\nconst states = createSlice({\n\tname: \"states\",\n\tinitialState,\n\treducers: {\n\t\trequestStatesList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveStatesList(state, action) {\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\tsetStatesOptions(state, action) {\n\t\t\tstate.options = action.payload.options;\n\t\t},\n\t},\n});\n\nexport const { requestStatesList, receiveStatesList, setStatesOptions } =\n\tstates.actions;\n\nconst mapOptions = (list) => {\n\treturn list.map(function (item, index) {\n\t\treturn { label: item.Nombre, value: item.Id, index: index };\n\t});\n};\n\nconst shouldFetchStates = (state) => {\n\tconst list = state.states.list;\n\tif (!list) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nexport const fetchStatesIfNeeded = () => async (dispatch, getState) => {\n\tif (shouldFetchStates(getState())) {\n\t\treturn dispatch(fetchStates());\n\t}\n};\n\nexport const fetchStates = () => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\t// method: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestStatesList());\n\tconst url = BASE_API_URL + \"/api/Cuenta/Estados\";\n\tawait axios\n\t\t.get(url, options)\n\t\t.then((response) => {\n\t\t\tdispatch(receiveStatesList({ list: response.data }));\n\t\t\tif (response.data != null && response.data.length > 0) {\n\t\t\t\tdispatch(setStatesOptions({ options: mapOptions(response.data) }));\n\t\t\t}\n\t\t})\n\t\t.then((error) => {\n\t\t\t// If 401 Unauthorized login failed\n\t\t});\n\t// return fetch(BASE_API_URL + \"/api/Cuenta/Estados\", options)\n\t// \t.then((response) => {\n\t// \t\tif (response.ok) {\n\t// \t\t\treturn response.json();\n\t// \t\t} else {\n\t// \t\t\treturn response.text().then((error) => Promise.reject(error));\n\t// \t\t}\n\t// \t})\n\t// \t.then((json) => {\n\t// \t\tdispatch(receiveStatesList({ list: json }));\n\t// \t\tif (json != null && json.length > 0) {\n\t// \t\t\tdispatch(setStatesOptions({ options: mapOptions(json) }));\n\t// \t\t}\n\t// \t})\n\t// \t.catch(() => {\n\t// \t\t// If 401 Unauthorized login failed\n\t// \t});\n};\n\nexport default states.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { sessionService } from \"redux-react-session\";\nimport { BASE_API_URL } from \"features/constants\";\nimport { stringNumberFormat } from \"features/functions\";\nimport { setCartPaymentCard } from \"features/cart/cartSlice\";\nimport { runUnauthorizedActions } from \"features/account/loginSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\tlist: null,\n\tselectedCard: null,\n\toptions: [{ value: 0, label: \"Nueva tarjeta\" }],\n};\n\nconst accountCards = createSlice({\n\tname: \"accountCards\",\n\tinitialState,\n\treducers: {\n\t\trequestCards: (state) => {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCards: (state, action) => {\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.options = action.payload.options;\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\ttoggleShowAccountCards: (state, action) => {\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetCardsIsLoading: (state, action) => {\n\t\t\tstate.isLoading = action.payload.isLoading;\n\t\t},\n\t\tsetSelectedCard: (state,action) => {\n\t\t\tstate.selectedCard = action.payload.selectedCard;\n\t\t},\n\t\tclearAccountCardsData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestCards,\n\treceiveCards,\n\ttoggleShowAccountCards,\n\ttoggleShowSelectedCard,\n\tsetCardsIsLoading,\n\tsetSelectedCard,\n\tclearAccountCardsData,\n} = accountCards.actions;\n\nconst mapOptions = (list) => {\n\tif (list == null || (list != null && list.length === 0)) {\n\t\treturn [{ value: 0, label: \"Nueva tarjeta\" }];\n\t}\n\tlet options = list.map((el) => {\n\t\treturn {\n\t\t\tvalue: el.Id,\n\t\t\tlabel:\n\t\t\t\tel.Marca.toUpperCase() +\n\t\t\t\t\" ***\" +\n\t\t\t\tel.Numero +\n\t\t\t\t\" - \" +\n\t\t\t\tstringNumberFormat(el.Mes, 2) +\n\t\t\t\t\"/\" +\n\t\t\t\tstringNumberFormat(el.Anio, 2),\n\t\t};\n\t});\n\toptions.push({ value: 0, label: \"Otra tarjeta\" });\n\treturn options;\n};\nexport const fetchAccountCards = () => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/Tarjetas\";\n\t\t\tdispatch(requestCards());\n\t\t\treturn axios\n\t\t\t\t.get(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst cardOptions = mapOptions(response.data);\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\treceiveCards({\n\t\t\t\t\t\t\tlist: response.data,\n\t\t\t\t\t\t\toptions: cardOptions,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tsetCartPaymentCard({\n\t\t\t\t\t\t\tpaymentCard: cardOptions[0].value,\n\t\t\t\t\t\t\tpaymentCardItem: cardOptions[0],\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tdispatch(receiveCards({ list: [], options: mapOptions() }));\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default accountCards.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport { BASE_API_URL } from \"../constants\";\nimport { runUnauthorizedActions } from \"features/account/loginSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\terrorMsg: null,\n\tdone: false,\n};\n\nconst contact = createSlice({\n\tname: \"contact\",\n\tinitialState,\n\treducers: {\n\t\trequestContactMessage(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveContactMessage(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\tsetContactErrorMsg(state, action) {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tsetContactDone(state, action) {\n\t\t\tstate.done = action.payload.done;\n\t\t},\n\t\tclearContactForm: () => initialState,\n\t},\n});\n\nexport const {\n\trequestContactMessage,\n\treceiveContactMessage,\n\tsetContactErrorMsg,\n\tsetContactDone,\n\tclearContactForm,\n} = contact.actions;\n\nexport const fetchContactMessage = (data) => async (dispatch) => {\n\tlet headers;\n\tlet sess;\n\t// Validate Priority\n\tconst priority = data.priority != null ? null : false;\n\tawait sessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\theaders = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tsess = session;\n\t\t})\n\t\t.catch((err) => {\n\t\t\theaders = {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t});\n\tconst name =\n\t\tsess != null && sess.user != null\n\t\t\t? sess.user.user.name + \" \" + sess.user.user.lastname\n\t\t\t: data.name.trim();\n\tconst email = sess != null && sess.user != null ? null : data.mail.trim();\n\tconst options = {\n\t\tmethod: \"POST\",\n\t\theaders: headers,\n\t\tbody: JSON.stringify({\n\t\t\tName: name,\n\t\t\tEmail: email,\n\t\t\tMessage: data.message.trim(),\n\t\t\tType: data.selected.value,\n\t\t\tPriority: priority,\n\t\t}),\n\t};\n\tconst url = BASE_API_URL + \"/api/Contacto\";\n\tlet responseStatus = 0;\n\tdispatch(requestContactMessage());\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tresponseStatus = response.status;\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.text();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\tdispatch(receiveContactMessage());\n\t\t\tdispatch(setContactDone({ done: true }));\n\t\t})\n\t\t.catch((error) => {\n\t\t\tdispatch(receiveContactMessage());\n\t\t\t// If 401 Unauthorized login failed\n\t\t\tif (responseStatus === 401) {\n\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t}\n\t\t\tif (responseStatus === 400) {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetContactErrorMsg({\n\t\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t\tsystem:\n\t\t\t\t\t\t\t\t\"Ocurrió un error al intentar enviar tu mensaje. Por favor intenta más tarde\",\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (responseStatus === 404) {\n\t\t\t\tdispatch(setContactErrorMsg({ errorMsg: { system: error } }));\n\t\t\t}\n\t\t});\n};\n\nexport default contact.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport ReactGA from \"react-ga4\";\nimport qs from \"qs\";\nimport { BASE_API_URL } from \"features/constants\";\nimport history from \"features/history\";\nimport { fetchAccount } from \"./accountSlice\";\nimport { toggleShowAlert, setAlert } from \"features/alerts/alertsSlice\";\nimport { clearHighlightsData } from \"features/tireResults/highlightsTiresSlice\";\nimport { clearVehicleBrandData } from \"features/tireFinder/vehicleBrandsSlice\";\nimport { clearVehicleModelData } from \"features/tireFinder/vehicleModelsSlice\";\nimport { clearVehicleYearData } from \"features/tireFinder/vehicleYearsSlice\";\nimport { clearVehicleVersionData } from \"features/tireFinder/vehicleVersionsSlice\";\nimport { clearVehicleTiresData } from \"features/tireResults/vehicleTiresSlice\";\nimport { clearWidthDiameterData } from \"features/tireFinder/sizeWidthDiametersSlice\";\nimport { clearSizeRatiosData } from \"features/tireFinder/sizeRatiosSlice\";\nimport { clearSizeRimData } from \"features/tireFinder/sizeRimsSlice\";\nimport { clearSizeTiresData } from \"features/tireResults/sizeTiresSlice\";\nimport { clearWidthSaeData } from \"features/tireFinder/sizeSaeWidthsSlice\";\nimport { clearSizeRimSaesData } from \"features/tireFinder/sizeSaeRimsSlice\";\nimport { clearSizeSaeTiresData } from \"features/tireResults/sizeSaeTiresSlice\";\nimport {\n\tclearCartData,\n\tfetchCartObjectIfNeeded,\n} from \"features/cart/cartSlice\";\nimport {\n\tclearDealerShipAddressData,\n\tfetchDealerShipAddressListIfNeeded,\n} from \"features/cart/dealerShipAddressSlice\";\nimport { clearSearchData } from \"features/tireFinder/searchSlice\";\nimport { clearSearchResultData } from \"features/tireResults/searchTiresSlice\";\nimport { clearOrdersData } from \"features/orders/ordersSlice\";\nimport { clearOrderConfirmationData } from \"features/orders/orderConfirmationSlice\";\nimport {\n\tfetchShipAddressListIfNeeded,\n\tclearShipAddressData,\n} from \"./shipAddressSlice\";\nimport {\n\tfetchInvoiceAddressListIfNeeded,\n\tclearInvoiceAddressData,\n} from \"./invoiceAddressSlice\";\nimport { fetchVehicleBrandsIfNeeded } from \"features/tireFinder/vehicleBrandsSlice\";\nimport { fetchWidthDiametersIfNeeded } from \"features/tireFinder/sizeWidthDiametersSlice\";\nimport {\n\tfetchHighlightsTiresListIfNeeded,\n\tfetchHighlightsTiresList,\n} from \"features/tireResults/highlightsTiresSlice\";\nimport { fetchStates, fetchStatesIfNeeded } from \"./statesSlice\";\nimport { fetchSearchIfNeeded } from \"features/tireFinder/searchSlice\";\nimport { fetchAccountCards, clearAccountCardsData } from \"./accountCardsSlice\";\nimport { cartLoadOpenPay } from \"features/cart/cartSlice\";\nimport axios from \"axios\";\nimport { clearContactForm } from \"features/contact/contactSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\terrorMsg: null,\n\tfromCart: false,\n\tsuccess: null,\n};\nconst loginSlice = createSlice({\n\tname: \"login\",\n\tinitialState,\n\treducers: {\n\t\trequestLoginData(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveLoginData(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\ttoggleShowLogin(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Usuario\",\n\t\t\t\t\taction: \"Mostrar Inicio de Sesión\"});\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetFromCart(state, action) {\n\t\t\tstate.fromCart = action.payload.fromCart;\n\t\t},\n\t\tsetLoginSuccess(state, action) {\n\t\t\tstate.success = action.payload.success;\n\t\t},\n\t\tsetLoginErrorMessage(state, action) {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t},\n});\n\nexport const {\n\trequestLoginData,\n\treceiveLoginData,\n\ttoggleShowLogin,\n\tsetFromCart,\n\tsetLoginSuccess,\n\tsetLoginErrorMessage,\n} = loginSlice.actions;\n\nexport const fetchLogin = (user, password) => async (dispatch) => {\n\tlet headers = {\n\t\t\"Content-Type\": \"application/x-www-form-urlencoded\",\n\t};\n\tlet options = {\n\t\theaders: headers,\n\t};\n\tconst data = qs.stringify({\n\t\tusername: user,\n\t\tpassword: password,\n\t\tgrant_type: \"password\",\n\t});\n\tconst url = BASE_API_URL + \"/Token\";\n\tdispatch(requestLoginData());\n\treturn axios\n\t\t.post(url, data, options)\n\t\t.then((response) => {\n\t\t\tsessionService\n\t\t\t\t.saveSession({ loginData: response.data })\n\t\t\t\t.then(() => dispatch(fetchAccount()))\n\t\t\t\t.catch((error) => console.log(\"error\", error));\n\t\t\tdispatch(receiveLoginData());\n\t\t\tdispatch(setLoginSuccess({ success: true }));\n\t\t\tdispatch(setLoginErrorMessage({ errorMsg: null }));\n\t\t\tdispatch(toggleShowLogin({ isOpen: true }));\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Usuario\",\n\t\t\t\taction: \"Iniciar Sesión\",\n\t\t\t});\n\t\t})\n\t\t.catch((error) => {\n\t\t\tif (\n\t\t\t\terror.response.data != null &&\n\t\t\t\terror.response.data.error_description != null\n\t\t\t) {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetLoginErrorMessage({\n\t\t\t\t\t\terrorMsg: { error: error.response.data.error_description },\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetLoginErrorMessage({\n\t\t\t\t\t\terrorMsg: { error: \"El usuario o la contraseña son incorrectos.\" },\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tdispatch(receiveLoginData());\n\t\t\thistory.push(\"/\");\n\t\t});\n};\nexport const runAuthenticatedActions = () => async (dispatch) => {\n\tawait sessionService.loadSession().then(() => {\n\t\tdispatch(fetchCartObjectIfNeeded());\n\t\tdispatch(fetchDealerShipAddressListIfNeeded());\n\t\tdispatch(fetchShipAddressListIfNeeded());\n\t\tdispatch(fetchInvoiceAddressListIfNeeded());\n\t\tdispatch(fetchAccountCards());\n\t\tdispatch(cartLoadOpenPay());\n\t\tdispatch(clearContactForm());\n\t});\n};\nexport const runUnauthorizedActions =\n\t(logout = false) =>\n\tasync (dispatch) => {\n\t\tsessionService.deleteSession();\n\t\tsessionService.deleteUser();\n\t\tdispatch(clearCartData());\n\t\tdispatch(clearAccountCardsData());\n\t\tdispatch(clearDealerShipAddressData());\n\t\tdispatch(clearVehicleBrandData());\n\t\tdispatch(clearVehicleModelData());\n\t\tdispatch(clearVehicleYearData());\n\t\tdispatch(clearVehicleVersionData());\n\t\tdispatch(clearVehicleTiresData());\n\t\tdispatch(clearWidthDiameterData());\n\t\tdispatch(clearSizeRatiosData());\n\t\tdispatch(clearSizeRimData());\n\t\tdispatch(clearSizeTiresData());\n\t\tdispatch(clearWidthSaeData());\n\t\tdispatch(clearSizeRimSaesData());\n\t\tdispatch(clearSizeSaeTiresData());\n\t\t// dispatch(clearCodeTiresList());\n\t\tdispatch(clearHighlightsData());\n\t\tdispatch(clearSearchData());\n\t\tdispatch(clearSearchResultData());\n\t\tdispatch(clearOrdersData());\n\t\tdispatch(clearOrderConfirmationData());\n\t\tdispatch(clearShipAddressData());\n\t\tdispatch(clearInvoiceAddressData());\n\t\tdispatch(clearContactForm());\n\t\tif (logout === false) {\n\t\t\tdispatch(\n\t\t\t\tsetAlert({\n\t\t\t\t\talert: {\n\t\t\t\t\t\ttitle: \"Aviso\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Tu sesión ha caducado, para continuar con tu compra debes volver a iniciar sesión.\",\n\t\t\t\t\t\tdetails: null,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t};\nexport const doLogout = () => async (dispatch) => {\n\tReactGA.event({\n\t\tcategory: \"Usuario\",\n\t\taction: \"Cerrar Sesión\",\n\t});\n\tdispatch(runUnauthorizedActions(true));\n\tdispatch(\n\t\tsetAlert({\n\t\t\talert: {\n\t\t\t\ttitle: \"Aviso\",\n\t\t\t\tdescription: \"La sesión se cerró con éxito.\",\n\t\t\t\tdetails: null,\n\t\t\t},\n\t\t})\n\t);\n\tdispatch(toggleShowAlert({ isOpen: false }));\n};\n\nexport const runLoadActions = () => async (dispatch) => {\n\tdispatch(fetchVehicleBrandsIfNeeded());\n\tdispatch(fetchWidthDiametersIfNeeded());\n\tdispatch(fetchHighlightsTiresListIfNeeded());\n\tdispatch(fetchStatesIfNeeded());\n\tdispatch(fetchSearchIfNeeded());\n\tdispatch(fetchVehicleBrandsIfNeeded());\n};\nexport default loginSlice.reducer;\n","import { createMiddleware } from \"redux-beacon\";\nimport GoogleTagManager from \"@redux-beacon/google-tag-manager\";\nimport logger from \"@redux-beacon/logger\";\nimport { PAYMENT_METHODS as p, SHIP_TYPES as s } from \"./constants\";\n\nconst GTM_PURCHASE_BUTTON = \"GTM_PURCHASE_BUTTON\";\nconst GTM_CART_LOGIN_BUTTON = \"GTM_CART_LOGIN_BUTTON\";\nconst GTM_CART_SHIP_BUTTON = \"GTM_CART_SHIP_BUTTON\";\nconst GTM_CART_BILL_BUTTON = \"GTM_CART_BILL_BUTTON\";\nconst GTM_CART_PAYMENT_BUTTON = \"GTM_CART_PAYMENT_BUTTON\";\nconst GTM_CART_CHECKOUT_BUTTON = \"GTM_CART_CHECKOUT_BUTTON\";\nconst GTM_ORDER_CONFIRMATION = \"GTM_ORDER_CONFIRMATION\";\n\nconst gtm = GoogleTagManager();\n\nconst eventsMap = {\n\t[GTM_PURCHASE_BUTTON]: (action) => {\n\t\treturn {\n\t\t\tevent: \"comprar\",\n\t\t\tcode: action.data.Code,\n\t\t\tproduct: action.data.Name,\n\t\t\tbrand: action.data.Brand,\n\t\t\tsize: action.data.Size,\n\t\t\tqty: action.data.qty,\n\t\t};\n\t},\n\t[GTM_CART_LOGIN_BUTTON]: (action) => {\n\t\treturn {\n\t\t\tevent: \"continuarcarrito\",\n\t\t};\n\t},\n\t[GTM_CART_SHIP_BUTTON]: (action) => {\n\t\treturn {\n\t\t\tevent: \"continuarenvio\",\n\t\t};\n\t},\n\t[GTM_CART_BILL_BUTTON]: (action) => {\n\t\treturn {\n\t\t\tevent: \"continuarfacturacion\",\n\t\t};\n\t},\n\t[GTM_CART_PAYMENT_BUTTON]: (action) => {\n\t\treturn {\n\t\t\tevent: \"formadepago\",\n\t\t};\n\t},\n\t[GTM_CART_CHECKOUT_BUTTON]: (action) => {\n\t\treturn {\n\t\t\tevent: \"finalizar\",\n\t\t};\n\t},\n\t[GTM_ORDER_CONFIRMATION]: (action) => {\n\t\treturn {\n\t\t\tevent: \"compra\",\n\t\t\ttransactionId: action.data.Numero,\n\t\t\ttransactionTotal: action.data.Total,\n\t\t\ttransactionTax: action.data.IVA,\n\t\t\ttransactionShip: action.data.Envio,\n\t\t\ttransactionDate: action.data.Fecha,\n\t\t\ttransactionProducts: action.data.Elementos.map((i) => {\n\t\t\t\treturn {\n\t\t\t\t\tid: i.Codigo,\n\t\t\t\t\tname: i.Nombre,\n\t\t\t\t\tbrand: i.Marca,\n\t\t\t\t\tcategory: \"Llantas/\" + i.Tipo,\n\t\t\t\t\tvariant: i.Medida,\n\t\t\t\t\tprice: i.Precio,\n\t\t\t\t\tquantity: i.Cantidad,\n\t\t\t\t};\n\t\t\t}),\n\t\t\tpaymentType: p.properties[action.data.MetodoPago].name,\n\t\t\tshipType: s.properties[action.data.TipoEnvio].fullname,\n\t\t};\n\t},\n};\nexport const gtmMiddleware = createMiddleware(eventsMap, gtm, { logger });\n\nexport const gtmTriggerAddItemToCart = (data) => {\n\treturn {\n\t\ttype: GTM_PURCHASE_BUTTON,\n\t\tdata,\n\t};\n};\nexport const gtmTriggerCartLoginButton = (data) => {\n\treturn {\n\t\ttype: GTM_CART_LOGIN_BUTTON,\n\t\tdata,\n\t};\n};\nexport const gtmTriggerCartShipButton = (data) => {\n\treturn {\n\t\ttype: GTM_CART_SHIP_BUTTON,\n\t\tdata,\n\t};\n};\nexport const gtmTriggerCartBillButton = (data) => {\n\treturn {\n\t\ttype: GTM_CART_BILL_BUTTON,\n\t\tdata,\n\t};\n};\nexport const gtmTriggerCartPaymentButton = (data) => {\n\treturn {\n\t\ttype: GTM_CART_PAYMENT_BUTTON,\n\t\tdata,\n\t};\n};\nexport const gtmTriggerCartCheckoutButton = (data) => {\n\treturn {\n\t\ttype: GTM_CART_CHECKOUT_BUTTON,\n\t\tdata,\n\t};\n};\nexport const gtmTriggerOrderConfirmation = (data) => {\n\treturn {\n\t\ttype: GTM_ORDER_CONFIRMATION,\n\t\tdata,\n\t};\n};\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport { BASE_API_URL } from \"../constants\";\nimport { runUnauthorizedActions } from \"features/account/loginSlice\";\nimport { setCartPaymentCardPromo } from \"./cartSlice\";\nimport axios from \"axios\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n\tselected: null,\n};\nconst paymentCard = createSlice({\n\tname: \"paymentCard\",\n\tinitialState,\n\treducers: {\n\t\trequestPaymentCardList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceivePaymentCardList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tsetPaymentCardSelected(state, action) {\n\t\t\tstate.selected = action.payload.selected;\n\t\t},\n\t\tclearPaymentCardData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestPaymentCardList,\n\treceivePaymentCardList,\n\tsetPaymentCardSelected,\n\tclearPaymentCardData,\n} = paymentCard.actions;\n\nconst shouldFetchPaymentCardList = (state) => {\n\tif (state.paymentCard.list == null) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchPaymentCardListIfNeeded =\n\t() => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tif (shouldFetchPaymentCardList(theState)) {\n\t\t\treturn dispatch(fetchPaymentCardList());\n\t\t} \n\t};\n\nexport const fetchPaymentCardList = () => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tdispatch(requestPaymentCardList());\n\t\t\tconst url = BASE_API_URL + \"/api/Carritos/PromosBancos\";\n\t\t\treturn axios.get(url, options)\n\t\t\t.then((response) => {\n\t\t\t\tdispatch(receivePaymentCardList({ list: response.data }));\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default paymentCard.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport ReactGA from \"react-ga4\";\nimport axios from \"axios\";\nimport {\n\tBASE_API_URL,\n\tSHIP_TYPES,\n\tPAYMENT_METHODS,\n\tCOUPON_STATUS,\n\tCART_STEPS as s,\n\tCART_STEPS,\n} from \"../constants\";\nimport { isEmpty } from \"features/functions\";\nimport {\n\trunUnauthorizedActions,\n\ttoggleShowLogin,\n\tsetFromCart,\n} from \"features/account/loginSlice\";\nimport {\n\tgtmTriggerCartLoginButton,\n\tgtmTriggerCartShipButton,\n\tgtmTriggerCartBillButton,\n\tgtmTriggerCartPaymentButton,\n} from \"features/tagmanager\";\nimport { fetchShipAddressListIfNeeded } from \"features/account/shipAddressSlice\";\nimport { fetchInvoiceAddressListIfNeeded } from \"features/account/invoiceAddressSlice\";\nimport { fetchPaymentCardListIfNeeded } from \"./paymentCardSlice\";\nimport { setAlert, toggleShowAlert } from \"features/alerts/alertsSlice\";\nimport {\n\tsetOrderConfirmationId,\n\tfetchOrderConfirmation,\n\ttoggleShowOrderConfirmation,\n\treceiveOrderConfirmation,\n} from \"features/orders/orderConfirmationSlice\";\nimport { fetchHighlightsTiresList } from \"features/tireResults/highlightsTiresSlice\";\nimport { fetchVehicleTiresList } from \"features/tireResults/vehicleTiresSlice\";\nimport { fetchSizeTiresList } from \"features/tireResults/sizeTiresSlice\";\nimport { fetchSizeSaeTiresList } from \"features/tireResults/sizeSaeTiresSlice\";\nimport { fetchSearchResultsTiresList } from \"features/tireResults/searchTiresSlice\";\nimport { fetchDealerShipAddressListIfNeeded } from \"./dealerShipAddressSlice\";\nimport { fetchAccountCards } from \"features/account/accountCardsSlice\";\nimport { response } from \"express\";\n\nconst initialState = {\n\tisLoading: false,\n\tisProcessing: false,\n\tisOpen: false,\n\tshowTab: 1,\n\tcartObject: null,\n\tshipType: 1,\n\tshipAddress: null,\n\tshipAddressItem: null,\n\tshipLocationId: null,\n\tinvoiceAddress: null,\n\tinvoiceAddressItem: null,\n\tpaymentType: 2,\n\tpaymentCard: 0,\n\tpaymentCardItem: null,\n\tcreditCardResponse: null,\n\tpayPalResponse: null,\n\tsafetyPayResponse: null,\n\tdepositResponse: null,\n\tpaynetResponse: null,\n\tcoupon: null,\n\topenPayLoaded: false,\n\tisOpenPoints: false,\n\tpointsData: null,\n};\nconst cart = createSlice({\n\tname: \"cart\",\n\tinitialState,\n\treducers: {\n\t\trequestCartObject(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCartObject(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.cartObject = action.payload.cartObject;\n\t\t},\n\t\tremoveCartLoading(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\tsetCartActiveTab(state, action) {\n\t\t\tswitch (action.payload.showTab) {\n\t\t\t\tcase 1:\n\t\t\t\tdefault:\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Carrito\",\n\t\t\t\t\t\taction: \"Detalles\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Carrito\",\n\t\t\t\t\t\taction: \"Envío\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Carrito\",\n\t\t\t\t\t\taction: \"Facturación\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Carrito\",\n\t\t\t\t\t\taction: \"Pago\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Carrito\",\n\t\t\t\t\t\taction: \"Resumen\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstate.showTab = action.payload.showTab;\n\t\t},\n\t\tsetCartShipType(state, action) {\n\t\t\tconst shipType = action.payload.shipType;\n\t\t\tif (shipType > 0) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Compra\",\n\t\t\t\t\taction: \"Seleccionar Tipo de Envío\",\n\t\t\t\t\tlabel: SHIP_TYPES.properties[shipType].name,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.shipType = shipType;\n\t\t},\n\t\tsetCartShipAddress(state, action) {\n\t\t\tstate.shipAddress = action.payload.shipAddress;\n\t\t\tstate.shipAddressItem = action.payload.shipAddressItem;\n\t\t},\n\t\tclearCartShipAddress(state) {\n\t\t\tstate.shipAddress = null;\n\t\t\tstate.shipAddressItem = null;\n\t\t},\n\t\tsetCartInvoiceAddress(state, action) {\n\t\t\tstate.invoiceAddress = action.payload.invoiceAddress;\n\t\t\tstate.invoiceAddressItem = action.payload.invoiceAddressItem;\n\t\t},\n\t\tclearCartInvoiceAddress(state) {\n\t\t\tstate.invoiceAddress = null;\n\t\t\tstate.invoiceAddressItem = null;\n\t\t},\n\t\tsetCartShipLocationId(state, action) {\n\t\t\tstate.shipLocationId = action.payload.shipLocationId;\n\t\t},\n\t\tclearCartShipLocationId(state) {\n\t\t\tstate.shipLocationId = null;\n\t\t},\n\t\tsetCartPaymentType(state, action) {\n\t\t\tconst paymentType = action.payload.paymentType;\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Compra\",\n\t\t\t\taction: \"Seleccionar Método de Pago\",\n\t\t\t\tlabel: PAYMENT_METHODS.properties[paymentType].name,\n\t\t\t});\n\t\t\tstate.paymentType = paymentType;\n\t\t},\n\t\ttoggleShowCart(state, action) {\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetPaymentProcess(state, action) {\n\t\t\tstate.isProcessing = action.payload.isProcessing;\n\t\t},\n\t\treceivePaymentCard(state, action) {\n\t\t\tstate.isProcessing = false;\n\t\t\tstate.creditCardResponse = action.payload.creditCardResponse;\n\t\t},\n\t\treceivePaymentPayPal(state, action) {\n\t\t\tstate.isProcessing = false;\n\t\t\tstate.payPalResponse = action.payload.payPalResponse;\n\t\t},\n\t\treceivePaymentSafetyPay(state, action) {\n\t\t\tstate.isProcessing = false;\n\t\t\tstate.safetyPayResponse = action.payload.safetyPayResponse;\n\t\t},\n\t\treceivePaymentDeposit(state, action) {\n\t\t\tstate.isProcessing = false;\n\t\t\tstate.depositResponse = action.payload.depositResponse;\n\t\t},\n\t\treceivePaymentPaynet(state, action) {\n\t\t\tstate.isProcessing = false;\n\t\t\tstate.paynetResponse = action.payload.paynetResponse;\n\t\t},\n\t\trequestValidateCoupon(state) {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Compra\",\n\t\t\t\taction: \"Carga Cupon\",\n\t\t\t\tlabel: \"Carga un cupón\",\n\t\t\t});\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveValidateCoupon(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.coupon = action.payload.coupon;\n\t\t},\n\t\tsetCartOpenPayLoaded: (state, action) => {\n\t\t\tstate.openPayLoaded = action.payload.openPayLoaded;\n\t\t},\n\t\tsetCartPaymentCard: (state, action) => {\n\t\t\tstate.paymentCard = action.payload.paymentCard;\n\t\t\tstate.paymentCardItem = action.payload.paymentCardItem;\n\t\t},\n\t\ttoggleShowPoints(state, action) {\n\t\t\tstate.isOpenPoints = !action.payload.isOpenPoints;\n\t\t\tstate.pointsData =\n\t\t\t\taction.payload.pointsData != null ? action.payload.pointsData : null;\n\t\t},\n\t\tclearCartData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestCartObject,\n\treceiveCartObject,\n\tremoveCartLoading,\n\tsetCartActiveTab,\n\tsetCartShipType,\n\tsetCartShipAddress,\n\tclearCartShipAddress,\n\tsetCartInvoiceAddress,\n\tclearCartInvoiceAddress,\n\tsetCartUserData,\n\tsetCartShipLocationId,\n\tclearCartShipLocationId,\n\tsetCartPaymentType,\n\ttoggleShowCart,\n\tsetPaymentProcess,\n\treceivePaymentCard,\n\treceivePaymentPayPal,\n\treceivePaymentSafetyPay,\n\treceivePaymentDeposit,\n\treceivePaymentPaynet,\n\trequestValidateCoupon,\n\treceiveValidateCoupon,\n\tsetCartOpenPayLoaded,\n\tsetCartPaymentCard,\n\ttoggleShowPoints,\n\tclearCartData,\n} = cart.actions;\n\nconst getCartAlias = (cart) => {\n\tlet alias = \"ContiShop\";\n\tswitch (cart.shipType) {\n\t\tcase SHIP_TYPES.ADDRESS:\n\t\t\talias = cart.shipAddressItem.Alias;\n\t\t\tbreak;\n\t\tcase SHIP_TYPES.FACTORY:\n\t\t\talias = \"Factory\";\n\t\t\tbreak;\n\t\tcase SHIP_TYPES.DEALER:\n\t\t\talias = cart.shipAddressItem.Name;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\talias = \"ContiShop\";\n\t\t\tbreak;\n\t}\n\treturn alias;\n};\n\nconst shouldFetchCartObject = (state) => {\n\tconst { cart } = state;\n\tif (cart.cartObject == null) {\n\t\treturn true;\n\t}\n\tif (cart.cartObject.strIdBolsa === \"\") {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchCartObjectIfNeeded = () => async (dispatch, getState) => {\n\tconst theState = getState();\n\tif (shouldFetchCartObject(theState)) {\n\t\treturn dispatch(fetchCartObject());\n\t}\n};\n\nexport const fetchCartObject = () => async (dispatch, getState) => {\n\tlet headers;\n\tawait sessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\theaders = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t})\n\t\t.catch(() => {\n\t\t\theaders = {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t});\n\tconst options = {\n\t\theaders: headers,\n\t};\n\tconst theState = getState();\n\tlet qs = [];\n\tif (theState.cart.coupon != null)\n\t\tqs.push(\"cupon=\" + theState.cart.coupon.Code);\n\tif (\n\t\ttheState.cart.cartObject != null &&\n\t\ttheState.cart.cartObject.strIdBolsa !== \"\"\n\t) {\n\t\tqs.push(\"id=\" + theState.cart.cartObject.strIdBolsa);\n\t}\n\tdispatch(requestCartObject());\n\tlet url = BASE_API_URL + \"/api/Carritos/MiCarrito\";\n\tif (qs.length > 0) {\n\t\turl += \"/?\" + qs.join(\"&\");\n\t}\n\treturn axios\n\t\t.get(url, options)\n\t\t.then((response) => {\n\t\t\tdispatch(receiveCartObject({ cartObject: response.data }));\n\t\t})\n\t\t.catch((error) => {\n\t\t\t// If 401 Unauthorized login failed\n\t\t\tif (error.response.status === 401) {\n\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t}\n\t\t});\n};\n\nexport const fetchAddItemToCartObject =\n\t(tireId, qty) => async (dispatch, getState) => {\n\t\tlet headers;\n\t\tawait sessionService\n\t\t\t.loadSession()\n\t\t\t.then((session) => {\n\t\t\t\theaders = {\n\t\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t};\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\theaders = {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t};\n\t\t\t});\n\t\tconst theState = getState();\n\t\tconst cartId =\n\t\t\ttheState.cart.cartObject != null &&\n\t\t\ttheState.cart.cartObject.strIdBolsa !== \"\"\n\t\t\t\t? theState.cart.cartObject.strIdBolsa\n\t\t\t\t: null;\n\t\tconst coupon =\n\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\tconst options = {\n\t\t\theaders: headers,\n\t\t};\n\t\tconst body = {\n\t\t\tId: cartId,\n\t\t\tTireId: tireId,\n\t\t\tQty: qty,\n\t\t\tCoupon: coupon,\n\t\t};\n\t\tdispatch(requestCartObject());\n\t\tconst url = BASE_API_URL + \"/api/Carritos/Agregar\";\n\t\treturn axios\n\t\t\t.post(url, body, options)\n\t\t\t.then((response) => {\n\t\t\t\tdispatch(receiveCartObject({ cartObject: response.data }));\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t}\n\t\t\t\tif (error.response.status === 400) {\n\t\t\t\t\tdispatch(removeCartLoading());\n\t\t\t\t\tif (error.response.data.Message != null) {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription: \"No se pudo agregar el producto al carrito.\",\n\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t};\n\nexport const fetchDeleteItemFromCartObject =\n\t(tireId) => async (dispatch, getState) => {\n\t\tlet headers = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t};\n\t\tsessionService\n\t\t\t.loadSession()\n\t\t\t.then((session) => {\n\t\t\t\theaders = {\n\t\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t};\n\t\t\t})\n\t\t\t.catch((err) => console.log(\"Error\", err));\n\t\tconst theState = getState();\n\t\tconst cartId =\n\t\t\ttheState.cart.cartObject != null &&\n\t\t\ttheState.cart.cartObject.strIdBolsa !== \"\"\n\t\t\t\t? theState.cart.cartObject.strIdBolsa\n\t\t\t\t: null;\n\t\tconst coupon =\n\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\tconst options = {\n\t\t\theaders: headers,\n\t\t};\n\t\tconst body = {\n\t\t\tId: cartId,\n\t\t\tTireId: tireId,\n\t\t\tCoupon: coupon,\n\t\t};\n\t\tdispatch(requestCartObject());\n\t\tconst url = BASE_API_URL + \"/api/Carritos/Eliminar\";\n\t\treturn axios\n\t\t\t.post(url, body, options)\n\t\t\t.then((response) => {\n\t\t\t\tdispatch(receiveCartObject({ cartObject: response.data }));\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t}\n\t\t\t});\n\t};\n\nexport const fetchPaymentCard = (data) => async (dispatch, getState) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst theState = getState();\n\t\t\tconst alias = getCartAlias(theState.cart);\n\t\t\tconst coupon =\n\t\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\t\tconst token =\n\t\t\t\ttheState.cart.paymentCard === 0\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttokenId: theState.accountCardAdd.token.id,\n\t\t\t\t\t\t\tdeviceSessionId: theState.accountCardAdd.sessId,\n\t\t\t\t\t\t\tcard: theState.accountCardAdd.token.card,\n\t\t\t\t\t\t\tsave: data.save,\n\t\t\t\t\t\t\tusePoints: data.usePoints,\n\t\t\t\t\t }\n\t\t\t\t\t: null;\n\t\t\tconst card =\n\t\t\t\ttheState.cart.paymentCard > 0\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tcardId: theState.cart.paymentCard,\n\t\t\t\t\t\t\tcvv: data.code,\n\t\t\t\t\t\t\tdeviceSessionId: theState.accountCardAdd.sessId,\n\t\t\t\t\t\t\tusePoints: data.usePoints,\n\t\t\t\t\t }\n\t\t\t\t\t: null;\n\t\t\tconst body = {\n\t\t\t\tid: theState.cart.cartObject.strIdBolsa,\n\t\t\t\tdelivery: theState.cart.shipType,\n\t\t\t\talias: alias,\n\t\t\t\tinvoice: theState.cart.invoiceAddressItem.Alias,\n\t\t\t\tpayment: theState.cart.paymentType,\n\t\t\t\tpromo: data.cardPromo,\n\t\t\t\tcoupon: coupon,\n\t\t\t\tauthorized: \"\",\n\t\t\t\tLocationId:\n\t\t\t\t\ttheState.cart.shipLocationId != null\n\t\t\t\t\t\t? theState.cart.shipLocationId\n\t\t\t\t\t\t: 0,\n\t\t\t\tcard: card,\n\t\t\t\ttoken: token,\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Compra\",\n\t\t\t\taction: \"Finalizar compra\",\n\t\t\t\tlabel: \"Compra con Tarjeta de Crédito\",\n\t\t\t});\n\t\t\tdispatch(setPaymentProcess({ isProcessing: true }));\n\t\t\tconst url = BASE_API_URL + \"/api/Carritos/Finalizar/OpenPayTarjeta\";\n\t\t\treturn axios\n\t\t\t\t.post(url, JSON.stringify(body), options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tif (response.data.Url != null) {\n\t\t\t\t\t\twindow.location.replace(response.data.Url);\n\t\t\t\t\t}\n\t\t\t\t\tif (response.data.Id != null) {\n\t\t\t\t\t\tdispatch(setOrderConfirmationId({ orderId: response.data.Id }));\n\t\t\t\t\t\tdispatch(receiveOrderConfirmation({ order: response.data }));\n\t\t\t\t\t\tdispatch(setPaymentProcess({ isProcessing: false }));\n\t\t\t\t\t\tdispatch(toggleShowCart({ isOpen: true }));\n\t\t\t\t\t\tdispatch(toggleShowOrderConfirmation({ isOpen: false }));\n\t\t\t\t\t\tdispatch(fetchCartObject());\n\t\t\t\t\t\tdispatch(fetchAccountCards());\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(setPaymentProcess({ isProcessing: false }));\n\t\t\t\t\t\t// 404 Not Found\n\t\t\t\t\t\tif (error.response.status === 404) {\n\t\t\t\t\t\t\tdispatch(fetchAccountCards());\n\t\t\t\t\t\t\tdispatch(setCartPaymentCard({paymentCard: 0}))\n\t\t\t\t\t\t\tdispatch(setCartActiveTab({showTab: CART_STEPS.PAYMENT}))\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t\"No se ha podido crear el pedido por la siguiente causa:\",\n\t\t\t\t\t\t\t\t\t\tdetails: \"No se encontró la tarjeta guardada.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 400 BadRequest\n\t\t\t\t\t\tif (error.response.status === 400) {\n\t\t\t\t\t\t\tif (error.response.data.Message != null) {\n\t\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t\t\"No se ha podido crear el pedido por la siguiente causa:\",\n\t\t\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport const fetchPaymentPayPal = () => async (dispatch, getState) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst theState = getState();\n\t\t\tconst alias = getCartAlias(theState.cart);\n\t\t\tconst coupon =\n\t\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\t\tconst options = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tid: theState.cart.cartObject.strIdBolsa,\n\t\t\t\t\tdelivery: theState.cart.shipType,\n\t\t\t\t\talias: alias,\n\t\t\t\t\tinvoice: theState.cart.invoiceAddressItem.Alias,\n\t\t\t\t\tpayment: theState.cart.paymentType,\n\t\t\t\t\tpromo: 0,\n\t\t\t\t\tcoupon: coupon,\n\t\t\t\t\tauthorized: \"\",\n\t\t\t\t\tLocationId:\n\t\t\t\t\t\ttheState.cart.shipLocationId != null\n\t\t\t\t\t\t\t? theState.cart.shipLocationId\n\t\t\t\t\t\t\t: 0,\n\t\t\t\t}),\n\t\t\t};\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Compra\",\n\t\t\t\taction: \"Finalizar compra\",\n\t\t\t\tlabel: \"Compra con PayPal\",\n\t\t\t});\n\t\t\tdispatch(setPaymentProcess({ isProcessing: true }));\n\t\t\tconst url = BASE_API_URL + \"/api/Carritos/Finalizar/PayPal\";\n\t\t\tlet responseStatus = 0;\n\t\t\treturn fetch(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tresponseStatus = response.status;\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn response.json().then((error) => Promise.reject(error));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((json) => {\n\t\t\t\t\tdispatch(receivePaymentPayPal({ payPalResponse: json }));\n\t\t\t\t\tdispatch(fetchCartObject());\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tdispatch(setPaymentProcess({ isProcessing: false }));\n\t\t\t\t\t// TODO: fetch error actions\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (responseStatus === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido crear el pedido por la siguiente causa:\",\n\t\t\t\t\t\t\t\t\tdetails: error.Message,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport const fetchPaymentSafetyPay = () => async (dispatch, getState) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst theState = getState();\n\t\t\tconst alias = getCartAlias(theState.cart);\n\t\t\tconst coupon =\n\t\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\t\tconst options = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tid: theState.cart.cartObject.strIdBolsa,\n\t\t\t\t\tdelivery: theState.cart.shipType,\n\t\t\t\t\talias: alias,\n\t\t\t\t\tinvoice: theState.cart.invoiceAddressItem.Alias,\n\t\t\t\t\tpayment: theState.cart.paymentType,\n\t\t\t\t\tpromo: 0,\n\t\t\t\t\tcoupon: coupon,\n\t\t\t\t\tauthorized: \"\",\n\t\t\t\t\tLocationId:\n\t\t\t\t\t\ttheState.cart.shipLocationId != null\n\t\t\t\t\t\t\t? theState.cart.shipLocationId\n\t\t\t\t\t\t\t: 0,\n\t\t\t\t}),\n\t\t\t};\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Compra\",\n\t\t\t\taction: \"Finalizar compra\",\n\t\t\t\tlabel: \"Compra con SafetyPay\",\n\t\t\t});\n\t\t\tdispatch(setPaymentProcess({ isProcessing: true }));\n\t\t\tconst url = BASE_API_URL + \"/api/Carritos/Finalizar/SafetyPay\";\n\t\t\tlet responseStatus = 0;\n\t\t\treturn fetch(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tresponseStatus = response.status;\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn response.json().then((error) => Promise.reject(error));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((json) => {\n\t\t\t\t\tdispatch(receivePaymentSafetyPay({ safetyPayResponse: json }));\n\t\t\t\t\tdispatch(fetchCartObject());\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tdispatch(setPaymentProcess({ isProcessing: false }));\n\t\t\t\t\t// TODO: fetch error actions\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (responseStatus === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido crear el pedido por la siguiente causa:\",\n\t\t\t\t\t\t\t\t\tdetails: error.Message,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport const fetchPaymentDeposit = () => async (dispatch, getState) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst theState = getState();\n\t\t\tconst alias = getCartAlias(theState.cart);\n\t\t\tconst coupon =\n\t\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\t\tconst options = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: headers,\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tid: theState.cart.cartObject.strIdBolsa,\n\t\t\t\t\tdelivery: theState.cart.shipType,\n\t\t\t\t\talias: alias,\n\t\t\t\t\tinvoice: theState.cart.invoiceAddressItem.Alias,\n\t\t\t\t\tpayment: theState.cart.paymentType,\n\t\t\t\t\tpromo: 0,\n\t\t\t\t\tcoupon: coupon,\n\t\t\t\t\tauthorized: \"\",\n\t\t\t\t\tLocationId:\n\t\t\t\t\t\ttheState.cart.shipLocationId != null\n\t\t\t\t\t\t\t? theState.cart.shipLocationId\n\t\t\t\t\t\t\t: 0,\n\t\t\t\t}),\n\t\t\t};\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Compra\",\n\t\t\t\taction: \"Finalizar compra\",\n\t\t\t\tlabel: \"Compra con SafetyPay\",\n\t\t\t});\n\t\t\tdispatch(setPaymentProcess({ isProcessing: true }));\n\t\t\tconst url = BASE_API_URL + \"/api/Carritos/Finalizar/Deposito\";\n\t\t\tlet responseStatus = 0;\n\t\t\treturn fetch(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tresponseStatus = response.status;\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn response.json().then((error) => Promise.reject(error));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((json) => {\n\t\t\t\t\tdispatch(receivePaymentDeposit({ depositResponse: json }));\n\t\t\t\t\tdispatch(setOrderConfirmationId({ orderId: json.Order }));\n\t\t\t\t\tdispatch(fetchOrderConfirmation());\n\t\t\t\t\tdispatch(toggleShowCart({ isOpen: theState.cart.isOpen }));\n\t\t\t\t\tdispatch(clearCartData());\n\t\t\t\t\tdispatch(fetchCartObject());\n\t\t\t\t\tdispatch(toggleShowOrderConfirmation({ isOpen: false }));\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tdispatch(setPaymentProcess({ isProcessing: false }));\n\t\t\t\t\t// TODO: fetch error actions\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (responseStatus === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido crear el pedido por la siguiente causa:\",\n\t\t\t\t\t\t\t\t\tdetails: error.Message,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport const fetchPaymentPaynet = () => async (dispatch, getState) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst theState = getState();\n\t\t\tconst alias = getCartAlias(theState.cart);\n\t\t\tconst coupon =\n\t\t\t\ttheState.cart.coupon == null ? null : theState.cart.coupon.Code;\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst body = {\n\t\t\t\t\tid: theState.cart.cartObject.strIdBolsa,\n\t\t\t\t\tdelivery: theState.cart.shipType,\n\t\t\t\t\talias: alias,\n\t\t\t\t\tinvoice: theState.cart.invoiceAddressItem.Alias,\n\t\t\t\t\tpayment: theState.cart.paymentType,\n\t\t\t\t\tpromo: 0,\n\t\t\t\t\tcoupon: coupon,\n\t\t\t\t\tauthorized: \"\",\n\t\t\t\t\tLocationId:\n\t\t\t\t\t\ttheState.cart.shipLocationId != null\n\t\t\t\t\t\t\t? theState.cart.shipLocationId\n\t\t\t\t\t\t\t: 0,\n\t\t\t\t};\n\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Compra\",\n\t\t\t\taction: \"Finalizar compra\",\n\t\t\t\tlabel: \"Compra con Paynet\",\n\t\t\t});\n\t\t\tconst url = BASE_API_URL + \"/api/Carritos/Finalizar/Paynet\";\n\t\t\tdispatch(setPaymentProcess({ isProcessing: true }));\n\t\t\treturn axios\n\t\t\t\t.post(url, body, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tdispatch(receivePaymentPaynet({ paynetResponse: response.data }));\n\t\t\t\t\tdispatch(setOrderConfirmationId({ orderId: response.data.Order }));\n\t\t\t\t\tdispatch(fetchOrderConfirmation());\n\t\t\t\t\tdispatch(toggleShowCart({ isOpen: true }));\n\t\t\t\t\tdispatch(clearCartData());\n\t\t\t\t\tdispatch(fetchCartObject());\n\t\t\t\t\tdispatch(toggleShowOrderConfirmation({ isOpen: false }));\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tdispatch(setPaymentProcess({ isProcessing: false }));\n\t\t\t\t\t// 401 Unauthorized\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido crear el pedido por la siguiente causa:\",\n\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport const removeCoupon = () => async (dispatch, getState) => {\n\tconst theState = getState();\n\tdispatch(receiveValidateCoupon({ coupon: null }));\n\tdispatch(fetchHighlightsTiresList());\n\tdispatch(fetchCartObject());\n\t// Reload vehicle tires results\n\tif (theState.vehicleTires.list != null) {\n\t\tdispatch(\n\t\t\tfetchVehicleTiresList(\n\t\t\t\ttheState.vehicleTires.list.BrandId,\n\t\t\t\ttheState.vehicleTires.list.ModelId,\n\t\t\t\ttheState.vehicleTires.list.Year,\n\t\t\t\ttheState.vehicleTires.list.VersionId\n\t\t\t)\n\t\t);\n\t}\n\t// Reload size search results\n\tif (theState.sizeTires.list != null) {\n\t\tdispatch(\n\t\t\tfetchSizeTiresList(\n\t\t\t\ttheState.sizeTires.width,\n\t\t\t\ttheState.sizeTires.ratio,\n\t\t\t\ttheState.sizeTires.rim,\n\t\t\t\ttheState.sizeTires.dept,\n\t\t\t\t0 // brand\n\t\t\t)\n\t\t);\n\t}\n\t// Reload SAE size results\n\tif (theState.sizeSaeTires.list != null) {\n\t\tdispatch(\n\t\t\tfetchSizeSaeTiresList(\n\t\t\t\ttheState.sizeSaeTires.diameter,\n\t\t\t\ttheState.sizeSaeTires.width,\n\t\t\t\ttheState.sizeSaeTires.rim,\n\t\t\t\ttheState.sizeSaeTires.dept,\n\t\t\t\t0 // brand\n\t\t\t)\n\t\t);\n\t}\n\t// Reload tire search results\n\tif (!isEmpty(theState.search.selectedItem)) {\n\t\tdispatch(fetchSearchResultsTiresList(theState.search.selectedItem.Id));\n\t}\n};\nexport const fetchValidateCoupon =\n\t(couponCode) => async (dispatch, getState) => {\n\t\tlet headers = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t};\n\t\tsessionService\n\t\t\t.loadSession()\n\t\t\t.then((session) => {\n\t\t\t\theaders = {\n\t\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t};\n\t\t\t})\n\t\t\t.catch((err) => console.log(\"Error\", err));\n\t\tconst theState = getState();\n\t\tconst options = {\n\t\t\theaders: headers}\n\t\t\t;\n\t\tconst body ={\n\t\t\t\tcupon: couponCode,\n\t\t};\n\t\tconst url = BASE_API_URL + \"/api/Cupones/Valida\";\n\t\tdispatch(requestValidateCoupon());\n\t\treturn axios\n\t\t\t.post(url, body, options)\n\t\t\t.then((response) => {\n\t\t\t\tif (response.data.Code == null) {\n\t\t\t\t\tdispatch(receiveValidateCoupon({ coupon: null }));\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\tdescription: \"No se ha podido cargar el cupón\",\n\t\t\t\t\t\t\t\tdetails:\n\t\t\t\t\t\t\t\t\tCOUPON_STATUS.properties[response.data.Status].message,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(receiveValidateCoupon({ coupon: response.data }));\n\t\t\t\t\t\tdispatch(fetchHighlightsTiresList());\n\t\t\t\t\t\tdispatch(fetchCartObject());\n\t\t\t\t\t\t// Reload vehicle tires results\n\t\t\t\t\t\tif (theState.vehicleTires.list != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tfetchVehicleTiresList(\n\t\t\t\t\t\t\t\t\ttheState.vehicleTires.list.BrandId,\n\t\t\t\t\t\t\t\t\ttheState.vehicleTires.list.ModelId,\n\t\t\t\t\t\t\t\t\ttheState.vehicleTires.list.Year,\n\t\t\t\t\t\t\t\t\ttheState.vehicleTires.list.VersionId\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Reload size search results\n\t\t\t\t\t\tif (theState.sizeTires.list != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tfetchSizeTiresList(\n\t\t\t\t\t\t\t\t\ttheState.sizeTires.width,\n\t\t\t\t\t\t\t\t\ttheState.sizeTires.ratio,\n\t\t\t\t\t\t\t\t\ttheState.sizeTires.rim,\n\t\t\t\t\t\t\t\t\ttheState.sizeTires.dept,\n\t\t\t\t\t\t\t\t\t0 // brand\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Reload SAE size results\n\t\t\t\t\t\tif (theState.sizeSaeTires.list != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tfetchSizeSaeTiresList(\n\t\t\t\t\t\t\t\t\ttheState.sizeSaeTires.diameter,\n\t\t\t\t\t\t\t\t\ttheState.sizeSaeTires.width,\n\t\t\t\t\t\t\t\t\ttheState.sizeSaeTires.rim,\n\t\t\t\t\t\t\t\t\ttheState.sizeSaeTires.dept,\n\t\t\t\t\t\t\t\t\t0 // brand\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Reload tire search results\n\t\t\t\t\t\tif (!isEmpty(theState.search.selectedItem)) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tfetchSearchResultsTiresList(theState.search.selectedItem.Id)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tdispatch(receiveValidateCoupon({ coupon: null }));\n\t\t\t\tdispatch(\n\t\t\t\t\tsetAlert({\n\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\tdescription: \"No se ha podido cargar el cupón\",\n\t\t\t\t\t\t\tdetails: \"El cupón no es válido\",\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t});\n\t};\n\nexport const evaluateCartNextStep = (nextTab) => async (dispatch, getState) => {\n\tconst theState = getState();\n\tconst { cartObject, shipType, paymentType } = theState.cart;\n\tlet cartItems = [];\n\tfor (let i = 0; i < cartObject.Elementos.length; i++) {\n\t\tcartItems.push({\n\t\t\tid: cartObject.Elementos[i].Tire.Code,\n\t\t\tname: cartObject.Elementos[i].Tire.TireProduct.Name,\n\t\t\tbrand: cartObject.Elementos[i].Tire.TireProduct.Brand,\n\t\t\tcategory: \"Llantas/\" + cartObject.Elementos[i].Tire.VehicleType,\n\t\t\tvariant: cartObject.Elementos[i].Tire.Size,\n\t\t\tprice: cartObject.Elementos[i].Tire.Price,\n\t\t\tquantity: cartObject.Elementos[i].Cantidad,\n\t\t});\n\t}\n\tsessionService\n\t\t.loadSession()\n\t\t.then(() => {\n\t\t\tdispatch(setCartActiveTab({ showTab: nextTab }));\n\t\t\tdispatch(fetchShipAddressListIfNeeded());\n\t\t\tdispatch(fetchInvoiceAddressListIfNeeded());\n\t\t\tdispatch(fetchPaymentCardListIfNeeded());\n\t\t\tdispatch(fetchDealerShipAddressListIfNeeded());\n\t\t\tswitch (nextTab) {\n\t\t\t\tcase s.SHIP:\n\t\t\t\t\tReactGA.gtag(\"event\", \"begin_checkout\", {\n\t\t\t\t\t\tcurrency: \"MXN\",\n\t\t\t\t\t\tvalue: cartObject.Total,\n\t\t\t\t\t\tcoupon: cartObject.CuponDescuento.CodigoCupon,\n\t\t\t\t\t\titems: cartItems,\n\t\t\t\t\t});\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Checkout\",\n\t\t\t\t\t\taction: \"Paso 1 - Carrito\",\n\t\t\t\t\t});\n\t\t\t\t\tdispatch(gtmTriggerCartLoginButton());\n\t\t\t\t\tbreak;\n\t\t\t\tcase s.INVOICE:\n\t\t\t\t\tReactGA.gtag(\"event\", \"add_shipping_info\", {\n\t\t\t\t\t\tcurrency: \"MXN\",\n\t\t\t\t\t\tvalue: cartObject.Total,\n\t\t\t\t\t\tcoupon: cartObject.CuponDescuento.CodigoCupon,\n\t\t\t\t\t\tshipping_tier: SHIP_TYPES.properties[shipType].name,\n\t\t\t\t\t\titems: cartItems,\n\t\t\t\t\t});\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Checkout\",\n\t\t\t\t\t\taction: \"Paso 2 - Envío\",\n\t\t\t\t\t});\n\t\t\t\t\tdispatch(gtmTriggerCartShipButton());\n\t\t\t\t\tbreak;\n\t\t\t\tcase s.PAYMENT:\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Checkout\",\n\t\t\t\t\t\taction: \"Paso 3 - Facturación\",\n\t\t\t\t\t});\n\t\t\t\t\tdispatch(gtmTriggerCartBillButton());\n\t\t\t\t\tbreak;\n\t\t\t\tcase s.SUMMARY:\n\t\t\t\t\tReactGA.gtag(\"event\", \"add_payment_info\", {\n\t\t\t\t\t\tcurrency: \"MXN\",\n\t\t\t\t\t\tvalue: cartObject.Total,\n\t\t\t\t\t\tcoupon: cartObject.CuponDescuento.CodigoCupon,\n\t\t\t\t\t\titems: cartItems,\n\t\t\t\t\t\tpayment_type: PAYMENT_METHODS.properties[paymentType].name,\n\t\t\t\t\t});\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Checkout\",\n\t\t\t\t\t\taction: \"Paso 4 - Método de Pago\",\n\t\t\t\t\t});\n\t\t\t\t\tdispatch(gtmTriggerCartPaymentButton());\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t})\n\t\t.catch((err) => {\n\t\t\tdispatch(toggleShowLogin({ isOpen: false }));\n\t\t\tdispatch(setFromCart({ fromCart: true }));\n\t\t\tdispatch(gtmTriggerCartLoginButton());\n\t\t\tReactGA.gtag(\"event\", \"begin_checkout\", {\n\t\t\t\tcurrency: \"MXN\",\n\t\t\t\tvalue: cartObject.Total,\n\t\t\t\tcoupon: cartObject.CuponDescuento.CodigoCupon,\n\t\t\t\titems: cartItems,\n\t\t\t});\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Checkout\",\n\t\t\t\taction: \"Paso 1 - Carrito Not Logged\",\n\t\t\t});\n\t\t});\n};\nexport const cartLoadOpenPay = () => async (dispatch) => {\n\tdispatch(requestCartObject());\n\tconst openpay = window.OpenPay;\n\topenpay.setId(process.env.RAZZLE_OPENPAY_ID);\n\topenpay.setApiKey(process.env.RAZZLE_OPENPAY_PUBLIC);\n\topenpay.setSandboxMode(\n\t\tprocess.env.RAZZLE_OPENPAY_SANDBOX === \"true\" ? true : false\n\t);\n\tdispatch(setCartOpenPayLoaded({ openPayLoaded: true }));\n\tdispatch(removeCartLoading());\n};\nexport default cart.reducer;\n","import React, { useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport Autosuggest from \"react-autosuggest\";\nimport Scroll from \"react-scroll\";\nimport { imageFormat, getBrandClass } from \"features/functions\";\nimport {\n\tloadSearchSuggestions,\n\tupdateSearchItem,\n\tupdateSearchValue,\n\tclearSearchSuggestions,\n\tclearSearchActions,\n\tclearSearchValue,\n\tchangeSearchActions,\n} from \"features/tireFinder/searchSlice\";\nimport {\n\tfetchSearchResultsTireListIfNeeded,\n\thideSearchResultsList,\n} from \"features/tireResults/searchTiresSlice\";\nimport { clearSizeTiresList } from \"features/tireResults/sizeTiresSlice\";\nimport { clearSizeSaeTiresList } from \"features/tireResults/sizeSaeTiresSlice\";\nimport { clearVehicleTiresData } from \"features/tireResults/vehicleTiresSlice\";\nimport { hideHighlightsTiresList } from \"features/tireResults/highlightsTiresSlice\";\n\nconst getClassName = (showField) => {\n\tif (!showField) return \"search-hide\";\n\telse return \"search-show\";\n};\n\nconst scroll = Scroll.animateScroll;\n\nexport default function Search() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { showField, value, suggestions } = useSelector(\n\t\t(state) => state.search\n\t);\n\t// Refs\n\tconst searchRef = useRef();\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Handlers\n\tfunction handleClearSearchClick() {\n\t\tscroll.scrollTo(0, { smooth: true, delay: 100, duration: 500 });\n\t\tdispatch(clearSearchValue());\n\t\tdispatch(clearSearchActions());\n\t}\n\tfunction onSuggestionsFetchRequested({ value }) {\n\t\tdispatch(loadSearchSuggestions(value));\n\t}\n\tfunction onSuggestionSelected(event, { suggestion }) {\n\t\tdispatch(updateSearchItem({ selectedItem: suggestion }));\n\t\tdispatch(fetchSearchResultsTireListIfNeeded(suggestion.Id));\n\t\tdispatch(clearSizeTiresList());\n\t\tdispatch(clearSizeSaeTiresList());\n\t\tdispatch(clearVehicleTiresData());\n\t\tdispatch(hideHighlightsTiresList({ hide: true }));\n\t\tdispatch(hideSearchResultsList({ hide: false }));\n\t\tconst target = document.getElementById(\"resultCarousel\");\n\t\tconst targetPos =\n\t\t\ttarget.offsetWidth > 980 ? target.offsetTop - 100 : target.offsetTop - 50;\n\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\tsearchRef.current.blur();\n\t}\n\tfunction onSuggestionsClearRequested() {\n\t\tdispatch(clearSearchSuggestions());\n\t}\n\tfunction onChange(event, { newValue }) {\n\t\tdispatch(updateSearchValue({ value: newValue }));\n\t\tdispatch(updateSearchItem({ selectedItem: {} }));\n\t\tdispatch(hideHighlightsTiresList({ hide: false }));\n\t\tdispatch(changeSearchActions());\n\t\tif (location !== \"/\") history.push(\"/\");\n\t}\n\tfunction getSuggestionValue(suggestion) {\n\t\treturn suggestion.Name;\n\t}\n\tfunction renderSuggestion(suggestion) {\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{suggestion.Name}
\n\t\t\t\t\t
{suggestion.Slogan}
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\t// Conditional elements\n\tlet clearSearch;\n\tif (value.length === 0 && getClassName(showField) === \"search-hide\") {\n\t\tclearSearch = null;\n\t} else {\n\t\tclearSearch = (\n\t\t\t
\n\t\t);\n\t}\n\t// Render\n\tconst inputProps = {\n\t\tplaceholder: \"Buscar...\",\n\t\tvalue,\n\t\tonChange,\n\t\ttabIndex: 1,\n\t\tref: searchRef,\n\t};\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{clearSearch}\n\t\t\t
\n\t\t
\n\t);\n}\n","import React, { useState } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport {\n\ttoggleShowOrdersList,\n\tfetchOrdersList,\n} from \"features/orders/ordersSlice\";\nimport { toggleShowShipAddress } from \"features/account/shipAddressSlice\";\nimport { toggleShowInvoiceAddress } from \"features/account/invoiceAddressSlice\";\nimport { toggleShowAccountData } from \"features/account/accountSlice\";\nimport { doLogout } from \"features/account/loginSlice\";\nimport { toggleShowAccountCards } from \"features/account/accountCardsSlice\";\n\nexport default function AccountMenu() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { user } = useSelector((state) => state.session);\n\t// State\n\tconst [dropdownClass, setDropdownClass] = useState(\n\t\t\"dropdown-menu dropdown-select\"\n\t);\n\tconst [dropdownIsActive, setDropdownIsActive] = useState(false);\n\t// Handlers\n\tfunction handleBlur() {\n\t\tsetDropdownClass(\"dropdown-menu dropdown-select\");\n\t\tsetDropdownIsActive(false);\n\t}\n\tfunction handleMouseDown(e) {\n\t\tif (dropdownIsActive) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\t\treturn;\n\t}\n\tfunction toggleShowMenu() {\n\t\tif (dropdownIsActive) {\n\t\t\tsetDropdownClass(\"dropdown-menu dropdown-select\");\n\t\t} else {\n\t\t\tsetDropdownClass(\"dropdown-menu dropdown-select show-menu\");\n\t\t}\n\t\tsetDropdownIsActive(!dropdownIsActive);\n\t}\n\tfunction handleShowOrders() {\n\t\ttoggleShowMenu();\n\t\tdispatch(toggleShowOrdersList({ isOpen: false }));\n\t\tdispatch(fetchOrdersList());\n\t}\n\tfunction handleShowCards() {\n\t\ttoggleShowMenu();\n\t\tdispatch(toggleShowAccountCards({ isOpen: false }));\n\t}\n\tfunction handleShowShipAddress() {\n\t\ttoggleShowMenu();\n\t\tdispatch(toggleShowShipAddress({ isOpen: false }));\n\t}\n\tfunction handleShowInvoiceAddress() {\n\t\ttoggleShowMenu();\n\t\tdispatch(toggleShowInvoiceAddress({ isOpen: false }));\n\t}\n\tfunction handleShowDetails() {\n\t\ttoggleShowMenu();\n\t\tdispatch(toggleShowAccountData({ isOpen: false }));\n\t}\n\tfunction handleLogOut() {\n\t\ttoggleShowMenu();\n\t\tdispatch(doLogout());\n\t}\n\t// Render\n\tconst buttonText = user.user != null ? user.user.name : \"Mi Cuenta\";\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t

\n\t\t\t\t\t\t\n\t\t\t\t\t\t{buttonText}\n\t\t\t\t\t

\n\t\t\t\t\t
    \n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\tPedidos\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\tMedios de Pago\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\tDatos Facturación\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\tDirecciones Envío\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\tMis Datos\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\tCerrar Sesión\n\t\t\t\t\t\t
  • \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { toggleShowAlert, setAlert } from \"features/alerts/alertsSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\terrorMsg: null,\n};\nconst register = createSlice({\n\tname: \"register\",\n\tinitialState,\n\treducers: {\n\t\trequestRegistration(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tcompleteRegistration(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\ttoggleShowRegister(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Usuario\",\n\t\t\t\t\taction: \"Mostrar Registro\"});\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetRegistrationErrorMsg(state, action) {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tclearRegisterData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestRegistration,\n\tcompleteRegistration,\n\ttoggleShowRegister,\n\tsetRegistrationErrorMsg,\n\tclearRegisterData,\n} = register.actions;\n\nexport const fetchRegister = (data) => async (dispatch, getState) => {\n\tconst theState = getState();\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"POST\",\n\t\theaders: headers,\n\t\tbody: JSON.stringify({\n\t\t\temail: data.usrname,\n\t\t\tpassword: data.pwd,\n\t\t\tname: data.name,\n\t\t\tlastname: data.lastName,\n\t\t\tmothername: data.motherName,\n\t\t\tgender: data.gender,\n\t\t\tbirthdate: data.birthdate,\n\t\t\tphone: data.phone,\n\t\t\tsubscribe: data.subscribe,\n\t\t\tkart: theState.cart.cartObject.strIdBolsa,\n\t\t}),\n\t};\n\tconst url = BASE_API_URL + \"/api/Cuenta/Registro\";\n\tdispatch(requestRegistration());\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.text();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((text) => Promise.reject(text));\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Usuario\",\n\t\t\t\taction: \"Registro Exitoso\",\n\t\t\t});\n\t\t\tdispatch(\n\t\t\t\tsetAlert({\n\t\t\t\t\talert: {\n\t\t\t\t\t\ttitle: \"¡Excelente!\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Se ha completado el registro. Recibirás un correo de confirmación para activar tu cuenta.\",\n\t\t\t\t\t\tdetails: null,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t\tdispatch(completeRegistration());\n\t\t\tdispatch(toggleShowRegister({ isOpen: true }));\n\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\tdispatch(setRegistrationErrorMsg({ errorMsg: null }));\n\t\t})\n\t\t.catch((error) => {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Usuario\",\n\t\t\t\taction: \"Registro Fallido\",\n\t\t\t});\n\t\t\t// TODO: fetch error actions\n\t\t\tif (error.includes(\"duplicate key\")) {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetRegistrationErrorMsg({ errorMsg: { usrname: \"Este correo electrónico ya está registrado.\" } })\n\t\t\t\t);\n\t\t\t\tdispatch(\n\t\t\t\t\tsetAlert({\n\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\tdescription: \"Este correo electrónico ya está registrado.\",\n\t\t\t\t\t\t\tdetails:\n\t\t\t\t\t\t\t\t\"Si no recuerdas tu contraseña puedes solicitar una nueva.\",\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tif (!error.toLowerCase().includes(\"modelstate\")) {\n\t\t\t\t\tconst json = JSON.parse(error);\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tsetRegistrationErrorMsg({ errorMsg: { coupon: json.Message } })\n\t\t\t\t\t);\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\tdescription: \"No se ha podido completar el registro.\",\n\t\t\t\t\t\t\t\tdetails: json.Message,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"No se ha podido completar el registro. Verifica los datos y vuelve a intentar.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdispatch(completeRegistration());\n\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t});\n};\n\nexport default register.reducer;\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { toggleShowSearchField } from \"features/tireFinder/searchSlice\";\nimport { setCartActiveTab, toggleShowCart } from \"features/cart/cartSlice\";\nimport { toggleShowLogin } from \"features/account/loginSlice\";\nimport Search from \"components/tireFinder/Search\";\nimport AccountMenu from \"components/account/AccountMenu\";\nimport { toggleShowRegister } from \"features/account/registerSlice\";\n\nexport default function MainMenu() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { authenticated, checked } = useSelector((state) => state.session);\n\tconst { showField } = useSelector((state) => state.search);\n\tconst { cartObject } = useSelector((state) => state.cart);\n\t// Handlers\n\tfunction handleSearchClick() {\n\t\tdispatch(toggleShowSearchField({ showField }));\n\t}\n\tfunction handleShowCartClick() {\n\t\tdispatch(setCartActiveTab({ showTab: 1 }));\n\t\tdispatch(toggleShowCart({ isOpen: false }));\n\t}\n\tfunction handleShowLoginClick() {\n\t\tdispatch(toggleShowLogin({ isOpen: false }));\n\t}\n\tfunction handleShowRegisterClick() {\n\t\tdispatch(toggleShowRegister({ isOpen: false }));\n\t}\n\t// Render functions\n\tfunction renderAccount() {\n\t\tif (checked && authenticated) {\n\t\t\treturn ;\n\t\t}\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tLogin\n\t\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\tfunction renderRegister() {\n\t\tif (checked && !authenticated) {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t
Registro
\n\t\t\t\t
\n\t\t\t);\n\t\t}\n\t}\n\tconst totalItems = cartObject != null ? cartObject.Articulos : 0;\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t{renderAccount()}\n\t\t\t{renderRegister()}\n\t\t
\n\t);\n}\n","import React from \"react\";\n\nexport default function SliderItem(props) {\n\tfunction handleLinkClick() {\n\t\tif (props.targetUrl != null) {\n\t\t\twindow.open(props.targetUrl, \"_blank\");\n\t\t}\n\t}\n\tfunction renderTitle() {\n\t\tif (props.name != null) {\n\t\t\treturn

{props.name}

;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tfunction renderText() {\n\t\tif (props.text != null) {\n\t\t\treturn

{props.text}

;\n\t\t} else return null;\n\t}\n\tlet slideStyles = { backgroundImage: \"url('\" + props.image + \"')\" };\n\tif (props.targetUrl != null) {\n\t\tslideStyles = { ...slideStyles, cursor: \"pointer\" };\n\t}\n\treturn (\n\t\t
  • \n\t\t\t\n\t\t\t\t{renderTitle()}\n\t\t\t\t{renderText()}\n\t\t\t\n\t\t
  • \n\t);\n}\n","import React from \"react\";\n\nexport default function Loader(props) {\n\tconst { msg } = props;\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t
    {msg}
    \n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport Slider from \"react-slick\";\nimport SliderItem from \"./SliderItem\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport \"slick-carousel/slick/slick.css\";\nimport Loader from \"components/Loader\";\n\nconst sliderDivStyle = {\n\theight: \"100%\",\n};\n\nexport default function BannerSlider() {\n\t// Selectors\n\tconst { isLoading, list } = useSelector((state) => state.banners);\n\t// Render Functions\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderCarousel() {\n\t\tif (!isLoading && list != null) {\n\t\t\tvar settings = {\n\t\t\t\tdots: false,\n\t\t\t\tinfinite: true,\n\t\t\t\tslidesToShow: 1,\n\t\t\t\tspeed: 500,\n\t\t\t\tautoplaySpeed: 4000,\n\t\t\t\tautoplay: true,\n\t\t\t\tswipeToSlide: true,\n\t\t\t};\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\t{list.map((el, index) =>{\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t{renderLoader()}\n\t\t\t\t{renderCarousel()}\n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React, { useRef, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Autosuggest from \"react-autosuggest\";\nimport Scroll from \"react-scroll\";\nimport {\n\tclearVehicleBrandActions,\n\tclearVehicleModelActions,\n\tclearVehicleYearActions,\n\tclearVehicleVersionActions,\n} from \"features/tireFinder/searchSlice\";\nimport {\n\tupdateVehicleBrandValue,\n\tupdateVehicleBrandItem,\n\tloadVehicleBrandsSuggestions,\n\tclearVehicleBrandsSuggestions,\n} from \"features/tireFinder/vehicleBrandsSlice\";\nimport {\n\tfetchVehicleModelsIfNeeded,\n\tupdateVehicleModelItem,\n\tupdateVehicleModelValue,\n\tloadVehicleModelsSuggestions,\n\tclearVehicleModelsSuggestions,\n} from \"features/tireFinder/vehicleModelsSlice\";\nimport {\n\tfetchVehicleYearsIfNeeded,\n\tupdateVehicleYearItem,\n\tupdateVehicleYearValue,\n\tloadVehicleYearsSuggestions,\n\tclearVehicleYearsSuggestions,\n} from \"features/tireFinder/vehicleYearsSlice\";\nimport {\n\tfetchVehicleVersionsIfNeeded,\n\tupdateVehicleVersionItem,\n\tupdateVehicleVersionValue,\n\tloadVehicleVersionsSuggestions,\n\tclearVehicleVersionsSuggestions,\n} from \"features/tireFinder/vehicleVersionsSlice\";\nimport { fetchVehicleTiresListIfNeeded } from \"features/tireResults/vehicleTiresSlice\";\nimport { clearSizeTiresList } from \"features/tireResults/sizeTiresSlice\";\nimport { clearSizeSaeTiresList } from \"features/tireResults/sizeSaeTiresSlice\";\nimport { hideHighlightsTiresList } from \"features/tireResults/highlightsTiresSlice\";\n\nconst renderSuggestion = (suggestion) => {\n\treturn
    {suggestion.Name}
    ;\n};\nconst getSuggestionValue = (suggestion) => {\n\treturn suggestion.Name + \"\";\n};\nconst renderYearSuggestion = (suggestion) => {\n\treturn
    {suggestion.anio}
    ;\n};\nconst getYearSuggestionValue = (suggestion) => {\n\treturn suggestion.anio + \"\";\n};\n\nconst scroll = Scroll.animateScroll;\n\nexport default function VehicleFinder() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst {\n\t\tvehicleBrands,\n\t\tvehicleModels,\n\t\tvehicleYears,\n\t\tvehicleVersions,\n\t} = useSelector((state) => state);\n\tconst tireList = useSelector((state) => state.vehicleTires.list);\n\t// Refs\n\tconst modelRef = useRef();\n\tconst yearRef = useRef();\n\tconst versionRef = useRef();\n\t// Effect\n\tuseEffect(() => {\n\t\tif (vehicleModels.renderInput && tireList == null) {\n\t\t\tmodelRef.current.focus();\n\t\t}\n\t\tif (vehicleYears.renderInput && tireList == null) {\n\t\t\tyearRef.current.focus();\n\t\t}\n\t\tif (vehicleVersions.renderInput && tireList == null) {\n\t\t\tversionRef.current.focus();\n\t\t}\n\t}, [\n\t\tvehicleModels.renderInput,\n\t\tvehicleYears.renderInput,\n\t\tvehicleVersions.renderInput,\n\t\ttireList,\n\t]);\n\t// Brand\n\tfunction handleBrandChange(event, { newValue }) {\n\t\tdispatch(clearVehicleBrandActions());\n\t\tdispatch(updateVehicleBrandValue({ value: newValue }));\n\t\tdispatch(updateVehicleBrandItem({ selectedItem: {} }));\n\t}\n\tfunction handleFocus(e) {\n\t\te.target.select();\n\t}\n\tfunction onBrandSelected(event, { suggestion }) {\n\t\tdispatch(fetchVehicleModelsIfNeeded(suggestion.ID));\n\t\tdispatch(updateVehicleBrandItem({ selectedItem: suggestion }));\n\t}\n\tfunction onBrandFetchRequested({ value }) {\n\t\tdispatch(loadVehicleBrandsSuggestions(value));\n\t}\n\tfunction onBrandClearRequested() {\n\t\tdispatch(clearVehicleBrandsSuggestions());\n\t}\n\t// Model\n\tfunction handleModelChange(event, { newValue }) {\n\t\tdispatch(clearVehicleModelActions());\n\t\tdispatch(updateVehicleModelValue({ value: newValue }));\n\t\tdispatch(updateVehicleModelItem({ selectedItem: {} }));\n\t}\n\tfunction onModelSelected(event, { suggestion }) {\n\t\tdispatch(fetchVehicleYearsIfNeeded(suggestion.ID));\n\t\tdispatch(updateVehicleModelItem({ selectedItem: suggestion }));\n\t}\n\tfunction onModelFetchRequested({ value }) {\n\t\tdispatch(loadVehicleModelsSuggestions(value));\n\t}\n\tfunction onModelClearRequested() {\n\t\tdispatch(clearVehicleModelsSuggestions());\n\t}\n\t// Year\n\tfunction handleYearChange(event, { newValue }) {\n\t\tdispatch(clearVehicleYearActions());\n\t\tdispatch(updateVehicleYearValue({ value: newValue }));\n\t\tdispatch(updateVehicleYearItem({ selectedItem: {} }));\n\t}\n\tfunction onYearSelected(event, { suggestion }) {\n\t\tdispatch(fetchVehicleVersionsIfNeeded(suggestion.anio));\n\t\tdispatch(updateVehicleYearItem({ selectedItem: suggestion }));\n\t}\n\tfunction onYearFetchRequested({ value }) {\n\t\tdispatch(loadVehicleYearsSuggestions(value));\n\t}\n\tfunction onYearClearRequested() {\n\t\tdispatch(clearVehicleYearsSuggestions());\n\t}\n\t// Version\n\tfunction handleVersionChange(event, { newValue }) {\n\t\tdispatch(updateVehicleVersionValue({ value: newValue }));\n\t\tdispatch(updateVehicleVersionItem({ selectedItem: {} }));\n\t\tdispatch(clearVehicleVersionActions());\n\t}\n\tfunction onVersionSelected(event, { suggestion }) {\n\t\tdispatch(updateVehicleVersionItem({ selectedItem: suggestion }));\n\t\tdispatch(fetchVehicleTiresListIfNeeded(suggestion.ID));\n\t\tdispatch(clearSizeTiresList());\n\t\tdispatch(clearSizeSaeTiresList());\n\t\tdispatch(hideHighlightsTiresList({ hide: true }));\n\t\tsetTimeout(() => {\n\t\t\tconst target = document.getElementById(\"resultCarousel\");\n\t\t\tconst targetPos =\n\t\t\t\ttarget.offsetWidth > 980\n\t\t\t\t\t? target.offsetTop - 100\n\t\t\t\t\t: target.offsetTop - 50;\n\t\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\t}, 500);\n\t\tversionRef.current.blur();\n\t}\n\tfunction onVersionFetchRequested({ value }) {\n\t\tdispatch(loadVehicleVersionsSuggestions(value));\n\t}\n\tfunction onVersionClearRequested() {\n\t\tdispatch(clearVehicleVersionsSuggestions());\n\t}\n\t// Input props\n\tconst brandProps = {\n\t\tplaceholder: \"Escribe la marca...\",\n\t\tvalue: vehicleBrands.value,\n\t\tonChange: handleBrandChange,\n\t\tonFocus: handleFocus,\n\t\ttabIndex: 101,\n\t};\n\tconst modelProps = {\n\t\tplaceholder: \"MODELO\",\n\t\tvalue: vehicleModels.value,\n\t\tonChange: handleModelChange,\n\t\tonFocus: handleFocus,\n\t\ttabIndex: 102,\n\t\tref: modelRef,\n\t};\n\tconst yearProps = {\n\t\tplaceholder: \"AÑO\",\n\t\tvalue: vehicleYears.value,\n\t\tonChange: handleYearChange,\n\t\tonFocus: handleFocus,\n\t\ttabIndex: 103,\n\t\tref: yearRef,\n\t};\n\tconst versionProps = {\n\t\tplaceholder: \"VERSION\",\n\t\tvalue: vehicleVersions.value,\n\t\tonChange: handleVersionChange,\n\t\tonFocus: handleFocus,\n\t\ttabIndex: 104,\n\t\tref: versionRef,\n\t};\n\t// Render functions\n\tfunction renderModel() {\n\t\tif (vehicleModels.renderInput) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t true}\n\t\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\t\tonSuggestionSelected={onModelSelected}\n\t\t\t\t\t\t\tinputProps={modelProps}\n\t\t\t\t\t\t\tid=\"vehicleModel\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    MODELO
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderYear() {\n\t\tif (vehicleYears.renderInput) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t true}\n\t\t\t\t\t\t\trenderSuggestion={renderYearSuggestion}\n\t\t\t\t\t\t\tonSuggestionSelected={onYearSelected}\n\t\t\t\t\t\t\tinputProps={yearProps}\n\t\t\t\t\t\t\tid=\"vehicleYear\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    AÑO
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderVersion() {\n\t\tif (vehicleVersions.renderInput) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t true}\n\t\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\t\tonSuggestionSelected={onVersionSelected}\n\t\t\t\t\t\t\tinputProps={versionProps}\n\t\t\t\t\t\t\tid=\"vehicleVersion\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    VERSION
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t

    ¿Qué vehículo tienes?

    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{renderModel()}\n\t\t\t{renderYear()}\n\t\t\t{renderVersion()}\n\t\t
    \n\t);\n}\n","import React, { useRef, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { load } from \"opentype.js\";\nimport { Matrix } from \"transformation-matrix-js\";\nimport canvasFont from \"css/fonts/Stag-Sans-Bold-Italic.otf\";\nimport canvasImage from \"images/tire-finder-art.png\";\n\nvar canvasParams = {\n\timage: null,\n\tshadowsImage: null,\n\tradius: 309,\n\tcenter: { x: 341.5, y: 417 },\n\n\t//by default\n\tvalues: [\"\", \"\", \"\"],\n\ttemplate: [\"185\", \"65\", \"15\"],\n\twhite_color: \"rgba(255, 255, 255, 0.8)\",\n\tyellow_color: \"rgba(254, 167, 0, 1.0)\",\n\tsoft_light: \"rgba(255, 255, 255, 0.05)\", //pure white with alpha 0.05\n\n\tindexFocus: -1,\n\tseparator: \"/\",\n\n\t// SAE Mode (true|false)\n\tsae_mode: false,\n\tsae_separator: \"X\",\n\n\tbuild: \"R\",\n\toffset: -90.0,\n\t//angle: this.offset / 180 * Math.PI,\n\tangle: (-90.0 / 180) * Math.PI,\n\n\timageWidth: 0,\n\timageHeight: 0,\n\n\t//context\n\tmatrix: null,\n\tpath2d: null,\n\tpath2d_inverse: null,\n\n\tfirstPath: null,\n\tseparatorPath: null,\n\tsecondPath: null,\n\tbuildPath: null,\n\tthirdPath: null,\n\n\t//OpenType\n\tottfont: null,\n};\nconst getGlyphWidth = (glyph, fontSize) => {\n\tvar width = 0;\n\tvar scale = (1 / canvasParams.ottfont.unitsPerEm) * fontSize;\n\n\tif (glyph.advanceWidth) {\n\t\twidth = glyph.advanceWidth;\n\t}\n\n\treturn width * scale;\n};\nexport default function TireCanvas() {\n\t// Selectors\n\tconst { focus, isSAE, first, second, third, firstLoad } = useSelector(\n\t\t(state) => state.sizeCanvas\n\t);\n\t// Refs\n\tconst canvasRef = useRef();\n\t// Functions\n\tfunction drawType(context) {\n\t\tif (canvasParams.image !== null) {\n\t\t\tcontext.drawImage(\n\t\t\t\tcanvasParams.image,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tcanvasParams.imageWidth,\n\t\t\t\tcanvasParams.imageHeight\n\t\t\t);\n\n\t\t\tcontext.save();\n\t\t\tcontext.clip(canvasParams.path2d_inverse);\n\t\t\tcontext.drawImage(\n\t\t\t\tcanvasParams.shadowsImage,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tcanvasParams.imageWidth,\n\t\t\t\tcanvasParams.imageHeight\n\t\t\t);\n\t\t\tcontext.restore();\n\n\t\t\tcontext.save();\n\t\t\tcontext.fillStyle = canvasParams.soft_light;\n\t\t\tcontext.fill(canvasParams.path2d);\n\t\t\tcontext.restore();\n\n\t\t\t//draw filled inputs\n\t\t\tcontext.save();\n\t\t\tcontext.fillStyle = canvasParams.white_color;\n\n\t\t\tif (canvasParams.values[0] !== \"\" && canvasParams.indexFocus !== 0)\n\t\t\t\tcontext.fill(canvasParams.firstPath);\n\t\t\tif (canvasParams.values[1] !== \"\" && canvasParams.indexFocus !== 1)\n\t\t\t\tcontext.fill(canvasParams.secondPath);\n\t\t\tif (canvasParams.values[0] !== \"\" && canvasParams.values[1] !== \"\")\n\t\t\t\tcontext.fill(canvasParams.separatorPath);\n\t\t\tif (canvasParams.values[2] !== \"\" && canvasParams.indexFocus !== 2)\n\t\t\t\tcontext.fill(canvasParams.thirdPath);\n\t\t\tif (\n\t\t\t\tcanvasParams.values[0] !== \"\" &&\n\t\t\t\tcanvasParams.values[1] !== \"\" &&\n\t\t\t\tcanvasParams.values[2] !== \"\"\n\t\t\t)\n\t\t\t\tcontext.fill(canvasParams.buildPath);\n\n\t\t\tcontext.restore();\n\n\t\t\tif (canvasParams.indexFocus !== -1) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.fillStyle = canvasParams.yellow_color;\n\n\t\t\t\tswitch (canvasParams.indexFocus) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tcontext.fill(canvasParams.firstPath);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tcontext.fill(canvasParams.secondPath);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tcontext.fill(canvasParams.thirdPath);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t}\n\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t}\n\t}\n\tfunction blurSize() {\n\t\tcanvasParams.indexFocus = -1;\n\t}\n\tfunction setMode(mode) {\n\t\tif (mode) {\n\t\t\tcanvasParams.template = [\"31\", \"10.5\", \"15\"];\n\t\t} else {\n\t\t\tcanvasParams.template = [\"185\", \"65\", \"15\"];\n\t\t}\n\t\t//SAE\n\t\tcanvasParams.sae_mode = mode;\n\t}\n\tfunction getTextWidth(string, fontSize, kerning) {\n\t\tvar width = 0;\n\t\tvar glyphs = canvasParams.ottfont.stringToGlyphs(string);\n\t\tvar scale = (1 / canvasParams.ottfont.unitsPerEm) * fontSize;\n\n\t\tfor (var i = 0; i < glyphs.length; i++) {\n\t\t\tif (glyphs[i].advanceWidth) {\n\t\t\t\twidth += glyphs[i].advanceWidth;\n\t\t\t}\n\n\t\t\tif (kerning && i < glyphs.length - 1) {\n\t\t\t\tvar kerningValue = canvasParams.ottfont.getKerningValue(\n\t\t\t\t\tglyphs[i],\n\t\t\t\t\tglyphs[i + 1]\n\t\t\t\t);\n\t\t\t\twidth += kerningValue;\n\t\t\t}\n\t\t}\n\n\t\treturn width * scale;\n\t}\n\t// function getKerning(glyph, nextGlyph, fontSize) {\n\t// \tvar scale = (1 / canvasParams.ottfont.unitsPerEm) * fontSize;\n\t// \tlet kerningValue =\n\t// \t\tcanvasParams.ottfont.getKerningValue(glyph, nextGlyph) * scale;\n\t// \treturn kerningValue;\n\t// }\n\t// returns convert degree to radian\n\t// function toRadian(degree) {\n\t// \treturn degree * (Math.PI / 180);\n\t// }\n\t// returns convert radian to degree\n\t// function toDegree(radian) {\n\t// \treturn radian * (180 / Math.PI);\n\t// }\n\t// Effect\n\tuseEffect(() => {\n\t\tconst canvas = canvasRef.current;\n\t\tconst context = canvas.getContext(\"2d\");\n\t\t// Functions\n\t\tfunction updateCanvas(canvas, context, imgSrc, fontSrc) {\n\t\t\t//load image\n\t\t\tvar img = new Image();\n\t\t\timg.onload = () => {\n\t\t\t\tcanvasParams.imageWidth = img.width;\n\t\t\t\tcanvasParams.imageHeight = img.height;\n\n\t\t\t\tcontext.canvas.width = canvasParams.imageWidth;\n\t\t\t\tcontext.canvas.height = canvasParams.imageHeight;\n\n\t\t\t\tcanvasParams.image = img;\n\t\t\t\tloadOpenTypeFont(context, canvas, fontSrc);\n\t\t\t};\n\t\t\timg.src = imgSrc;\n\t\t}\n\t\tfunction focusSize(context, i) {\n\t\t\tcanvasParams.indexFocus = i;\n\t\t\tdrawType(context);\n\t\t}\n\t\tfunction loadOpenTypeFont(context, canvas, fontSrc) {\n\t\t\tload(fontSrc, (err, _font) => {\n\t\t\t\tif (err) {\n\t\t\t\t\talert(\"Font could not be loaded: \" + err);\n\t\t\t\t} else {\n\t\t\t\t\tcanvasParams.ottfont = _font;\n\n\t\t\t\t\treshape(context, canvas);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tfunction setValues(context, canvas, newValues) {\n\t\t\tcanvasParams.values = newValues;\n\t\t\treshape(context, canvas);\n\t\t}\n\n\t\tfunction reshape(context, canvas) {\n\t\t\tlet fontSize = 42;\n\t\t\tbuildFontPath(fontSize);\n\t\t\tcontext.clearRect(0, 0, canvas.width, canvas.height);\n\t\t\tcontext.drawImage(\n\t\t\t\tcanvasParams.image,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tcanvasParams.imageWidth,\n\t\t\t\tcanvasParams.imageHeight\n\t\t\t);\n\t\t\trenderShadows(context);\n\t\t}\n\t\tfunction buildFontPath(fontSize) {\n\t\t\tif (!canvasParams.ottfont) return;\n\n\t\t\tlet string =\n\t\t\t\t\"\" +\n\t\t\t\t(canvasParams.values[0] === \"\"\n\t\t\t\t\t? canvasParams.template[0]\n\t\t\t\t\t: canvasParams.values[0]) +\n\t\t\t\tcanvasParams.separator +\n\t\t\t\t(canvasParams.values[1] === \"\"\n\t\t\t\t\t? canvasParams.template[1]\n\t\t\t\t\t: canvasParams.values[1]) +\n\t\t\t\t\" \" +\n\t\t\t\tcanvasParams.build +\n\t\t\t\t\" \" +\n\t\t\t\t(canvasParams.values[2] === \"\"\n\t\t\t\t\t? canvasParams.template[2]\n\t\t\t\t\t: canvasParams.values[2]);\n\n\t\t\tcanvasParams.path2d = new Path2D();\n\t\t\tcanvasParams.path2d_inverse = new Path2D();\n\n\t\t\t//fill paths\n\t\t\tcanvasParams.firstPath = new Path2D();\n\t\t\tcanvasParams.separatorPath = new Path2D();\n\t\t\tcanvasParams.secondPath = new Path2D();\n\t\t\tcanvasParams.buildPath = new Path2D();\n\t\t\tcanvasParams.thirdPath = new Path2D();\n\n\t\t\t//reset start angle\n\t\t\tvar perimeter = 2 * Math.PI * canvasParams.radius;\n\t\t\tvar textWidth = getTextWidth(string, fontSize, false);\n\t\t\tvar centerAngle = (textWidth / 2 / perimeter) * 2 * Math.PI; //center text\n\n\t\t\t//reset\n\t\t\tcanvasParams.angle = (canvasParams.offset / 180) * Math.PI;\n\t\t\tcanvasParams.angle -= centerAngle; //align to center\n\n\t\t\t//first value\n\t\t\tvar firstPart =\n\t\t\t\t\"\" +\n\t\t\t\t(canvasParams.values[0] === \"\"\n\t\t\t\t\t? canvasParams.template[0]\n\t\t\t\t\t: canvasParams.values[0]);\n\n\t\t\tvar point;\n\t\t\t//iterate each glyph\n\t\t\tcanvasParams.ottfont.forEachGlyph(\n\t\t\t\tfirstPart,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tfontSize,\n\t\t\t\t{},\n\t\t\t\t(glyph, gX, gY, gFontSize) => {\n\t\t\t\t\tvar glyphPath = glyph.getPath(0, 0, gFontSize);\n\n\t\t\t\t\tvar letterDim = getGlyphWidth(glyph, fontSize);\n\t\t\t\t\tvar letterAngle = (letterDim / perimeter) * 2 * Math.PI; //unit\n\n\t\t\t\t\tvar x = canvasParams.radius * Math.cos(canvasParams.angle);\n\t\t\t\t\tvar y = canvasParams.radius * Math.sin(canvasParams.angle);\n\n\t\t\t\t\t//matrix\n\t\t\t\t\tcanvasParams.matrix = new Matrix(); //reset\n\t\t\t\t\tcanvasParams.matrix.translate(\n\t\t\t\t\t\tx + canvasParams.center.x,\n\t\t\t\t\t\ty + canvasParams.center.y\n\t\t\t\t\t);\n\t\t\t\t\tcanvasParams.matrix.rotate(canvasParams.angle + 0.5 * Math.PI); //\n\n\t\t\t\t\tcanvasParams.angle += letterAngle;\n\n\t\t\t\t\tfor (var i = 0; i < glyphPath.commands.length; i++) {\n\t\t\t\t\t\tswitch (glyphPath.commands[i].type) {\n\t\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.firstPath.moveTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"L\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.firstPath.lineTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"C\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point1 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x1,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y1\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point2 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x2,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y2\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.firstPath.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"Z\":\n\t\t\t\t\t\t\t\tcanvasParams.path2d.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.firstPath.closePath(); //end close\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tvar separatorPart =\n\t\t\t\t\"\" +\n\t\t\t\t(canvasParams.sae_mode\n\t\t\t\t\t? canvasParams.sae_separator\n\t\t\t\t\t: canvasParams.separator);\n\n\t\t\t//separator\n\t\t\tcanvasParams.ottfont.forEachGlyph(\n\t\t\t\tseparatorPart,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tfontSize,\n\t\t\t\t{},\n\t\t\t\tfunction (glyph, gX, gY, gFontSize) {\n\t\t\t\t\tvar glyphPath = glyph.getPath(0, 0, gFontSize);\n\n\t\t\t\t\tvar letterDim = getGlyphWidth(glyph, fontSize);\n\t\t\t\t\tvar letterAngle = (letterDim / perimeter) * 2 * Math.PI; //unit\n\n\t\t\t\t\tvar x = canvasParams.radius * Math.cos(canvasParams.angle);\n\t\t\t\t\tvar y = canvasParams.radius * Math.sin(canvasParams.angle);\n\n\t\t\t\t\t//matrix\n\t\t\t\t\tcanvasParams.matrix = new Matrix(); //reset\n\t\t\t\t\tcanvasParams.matrix.translate(\n\t\t\t\t\t\tx + canvasParams.center.x,\n\t\t\t\t\t\ty + canvasParams.center.y\n\t\t\t\t\t);\n\t\t\t\t\tcanvasParams.matrix.rotate(canvasParams.angle + 0.5 * Math.PI); //\n\n\t\t\t\t\tcanvasParams.angle += letterAngle;\n\n\t\t\t\t\tfor (var i = 0; i < glyphPath.commands.length; i++) {\n\t\t\t\t\t\tswitch (glyphPath.commands[i].type) {\n\t\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.separatorPath.moveTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"L\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.separatorPath.lineTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"C\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point1 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x1,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y1\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point2 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x2,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y2\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.separatorPath.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"Z\":\n\t\t\t\t\t\t\t\tcanvasParams.path2d.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.separatorPath.closePath(); //end close\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t//second value\n\t\t\tvar secondPart =\n\t\t\t\t\"\" +\n\t\t\t\t(canvasParams.values[1] === \"\"\n\t\t\t\t\t? canvasParams.template[1]\n\t\t\t\t\t: canvasParams.values[1]);\n\n\t\t\t//iterate each glyph\n\t\t\tcanvasParams.ottfont.forEachGlyph(\n\t\t\t\tsecondPart,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tfontSize,\n\t\t\t\t{},\n\t\t\t\tfunction (glyph, gX, gY, gFontSize) {\n\t\t\t\t\tvar glyphPath = glyph.getPath(0, 0, gFontSize);\n\n\t\t\t\t\tvar letterDim = getGlyphWidth(glyph, fontSize);\n\t\t\t\t\tvar letterAngle = (letterDim / perimeter) * 2 * Math.PI; //unit\n\n\t\t\t\t\tvar x = canvasParams.radius * Math.cos(canvasParams.angle);\n\t\t\t\t\tvar y = canvasParams.radius * Math.sin(canvasParams.angle);\n\n\t\t\t\t\t//matrix\n\t\t\t\t\tcanvasParams.matrix = new Matrix(); //reset\n\t\t\t\t\tcanvasParams.matrix.translate(\n\t\t\t\t\t\tx + canvasParams.center.x,\n\t\t\t\t\t\ty + canvasParams.center.y\n\t\t\t\t\t);\n\t\t\t\t\tcanvasParams.matrix.rotate(canvasParams.angle + 0.5 * Math.PI); //\n\n\t\t\t\t\tcanvasParams.angle += letterAngle;\n\n\t\t\t\t\tfor (var i = 0; i < glyphPath.commands.length; i++) {\n\t\t\t\t\t\tswitch (glyphPath.commands[i].type) {\n\t\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.secondPath.moveTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"L\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.secondPath.lineTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"C\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point1 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x1,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y1\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point2 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x2,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y2\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.secondPath.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"Z\":\n\t\t\t\t\t\t\t\tcanvasParams.path2d.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.secondPath.closePath(); //end close\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t//build\n\t\t\tvar buildPart = \" \" + canvasParams.build;\n\n\t\t\t//iterate each glyph\n\t\t\tcanvasParams.ottfont.forEachGlyph(\n\t\t\t\tbuildPart,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tfontSize,\n\t\t\t\t{},\n\t\t\t\tfunction (glyph, gX, gY, gFontSize) {\n\t\t\t\t\tvar glyphPath = glyph.getPath(0, 0, gFontSize);\n\n\t\t\t\t\tvar letterDim = getGlyphWidth(glyph, fontSize);\n\t\t\t\t\tvar letterAngle = (letterDim / perimeter) * 2 * Math.PI; //unit\n\n\t\t\t\t\tvar x = canvasParams.radius * Math.cos(canvasParams.angle);\n\t\t\t\t\tvar y = canvasParams.radius * Math.sin(canvasParams.angle);\n\n\t\t\t\t\t//matrix\n\t\t\t\t\tcanvasParams.matrix = new Matrix(); //reset\n\t\t\t\t\tcanvasParams.matrix.translate(\n\t\t\t\t\t\tx + canvasParams.center.x,\n\t\t\t\t\t\ty + canvasParams.center.y\n\t\t\t\t\t);\n\t\t\t\t\tcanvasParams.matrix.rotate(canvasParams.angle + 0.5 * Math.PI); //\n\n\t\t\t\t\tcanvasParams.angle += letterAngle;\n\n\t\t\t\t\tfor (var i = 0; i < glyphPath.commands.length; i++) {\n\t\t\t\t\t\tswitch (glyphPath.commands[i].type) {\n\t\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.buildPath.moveTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"L\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.buildPath.lineTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"C\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point1 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x1,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y1\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point2 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x2,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y2\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.buildPath.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"Z\":\n\t\t\t\t\t\t\t\tcanvasParams.path2d.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.buildPath.closePath(); //end close\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t//third value\n\t\t\tvar thirdPart =\n\t\t\t\t\" \" +\n\t\t\t\t(canvasParams.values[2] === \"\"\n\t\t\t\t\t? canvasParams.template[2]\n\t\t\t\t\t: canvasParams.values[2]);\n\n\t\t\t//iterate each glyph\n\t\t\tcanvasParams.ottfont.forEachGlyph(\n\t\t\t\tthirdPart,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tfontSize,\n\t\t\t\t{},\n\t\t\t\tfunction (glyph, gX, gY, gFontSize) {\n\t\t\t\t\tvar glyphPath = glyph.getPath(0, 0, gFontSize);\n\n\t\t\t\t\tvar letterDim = getGlyphWidth(glyph, fontSize);\n\t\t\t\t\tvar letterAngle = (letterDim / perimeter) * 2 * Math.PI; //unit\n\n\t\t\t\t\tvar x = canvasParams.radius * Math.cos(canvasParams.angle);\n\t\t\t\t\tvar y = canvasParams.radius * Math.sin(canvasParams.angle);\n\n\t\t\t\t\t//matrix\n\t\t\t\t\tcanvasParams.matrix = new Matrix(); //reset\n\t\t\t\t\tcanvasParams.matrix.translate(\n\t\t\t\t\t\tx + canvasParams.center.x,\n\t\t\t\t\t\ty + canvasParams.center.y\n\t\t\t\t\t);\n\t\t\t\t\tcanvasParams.matrix.rotate(canvasParams.angle + 0.5 * Math.PI); //\n\n\t\t\t\t\tcanvasParams.angle += letterAngle;\n\n\t\t\t\t\tfor (var i = 0; i < glyphPath.commands.length; i++) {\n\t\t\t\t\t\tswitch (glyphPath.commands[i].type) {\n\t\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.moveTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.thirdPath.moveTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"L\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.lineTo(point.x, point.y);\n\t\t\t\t\t\t\t\tcanvasParams.thirdPath.lineTo(point.x, point.y);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"C\":\n\t\t\t\t\t\t\t\tpoint = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point1 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x1,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y1\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tvar point2 = canvasParams.matrix.applyToPoint(\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].x2,\n\t\t\t\t\t\t\t\t\tglyphPath.commands[i].y2\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tcanvasParams.path2d.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcanvasParams.thirdPath.bezierCurveTo(\n\t\t\t\t\t\t\t\t\tpoint1.x,\n\t\t\t\t\t\t\t\t\tpoint1.y,\n\t\t\t\t\t\t\t\t\tpoint2.x,\n\t\t\t\t\t\t\t\t\tpoint2.y,\n\t\t\t\t\t\t\t\t\tpoint.x,\n\t\t\t\t\t\t\t\t\tpoint.y\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"Z\":\n\t\t\t\t\t\t\t\tcanvasParams.path2d.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.path2d_inverse.closePath(); //end close\n\t\t\t\t\t\t\t\tcanvasParams.thirdPath.closePath(); //end close\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t//add clip box\n\t\t\tcanvasParams.path2d_inverse.moveTo(0, 0);\n\t\t\tcanvasParams.path2d_inverse.lineTo(canvasParams.imageWidth, 0);\n\t\t\tcanvasParams.path2d_inverse.lineTo(\n\t\t\t\tcanvasParams.imageWidth,\n\t\t\t\tcanvasParams.imageHeight\n\t\t\t);\n\t\t\tcanvasParams.path2d_inverse.lineTo(0, canvasParams.imageHeight);\n\t\t\tcanvasParams.path2d_inverse.closePath(); //end close\n\t\t\t//*/\n\t\t}\n\t\tfunction renderShadows(context) {\n\t\t\tvar _canvas = document.createElement(\"canvas\");\n\t\t\tdocument.getElementsByTagName(\"body\")[0].appendChild(_canvas);\n\t\t\tvar _context = _canvas.getContext(\"2d\");\n\t\t\t_context.canvas.width = canvasParams.imageWidth;\n\t\t\t_context.canvas.height = canvasParams.imageHeight;\n\n\t\t\t//glow\n\t\t\t_context.save();\n\t\t\t_context.fillStyle = \"rgba(45, 45, 45, 1.0)\";\n\t\t\t_context.shadowColor = \"rgba(0, 0, 0, 0.5)\";\n\t\t\t_context.shadowBlur = 15;\n\t\t\t_context.shadowOffsetX = 0;\n\t\t\t_context.shadowOffsetY = 0;\n\t\t\t_context.fill(canvasParams.path2d);\n\t\t\t_context.restore();\n\n\t\t\t//fine contour\n\t\t\t_context.save();\n\t\t\t_context.fillStyle = \"rgba(45, 45, 45, 1.0)\";\n\t\t\t_context.shadowColor = \"rgba(0, 0, 0, 0.25)\";\n\t\t\t_context.shadowBlur = 0;\n\t\t\t_context.shadowOffsetX = 0;\n\t\t\t_context.shadowOffsetY = 0;\n\t\t\t_context.fill(canvasParams.path2d);\n\t\t\t_context.restore();\n\n\t\t\t//left drop shadow\n\t\t\t_context.save();\n\t\t\t_context.fillStyle = \"rgba(45, 45, 45, 1.0)\";\n\t\t\t_context.shadowColor = \"rgba(0, 0, 0, 0.25)\";\n\t\t\t_context.shadowBlur = 2;\n\t\t\t_context.shadowOffsetX = -2;\n\t\t\t_context.shadowOffsetY = 2;\n\t\t\t_context.fill(canvasParams.path2d);\n\t\t\t_context.restore();\n\n\t\t\t//right drop shadow\n\t\t\t_context.save();\n\t\t\t_context.fillStyle = \"rgba(45, 45, 45, 1.0)\";\n\t\t\t_context.shadowColor = \"rgba(0, 0, 0, 0.15)\";\n\t\t\t_context.shadowBlur = 2;\n\t\t\t_context.shadowOffsetX = 2;\n\t\t\t_context.shadowOffsetY = -2;\n\t\t\t_context.fill(canvasParams.path2d);\n\t\t\t_context.restore();\n\n\t\t\t//finally fill solid color\n\t\t\tcanvasParams.shadowsImage = new Image();\n\t\t\tcanvasParams.shadowsImage.src = _canvas.toDataURL();\n\t\t\tcanvasParams.shadowsImage.onload = () => {\n\t\t\t\tdrawType(context);\n\t\t\t};\n\n\t\t\tdocument.getElementsByTagName(\"body\")[0].removeChild(_canvas);\n\t\t}\n\n\t\tupdateCanvas(canvas, context, canvasImage, canvasFont);\n\t\tif (focus != null) {\n\t\t\tfocusSize(context, focus);\n\t\t}\n\t\tif (!firstLoad && focus == null) {\n\t\t\tblurSize();\n\t\t\tsetValues(context, canvas, [\"\", \"\", \"\"]);\n\t\t}\n\t\tsetMode(isSAE);\n\t\tif (!firstLoad && first == null && second == null && third == null) {\n\t\t\tsetValues(context, canvas, [\"\", \"\", \"\"]);\n\t\t}\n\t\tif (first != null && second == null && third == null) {\n\t\t\tsetValues(context, canvas, [first, \"\", \"\"]);\n\t\t}\n\t\tif (first != null && second != null && third == null) {\n\t\t\tsetValues(context, canvas, [first, second, \"\"]);\n\t\t}\n\t\tif (first != null && second != null && third != null) {\n\t\t\tsetValues(context, canvas, [first + \"\", second + \"\", third + \"\"]);\n\t\t}\n\t}, [\n\t\t// updateCanvas,\n\t\t// focusSize,\n\t\t// setMode,\n\t\t// setValues,\n\t\t// isSAE,\n\t\t// focus,\n\t\tfirst,\n\t\tsecond,\n\t\tthird,\n\t\tfocus,\n\t\tfirstLoad,\n\t\tisSAE,\n\t]);\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useRef, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport Autosuggest from \"react-autosuggest\";\nimport Scroll from \"react-scroll\";\nimport { VEHICLE_TYPES as vt } from \"features/constants\";\nimport {\n\tclearSearchActions,\n\tclearSizeWidthDiameterActions,\n\tclearSizeRatioActions,\n\tclearSizeRimActions,\n\tclearSizeSaeWidthActions,\n\tclearSizeSaeRimActions,\n} from \"features/tireFinder/searchSlice\";\nimport {\n\tsetCanvasFirstItem,\n\tsetCanvasSecondItem,\n\tsetCanvasThirdItem,\n\tsetCanvasFocus,\n} from \"features/tireFinder/sizeCanvasSlice\";\nimport {\n\tfetchWidthDiametersIfNeeded,\n\tupdateWidthDiameterItem,\n\tupdateWidthDiameterValue,\n\tloadWidthDiametersSuggestions,\n\tclearWidthDiametersSuggestions,\n} from \"features/tireFinder/sizeWidthDiametersSlice\";\nimport { setVehicleType } from \"features/tireFinder/vehicleTypeSlice\";\nimport {\n\tfetchSizeRatiosIfNeeded,\n\tclearSizeRatioValue,\n\tupdateSizeRatioValue,\n\tupdateSizeRatioItem,\n\tloadSizeRatiosSuggestions,\n\tclearSizeRatiosSuggestions,\n} from \"features/tireFinder/sizeRatiosSlice\";\nimport {\n\tclearSizeRimValue,\n\tfetchSizeRimsIfNeeded,\n\tupdateSizeRimValue,\n\tupdateSizeRimItem,\n\tloadSizeRimsSuggestions,\n\tclearSizeRimsSuggestions,\n} from \"features/tireFinder/sizeRimsSlice\";\nimport {\n\tclearWidthSaeValue,\n\tfetchWidthSaesIfNeeded,\n\tupdateWidthSaeValue,\n\tupdateWidthSaeItem,\n\tloadWidthSaesSuggestions,\n\tclearWidthSaesSuggestions,\n} from \"features/tireFinder/sizeSaeWidthsSlice\";\nimport {\n\tclearSizeRimSaesSuggestions,\n\tclearSizeRimSaeValue,\n\tfetchSizeRimSaesIfNeeded,\n\tloadSizeRimSaesSuggestions,\n\tupdateSizeRimSaeItem,\n\tupdateSizeRimSaeValue,\n} from \"features/tireFinder/sizeSaeRimsSlice\";\nimport { fetchSizeTiresListIfNeeded } from \"features/tireResults/sizeTiresSlice\";\nimport TireCanvas from \"./TireCanvas\";\nimport { hideHighlightsTiresList } from \"features/tireResults/highlightsTiresSlice\";\nimport { fetchSizeSaeTiresListIfNeeded } from \"features/tireResults/sizeSaeTiresSlice\";\n\nconst renderSuggestion = (suggestion) => {\n\treturn
    {suggestion.Value}
    ;\n};\nconst getSuggestionValue = (suggestion) => {\n\treturn suggestion.Value + \"\";\n};\n\nconst scroll = Scroll.animateScroll;\n\nexport default function SizeFinder() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst {\n\t\tvehicleType,\n\t\tsizeWidthDiameters,\n\t\tsizeRatios,\n\t\tsizeRims,\n\t\tsizeSaeWidths,\n\t\tsizeSaeRims,\n\t} = useSelector((state) => state);\n\tconst tireList = useSelector((state) => state.sizeTires.list);\n\tconst tireSaeList = useSelector((state) => state.sizeSaeTires.list);\n\t// Refs\n\tconst ratioRef = useRef();\n\tconst rimRef = useRef();\n\tconst saeWidthRef = useRef();\n\tconst saeRimRef = useRef();\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Effect\n\tuseEffect(() => {\n\t\tif (\n\t\t\tsizeRatios.renderInput &&\n\t\t\tsizeRatios.showInput &&\n\t\t\tsizeRatios.list != null &&\n\t\t\ttireList == null\n\t\t) {\n\t\t\tratioRef.current.focus();\n\t\t}\n\t\tif (\n\t\t\tsizeRims.renderInput &&\n\t\t\tsizeRims.showInput &&\n\t\t\tsizeRims.list != null &&\n\t\t\ttireList == null\n\t\t) {\n\t\t\trimRef.current.focus();\n\t\t}\n\t\tif (\n\t\t\tsizeSaeWidths.renderInput &&\n\t\t\tsizeSaeWidths.showInput &&\n\t\t\tsizeSaeWidths.list != null &&\n\t\t\ttireList == null\n\t\t) {\n\t\t\tsaeWidthRef.current.focus();\n\t\t}\n\t\tif (\n\t\t\tsizeSaeRims.renderInput &&\n\t\t\tsizeSaeRims.showInput &&\n\t\t\tsizeSaeRims.list != null &&\n\t\t\ttireSaeList == null\n\t\t) {\n\t\t\tsaeRimRef.current.focus();\n\t\t}\n\t}, [\n\t\tsizeRatios.showInput,\n\t\tsizeRatios.renderInput,\n\t\tsizeRatios.list,\n\t\tsizeRims.showInput,\n\t\tsizeRims.renderInput,\n\t\tsizeRims.list,\n\t\tsizeSaeWidths.showInput,\n\t\tsizeSaeWidths.renderInput,\n\t\tsizeSaeWidths.list,\n\t\tsizeSaeRims.showInput,\n\t\tsizeSaeRims.renderInput,\n\t\tsizeSaeRims.list,\n\t\ttireList,\n\t\ttireSaeList,\n\t]);\n\t// Handlers\n\tfunction handleLocationReset() {\n\t\tif (location !== \"/\") {\n\t\t\thistory.push(\"/\");\n\t\t}\n\t}\n\tfunction handleVehicleTypeChange(e) {\n\t\tdispatch(clearSearchActions());\n\t\tdispatch(setVehicleType({ value: e.target.value }));\n\t\tdispatch(fetchWidthDiametersIfNeeded(e.target.value));\n\t}\n\tfunction handleBlur(e) {\n\t\tdispatch(setCanvasFocus({ focus: null }));\n\t}\n\t// Width Diameter\n\tfunction handleWidthDiameterChange(e, { newValue, method }) {\n\t\tif (method === \"type\" || method === \"enter\" || method === \"click\") {\n\t\t\tdispatch(clearSizeWidthDiameterActions());\n\t\t\tdispatch(updateWidthDiameterValue({ value: newValue }));\n\t\t\tdispatch(updateWidthDiameterItem({ selectedItem: {} }));\n\t\t\thandleLocationReset();\n\t\t}\n\t}\n\tfunction handleWidthDiameterFocus(e) {\n\t\te.target.select();\n\t\tdispatch(setCanvasFocus({ focus: 0 }));\n\t}\n\tfunction onWidthDiameterSelected(e, { suggestion }) {\n\t\tif (suggestion.IsSae) {\n\t\t\tdispatch(\n\t\t\t\tsetCanvasFirstItem({ first: suggestion.Value + \"\", isSAE: true })\n\t\t\t);\n\t\t\tdispatch(fetchWidthSaesIfNeeded(suggestion));\n\t\t\tdispatch(clearWidthSaeValue({ renderInput: true, showInput: true }));\n\t\t\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: true }));\n\t\t\tdispatch(clearSizeRatioValue({ renderInput: false, showInput: false }));\n\t\t\tdispatch(clearSizeRimValue({ renderInput: false, showInput: false }));\n\t\t} else {\n\t\t\tdispatch(\n\t\t\t\tsetCanvasFirstItem({ first: suggestion.Value + \"\", isSAE: false })\n\t\t\t);\n\t\t\tdispatch(fetchSizeRatiosIfNeeded(suggestion));\n\t\t\tdispatch(clearSizeRatioValue({ renderInput: true, showInput: true }));\n\t\t\tdispatch(clearSizeRimValue({ renderInput: false, showInput: true }));\n\t\t\tdispatch(clearWidthSaeValue({ renderInput: false, showInput: false }));\n\t\t\tdispatch(clearSizeRimSaeValue({ renderInput: false, showInput: false }));\n\t\t}\n\t\tdispatch(updateWidthDiameterItem({ selectedItem: suggestion }));\n\t}\n\tfunction onWidthDiameterFetchRequested({ value }) {\n\t\tdispatch(loadWidthDiametersSuggestions(value));\n\t}\n\tfunction onWidthDiameterClearRequested() {\n\t\tdispatch(clearWidthDiametersSuggestions());\n\t}\n\t// Ratio\n\tfunction handleRatioChange(e, { newValue, method }) {\n\t\tif (method === \"type\" || method === \"enter\" || method === \"click\") {\n\t\t\tdispatch(clearSizeRatioActions());\n\t\t\tdispatch(updateSizeRatioValue({ value: newValue }));\n\t\t\tdispatch(updateSizeRatioItem({ selectedItem: {} }));\n\t\t\thandleLocationReset();\n\t\t}\n\t}\n\tfunction handleRatioFocus(e) {\n\t\te.target.select();\n\t\tdispatch(setCanvasFocus({ focus: 1 }));\n\t}\n\tfunction onRatioSelected(e, { suggestion }) {\n\t\tdispatch(fetchSizeRimsIfNeeded(suggestion));\n\t\tdispatch(updateSizeRatioItem({ selectedItem: suggestion }));\n\t\tdispatch(setCanvasSecondItem({ second: suggestion.Value }));\n\t}\n\tfunction onRatioFetchRequested({ value }) {\n\t\tdispatch(loadSizeRatiosSuggestions(value));\n\t}\n\tfunction onRatioClearRequested() {\n\t\tdispatch(clearSizeRatiosSuggestions());\n\t}\n\t// Rim\n\tfunction handleRimChange(e, { newValue, method }) {\n\t\tif (method === \"type\" || method === \"enter\" || method === \"click\") {\n\t\t\tdispatch(clearSizeRimActions());\n\t\t\tdispatch(updateSizeRimValue({ value: newValue }));\n\t\t\tdispatch(updateSizeRimItem({ selectedItem: {} }));\n\t\t\thandleLocationReset();\n\t\t}\n\t}\n\tfunction handleRimFocus(e) {\n\t\te.target.select();\n\t\tdispatch(setCanvasFocus({ focus: 2 }));\n\t}\n\tfunction onRimSelected(e, { suggestion }) {\n\t\tdispatch(fetchSizeTiresListIfNeeded(suggestion));\n\t\tdispatch(updateSizeRimItem({ selectedItem: suggestion }));\n\t\tdispatch(setCanvasThirdItem({ third: suggestion.Value }));\n\t\tdispatch(hideHighlightsTiresList({ hide: true }));\n\t\thistory.push(\n\t\t\t\"/llantas/medida/\" +\n\t\t\t\tvt.properties[vehicleType.value].slug +\n\t\t\t\t\"/\" +\n\t\t\t\tsizeWidthDiameters.value +\n\t\t\t\t\"/\" +\n\t\t\t\tsizeRatios.value +\n\t\t\t\t\"R\" +\n\t\t\t\tsuggestion.Value\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tconst target = document.getElementById(\"resultCarousel\");\n\t\t\tconst targetPos =\n\t\t\t\ttarget.offsetWidth > 980\n\t\t\t\t\t? target.offsetTop - 200\n\t\t\t\t\t: target.offsetTop - 150;\n\t\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\t}, 500);\n\t\trimRef.current.blur();\n\t}\n\tfunction onRimFetchRequested({ value }) {\n\t\tdispatch(loadSizeRimsSuggestions(value));\n\t}\n\tfunction onRimClearRequested() {\n\t\tdispatch(clearSizeRimsSuggestions());\n\t}\n\t// SAE Width\n\tfunction handleSaeWidthChange(e, { newValue, method }) {\n\t\tif (method === \"type\" || method === \"enter\" || method === \"click\") {\n\t\t\tdispatch(clearSizeSaeWidthActions());\n\t\t\tdispatch(updateWidthSaeValue({ value: newValue }));\n\t\t\tdispatch(updateWidthSaeItem({ selectedItem: {} }));\n\t\t\thandleLocationReset();\n\t\t}\n\t}\n\tfunction handleSaeWidthFocus(e) {\n\t\te.target.select();\n\t\tdispatch(setCanvasFocus({ focus: 1 }));\n\t}\n\tfunction onSaeWidthSelected(e, { suggestion }) {\n\t\tdispatch(fetchSizeRimSaesIfNeeded(suggestion));\n\t\tdispatch(updateWidthSaeItem({ selectedItem: suggestion }));\n\t\tdispatch(setCanvasSecondItem({ second: suggestion.Value }));\n\t}\n\tfunction onSaeWidthFetchRequested({ value }) {\n\t\tdispatch(loadWidthSaesSuggestions(value));\n\t}\n\tfunction onSaeWidthClearRequested() {\n\t\tdispatch(clearWidthSaesSuggestions());\n\t}\n\t// SAE Rim\n\tfunction handleSaeRimChange(e, { newValue, method }) {\n\t\tif (method === \"type\" || method === \"enter\" || method === \"click\") {\n\t\t\tdispatch(clearSizeSaeRimActions());\n\t\t\tdispatch(updateSizeRimSaeValue({ value: newValue }));\n\t\t\tdispatch(updateSizeRimSaeItem({ selectedItem: {} }));\n\t\t\thandleLocationReset();\n\t\t}\n\t}\n\tfunction handleSaeRimFocus(e) {\n\t\te.target.select();\n\t\tdispatch(setCanvasFocus({ focus: 2 }));\n\t}\n\tfunction onSaeRimSelected(e, { suggestion }) {\n\t\tdispatch(fetchSizeSaeTiresListIfNeeded(suggestion));\n\t\tdispatch(updateSizeRimSaeItem({ selectedItem: suggestion }));\n\t\tdispatch(setCanvasThirdItem({ third: suggestion.Value }));\n\t\tdispatch(hideHighlightsTiresList({ hide: true }));\n\t\thistory.push(\n\t\t\t\"/llantas/medida/\" +\n\t\t\t\tvt.properties[vehicleType.value].slug +\n\t\t\t\t\"/\" +\n\t\t\t\tsizeWidthDiameters.value +\n\t\t\t\t\"X\" +\n\t\t\t\tsizeSaeWidths.value +\n\t\t\t\t\"R\" +\n\t\t\t\tsuggestion.Value\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tconst target = document.getElementById(\"resultCarousel\");\n\t\t\tconst targetPos =\n\t\t\t\ttarget.offsetWidth > 980\n\t\t\t\t\t? target.offsetTop - 200\n\t\t\t\t\t: target.offsetTop - 150;\n\t\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\t}, 500);\n\t\tsaeRimRef.current.blur();\n\t}\n\tfunction onSaeRimFetchRequested({ value }) {\n\t\tdispatch(loadSizeRimSaesSuggestions(value));\n\t}\n\tfunction onSaeRimClearRequested() {\n\t\tdispatch(clearSizeRimSaesSuggestions());\n\t}\n\t// Input props\n\tconst widthDiameterProps = {\n\t\tplaceholder: \"ANCHO DE SECCION\",\n\t\tvalue: sizeWidthDiameters.value,\n\t\tonChange: handleWidthDiameterChange,\n\t\tonFocus: handleWidthDiameterFocus,\n\t\tonBlur: handleBlur,\n\t\ttabIndex: 201,\n\t};\n\tconst ratioProps = {\n\t\tplaceholder: \"RELACION ASPECTO\",\n\t\tvalue: sizeRatios.value,\n\t\tonChange: handleRatioChange,\n\t\tonFocus: handleRatioFocus,\n\t\tonBlur: handleBlur,\n\t\ttabIndex: 202,\n\t\tref: ratioRef,\n\t};\n\tconst rimProps = {\n\t\tplaceholder: \"RIN\",\n\t\tvalue: sizeRims.value,\n\t\tonChange: handleRimChange,\n\t\tonFocus: handleRimFocus,\n\t\tonBlur: handleBlur,\n\t\ttabIndex: 203,\n\t\tref: rimRef,\n\t};\n\tconst saeWidthProps = {\n\t\tplaceholder: \"ANCHO DE SECCION\",\n\t\tvalue: sizeSaeWidths.value,\n\t\tonChange: handleSaeWidthChange,\n\t\tonFocus: handleSaeWidthFocus,\n\t\tonBlur: handleBlur,\n\t\ttabIndex: 202,\n\t\tref: saeWidthRef,\n\t};\n\tconst saeRimProps = {\n\t\tplaceholder: \"ANCHO DE SECCION\",\n\t\tvalue: sizeSaeRims.value,\n\t\tonChange: handleSaeRimChange,\n\t\tonFocus: handleSaeRimFocus,\n\t\tonBlur: handleBlur,\n\t\ttabIndex: 203,\n\t\tref: saeRimRef,\n\t};\n\t// Render functions\n\tfunction renderRatio() {\n\t\tif (!sizeRatios.showInput) {\n\t\t\treturn null;\n\t\t}\n\t\tif (sizeRatios.renderInput) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t true}\n\t\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\t\tonSuggestionSelected={onRatioSelected}\n\t\t\t\t\t\t\tinputProps={ratioProps}\n\t\t\t\t\t\t\tid=\"sizeRatio\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    RELACION ASPECTO
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderRim() {\n\t\tif (!sizeRims.showInput) {\n\t\t\treturn null;\n\t\t}\n\t\tif (sizeRims.renderInput) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t true}\n\t\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\t\tonSuggestionSelected={onRimSelected}\n\t\t\t\t\t\t\tinputProps={rimProps}\n\t\t\t\t\t\t\tid=\"sizeRim\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    RIN
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderSaeWidth() {\n\t\tif (!sizeSaeWidths.showInput) {\n\t\t\treturn null;\n\t\t}\n\t\tif (sizeSaeWidths.renderInput) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t true}\n\t\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\t\tonSuggestionSelected={onSaeWidthSelected}\n\t\t\t\t\t\t\tinputProps={saeWidthProps}\n\t\t\t\t\t\t\tid=\"saeWidth\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    ANCHO DE SECCION
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderSaeRim() {\n\t\tif (!sizeSaeRims.showInput) {\n\t\t\treturn null;\n\t\t}\n\t\tif (sizeSaeRims.renderInput) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t true}\n\t\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\t\tonSuggestionSelected={onSaeRimSelected}\n\t\t\t\t\t\t\tinputProps={saeRimProps}\n\t\t\t\t\t\t\tid=\"sizeSaeRim\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    RIN
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t

    ¿Cuál es tu medida?

    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t{renderRatio()}\n\t\t\t\t{renderRim()}\n\t\t\t\t{renderSaeWidth()}\n\t\t\t\t{renderSaeRim()}\n\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport VehicleFinder from \"./VehicleFinder\";\nimport SizeFinder from \"./SizeFinder\";\n\nexport default function TireFinder() {\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\n\nexport default function ProductDetailsQty(props) {\n\t// Handlers\n\tfunction handleQtyChange (e) {\n\t\tconst qty = e.target.value.replace(/[^0-9]/g, \"\");\n\t\tprops.onChange(qty);\n\t};\n\tfunction handleQtyFocus (e) {\n\t\te.target.select();\n\t};\n\tfunction handleQtyBlur (e) {\n\t\tconst qty = Number(e.target.value.replace(/[^0-9]/g, \"\"));\n\t\tprops.onBlur(qty);\n\t};\n\tfunction handleQtyKeyPress (e) {\n\t\tconst qty = Number(e.target.value.replace(/[^0-9]/g, \"\"));\n\t\tif (e.key === \"Enter\") {\n\t\t\tprops.onBlur(qty);\n\t\t}\n\t};\n\tfunction handleQtyKeyDown (e) {\n\t\tconst qty = Number(e.target.value.replace(/[^0-9]/g, \"\"));\n\t\tif (e.key === \"Tab\") {\n\t\t\tprops.onBlur(qty);\n\t\t}\n\t\tif (e.key === \"Escape\") {\n\t\t\tprops.onBlur(0);\n\t\t}\n\t};\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport Dropdown from \"react-dropdown\";\nimport ReactGA from \"react-ga4\";\nimport Scroll from \"react-scroll\";\nimport { IMAGE_TYPES } from \"features/constants\";\nimport {\n\timageFormat,\n\tgetBrandClass,\n\tgetVehicleTypeClass,\n\trenderPrice,\n\trenderOriginalPrice,\n\tformatDetails,\n\trenderRadial,\n\trenderIndiceVelocidad,\n\trenderIndiceCarga,\n\trenderSsr,\n\trenderDureza,\n\trenderCamara,\n} from \"features/functions\";\nimport {\n\tfetchAddItemToCartObject,\n\tsetCartActiveTab,\n\ttoggleShowCart,\n} from \"features/cart/cartSlice\";\nimport { gtmTriggerAddItemToCart } from \"features/tagmanager\";\nimport ProductDetailsQty from \"./ProductDetailsQty\";\n\nconst Element = Scroll.Element;\n\nconst getIndex = (options, selected) => {\n\tvar filtered = options.filter((el) => el.value === selected.value);\n\treturn filtered[0].index;\n};\n\nexport default function ProductDetails(props) {\n\tconst dispatch = useDispatch();\n\t// State\n\tconst [option, setOption] = useState(props.options[0]);\n\tconst [optionIndex, setOptionIndex] = useState(0);\n\tconst [defaultValue, setDefaultValue] = useState(null);\n\tconst [qty, setQty] = useState(1);\n\tconst [showDetails, setShowDetails] = useState(false);\n\tconst defaultQty = 1;\n\t// Effects\n\tuseEffect(() => {\n\t\tsetOption(props.options[0]);\n\t\tsetDefaultValue(props.options[0].value);\n\t}, [props.options]);\n\t// Handlers\n\tfunction _onSelect(option) {\n\t\tReactGA.event({\n\t\t\tcategory: \"Producto\",\n\t\t\taction: \"Seleccionar Medida\",\n\t\t\tlabel: props.product.Tires[getIndex(props.options, option)].Code,\n\t\t});\n\t\tsetOption(option);\n\t\tsetOptionIndex(getIndex(props.options, option));\n\t\tsetDefaultValue(props.options[0].value);\n\t}\n\tfunction handleQtyChange(value) {\n\t\tsetQty(value);\n\t}\n\tfunction handleQtyBlur(qty) {\n\t\tif (qty === 0) {\n\t\t\tsetQty(defaultQty);\n\t\t}\n\t}\n\tfunction handleBuyClick() {\n\t\tconst { product } = props;\n\t\tconst opIndex = props.options[0].value !== defaultValue ? 0 : optionIndex;\n\t\tconst tire = product.Tires[opIndex];\n\t\tconst data = {\n\t\t\tBrand: product.Brand,\n\t\t\tName: product.Name,\n\t\t\tCode: tire.Code,\n\t\t\tSize: tire.Size,\n\t\t\tqty,\n\t\t};\n\t\tReactGA.gtag(\"event\", \"add_to_cart\", {\n\t\t\tcurrency: \"MXN\",\n\t\t\tvalue: tire.ListPrice * qty,\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\titem_id: tire.Code,\n\t\t\t\t\titem_name: product.Name,\n\t\t\t\t\titem_brand: product.Brand,\n\t\t\t\t\titem_category: \"Llantas/\" + tire.VehicleType,\n\t\t\t\t\titem_variant: tire.Size,\n\t\t\t\t\tprice: tire.ListPrice,\n\t\t\t\t\tquantity: qty,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t\tReactGA.event({\n\t\t\tcategory: \"Compra\",\n\t\t\taction: \"Agregar Producto\",\n\t\t\tlabel: option.value,\n\t\t\tvalue: qty,\n\t\t});\n\t\tdispatch(fetchAddItemToCartObject(option.value, qty));\n\t\tdispatch(gtmTriggerAddItemToCart(data));\n\t\tdispatch(setCartActiveTab({showTab: 1}));\n\t\tdispatch(toggleShowCart({isOpen: false}));\n\t}\n\tfunction toggleDetailsClick() {\n\t\tif (showDetails) {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Producto\",\n\t\t\t\taction: \"Mostrar Imagen\",\n\t\t\t\tlabel: props.product.Tires[optionIndex].Code,\n\t\t\t});\n\t\t} else {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Producto\",\n\t\t\t\taction: \"Mostrar Detalles\",\n\t\t\t\tlabel: props.product.Tires[optionIndex].Code,\n\t\t\t});\n\t\t}\n\t\tsetShowDetails(!showDetails);\n\t}\n\t// Child items\n\tfunction renderDropdown(index) {\n\t\tconst defaultOption = props.options[index];\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\tfunction renderImage() {\n\t\tif (!showDetails) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tDetalles\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tfunction renderDetailsSpecs() {\n\t\tif (showDetails) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tImagen\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t{formatDetails(props.product.Details)}\n\t\t\t\t
    \n\t\t\t);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Render\n\tif (defaultValue == null) {\n\t\treturn null;\n\t}\n\tlet index = props.options[0].value !== defaultValue ? 0 : optionIndex;\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t\t{props.product.Name}\n\t\t\t\t

    \n\t\t\t\t

    {props.product.Slogan}

    \n\t\t\t\t
    \n\t\t\t\t\t

    Medida de Llanta

    \n\t\t\t\t\t{renderDropdown(index)}\n\t\t\t\t\t

    \n\t\t\t\t\t\tCódigo:{\" \"}\n\t\t\t\t\t\t{props.product.Tires[index].Code}\n\t\t\t\t\t

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{renderOriginalPrice(props.product.Tires[index],qty)}\n\t\t\t\t\t{renderPrice(props.product.Tires[index], qty)}\n\t\t\t\t\t

    IVA Incluido

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Cantidad
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tComprar\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{renderRadial(props.product.Tires[index].Radial)}\n\t\t\t\t\t{renderIndiceCarga(props.product.Tires[index].Load)}\n\t\t\t\t\t{renderIndiceVelocidad(props.product.Tires[index].Speed)}\n\t\t\t\t\t{renderSsr(props.product.Tires[index].SSR)}\n\t\t\t\t\t{renderDureza(props.product.Tires[index].Strength)}\n\t\t\t\t\t{renderCamara(props.product.Tires[index].Tube)}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{renderImage()}\n\t\t\t{renderDetailsSpecs()}\n\t\t
    \n\t);\n}\n","import React, { useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport Slider from \"react-slick\";\nimport Scroll from \"react-scroll\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport \"slick-carousel/slick/slick.css\";\nimport {IMAGE_TYPES} from \"features/constants\"\nimport { imageFormat, getBrandClass } from \"features/functions\";\nimport Loader from \"components/Loader\";\nimport ProductDetails from \"./ProductDetails\";\nimport { isServer } from \"features/functions\";\n\nconst mapOptions = (list) => {\n\treturn list.map(function (tire, index) {\n\t\treturn { label: tire.Size, value: tire.Code, index: index };\n\t});\n};\n\nvar Link = Scroll.Link;\n\nexport default function Highlights() {\n\t// Selectors\n\tconst { isLoading, list, hide } = useSelector(\n\t\t(state) => state.highlightsTires\n\t);\n\t// State\n\tconst [activeProduct, setActiveProduct] = useState(0);\n\tif (hide === true) {\n\t\treturn null;\n\t}\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t

    Productos Destacados

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tif (list == null || list.length === 0) {\n\t\treturn null;\n\t}\n\t// Render\n\tconst productDetails = {\n\t\tproduct: list[activeProduct],\n\t\toptions: mapOptions(list[activeProduct].Tires),\n\t};\n\tfunction renderProducts(data, active) {\n\t\tvar settings = {\n\t\t\tdots: false,\n\t\t\tcenterMode: true,\n\t\t\tinfinite: true,\n\t\t\tclassName: \"center\",\n\t\t\tslidesToShow: 3,\n\t\t\tcenterPadding: \"0px\",\n\t\t\tafterChange: (current) => setActiveProduct(current),\n\t\t\tresponsive: [\n\t\t\t\t{\n\t\t\t\t\tbreakpoint: 980,\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tslidesToShow: 1,\n\t\t\t\t\t\tslidesToScroll: 1,\n\t\t\t\t\t\tinitialSlide: 0,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tconst w = isServer ? 1024 : window.innerWidth;\n\t\tlet offset = w > 980 ? -100 : -50;\n\t\tif (data != null) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t{data.map((product, index) => {\n\t\t\t\t\t\tif (index === active) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t

    {product.Name}

    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t

    {product.Name}

    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t

    Productos Destacados

    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{renderProducts(list, activeProduct)}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport Slider from \"react-slick\";\nimport Scroll from \"react-scroll\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport \"slick-carousel/slick/slick.css\";\nimport { IMAGE_TYPES } from \"features/constants\";\nimport { imageFormat, getBrandClass } from \"features/functions\";\nimport { clearSearchActions } from \"features/tireFinder/searchSlice\";\nimport Loader from \"components/Loader\";\nimport ProductDetails from \"./ProductDetails\";\n\nconst mapOptions = (list) => {\n\treturn list.map(function (tire, index) {\n\t\treturn { label: tire.Size, value: tire.Code, index: index };\n\t});\n};\n\nvar ScrollLink = Scroll.Link;\n\nexport default function ResultProduct() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list, hide } = useSelector((state) => state.searchTires);\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tdispatch(clearSearchActions());\n\t\tlet scroll = Scroll.animateScroll;\n\t\tscroll.scrollTo(0, { smooth: true, delay: 100, duration: 500 });\n\t\tif (location !== \"/\") {\n\t\t\thistory.push(\"/\");\n\t\t}\n\t}\n\t// Render\n\tif (hide === true) {\n\t\treturn null;\n\t}\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    0
    \n\t\t\t\t\t
    Resultados
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tif (list == null || list.length === 0) {\n\t\treturn null;\n\t}\n\t// Render\n\tconst productDetails = {\n\t\tproduct: list,\n\t\toptions: mapOptions(list.Tires),\n\t};\n\tfunction renderProducts(product) {\n\t\tvar settings = {\n\t\t\tdots: false,\n\t\t\tcenterMode: true,\n\t\t\tinfinite: true,\n\t\t\tclassName: \"center\",\n\t\t\tslidesToShow: 1,\n\t\t\tcenterPadding: \"0px\",\n\t\t\tresponsive: [\n\t\t\t\t{\n\t\t\t\t\tbreakpoint: 980,\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tslidesToShow: 1,\n\t\t\t\t\t\tslidesToScroll: 1,\n\t\t\t\t\t\tinitialSlide: 0,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tlet w = window.innerWidth;\n\t\tlet offset = w > 980 ? -100 : -50;\n\t\tif (product != null) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t

    {product.Name}

    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    1
    \n\t\t\t\t
    Resultado
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    {list.Name}
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {renderProducts(list)}
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport ReactGA from \"react-ga4\";\nimport Scroll from \"react-scroll\";\nimport { IMAGE_TYPES } from \"features/constants\";\nimport {\n\tfetchAddItemToCartObject,\n\tsetCartActiveTab,\n\ttoggleShowCart,\n} from \"features/cart/cartSlice\";\nimport {\n\timageFormat,\n\tgetBrandClass,\n\tgetVehicleTypeClass,\n\trenderPrice,\n\trenderOriginalPrice,\n\tformatDetails,\n\trenderRadial,\n\trenderIndiceVelocidad,\n\trenderIndiceCarga,\n\trenderSsr,\n\trenderDureza,\n\trenderCamara,\n} from \"features/functions\";\nimport { gtmTriggerAddItemToCart } from \"features/tagmanager\";\nimport ProductDetailsQty from \"./ProductDetailsQty\";\n\nconst Element = Scroll.Element;\n\nexport default function TireDetails(props) {\n\tconst dispatch = useDispatch();\n\t// State\n\tconst [qty, setQty] = useState(1);\n\tconst [showDetails, setShowDetails] = useState(false);\n\tconst defaultQty = 1;\n\t// Effects\n\tuseEffect(() => {\n\t\tsetShowDetails(false);\n\t}, []);\n\t// Handlers\n\tfunction handleQtyChange(value) {\n\t\tsetQty(value);\n\t}\n\tfunction handleQtyBlur(qty) {\n\t\tif (qty === 0) {\n\t\t\tsetQty(defaultQty);\n\t\t}\n\t}\n\tfunction handleBuyClick() {\n\t\tconst tire = props;\n\t\tconst product = props.TireProduct;\n\t\tconst data = {\n\t\t\tBrand: product.Brand,\n\t\t\tName: product.Name,\n\t\t\tCode: tire.Code,\n\t\t\tSize: tire.Size,\n\t\t\tqty,\n\t\t};\n\t\tReactGA.gtag(\"event\", \"add_to_cart\", {\n\t\t\tcurrency: \"MXN\",\n\t\t\tvalue: tire.ListPrice * qty,\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\titem_id: tire.Code,\n\t\t\t\t\titem_name: product.Name,\n\t\t\t\t\titem_brand: product.Brand,\n\t\t\t\t\titem_category: \"Llantas/\" + tire.VehicleType,\n\t\t\t\t\titem_variant: tire.Size,\n\t\t\t\t\tprice: tire.ListPrice,\n\t\t\t\t\tquantity: qty,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t\tReactGA.event({\n\t\t\tcategory: \"Compra\",\n\t\t\taction: \"Agregar Producto\",\n\t\t\tlabel: props.Code,\n\t\t\tvalue: qty,\n\t\t});\n\t\tdispatch(fetchAddItemToCartObject(props.Code, qty));\n\t\tdispatch(gtmTriggerAddItemToCart(data));\n\t\tdispatch(setCartActiveTab({showTab: 1}));\n\t\tdispatch(toggleShowCart({isOpen: false}));\n\t}\n\tfunction toggleDetailsClick() {\n\t\tif (showDetails) {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Producto\",\n\t\t\t\taction: \"Mostrar Imagen\",\n\t\t\t\tlabel: props.Code,\n\t\t\t});\n\t\t} else {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Producto\",\n\t\t\t\taction: \"Mostrar Detalles\",\n\t\t\t\tlabel: props.Code,\n\t\t\t});\n\t\t}\n\t\tsetShowDetails(!showDetails);\n\t}\n\tfunction renderImage() {\n\t\tif (!showDetails) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tDetalles\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tfunction renderDetailsSpecs() {\n\t\tif (showDetails) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tImagen\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t{formatDetails(props.TireProduct.Details)}\n\t\t\t\t
    \n\t\t\t);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Render\n\tif (props.TireProduct == null) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t\t{props.TireProduct.Name}\n\t\t\t\t

    \n\t\t\t\t

    {props.TireProduct.Slogan}

    \n\t\t\t\t
    \n\t\t\t\t\t

    Medida de Llanta

    \n\t\t\t\t\t

    {props.Size}

    \n\t\t\t\t\t

    \n\t\t\t\t\t\tCódigo: {props.Code}\n\t\t\t\t\t

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{renderOriginalPrice(props, qty)}\n\t\t\t\t\t{renderPrice(props, qty)}\n\t\t\t\t\t

    IVA Incluido

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Cantidad
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tComprar\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{renderRadial(props.Radial)}\n\t\t\t\t\t{renderIndiceCarga(props.Load)}\n\t\t\t\t\t{renderIndiceVelocidad(props.Speed)}\n\t\t\t\t\t{renderSsr(props.SSR)}\n\t\t\t\t\t{renderDureza(props.Strength)}\n\t\t\t\t\t{renderCamara(props.Tube)}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{renderImage()}\n\t\t\t{renderDetailsSpecs()}\n\t\t\n\t);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport ReactGA from \"react-ga4\";\nimport Scroll from \"react-scroll\";\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport \"slick-carousel/slick/slick.css\";\nimport { IMAGE_TYPES as i } from \"features/constants\";\nimport { currencyFormat, imageFormat, getBrandClass } from \"features/functions\";\nimport { clearSearchActions } from \"features/tireFinder/searchSlice\";\nimport Loader from \"../Loader\";\nimport TireDetails from \"./TireDetails\";\n\nconst ScrollLink = Scroll.Link;\nconst scroll = Scroll.animateScroll;\n\nconst getTirePrice = (tire) => {\n\tif (tire.Discount > 0 && tire.Minimum <= 1) return tire.Price * 1.16;\n\telse {\n\t\treturn tire.ListPrice * 1.16;\n\t}\n};\n\nexport default function ResultVehicle(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list } = useSelector((state) => state.vehicleTires);\n\t// State\n\tconst [activeProduct, setActiveProduct] = useState(0);\n\tconst [activeSize, setActiveSize] = useState(0);\n\tconst [activeAlternative, setActiveAlternative] = useState(0);\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Effect\n\tuseEffect(() => {\n\t\tsetActiveProduct(0);\n\t\tsetActiveSize(0);\n\t\tsetActiveAlternative(0);\n\t}, [list]);\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tdispatch(clearSearchActions());\n\t\tconst target = document.getElementById(\"tireFinderElement\");\n\t\tconst targetPos =\n\t\t\ttarget.offsetWidth > 980 ? target.offsetTop - 100 : target.offsetTop - 50;\n\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\tif (location !== \"/\") {\n\t\t\thistory.push(\"/\");\n\t\t}\n\t}\n\tfunction handleOriginalClick() {\n\t\tReactGA.event({\n\t\t\tcategory: \"Vehiculo\",\n\t\t\taction: \"Seleccionar Medida\",\n\t\t\tlabel: \"Original\",\n\t\t\tvalue: list.Id,\n\t\t});\n\t\tsetActiveAlternative(0);\n\t}\n\tfunction handleAlternativeClick() {\n\t\tReactGA.event({\n\t\t\tcategory: \"Vehiculo\",\n\t\t\taction: \"Seleccionar Medida\",\n\t\t\tlabel: \"Alternativa\",\n\t\t\tvalue: list.Id,\n\t\t});\n\t\tsetActiveAlternative(1);\n\t}\n\tfunction handleSportsClick() {\n\t\tReactGA.event({\n\t\t\tcategory: \"Vehiculo\",\n\t\t\taction: \"Seleccionar Medida\",\n\t\t\tlabel: \"Deportivo\",\n\t\t\tvalue: list.Id,\n\t\t});\n\t\tsetActiveAlternative(2);\n\t}\n\tfunction handleFrontSizeClick() {\n\t\tReactGA.event({\n\t\t\tcategory: \"Vehiculo\",\n\t\t\taction: \"Seleccionar Eje\",\n\t\t\tlabel: \"Delantero\",\n\t\t\tvalue: list.Id,\n\t\t});\n\t\tsetActiveSize(0);\n\t}\n\tfunction handleRearSizeClick() {\n\t\tReactGA.event({\n\t\t\tcategory: \"Vehiculo\",\n\t\t\taction: \"Seleccionar Eje\",\n\t\t\tlabel: \"Trasero\",\n\t\t\tvalue: list.Id,\n\t\t});\n\t\tsetActiveSize(1);\n\t}\n\tfunction setCurrentSlide(currentSlide) {\n\t\tsetActiveProduct(currentSlide);\n\t}\n\t// Render functions\n\tfunction renderAlternatives() {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tEquipo Original\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tAlternativas\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tDeportivo\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\tfunction renderPositions() {\n\t\tif (list.Sizes.length === 2) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tDelantera\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tTrasera\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tfunction renderProducts(activeList, active) {\n\t\tif (activeList.length > 0) {\n\t\t\tlet data = Array.from(activeList);\n\t\t\tif (data.length === 2) {\n\t\t\t\tdata.push(data[0]);\n\t\t\t\tdata.push(data[1]);\n\t\t\t} else if (data.length === 3) {\n\t\t\t\tdata.push(data[0]);\n\t\t\t\tdata.push(data[1]);\n\t\t\t\tdata.push(data[2]);\n\t\t\t}\n\t\t\tvar settings = {\n\t\t\t\tdots: false,\n\t\t\t\tcenterMode: true,\n\t\t\t\tinfinite: true,\n\t\t\t\tinitialSlide: 0,\n\t\t\t\tclassName: \"center\",\n\t\t\t\tslidesToShow: data.length === 1 ? 1 : 3,\n\t\t\t\tcenterPadding: 0,\n\t\t\t\tafterChange: (currentSlide) => {\n\t\t\t\t\tsetCurrentSlide(currentSlide);\n\t\t\t\t},\n\t\t\t\tresponsive: [\n\t\t\t\t\t{\n\t\t\t\t\t\tbreakpoint: 980,\n\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\tslidesToShow: 1,\n\t\t\t\t\t\t\tslidesToScroll: 1,\n\t\t\t\t\t\t\tinitialSlide: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tlet w = window.innerWidth;\n\t\t\tlet offset = w > 980 ? -100 : -50;\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t{data.map((tire, index) => {\n\t\t\t\t\t\t\tif (index === active) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t

    {tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    {tire.Size}
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(getTirePrice(tire))} MXN\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t

    {tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    {tire.Size}
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(getTirePrice(tire))} MXN\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})}\n\t\t\t\t\t
    \n\t\t\t\t\t{activeAlternative === 0 && (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t Las medidas presentadas son\n\t\t\t\t\t\t\tsolo una sugerencia basada en equipo original, para mayor\n\t\t\t\t\t\t\tprecisión, se sugiere revisar la medida en sus llantas actuales o\n\t\t\t\t\t\t\ten el manual de usuario de su vehículo\n\t\t\t\t\t\t
    \n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    No hay productos disponibles para esta opción
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\tfunction renderTireDetails(tireDetails) {\n\t\tif (tireDetails !== null) {\n\t\t\treturn ;\n\t\t} else return null;\n\t}\n\t// Render\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    0
    \n\t\t\t\t\t
    Resultados
    \n\t\t\t\t\t
     
    \n\t\t\t\t\t
    Cargando...
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tif (list == null || list.length === 0) {\n\t\treturn null;\n\t}\n\tlet activeList = [];\n\tlet tireDetails = null;\n\tswitch (activeAlternative) {\n\t\tcase 0:\n\t\tdefault:\n\t\t\tactiveList = list.Sizes[activeSize].Tires;\n\t\t\tif (activeList.length > 0)\n\t\t\t\ttireDetails =\n\t\t\t\t\tactiveProduct >= activeList.length\n\t\t\t\t\t\t? activeList[activeProduct - activeList.length]\n\t\t\t\t\t\t: activeList[activeProduct];\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tactiveList = list.Sizes[activeSize].Alternatives;\n\t\t\tif (activeList.length > 0)\n\t\t\t\ttireDetails =\n\t\t\t\t\tactiveProduct >= activeList.length\n\t\t\t\t\t\t? activeList[activeProduct - activeList.length]\n\t\t\t\t\t\t: activeList[activeProduct];\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tactiveList = list.Sizes[activeSize].Sports;\n\t\t\tif (activeList.length > 0)\n\t\t\t\ttireDetails =\n\t\t\t\t\tactiveProduct >= activeList.length\n\t\t\t\t\t\t? activeList[activeProduct - activeList.length]\n\t\t\t\t\t\t: activeList[activeProduct];\n\t\t\tbreak;\n\t}\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {activeList.length}
    \n\t\t\t\t
    Resultados
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    {list.Name + \" \" + list.Year}
    \n\t\t\t
    \n\t\t\t{renderAlternatives()}\n\t\t\t{renderPositions()}\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{renderProducts(activeList, activeProduct)}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{renderTireDetails(tireDetails)}\n\t\t
    \n\t);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport Scroll from \"react-scroll\";\nimport Slider from \"react-slick\";\nimport { Helmet } from \"react-helmet\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport \"slick-carousel/slick/slick.css\";\nimport { IMAGE_TYPES as i } from \"features/constants\";\nimport {\n\tisServer,\n\tcurrencyFormat,\n\timageFormat,\n\tgetBrandClass,\n\tgetDept,\n\tgetSizeTags,\n} from \"features/functions\";\nimport { clearSearchActions } from \"features/tireFinder/searchSlice\";\nimport { scrollToSizeTires } from \"features/tireResults/sizeTiresSlice\";\nimport Loader from \"../Loader\";\nimport TireDetails from \"./TireDetails\";\nimport { VEHICLE_TYPES } from \"features/constants\";\n\nconst ScrollLink = Scroll.Link;\nconst animateScroll = Scroll.animateScroll;\n\nconst getTirePrice = (tire) => {\n\tif (tire.Discount > 0 && tire.Minimum <= 1) return tire.Price * 1.16;\n\telse {\n\t\treturn tire.ListPrice * 1.16;\n\t}\n};\n\nexport default function ResultSize(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list, width, ratio, rim, dept, scroll } = useSelector(\n\t\t(state) => state.sizeTires\n\t);\n\t// State\n\tconst [activeProduct, setActiveProduct] = useState(0);\n\t// Effect\n\tuseEffect(() => {\n\t\tsetActiveProduct(0);\n\t\tif (scroll) {\n\t\t\tdispatch(scrollToSizeTires());\n\t\t}\n\t}, [list]);\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tdispatch(clearSearchActions());\n\t\tconst target = document.getElementById(\"tireFinderElement\");\n\t\tconst targetPos =\n\t\t\ttarget.offsetWidth > 980 ? target.offsetTop - 100 : target.offsetTop - 50;\n\t\tanimateScroll.scrollTo(targetPos, {\n\t\t\tsmooth: true,\n\t\t\tdelay: 100,\n\t\t\tduration: 500,\n\t\t});\n\t\tif (location !== \"/\") {\n\t\t\thistory.push(\"/\");\n\t\t}\n\t}\n\tfunction setCurrentSlide(currentSlide) {\n\t\tsetActiveProduct(currentSlide);\n\t}\n\t// Render functions\n\tfunction renderProducts(activeList, active) {\n\t\tif (activeList.length > 0) {\n\t\t\tlet data = Array.from(activeList);\n\t\t\tif (data.length === 2) {\n\t\t\t\tdata.push(data[0]);\n\t\t\t\tdata.push(data[1]);\n\t\t\t} else if (data.length === 3) {\n\t\t\t\tdata.push(data[0]);\n\t\t\t\tdata.push(data[1]);\n\t\t\t\tdata.push(data[2]);\n\t\t\t}\n\t\t\tvar settings = {\n\t\t\t\tdots: false,\n\t\t\t\tcenterMode: true,\n\t\t\t\tinfinite: true,\n\t\t\t\tinitialSlide: 0,\n\t\t\t\tclassName: \"center\",\n\t\t\t\tslidesToShow: data.length === 1 ? 1 : 3,\n\t\t\t\tcenterPadding: 0,\n\t\t\t\tafterChange: (currentSlide) => {\n\t\t\t\t\tsetCurrentSlide(currentSlide);\n\t\t\t\t},\n\t\t\t\tresponsive: [\n\t\t\t\t\t{\n\t\t\t\t\t\tbreakpoint: 980,\n\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\tslidesToShow: 1,\n\t\t\t\t\t\t\tslidesToScroll: 1,\n\t\t\t\t\t\t\tinitialSlide: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tlet w = isServer ? 1024 : window.innerWidth;\n\t\t\tlet offset = w > 980 ? -100 : -50;\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t{data.map((tire, index) => {\n\t\t\t\t\t\t\tif (index === active) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t

    {tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    {tire.Size}
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(getTirePrice(tire))} MXN\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t

    {tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    {tire.Size}
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(getTirePrice(tire))} MXN\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})}\n\t\t\t\t\t
    \n\t\t\t\t\t{data[0]?.VehicleTypeId === 3 && (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t Imagen únicamente para fines\n\t\t\t\t\t\t\tilustrativos, el precio mostrado es por una llanta\n\t\t\t\t\t\t
    \n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    No hay productos disponibles para esta opción
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\tfunction renderTireDetails(tireDetails) {\n\t\tif (tireDetails !== null) {\n\t\t\treturn ;\n\t\t} else return null;\n\t}\n\t// Render\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    0
    \n\t\t\t\t\t
    Resultados
    \n\t\t\t\t\t
     
    \n\t\t\t\t\t
    {\"Medida: Cargando...\"}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tif (list == null || list.length === 0) {\n\t\treturn null;\n\t}\n\tconst tireDetails =\n\t\tactiveProduct >= list.length\n\t\t\t? list[activeProduct - list.length]\n\t\t\t: list[activeProduct];\n\tconst tireTags = getSizeTags(width, ratio, rim, dept, list[activeProduct]);\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t{tireTags.title}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t
    {list.length}
    \n\t\t\t\t
    Resultados
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{\"Medida \" + getDept(dept) + \": \" + width + \"/\" + ratio + \"R\" + rim}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{renderProducts(list, activeProduct)}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{renderTireDetails(tireDetails)}\n\t\t
    \n\t);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport Scroll from \"react-scroll\";\nimport Slider from \"react-slick\";\nimport { Helmet } from \"react-helmet\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport \"slick-carousel/slick/slick.css\";\nimport { IMAGE_TYPES as i } from \"features/constants\";\nimport {\n\tisServer,\n\tcurrencyFormat,\n\timageFormat,\n\tgetBrandClass,\n\tgetDept,\n\tgetSizeSaeTags,\n} from \"features/functions\";\nimport { clearSearchActions } from \"features/tireFinder/searchSlice\";\nimport { scrollToSizeSaeTires } from \"features/tireResults/sizeSaeTiresSlice\";\nimport Loader from \"../Loader\";\nimport TireDetails from \"./TireDetails\";\n\nconst ScrollLink = Scroll.Link;\nconst animateScroll = Scroll.animateScroll;\n\nconst getTirePrice = (tire) => {\n\tif (tire.Discount > 0 && tire.Minimum <= 1) return tire.Price * 1.16;\n\telse {\n\t\treturn tire.ListPrice * 1.16;\n\t}\n};\n\nexport default function ResultSizeSae(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list, diameter, width, rim, dept, scroll } = useSelector(\n\t\t(state) => state.sizeSaeTires\n\t);\n\t// State\n\tconst [activeProduct, setActiveProduct] = useState(0);\n\t// Effect\n\tuseEffect(() => {\n\t\tsetActiveProduct(0);\n\t\tif (scroll) {\n\t\t\tdispatch(scrollToSizeSaeTires());\n\t\t}\n\t}, [list]);\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tdispatch(clearSearchActions());\n\t\tconst target = document.getElementById(\"tireFinderElement\");\n\t\tconst targetPos =\n\t\t\ttarget.offsetWidth > 980 ? target.offsetTop - 100 : target.offsetTop - 50;\n\t\tanimateScroll.scrollTo(targetPos, {\n\t\t\tsmooth: true,\n\t\t\tdelay: 100,\n\t\t\tduration: 500,\n\t\t});\n\t\tif (location !== \"/\") {\n\t\t\thistory.push(\"/\");\n\t\t}\n\t}\n\tfunction setCurrentSlide(currentSlide) {\n\t\tsetActiveProduct(currentSlide);\n\t}\n\t// Render functions\n\tfunction renderProducts(activeList, active) {\n\t\tif (activeList.length > 0) {\n\t\t\tlet data = Array.from(activeList);\n\t\t\tif (data.length === 2) {\n\t\t\t\tdata.push(data[0]);\n\t\t\t\tdata.push(data[1]);\n\t\t\t} else if (data.length === 3) {\n\t\t\t\tdata.push(data[0]);\n\t\t\t\tdata.push(data[1]);\n\t\t\t\tdata.push(data[2]);\n\t\t\t}\n\t\t\tvar settings = {\n\t\t\t\tdots: false,\n\t\t\t\tcenterMode: true,\n\t\t\t\tinfinite: true,\n\t\t\t\tinitialSlide: 0,\n\t\t\t\tclassName: \"center\",\n\t\t\t\tslidesToShow: data.length === 1 ? 1 : 3,\n\t\t\t\tcenterPadding: 0,\n\t\t\t\tafterChange: (currentSlide) => {\n\t\t\t\t\tsetCurrentSlide(currentSlide);\n\t\t\t\t},\n\t\t\t\tresponsive: [\n\t\t\t\t\t{\n\t\t\t\t\t\tbreakpoint: 980,\n\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\tslidesToShow: 1,\n\t\t\t\t\t\t\tslidesToScroll: 1,\n\t\t\t\t\t\t\tinitialSlide: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tlet w = isServer ? 1024 : window.innerWidth;\n\t\t\tlet offset = w > 980 ? -100 : -50;\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\n\t\t\t\t\t{data.map((tire, index) => {\n\t\t\t\t\t\tif (index === active) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t

    {tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    {tire.Size}
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(getTirePrice(tire))} MXN\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t

    {tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    {tire.Size}
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(getTirePrice(tire))} MXN\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t
    \n\t\t\t\t{data[0]?.VehicleTypeId === 3 && (
    Imagen únicamente para fines ilustrativos, el precio mostrado es por una llanta
    )}\n\t\t\t\t\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    No hay productos disponibles para esta opción
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\tfunction renderTireDetails(tireDetails) {\n\t\tif (tireDetails !== null) {\n\t\t\treturn ;\n\t\t} else return null;\n\t}\n\t// Render\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    0
    \n\t\t\t\t\t
    Resultados
    \n\t\t\t\t\t
     
    \n\t\t\t\t\t
    {\"Medida SAE: Cargando...\"}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tif (list == null || list.length === 0) {\n\t\treturn null;\n\t}\n\tconst tireDetails =\n\t\tactiveProduct >= list.length\n\t\t\t? list[activeProduct - list.length]\n\t\t\t: list[activeProduct];\n\tconst tireTags = getSizeSaeTags(\n\t\tdiameter,\n\t\twidth,\n\t\trim,\n\t\tdept,\n\t\tlist[activeProduct]\n\t);\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t{tireTags.title}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t
    {list.length}
    \n\t\t\t\t
    Resultados
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{\"Medida SAE\" +\n\t\t\t\t\t\tgetDept(dept) +\n\t\t\t\t\t\t\": \" +\n\t\t\t\t\t\tdiameter +\n\t\t\t\t\t\t\"X\" +\n\t\t\t\t\t\twidth +\n\t\t\t\t\t\t\"R\" +\n\t\t\t\t\t\trim}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{renderProducts(list, activeProduct)}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{renderTireDetails(tireDetails)}\n\t\t
    \n\t);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport Scroll from \"react-scroll\";\nimport Slider from \"react-slick\";\nimport { Helmet } from \"react-helmet\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport \"slick-carousel/slick/slick.css\";\nimport { IMAGE_TYPES as i, SITE_HOST } from \"features/constants\";\nimport {\n\tcurrencyFormat,\n\timageFormat,\n\tgetBrandClass,\n\tisServer,\n} from \"features/functions\";\nimport { clearSearchActions } from \"features/tireFinder/searchSlice\";\nimport Loader from \"../Loader\";\nimport TireDetails from \"./TireDetails\";\nimport { scrollToCodeTires } from \"features/tireResults/codeTiresSlice\";\nimport { getTireTags } from \"features/functions\";\n\nconst ScrollLink = Scroll.Link;\n\nconst getTirePrice = (tire) => {\n\tif (tire.Discount > 0 && tire.Minimum <= 1) return tire.Price * 1.16;\n\telse {\n\t\treturn tire.ListPrice * 1.16;\n\t}\n};\n\nexport default function ResultCode() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list, scroll } = useSelector((state) => state.codeTires);\n\t// State\n\tconst [activeProduct, setActiveProduct] = useState(0);\n\t// Effect\n\tuseEffect(() => {\n\t\tsetActiveProduct(0);\n\t\tif (scroll) {\n\t\t\tdispatch(scrollToCodeTires());\n\t\t}\n\t}, [list]);\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tdispatch(clearSearchActions());\n\t\tconst target = document.getElementById(\"tireFinderElement\");\n\t\tconst targetPos =\n\t\t\ttarget.offsetWidth > 980 ? target.offsetTop - 100 : target.offsetTop - 50;\n\t\tconst scroll = Scroll.animateScroll;\n\t\tscroll.scrollTo(targetPos, { smooth: true, delay: 100, duration: 500 });\n\t\tif (location !== \"/\") {\n\t\t\thistory.push(\"/\");\n\t\t}\n\t}\n\tfunction setCurrentSlide(currentSlide) {\n\t\tsetActiveProduct(currentSlide);\n\t}\n\t// Render functions\n\tfunction renderProducts(activeList, active) {\n\t\tif (activeList.length > 0) {\n\t\t\tlet data = Array.from(activeList);\n\t\t\tif (data.length === 2) {\n\t\t\t\tdata.push(data[0]);\n\t\t\t\tdata.push(data[1]);\n\t\t\t} else if (data.length === 3) {\n\t\t\t\tdata.push(data[0]);\n\t\t\t\tdata.push(data[1]);\n\t\t\t\tdata.push(data[2]);\n\t\t\t}\n\t\t\tvar settings = {\n\t\t\t\tdots: false,\n\t\t\t\tcenterMode: true,\n\t\t\t\tinfinite: true,\n\t\t\t\tinitialSlide: 0,\n\t\t\t\tclassName: \"center\",\n\t\t\t\tslidesToShow: data.length === 1 ? 1 : 3,\n\t\t\t\tcenterPadding: 0,\n\t\t\t\tafterChange: (currentSlide) => {\n\t\t\t\t\tsetCurrentSlide(currentSlide);\n\t\t\t\t},\n\t\t\t\tresponsive: [\n\t\t\t\t\t{\n\t\t\t\t\t\tbreakpoint: 980,\n\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\tslidesToShow: 1,\n\t\t\t\t\t\t\tslidesToScroll: 1,\n\t\t\t\t\t\t\tinitialSlide: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tconst w = isServer ? 1024 : window.innerWidth;\n\t\t\tlet offset = w > 980 ? -100 : -50;\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t{data.map((tire, index) => {\n\t\t\t\t\t\tif (index === active) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t

    {tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    {tire.Size}
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(getTirePrice(tire))} MXN\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t

    {tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    {tire.Size}
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(getTirePrice(tire))} MXN\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t
    \n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    No hay productos disponibles para esta opción
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\tfunction renderTireDetails(tireDetails) {\n\t\tif (tireDetails !== null) {\n\t\t\treturn ;\n\t\t} else return null;\n\t}\n\t// Render\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    0
    \n\t\t\t\t\t
    Resultados
    \n\t\t\t\t\t
     
    \n\t\t\t\t\t
    {\"Medida: Cargando...\"}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tif (list == null || list.length === 0) {\n\t\treturn null;\n\t}\n\tconst tireDetails =\n\t\tactiveProduct >= list.length\n\t\t\t? list[activeProduct - list.length]\n\t\t\t: list[activeProduct];\n\tconst tireTags = getTireTags(list[activeProduct]);\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t{tireTags.title}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t
    {list.length}
    \n\t\t\t\t
    Resultado
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    {list[0].TireProduct.Name}
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{renderProducts(list, activeProduct)}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{renderTireDetails(tireDetails)}\n\t\t
    \n\t);\n}\n","import React from \"react\";\n\nexport default function HomeDealers() {\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t

    Continental Tire de México

    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\"Recibe\n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React, { useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Dropdown from \"react-dropdown\";\nimport { validateMail } from \"features/functions\";\nimport {\n\tsetContactErrorMsg,\n\tclearContactForm,\n\tfetchContactMessage,\n} from \"features/contact/contactSlice\";\nimport Loader from \"components/Loader\";\nimport classNames from \"classnames\";\n\nexport default function ContactForm() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, errorMsg, done } = useSelector((state) => state.contact);\n\tconst { checked, authenticated, user } = useSelector(\n\t\t(state) => state.session\n\t);\n\t// State\n\tconst [selected, setSelected] = useState(null);\n\tconst [selectedIndex, setSelectedIndex] = useState(0);\n\tconst [name, setName] = useState(\"\");\n\tconst [mail, setMail] = useState(\"\");\n\tconst [message, setMessage] = useState(\"\");\n\tconst [priority, setPriority] = useState(null);\n\tconst [accept, setAccept] = useState(false);\n\t// Dropdown Options\n\tconst options = [\n\t\t{ label: \"Atención a Clientes\", value: 1, index: 0 },\n\t\t{ label: \"Garantías\", value: 2, index: 1 },\n\t];\n\t// Handlers\n\tconst handleSelect = (option) => {\n\t\tif (errorMsg != null && errorMsg.type != null) {\n\t\t\tconst errorMessages = { ...errorMsg, type: null };\n\t\t\tdispatch(setContactErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t\tsetSelected(option);\n\t\tsetSelectedIndex(options.findIndex((x) => x.value === option.value));\n\t};\n\tconst handleNameChange = (e) => {\n\t\tif (errorMsg != null && errorMsg.name != null) {\n\t\t\tconst errorMessages = { ...errorMsg, name: null };\n\t\t\tdispatch(setContactErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t\tsetName(e.target.value);\n\t};\n\tconst handleMailChange = (e) => {\n\t\tif (errorMsg != null && errorMsg.mail != null) {\n\t\t\tconst errorMessages = { ...errorMsg, mail: null };\n\t\t\tdispatch(setContactErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t\tsetMail(e.target.value);\n\t};\n\tconst handleMessageChange = (e) => {\n\t\tif (errorMsg != null && errorMsg.message != null) {\n\t\t\tconst errorMessages = { ...errorMsg, message: null };\n\t\t\tdispatch(setContactErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t\tsetMessage(e.target.value);\n\t};\n\tconst handleAcceptChange = (e) => {\n\t\tif (errorMsg != null && errorMsg.accept != null) {\n\t\t\tconst errorMessages = { ...errorMsg, accept: null };\n\t\t\tdispatch(setContactErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t\tsetAccept(e.target.checked);\n\t};\n\tconst handleSubmit = () => {\n\t\tlet valid = true;\n\t\tlet errorMessages = {};\n\t\tif (checked && !authenticated) {\n\t\t\tif (name.trim() === \"\") {\n\t\t\t\tvalid = false;\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tname: \"Debes escribir tu nombre.\",\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tif (name.trim().length < 5) {\n\t\t\t\t\tvalid = false;\n\t\t\t\t\terrorMessages = {\n\t\t\t\t\t\t...errorMessages,\n\t\t\t\t\t\tname: \"Debes escribir un nombre válido.\",\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (mail.trim() === \"\") {\n\t\t\t\tvalid = false;\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tmail: \"Debes escribir tu correo electrónico.\",\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tif (!validateMail(mail)) {\n\t\t\t\t\tvalid = false;\n\t\t\t\t\terrorMessages = {\n\t\t\t\t\t\t...errorMessages,\n\t\t\t\t\t\tmail: \"Debes escribir un correo electrónico válido.\",\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!accept) {\n\t\t\t\tvalid = false;\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\taccept: \"Debes aceptar los términos y condiciones.\",\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tif (selected == null) {\n\t\t\tvalid = false;\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\ttype: \"Debes seleccionar una opción.\",\n\t\t\t};\n\t\t}\n\t\tif (message.trim() === \"\") {\n\t\t\tvalid = false;\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tmessage: \"Debes escribir un mensaje.\",\n\t\t\t};\n\t\t} else {\n\t\t\tif (message.trim().length < 15) {\n\t\t\t\tvalid = false;\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tmessage: \"Debes escribir un mensaje válido.\",\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(\n\t\t\t\tfetchContactMessage({\n\t\t\t\t\tselected,\n\t\t\t\t\tselectedIndex,\n\t\t\t\t\tname,\n\t\t\t\t\tmail,\n\t\t\t\t\tmessage,\n\t\t\t\t\tpriority,\n\t\t\t\t})\n\t\t\t);\n\t\t} else {\n\t\t\tdispatch(setContactErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t};\n\tconst handleDone = () => {\n\t\tdispatch(clearContactForm());\n\t\tsetSelected(null);\n\t\tsetSelectedIndex(0);\n\t\tsetName(\"\");\n\t\tsetMail(\"\");\n\t\tsetMessage(\"\");\n\t\tsetPriority(null);\n\t};\n\t// Render functions\n\n\tconst renderError = (error) => {\n\t\tif (error != null) {\n\t\t\tif (error !== \"\") {\n\t\t\t\treturn
  • {error}
  • ;\n\t\t\t} else return null;\n\t\t} else return null;\n\t};\n\tconst renderErrorList = () => {\n\t\tif (!isLoading && errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.system)}\n\t\t\t\t\t\t{renderError(errorMsg.name)}\n\t\t\t\t\t\t{renderError(errorMsg.mail)}\n\t\t\t\t\t\t{renderError(errorMsg.message)}\n\t\t\t\t\t\t{renderError(errorMsg.type)}\n\t\t\t\t\t\t{renderError(errorMsg.accept)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t};\n\tconst renderLoader = () => {\n\t\tif (isLoading) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t};\n\tconst renderDone = () => {\n\t\tif (!isLoading && done) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t};\n\tconst renderCategory = () => {\n\t\tconst defaultOption = selected;\n\t\tif (options.length > 1) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t};\n\tconst renderName = () => {\n\t\tif (checked && !authenticated) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t};\n\tconst renderMail = () => {\n\t\tif (checked && !authenticated) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t};\n\tconst renderForm = () => {\n\t\tif (!isLoading && !done) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t};\n\treturn (\n\t\t
    \n\t\t\t

    Contacto

    \n\t\t\t{renderLoader()}\n\t\t\t{renderDone()}\n\t\t\t{renderForm()}\n\t\t\t
    \n\t\t\t\t
    Atención a Clientes:
    \n\t\t\t\t\n\t\t\t\t
    Garantías:
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t Facebook\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t Twitter\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t Instagram\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t Youtube\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport history from \"features/history\";\nimport ContactForm from \"../contact/ContactForm\";\n\nexport default function HomeFooter() {\n\t// Handlers\n\tfunction handleTermsClick() {\n\t\thistory.push(\"/terminos\");\n\t}\n\t// function handleVisionZeroClick() {\n\t// \twindow.open(\n\t// \t\t\"https://www.continentaltire.mx/car/continental/vision-zero\",\n\t// \t\t\"_blank\"\n\t// \t);\n\t// }\n\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t

    Sitio

    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t

     

    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport Scroll from \"react-scroll\";\nimport BannerSlider from \"../slider/BannerSlider\";\nimport TireFinder from \"../tireFinder/TireFinder\";\nimport Highlights from \"../tireResults/Highlights\";\nimport ResultProduct from \"../tireResults/ResultProduct\";\nimport ResultVehicle from \"../tireResults/ResultVehicle\";\nimport ResultSize from \"../tireResults/ResultSize\";\nimport ResultSizeSae from \"../tireResults/ResultSizeSae\";\nimport ResultCode from \"../tireResults/ResultCode\";\nimport HomeDealers from \"./HomeDealers\";\nimport HomeFooter from \"./HomeFooter\";\n\nvar Element = Scroll.Element;\n\nexport default function HomeContent() {\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport ReactGA from \"react-ga4\";\nimport { fetchAddItemToCartObject } from \"features/cart/cartSlice\";\n\nexport default function CartDetailsQty(props) {\n\tconst dispatch = useDispatch();\n\t// State\n\tconst [qty, setQty] = useState(1);\n\tconst [defaultQty, setDefaultQty] = useState(1);\n\t// Effect\n\tuseEffect(() => {\n\t\tsetQty(props.Cantidad);\n\t\tsetDefaultQty(props.Cantidad);\n\t}, [props.Cantidad]);\n\t// Handlers\n\tfunction handleFocus(e) {\n\t\te.target.select();\n\t}\n\tfunction handleBlur(e) {\n\t\tconst newQty = Number(e.target.value.replace(/[^0-9]/g, \"\"));\n\t\tif (newQty > 0 && newQty !== defaultQty) {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Compra\",\n\t\t\t\taction: \"Modificar Cantidad de Producto\",\n\t\t\t\tlabel: props.Kartis,\n\t\t\t\tvalue: newQty,\n\t\t\t});\n\t\t\tdispatch(fetchAddItemToCartObject(props.Kartis, newQty));\n\t\t} else {\n\t\t\tsetQty(defaultQty);\n\t\t}\n\t}\n\tfunction handleKeyPress(e) {\n\t\tif (e.key === \"Enter\") {\n\t\t\thandleBlur(e);\n\t\t}\n\t}\n\tfunction handleKeyDown(e) {\n\t\tif (e.key === \"Tab\") {\n\t\t\thandleBlur(e);\n\t\t}\n\t\tif (e.key === \"Escape\") {\n\t\t\tsetQty(defaultQty);\n\t\t}\n\t}\n\tfunction handleChange(e) {\n\t\tsetQty(e.target.value.replace(/[^0-9]/g, \"\"));\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport ReactGA from \"react-ga4\";\nimport { fetchDeleteItemFromCartObject } from \"features/cart/cartSlice\";\n\nexport default function CartDetailsRemove(props) {\n\tconst dispatch = useDispatch();\n\t// Handlers\n\tfunction handleClick() {\n\t\tReactGA.event({\n\t\t\tcategory: \"Compra\",\n\t\t\taction: \"Quitar Producto\",\n\t\t\tlabel: props.Kartis,\n\t\t});\n\t\tdispatch(fetchDeleteItemFromCartObject(props.Kartis));\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { fetchValidateCoupon, removeCoupon } from \"features/cart/cartSlice\";\n\nexport default function CartCoupon() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { coupon } = useSelector((state) => state.cart);\n\t// State\n\tconst [couponCode, setCouponCode] = useState(\"\");\n\t// Handlers\n\tfunction handleClick() {\n\t\tif (couponCode !== \"\") {\n\t\t\tdispatch(fetchValidateCoupon(couponCode));\n\t\t}\n\t}\n\tfunction handleRemove() {\n\t\tdispatch(removeCoupon());\n\t}\n\tfunction handleFocus(e) {\n\t\te.target.select();\n\t}\n\tfunction handleKeyPress(e) {\n\t\tif (e.key === \"Enter\") {\n\t\t\thandleClick();\n\t\t}\n\t}\n\tfunction handleChange(e) {\n\t\tsetCouponCode(e.target.value);\n\t}\n\t// Render\n\tif (coupon != null) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t

    Cupón de Descuento: {coupon.Code}

    \n\t\t\t\t

    {coupon.Campaign}

    \n\t\t\t\t

    Capacidad: {coupon.MaxProducts} productos

    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tQuitar\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\treturn (\n\t\t
    \n\t\t\t

    Cupón de Descuento

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t

    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\tCargar\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { SHIP_TYPES } from \"features/constants\";\nimport {\n\tgetBrandClass,\n\timageFormat,\n\tcurrencyFormat,\n\tdoesDiscountAplies,\n\tgetModalButtonClass,\n} from \"features/functions\";\nimport { evaluateCartNextStep } from \"features/cart/cartSlice\";\nimport Loader from \"../Loader\";\nimport CartDetailsQty from \"./CartDetailsQty\";\nimport CartDetailsRemove from \"./CartDetailsRemove\";\nimport CartCoupon from \"./CartCoupon\";\n\nexport default function CartDetails() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, cartObject, shipType, showTab } = useSelector(\n\t\t(state) => state.cart\n\t);\n\t// Handlers\n\tfunction handleNextClick() {\n\t\tif (cartObject.Articulos > 0) {\n\t\t\tdispatch(evaluateCartNextStep(showTab + 1));\n\t\t}\n\t}\n\t// Render functions\n\tfunction renderShipPrice() {\n\t\tif (shipType === SHIP_TYPES.ADDRESS) {\n\t\t\treturn
    {currencyFormat(cartObject.Costo_Envio)}
    ;\n\t\t}\n\t\treturn
    {currencyFormat(0)}
    ;\n\t}\n\tfunction renderProducts() {\n\t\tconst campania = cartObject.CuponDescuento.Campania;\n\t\tconst data = cartObject.Elementos;\n\t\tconst aplicaDescuento = doesDiscountAplies(\n\t\t\tcartObject.ArticulosDescuento,\n\t\t\tcartObject.CuponDescuento\n\t\t);\n\t\treturn (\n\t\t\t
    \n\t\t\t\t{data.map((element, index) => {\n\t\t\t\t\t// Generador de Precio y Subtotal\n\t\t\t\t\tlet price = null;\n\t\t\t\t\tlet subtotal = null;\n\t\t\t\t\tif (aplicaDescuento) {\n\t\t\t\t\t\t// Si el tipo de campaña es 6 (SinCuponPorProductoMinPorCodigo)\n\t\t\t\t\t\tif (campania.Tipo === 6) {\n\t\t\t\t\t\t\t// Si aplica el descuento\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\telement.Tire.Discount > 0 &&\n\t\t\t\t\t\t\t\telement.Cantidad >= campania.MinProductos\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Si la llanta tiene descuento y aplica\n\t\t\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    Precio

    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(element.Tire.ListPrice * 1.16)}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.Price * 1.16)}

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    Importe

    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\t\t\telement.Tire.Price * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Si la llanta no tiene descuento\n\t\t\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    Precio

    \n\t\t\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.ListPrice * 1.16)}

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    Importe

    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\t\t\telement.Tire.ListPrice * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Si aplica el descuento\n\t\t\t\t\t\t\tif (element.Tire.Discount > 0) {\n\t\t\t\t\t\t\t\t// Si la llanta tiene descuento\n\t\t\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    Precio

    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(element.Tire.ListPrice * 1.16)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.Price * 1.16)}

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    Importe

    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\t\t\telement.Tire.Price * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Si la llanta no tiene descuento\n\t\t\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    Precio

    \n\t\t\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.ListPrice * 1.16)}

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    Importe

    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\t\t\telement.Tire.ListPrice * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Si no aplica el descuento\n\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    Precio

    \n\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.ListPrice * 1.16)}

    \n\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t);\n\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    Importe

    \n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\telement.Tire.ListPrice * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {element.Tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t

    Medida

    \n\t\t\t\t\t\t\t\t

    {element.Tire.Size}

    \n\t\t\t\t\t\t\t\t

    {element.Kartis}

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    Cantidad

    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{price}\n\t\t\t\t\t\t\t{subtotal}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
    \n\t\t);\n\t}\n\t// Render\n\tif (isLoading) {\n\t\treturn ;\n\t}\n\tif (cartObject == null || cartObject === {}) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t{renderProducts(\n\t\t\t\tcartObject.Elementos,\n\t\t\t\tdoesDiscountAplies(\n\t\t\t\t\tcartObject.ArticulosDescuento,\n\t\t\t\t\tcartObject.CuponDescuento\n\t\t\t\t)\n\t\t\t)}\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Subtotal
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 1.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Envío
    \n\t\t\t\t\t\t{renderShipPrice()}\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Total
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{currencyFormat(cartObject.Total * 1.16)}{\" \"}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Desglose IVA
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 0.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
     
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tContinuar\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\n\t);\n}\n","import React from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { SHIP_TYPES } from \"features/constants\";\nimport { currencyFormat } from \"features/functions\";\nimport { setCartShipType } from \"features/cart/cartSlice\";\nimport { fetchDealerShipAddressListIfNeeded } from \"features/cart/dealerShipAddressSlice\";\n\nexport default function CartShipToButton(props) {\n\tconst dispatch = useDispatch();\n\t// Handlers\n\tfunction handleClick() {\n\t\tif (\n\t\t\tprops.isDisabled == null ||\n\t\t\t(props.isDisabled != null && props.isDisabled === false)\n\t\t) {\n\t\t\tdispatch(setCartShipType(props.shipType));\n\t\t\tswitch (props.shipType) {\n\t\t\t\tcase SHIP_TYPES.DEALER:\n\t\t\t\tdefault:\n\t\t\t\t\tdispatch(fetchDealerShipAddressListIfNeeded());\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Render functions\n\tfunction renderPrice() {\n\t\tconst formatted = currencyFormat(props.amount);\n\t\tconst splitted = formatted.split(\".\");\n\t\tif (props.shipType === SHIP_TYPES.ADDRESS) {\n\t\t\treturn (\n\t\t\t\t

    \n\t\t\t\t\t{splitted[0]}\n\t\t\t\t\t.{splitted[1]}\n\t\t\t\t

    \n\t\t\t);\n\t\t}\n\t\treturn

    $0

    ;\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t{renderPrice()}\n\t\t\t

    MXN

    \n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { SHIP_TYPES } from \"features/constants\";\nimport CartShipToButton from \"./CartShipToButton\";\n\nconst getShipToButtonClass = (selected) => {\n\tif (selected) {\n\t\treturn \"shipto-item selected\";\n\t}\n\treturn \"shipto-item\";\n};\n\nexport default function CartShipTo() {\n\t// Selectors\n\tconst { shipType } = useSelector((state) => state.cart);\n\t// Render functions\n\tfunction renderDealer() {\n\t\tconst type = SHIP_TYPES.DEALER;\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t{SHIP_TYPES.properties[type].fullname}\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t);\n\t}\n\t// Render\n\tif (shipType !== 0) {\n\t\treturn null;\n\t}\n\treturn
    {renderDealer()}
    ;\n}\n","import React from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { setCartShipAddress } from \"features/cart/cartSlice\";\n\nexport default function CartShipAddressButton(props) {\n\tconst dispatch = useDispatch();\n\t// Handlers\n\tfunction handleSelectAddress() {\n\t\tconst { index, item } = props;\n\t\tdispatch(setCartShipAddress({ shipAddress: index, shipAddressItem: item }));\n\t}\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    {props.item.Alias}
    \n\t\t\n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"features/constants\";\nimport {\t\n\tclearCartShipAddress,\t\n\tsetCartShipAddress,\n} from \"features/cart/cartSlice\";\nimport { receiveShipAddress } from \"./shipAddressSlice\";\nimport { runUnauthorizedActions } from \"./loginSlice\";\nimport { setAlert, toggleShowAlert } from \"features/alerts/alertsSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\taddress: null,\n\terrorMsg: null,\n\tselectedState: null,\n\tcity: { Cd: \"\", Municipio: \"\" },\n\tloaded: false,\n};\n\nconst shipAddressEdit = createSlice({\n\tname: \"shipAddressEdit\",\n\tinitialState,\n\treducers: {\n\t\trequestShipAddressEdit: (state) => {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveShipAddressEdit: (state) => {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\tsetShipAddressEdit: (state, action) => {\n\t\t\tstate.address = action.payload.address;\n\t\t},\n\t\tsetShipAddressEditErrorMsg: (state, action) => {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tsetShipAddressEditLoaded: (state, action) => {\n\t\t\tstate.loaded = action.payload.loaded;\n\t\t},\n\t\ttoggleShowShipAddressEdit: (state, action) => {\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tclearShipAddressEdit: () => initialState,\n\t},\n});\n\nexport const {\n\trequestShipAddressEdit,\n\treceiveShipAddressEdit,\n\tsetShipAddressEdit,\n\tsetShipAddressEditErrorMsg,\n\tsetShipAddressEditLoaded,\n\ttoggleShowShipAddressEdit,\n\tclearShipAddressEdit,\n} = shipAddressEdit.actions;\n\nexport const fetchShipAddressEdit = (address) => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst data = JSON.stringify({\n\t\t\t\ttipo: 2,\n\t\t\t\tnuevoAlias: address.newAlias,\n\t\t\t\talias: address.alias,\n\t\t\t\ttel: address.phone,\n\t\t\t\tcalle: address.street,\n\t\t\t\tnumext: address.ext,\n\t\t\t\tnumint: address.int,\n\t\t\t\tcp: address.zip,\n\t\t\t\tcol: address.neighborhood,\n\t\t\t\tcd: address.city,\n\t\t\t\tmpio: address.county,\n\t\t\t\tedo: address.stateId,\n\t\t\t\trfc: \"\",\n\t\t\t\trsoc: \"\",\n\t\t\t\tlat: \"\",\n\t\t\t\tlon: \"\"\n\t\t\t});\n\t\t\tdispatch(requestShipAddressEdit());\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/ActualizaDireccion/\";\n\t\t\treturn axios\n\t\t\t\t.post(url, data, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tdispatch(receiveShipAddressEdit());\n\t\t\t\t\tif (response.data.Envio.length > 0) {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\treceiveShipAddress({ list: response.data.Envio })\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst index = response.data.Envio.findIndex(\n\t\t\t\t\t\t\t(item) => item.Alias === address.newAlias\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetCartShipAddress({\n\t\t\t\t\t\t\t\tshipAddress: index,\n\t\t\t\t\t\t\t\tshipAddressItem: response.data.Envio[index],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(clearCartShipAddress());\n\t\t\t\t\t\tdispatch(receiveShipAddress({ list: null }));\n\t\t\t\t\t}\n\t\t\t\t\tdispatch(toggleShowShipAddressEdit({ isOpen: true }));\n\t\t\t\t\tdispatch(setShipAddressEditErrorMsg({ errorMsg: null }));\n\t\t\t\t\tdispatch(clearShipAddressEdit());\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t\t// If 400 BadRequest model state\n\t\t\t\t\tif (error.response.status === 400) {\n\t\t\t\t\t\tif (error.response.data.Message != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido guardar la dirección. Verifique los datos y vuelva a intentar.\",\n\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(receiveShipAddressEdit());\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\t\t\t\t\terrorMsg: { error: error.response.data.Message },\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\nexport default shipAddressEdit.reducer;\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { SHIP_TYPES } from \"features/constants\";\nimport { toggleShowShipAddressAdd } from \"features/account/shipAddressSlice\";\nimport Loader from \"../Loader\";\nimport CartShipAddressItem from \"./CartShipAddressItem\";\nimport { setShipAddressEdit } from \"features/account/shipAddressEditSlice\";\nimport { toggleShowShipAddressEdit } from \"features/account/shipAddressEditSlice\";\n\nexport default function CartShipAddress() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list } = useSelector((state) => state.shipAddress);\n\tconst { shipType, shipAddress, shipAddressItem } = useSelector(\n\t\t(state) => state.cart\n\t);\n\t// Handlers\n\tfunction handleAddClick() {\n\t\tdispatch(toggleShowShipAddressAdd({ isOpenAdd: false }));\n\t}\n\tfunction handleEditClick() {\n\t\tdispatch(setShipAddressEdit({ address: shipAddressItem }));\n\t\tdispatch(toggleShowShipAddressEdit({ isOpen: false }));\n\t}\n\t// Render Functions\n\tfunction formatAddress() {\n\t\tlet result =
     
    ;\n\t\tlet numint = \"\";\n\t\tif (shipAddressItem != null) {\n\t\t\tif (shipAddressItem.Numero_Interior.length > 0) {\n\t\t\t\tnumint = \" - \" + shipAddressItem.Numero_Interior;\n\t\t\t}\n\t\t\tresult = (\n\t\t\t\t
    \n\t\t\t\t\t{shipAddressItem.Calle +\n\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\tshipAddressItem.Numero_Exterior +\n\t\t\t\t\t\tnumint}\n\t\t\t\t\t
    \n\t\t\t\t\tCol. {shipAddressItem.Colonia}\n\t\t\t\t\t
    \n\t\t\t\t\t{shipAddressItem.Codigo_Postal + \" \" + shipAddressItem.Delegacion}\n\t\t\t\t\t
    \n\t\t\t\t\t{shipAddressItem.Estado_Descripcion}\n\t\t\t\t\t
    \n\t\t\t\t\tTel. {shipAddressItem.Telefono}\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn result;\n\t}\n\tfunction renderEditButton() {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\tEditar\n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderAddressList() {\n\t\tif (list === null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    No hay direcciones de envío registradas
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{list.map((element, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\t
     
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderSelectedAddress() {\n\t\tif (shipAddressItem != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t{formatAddress()}\n\t\t\t\t\t{renderEditButton()}\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif (shipType !== SHIP_TYPES.ADDRESS) {\n\t\treturn null;\n\t}\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t);\n\t}\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\t{renderAddressList()}\n\t\t\t{renderSelectedAddress()}\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Dropdown from \"react-dropdown\";\nimport {\n\tsetDealerShipAddressSelectedState,\n\tsetDealerShipAddressCityList,\n\tsetDealerShipAddressDefaultSelectedCity,\n\tsetDealerShipAddressSelectedCity,\n} from \"features/cart/dealerShipAddressSlice\";\nimport {\n\tclearCartShipAddress,\n\tclearCartShipLocationId,\n\tsetCartShipAddress,\n\tsetCartShipLocationId,\n} from \"features/cart/cartSlice\";\nimport Loader from \"../Loader\";\nimport { SHIP_TYPES } from \"features/constants\";\n\nconst formatAddress = (address) => {\n\tlet result =
     
    ;\n\tlet numint = \"\";\n\tif (address != null) {\n\t\tif (address.Apartment != null && address.Apartment.length > 0) {\n\t\t\tnumint = \" - \" + address.Apartment;\n\t\t}\n\t\tresult = (\n\t\t\t
    \n\t\t\t\t{address.Street + \" \" + address.Number + numint}\n\t\t\t\t
    \n\t\t\t\tCol. {address.Neighbourhood}\n\t\t\t\t
    \n\t\t\t\t{address.Zip + \" \" + address.City}\n\t\t\t\t
    \n\t\t\t\t{address.State}\n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\treturn result;\n};\n\nexport default function CartShipDealer() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list, stateList, selectedState, cityList, selectedCity } =\n\t\tuseSelector((state) => state.dealerShipAddress);\n\tconst { shipType, shipAddress, shipAddressItem } = useSelector(\n\t\t(state) => state.cart\n\t);\n\t// Handlers\n\tfunction handleStateSelect(option) {\n\t\tdispatch(setDealerShipAddressSelectedState({ selectedState: option }));\n\t\tdispatch(setDealerShipAddressCityList({ list, selectedState: option }));\n\t\tdispatch(setDealerShipAddressDefaultSelectedCity());\n\t\tdispatch(clearCartShipAddress());\n\t\tdispatch(clearCartShipLocationId());\n\t}\n\tfunction handleCitySelect(option) {\n\t\tdispatch(setDealerShipAddressSelectedCity({ selectedCity: option }));\n\t\tdispatch(clearCartShipAddress());\n\t\tdispatch(clearCartShipLocationId());\n\t}\n\tfunction handleDealerSelect(item) {\n\t\tdispatch(\n\t\t\tsetCartShipAddress({\n\t\t\t\tshipAddress: item.index,\n\t\t\t\tshipAddressItem: item.element,\n\t\t\t})\n\t\t);\n\t\tdispatch(setCartShipLocationId({ shipLocationId: item.element.Id }));\n\t}\n\t// Render functions\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderFields() {\n\t\tif (!isLoading) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderAddressList() {\n\t\tif (!isLoading) {\n\t\t\tconst filter = (item) => {\n\t\t\t\treturn (\n\t\t\t\t\titem.State === selectedState.value && item.City === selectedCity.value\n\t\t\t\t);\n\t\t\t};\n\t\t\tconst filteredList = list.filter(filter);\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{filteredList.map((element, index) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t handleDealerSelect({ index, element })}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    {element.Dealer + \" \" + element.Name}
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t
     
    \n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\tfunction renderSelectedAddress() {\n\t\tif (!isLoading && shipAddress != null && shipAddressItem != null) {\n\t\t\treturn
    {formatAddress(shipAddressItem)}
    ;\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\tPOR FAVOR SELECCIONE UNA SUCURSAL\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\t// Render\n\tif (shipType !== SHIP_TYPES.DEALER) {\n\t\treturn null;\n\t}\n\tif (list == null) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t{renderLoader()}\n\t\t\t{renderFields()}\n\t\t\t{renderAddressList()}\n\t\t\t{renderSelectedAddress()}\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { SHIP_TYPES as s } from \"features/constants\";\nimport { currencyFormat, getModalButtonClass } from \"features/functions\";\nimport { setCartActiveTab, evaluateCartNextStep } from \"features/cart/cartSlice\";\nimport CartShipTo from \"./CartShipTo\";\nimport CartShipAddress from \"./CartShipAddress\";\nimport CartShipDealer from \"./CartShipDealer\";\n\nexport default function CartShip() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { cartObject, shipType, showTab, shipAddress } = useSelector((state) => state.cart);\n\t// Handlers\n\tfunction handlePrevClick() {\n\t\tdispatch(setCartActiveTab({ showTab: showTab - 1 }));\n\t}\n\tfunction handleNextClick() {\n\t\tif (shipType !== 0) {\n\t\t\tdispatch(evaluateCartNextStep( showTab + 1 ));\n\t\t}\n\t}\n\t// Render\n\tconst totalAmount =\n\t\tshipType === s.DHL_EMPLEADOS\n\t\t\t? cartObject.Total * 1.16 + cartObject.Costo_Envio\n\t\t\t: cartObject.Total * 1.16;\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t{/*
    \n\t\t\t\t\t\n\t\t\t\t
    */}\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Subtotal
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 1.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Envío
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\tshipType === s.DHL_EMPLEADOS\n\t\t\t\t\t\t\t\t\t? cartObject.Costo_Envio\n\t\t\t\t\t\t\t\t\t: 0\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Total
    \n\t\t\t\t\t\t
    {currencyFormat(totalAmount)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Desglose IVA
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 0.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tAnterior\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tContinuar\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\n\t);\n}\n","import React from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { setCartInvoiceAddress } from \"features/cart/cartSlice\";\n\nexport default function CartInvoiceAddressButton(props) {\n\tconst dispatch = useDispatch();\n\t// Handlers\n\tfunction handleSelectAddress() {\n\t\tconst { index, item } = props;\n\t\tdispatch(setCartInvoiceAddress({ invoiceAddress: index, invoiceAddressItem: item }));\n\t}\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    {props.item.Alias}
    \n\t\t\n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { sessionService } from \"redux-react-session\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"features/constants\";\nimport {\n\tclearCartInvoiceAddress,\n\tsetCartInvoiceAddress,\n} from \"features/cart/cartSlice\";\nimport { receiveInvoiceAddress } from \"./invoiceAddressSlice\";\nimport { runUnauthorizedActions } from \"./loginSlice\";\nimport { setAlert, toggleShowAlert } from \"features/alerts/alertsSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\taddress: null,\n\terrorMsg: null,\n\tselectedState: null,\n\tcity: { Cd: \"\", Municipio: \"\" },\n\tloaded: false,\n};\n\nconst invoiceAddressEdit = createSlice({\n\tname: \"invoiceAddressEdit\",\n\tinitialState,\n\treducers: {\n\t\trequestInvoiceAddressEdit: (state) => {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveInvoiceAddressEdit: (state) => {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\tsetInvoiceAddressEdit: (state, action) => {\n\t\t\tstate.address = action.payload.address;\n\t\t},\n\t\tsetInvoiceAddressEditErrorMsg: (state, action) => {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tsetInvoiceAddressEditLoaded: (state, action) => {\n\t\t\tstate.loaded = action.payload.loaded;\n\t\t},\n\t\ttoggleShowInvoiceAddressEdit: (state, action) => {\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tclearInvoiceAddressEdit: () => initialState,\n\t},\n});\n\nexport const {\n\trequestInvoiceAddressEdit,\n\treceiveInvoiceAddressEdit,\n\tsetInvoiceAddressEdit,\n\tsetInvoiceAddressEditErrorMsg,\n\tsetInvoiceAddressEditLoaded,\n\ttoggleShowInvoiceAddressEdit,\n\tclearInvoiceAddressEdit,\n} = invoiceAddressEdit.actions;\n\nexport const fetchInvoiceAddressEdit = (address) => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst data = JSON.stringify({\n\t\t\t\ttipo: 3,\n\t\t\t\tnuevoAlias: address.newAlias,\n\t\t\t\talias: address.alias,\n\t\t\t\tcalle: address.street,\n\t\t\t\tnumext: address.ext,\n\t\t\t\tnumint: address.int,\n\t\t\t\tcp: address.zip,\n\t\t\t\tcol: address.neighborhood,\n\t\t\t\tcd: address.city,\n\t\t\t\tmpio: address.county,\n\t\t\t\tedo: address.stateId,\n\t\t\t\trfc: address.rfc,\n\t\t\t\trsoc: address.name,\n\t\t\t\tlat: \"\",\n\t\t\t\tlon: \"\",\n\t\t\t\tregimen: address.regime,\n\t\t\t\tuso: address.uso,\n\t\t\t});\n\t\t\tdispatch(requestInvoiceAddressEdit());\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/ActualizaDireccion/\";\n\t\t\treturn axios\n\t\t\t\t.post(url, data, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tdispatch(receiveInvoiceAddressEdit());\n\t\t\t\t\tif (response.data.Facturacion.length > 0) {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\treceiveInvoiceAddress({ list: response.data.Facturacion })\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst index = response.data.Facturacion.findIndex(\n\t\t\t\t\t\t\t(item) => item.Alias === address.newAlias\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetCartInvoiceAddress({\n\t\t\t\t\t\t\t\tinvoiceAddress: index,\n\t\t\t\t\t\t\t\tinvoiceAddressItem: response.data.Facturacion[index],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(clearCartInvoiceAddress());\n\t\t\t\t\t\tdispatch(receiveInvoiceAddress({ list: null }));\n\t\t\t\t\t}\n\t\t\t\t\tdispatch(toggleShowInvoiceAddressEdit({ isOpen: true }));\n\t\t\t\t\tdispatch(setInvoiceAddressEditErrorMsg({ errorMsg: null }));\n\t\t\t\t\tdispatch(clearInvoiceAddressEdit());\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t\t// If 400 BadRequest model state\n\t\t\t\t\tif (error.response.status === 400) {\n\t\t\t\t\t\tif (error.response.data.Message != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido guardar la dirección. Verifique los datos y vuelva a intentar.\",\n\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(receiveInvoiceAddressEdit());\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\t\t\t\t\terrorMsg: { error: error.response.data.Message },\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\nexport default invoiceAddressEdit.reducer;\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { toggleShowInvoiceAddressAdd } from \"features/account/invoiceAddressSlice\";\nimport Loader from \"../Loader\";\nimport CartInvoiceAddressItem from \"./CartInvoiceAddressItem\";\nimport { toggleShowInvoiceAddressEdit } from \"features/account/invoiceAddressEditSlice\";\nimport { setInvoiceAddressEdit } from \"features/account/invoiceAddressEditSlice\";\nimport { validateInvoiceAddress } from \"features/functions\";\n\nexport default function CartInvoiceAddress() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list } = useSelector((state) => state.invoiceAddress);\n\tconst { invoiceAddress, invoiceAddressItem } = useSelector(\n\t\t(state) => state.cart\n\t);\n\tconst regimeList = useSelector((state) => state.cfdiRegime.list);\n\tconst usoList = useSelector((state) => state.cfdiUso.list);\n\t// Handlers\n\tfunction handleAddClick() {\n\t\tdispatch(toggleShowInvoiceAddressAdd({ isOpenAdd: false }));\n\t}\n\tfunction handleEditClick() {\n\t\tdispatch(setInvoiceAddressEdit({ address: invoiceAddressItem }));\n\t\tdispatch(toggleShowInvoiceAddressEdit({ isOpen: false }));\n\t}\n\t// Render Functions\n\tfunction formatAddress() {\n\t\tlet result =
     
    ;\n\t\tlet numint = \"\";\n\t\tconst cssAlert = { color: \"red\" };\n\t\tconst cssTag = { color: \"orange\", fontWeight: \"400\", fontStyle: \"normal\" };\n\t\tconst addressRegime =\n\t\t\tinvoiceAddressItem.RegimenFiscal != null &&\n\t\t\tinvoiceAddressItem.RegimenFiscal !== \"\" ? (\n\t\t\t\tregimeList.filter((el) => el.Id === invoiceAddressItem.RegimenFiscal)[0]\n\t\t\t\t\t.Nombre\n\t\t\t) : (\n\t\t\t\tN/A\n\t\t\t);\n\t\tconst addressUso =\n\t\t\tinvoiceAddressItem.Uso != null && invoiceAddressItem.Uso !== \"\" ? (\n\t\t\t\tusoList.filter((el) => el.Id === invoiceAddressItem.Uso)[0].Nombre\n\t\t\t) : (\n\t\t\t\tN/A\n\t\t\t);\n\t\tif (invoiceAddressItem !== null) {\n\t\t\tif (invoiceAddressItem.Numero_Interior.length > 0) {\n\t\t\t\tnumint = \" - \" + invoiceAddressItem.Numero_Interior;\n\t\t\t}\n\t\t\tresult = (\n\t\t\t\t
    \n\t\t\t\t\t{invoiceAddressItem.RFC}\n\t\t\t\t\t
    \n\t\t\t\t\t{invoiceAddressItem.RazonSocial}\n\t\t\t\t\t
    \n\t\t\t\t\t{invoiceAddressItem.Calle +\n\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\tinvoiceAddressItem.Numero_Exterior +\n\t\t\t\t\t\tnumint}\n\t\t\t\t\t
    \n\t\t\t\t\tCol. {invoiceAddressItem.Colonia}\n\t\t\t\t\t
    \n\t\t\t\t\t{invoiceAddressItem.Codigo_Postal +\n\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\tinvoiceAddressItem.Delegacion}\n\t\t\t\t\t
    \n\t\t\t\t\t{invoiceAddressItem.Estado_Descripcion}\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\tRégimen Fiscal: {addressRegime}\n\t\t\t\t\t
    \n\t\t\t\t\tUso de CFDI: {addressUso}\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn result;\n\t}\n\tfunction renderInvalid() {\n\t\tif (invoiceAddressItem.Alias === \"Sin RFC\") {\n\t\t\treturn null;\n\t\t}\n\t\tconst isValid = validateInvoiceAddress(invoiceAddressItem, regimeList, usoList);\n\t\tif (!isValid) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\tLos datos fiscales están\n\t\t\t\t\tincompletos o no son válidos. Por favor complete o corrija la\n\t\t\t\t\tinformación para poder utilizar estos datos.\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\tfunction renderEditButton() {\n\t\tif (invoiceAddress != null && invoiceAddress > 0) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tEditar\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderAddressList() {\n\t\tif (list == null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    No hay direcciones de facturación registradas
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{list.map((element, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\t
     
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderSelectedAddress() {\n\t\tif (invoiceAddressItem != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t{formatAddress()}\n\t\t\t\t\t{renderInvalid()}\n\t\t\t\t\t{renderEditButton()}\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t);\n\t}\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\t{renderAddressList()}\n\t\t\t{renderSelectedAddress()}\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { SHIP_TYPES as s } from \"features/constants\";\nimport { currencyFormat, getModalButtonClass } from \"features/functions\";\nimport {\n\tsetCartActiveTab,\n\tevaluateCartNextStep,\n} from \"features/cart/cartSlice\";\nimport { fetchPaymentCardListIfNeeded } from \"features/cart/paymentCardSlice\";\nimport CartInvoiceAddress from \"./CartInvoiceAddress\";\nimport { validateInvoiceAddress } from \"features/functions\";\n\nexport default function CartShip() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { cartObject, shipType, showTab, invoiceAddressItem } = useSelector(\n\t\t(state) => state.cart\n\t);\n\tconst regimeList = useSelector((state) => state.cfdiRegime.list);\n\tconst usoList = useSelector((state) => state.cfdiUso.list);\n\tconst isValid = validateInvoiceAddress(invoiceAddressItem, regimeList, usoList);\n\t// Handlers\n\tfunction handlePrevClick() {\n\t\tdispatch(setCartActiveTab({ showTab: showTab - 1 }));\n\t}\n\tfunction handleNextClick() {\n\t\tif (isValid) {\n\t\t\tdispatch(evaluateCartNextStep(showTab + 1));\n\t\t\tdispatch(fetchPaymentCardListIfNeeded());\n\t\t}\n\t}\n\t// Render\n\tconst totalAmount =\n\t\tshipType === s.DHL_EMPLEADOS\n\t\t\t? cartObject.Total * 1.16 + cartObject.Costo_Envio\n\t\t\t: cartObject.Total * 1.16;\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Subtotal
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 1.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Envío
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\tshipType === s.DHL_EMPLEADOS ? cartObject.Costo_Envio : 0\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Total
    \n\t\t\t\t\t\t
    {currencyFormat(totalAmount)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Desglose IVA
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 0.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tAnterior\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tContinuar\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\n\t);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Dropdown from \"react-dropdown\";\nimport { SHIP_TYPES as s, PAYMENT_METHODS as p } from \"features/constants\";\nimport { currencyFormat, getModalButtonClass } from \"features/functions\";\nimport {\n\tsetCartActiveTab,\n\tsetCartPaymentType,\n\tevaluateCartNextStep,\n\tsetCartPaymentCard,\n} from \"features/cart/cartSlice\";\nimport { setPaymentCardSelected } from \"features/cart/paymentCardSlice\";\nimport PaymentCardDropdown from \"./PaymentCardDropdown\";\n\nconst isPaynetDisabled = (total, shipping, shipType) => {\n\tlet amount = total * 1.16;\n\tif (shipType === s.DHL_EMPLEADOS) {\n\t\tamount = total * 1.16 + shipping;\n\t}\n\tif (amount > 29999.99) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport default function CartPayment() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { cartObject, shipType, paymentType, paymentCard, showTab } =\n\t\tuseSelector((state) => state.cart);\n\tconst cardOptions = useSelector((state) => state.accountCards.options);\n\t// State\n\tconst [selectedCardOption, setSelectedCardOption] = useState();\n\tuseEffect(() => {\n\t\tif (selectedCardOption == null && cardOptions.length > 0) {\n\t\t\tsetSelectedCardOption(cardOptions[0]);\n\t\t}\n\t}, [selectedCardOption]);\n\t// Handlers\n\tfunction handlePrevClick() {\n\t\tdispatch(setCartActiveTab({ showTab: showTab - 1 }));\n\t}\n\tfunction handleNextClick() {\n\t\tif (paymentType !== 0) {\n\t\t\tdispatch(evaluateCartNextStep(showTab + 1));\n\t\t}\n\t}\n\tfunction hadlePaynetList() {\n\t\twindow.open(\"https://www.paynet.com.mx/\", \"_blank\");\n\t}\n\tfunction handleSelectPayment(type) {\n\t\tdispatch(setCartPaymentType({ paymentType: type }));\n\t\tif (type !== p.CREDITCARD) {\n\t\t\tdispatch(setPaymentCardSelected({ selected: null }));\n\t\t}\n\t}\n\tfunction handleSelectCard(option) {\n\t\tdispatch(\n\t\t\tsetCartPaymentCard({\n\t\t\t\tpaymentCard: option.value,\n\t\t\t\tpaymentCardItem: option,\n\t\t\t})\n\t\t);\n\t\tsetSelectedCardOption(option);\n\t}\n\t// Render functions\n\tfunction getCssClass(selected) {\n\t\tif (selected) {\n\t\t\treturn \"payment-item selected\";\n\t\t}\n\t\treturn \"payment-item\";\n\t}\n\tfunction renderPaymentButtonImg(type, isDisabled) {\n\t\tif (isDisabled) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t{p.properties[type].name}\n\t\t);\n\t}\n\tfunction renderCreditCardDropdown() {\n\t\tif (paymentType === p.CREDITCARD) {\n\t\t\tconst selectedOption =\n\t\t\t\tselectedCardOption == null\n\t\t\t\t\t? cardOptions.filter((el) => el.value === paymentCard)[0]\n\t\t\t\t\t: selectedCardOption;\n\t\t\tif (selectedOption.length === 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    Seleccionar Tarjeta
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderPaynet() {\n\t\tconst isDisabled = isPaynetDisabled(\n\t\t\tcartObject.Total,\n\t\t\tcartObject.Costo_Envio,\n\t\t\tshipType\n\t\t);\n\t\treturn (\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t{p.properties[p.PAYNET].name}\n\t\t\t\t
    \n\t\t\t\t handleSelectPayment(p.PAYNET)}\n\t\t\t\t>\n\t\t\t\t\t{renderPaymentButtonImg(p.PAYNET, isDisabled)}\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\tEl monto máximo permitido varía\n\t\t\t\t\tdependiendo de cada establecimiento afiliado.\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\tVer lista de establecimientos\n\t\t\t\t
    \n\t\t\t\n\t\t);\n\t}\n\t// Render\n\tif (cartObject == null) {\n\t\treturn null;\n\t}\n\tconst totalAmount =\n\t\tshipType === s.DHL_EMPLEADOS\n\t\t\t? cartObject.Total * 1.16 + cartObject.Costo_Envio\n\t\t\t: cartObject.Total * 1.16;\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t{p.properties[p.CREDITCARD].name}\n\t\t\t\t\t
    \n\t\t\t\t\t
    handleSelectPayment(p.CREDITCARD)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderPaymentButtonImg(p.CREDITCARD, false)}\n\t\t\t\t\t
    \n\t\t\t\t\t{renderCreditCardDropdown()}\n\t\t\t\t\t{/*
    \n\t\t\t\t\t\tNos encontramos realizando\n\t\t\t\t\t\talgunos ajustes a la terminal de pago con tarjeta de crédito y\n\t\t\t\t\t\tdébito. En breve estaremos recibiendo pagos a través de este medio.\n\t\t\t\t\t\tPor el momento es posible usar PayNet para sus compras.\n\t\t\t\t\t
    */}\n\t\t\t\t
    \n\t\t\t\t{/*
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t{p.properties[p.PAYPAL].name}\n\t\t\t\t\t
    \n\t\t\t\t\t handleSelectPayment(p.PAYPAL)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderPaymentButtonImg(p.PAYPAL, false)}\n\t
    */}\n\t\t\t\t{/*
    Debido a cambios con la plataforma de PayPal esta forma de pago no estará disponible hasta nuevo aviso.
    */}\n\t\t\t\t{/*
    */}\n\t\t\t\t{renderPaynet()}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Subtotal
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 1.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Envío
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\tshipType === s.DHL_EMPLEADOS ? cartObject.Costo_Envio : 0\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Total
    \n\t\t\t\t\t\t
    {currencyFormat(totalAmount)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Desglose IVA
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 0.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tAnterior\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tContinuar\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { toggleShowPoints } from \"features/cart/cartSlice\";\nimport { setPaymentProcess } from \"features/cart/cartSlice\";\nimport { fetchPaymentCard } from \"features/cart/cartSlice\";\nimport { OPENPAY_TOKEN_ACTION as op } from \"features/constants\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\terrorMsg: null,\n\ttoken: null,\n\tsessId: null,\n};\n\nconst accountCardAdd = createSlice({\n\tname: \"accountCardAdd\",\n\tinitialState,\n\treducers: {\n\t\trequestCardAdd: (state) => {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCardAdd: (state, action) => {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.token = action.payload.token;\n\t\t},\n\t\tsetCardAddErrorMsg: (state, action) => {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tsetCardAddId: (state, action) => {\n\t\t\tstate.sessId = action.payload.sessId;\n\t\t},\n\t\tclearCardAddToken: (state) => {\n\t\t\tstate.token = null;\n\t\t},\n\t\tclearCardAddData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestCardAdd,\n\treceiveCardAdd,\n\tsetCardAddErrorMsg,\n\tsetCardAddId,\n\tclearCardAddToken,\n\tclearCardAddData,\n} = accountCardAdd.actions;\n\nexport const fetchCardToken = (data, tokenAction) => async (dispatch) => {\n\tif (tokenAction === op.SAVE) {\n\t\tdispatch(requestCardAdd());\n\t}\n\tif (tokenAction === op.PAY) {\n\t\tdispatch(setPaymentProcess({ isProcessing: true }));\n\t}\n\tconst content = {\n\t\tcard_number: data.card,\n\t\tholder_name: data.name,\n\t\texpiration_year: data.year,\n\t\texpiration_month: data.month,\n\t\tcvv2: data.code,\n\t\tdevice_session_id: data.sessId,\n\t};\n\twindow.OpenPay.token.create(\n\t\tcontent,\n\t\t(response) => {\n\t\t\tdispatch(receiveCardAdd({ token: response.data }));\n\t\t\tif (tokenAction === op.PAY) {\n\t\t\t\tconst { card } = response.data;\n\t\t\t\tif (card.points_card != null && card.points_card === true && data.cardPromo === 0) {\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\ttoggleShowPoints({\n\t\t\t\t\t\t\tisOpenPoints: false,\n\t\t\t\t\t\t\tpointsData: { save: data.save, usePoints: false, cardPromo: data.cardPromo },\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tdispatch(fetchPaymentCard({ save: data.save, usePoints: false, cardPromo: data.cardPromo }));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (tokenAction === op.SAVE) {\n\t\t\t\tdispatch(fetchAddCard(data));\n\t\t\t}\n\t\t},\n\t\t(error) => {\n\t\t\tdispatch(receiveCardAdd({ token: null }));\n\t\t\tdispatch(setCardAddErrorMsg({ errorMsg: { error } }));\n\t\t}\n\t);\n};\nexport const fetchCardAdd = (data) => async (dispatch) => {};\n\nexport default accountCardAdd.reducer;\n","import React, { useEffect, useState } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Dropdown from \"react-dropdown\";\nimport {\n\tisServer,\n\tvalidateCardYear,\n\tvalidateCardMonth,\n} from \"features/functions\";\nimport { OPENPAY_TOKEN_ACTION, OPENPAY_CARD_LIMIT } from \"features/constants\";\nimport { cartLoadOpenPay, setPaymentProcess } from \"features/cart/cartSlice\";\nimport {\n\tsetCardAddId,\n\tsetCardAddErrorMsg,\n\tfetchCardToken,\n} from \"features/account/accountCardAddSlice\";\nimport Loader from \"components/Loader\";\n\nexport default function OpenPayCardForm(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { errorMsg, sessId } = useSelector((state) => state.accountCardAdd);\n\tconst isLoadingCart = useSelector((state) => state.cart.isLoading);\n\tconst { openPayLoaded, cartObject } = useSelector((state) => state.cart);\n\tconst promoList = useSelector((state) => state.paymentCard.list);\n\tconst cardList = useSelector((state) => state.accountCards.list);\n\t// State\n\tconst [cardValidators, setCardValidators] = useState(null);\n\tconst [name, setName] = useState(\"\");\n\tconst [card, setCard] = useState(\"\");\n\tconst [cardType, setCardType] = useState(null);\n\tconst [month, setMonth] = useState(\"\");\n\tconst [year, setYear] = useState(\"\");\n\tconst [code, setCode] = useState(\"\");\n\tconst [save, setSave] = useState(false);\n\tconst [promo, setPromo] = useState(null);\n\t// Effect\n\tuseEffect(() => {\n\t\tif (!isServer) {\n\t\t\t// OpenPay not loaded\n\t\t\tif (!openPayLoaded) {\n\t\t\t\tdispatch(cartLoadOpenPay());\n\t\t\t\t// Antifraud not loaded\n\t\t\t} else if (sessId == null) {\n\t\t\t\tdispatch(setCardAddId({ sessId: window.OpenPay.deviceData.setup() }));\n\t\t\t\t// Antifraud Loaded\n\t\t\t} else {\n\t\t\t\tlet newCardValidators = window.OpenPay.card;\n\t\t\t\tsetCardValidators({\n\t\t\t\t\tvalidateCardNumber: newCardValidators.validateCardNumber,\n\t\t\t\t\tvalidateCVC: newCardValidators.validateCVC,\n\t\t\t\t\tvalidateExpiry: newCardValidators.validateExpiry,\n\t\t\t\t\tcardType: newCardValidators.cardType,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, [openPayLoaded, sessId, isLoadingCart, dispatch]);\n\t// Handlers\n\tfunction handleReset() {\n\t\tsetName(\"\");\n\t\tsetCard(\"\");\n\t\tsetMonth(\"\");\n\t\tsetYear(\"\");\n\t\tsetCode(\"\");\n\t\tsetSave(false);\n\t\tsetPromo(null);\n\t\tdispatch(setCardAddErrorMsg({ errorMsg: null }));\n\t}\n\tfunction handlePrevClick() {\n\t\thandleReset();\n\t\tprops.onPrev();\n\t}\n\tfunction handleNameChange(e) {\n\t\tconst value = e.target.value.toUpperCase().replace(/[^A-Z0-9 .Ñ]/g, \"\");\n\t\tif (errorMsg != null && errorMsg.name != null) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, name: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetName(value);\n\t}\n\tfunction validateName(cardName) {\n\t\tif (cardName.trim().length === 0) {\n\t\t\treturn { isValid: false, error: \"Debes escribir el nombre del titular.\" };\n\t\t} else if (cardName.trim().length < 5) {\n\t\t\treturn { isValid: false, error: \"Debes escribir un nombre válido.\" };\n\t\t}\n\t\treturn { isValid: true, error: null };\n\t}\n\tfunction handleNameBlur(e) {\n\t\tconst validatedName = validateName(e.target.value);\n\t\tif (!validatedName.isValid) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\tname: validatedName.error,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\tfunction handleCardChange(e) {\n\t\tconst value = e.target.value.replace(/[^0-9]/g, \"\");\n\t\tif (errorMsg != null && errorMsg.card != null) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, card: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCardType(null);\n\t\tsetCard(value);\n\t}\n\tfunction validateCard(cardNumber) {\n\t\tif (cardNumber.trim().length === 0) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"Debes escribir el número de la tarjeta.\",\n\t\t\t};\n\t\t}\n\t\tconst isValid = cardValidators.validateCardNumber(cardNumber);\n\t\tif (!isValid) {\n\t\t\tsetCardType(null);\n\t\t\treturn { isValid: false, error: \"El número de tarjeta no es válido.\" };\n\t\t}\n\t\tconst cType = cardValidators.cardType(cardNumber.trim());\n\t\tsetCardType(cType);\n\t\treturn { isValid: true, error: null };\n\t}\n\tfunction handleCardBlur(e) {\n\t\tconst validatedCard = validateCard(e.target.value);\n\t\tif (!validatedCard.isValid) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\tcard: validatedCard.error,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\tfunction handleMonthChange(e) {\n\t\tconst value = e.target.value.replace(/[^0-9]/g, \"\");\n\t\tif (\n\t\t\terrorMsg != null &&\n\t\t\t(errorMsg.month != null || errorMsg.expiry != null)\n\t\t) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, month: null, expiry: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetMonth(value);\n\t}\n\tfunction validateMonth(cardMonth) {\n\t\tif (cardMonth.trim().length === 0) {\n\t\t\treturn { isValid: false, error: \"Debes escribir el mes de vencimiento.\" };\n\t\t}\n\t\tif (!validateCardMonth(cardMonth)) {\n\t\t\treturn { isValid: false, error: \"El mes de vencimiento no es válido.\" };\n\t\t}\n\t\treturn { isValid: true, error: null };\n\t}\n\tfunction handleMonthdBlur(e) {\n\t\tconst validatedMonth = validateMonth(e.target.value);\n\t\tif (!validatedMonth.isValid) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\tmonth: validatedMonth.error,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\tfunction handleYearChange(e) {\n\t\tif (\n\t\t\terrorMsg != null &&\n\t\t\t(errorMsg.year != null || errorMsg.expiry != null)\n\t\t) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, year: null, expiry: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetYear(e.target.value);\n\t}\n\tfunction validateYear(cardYear) {\n\t\tif (cardYear.trim().length === 0) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"Debes escribir el año de vencimiento.\",\n\t\t\t\texpiry: false,\n\t\t\t};\n\t\t}\n\t\tif (!validateCardYear(cardYear)) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"El año de vencimiento no es válido.\",\n\t\t\t\texpiry: false,\n\t\t\t};\n\t\t}\n\t\tconst validExpiry = cardValidators.validateExpiry(month, cardYear);\n\t\tif (!validExpiry) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"La fecha de vencimiento no es válida.\",\n\t\t\t\texpiry: true,\n\t\t\t};\n\t\t}\n\t\treturn { isValid: true, error: null };\n\t}\n\tfunction handleYearBlur(e) {\n\t\tconst validatedYear = validateYear(e.target.value);\n\t\tif (!validatedYear.isValid) {\n\t\t\tif (!validatedYear.expiry) {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\t\tyear: validatedYear.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\t\texpiry: validatedYear.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\tfunction handleSaveCardChange(e) {\n\t\tsetSave(e.target.checked);\n\t}\n\tfunction validateCode(cardCode) {\n\t\tif (cardCode.trim().length === 0) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"Debes escribir el código de seguridad.\",\n\t\t\t};\n\t\t}\n\t\tconst validCode = cardValidators.validateCVC(cardCode);\n\t\tif (!validCode) {\n\t\t\treturn { isValid: false, error: \"El código de seguridad no es válido.\" };\n\t\t}\n\t\tif (cardType == null) {\n\t\t\tif (validateCard(card)) {\n\t\t\t\tsetCardType(cardValidators.cardType(card));\n\t\t\t}\n\t\t}\n\t\tif (cardType === \"American Express\" && cardCode.trim().length !== 4) {\n\t\t\treturn { isValid: false, error: \"El código de seguridad no es válido.\" };\n\t\t}\n\t\tif (cardType !== \"American Express\" && cardCode.trim().length !== 3) {\n\t\t\treturn { isValid: false, error: \"El código de seguridad no es válido.\" };\n\t\t}\n\t\treturn { isValid: true, error: null };\n\t}\n\tfunction handleCodeChange(e) {\n\t\tconst value = e.target.value.replace(/[^0-9]/g, \"\");\n\t\tif (errorMsg != null && errorMsg.code != null) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, code: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCode(value);\n\t}\n\tfunction handleCodeBlur(e) {\n\t\tconst validatedCode = validateCode(e.target.value);\n\t\tif (!validatedCode.isValid) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\tcode: validatedCode.error,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\tfunction handlePromoChange(option) {\n\t\tsetPromo(option);\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tconst validName = validateName(name);\n\t\tif (!validName.isValid) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tname: validName.error,\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst validCard = validateCard(card);\n\t\tif (!validCard.isValid) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcard: validCard.error,\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst validMonth = validateMonth(month);\n\t\tif (!validMonth.isValid) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tmonth: validMonth.error,\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst validYear = validateYear(year);\n\t\tif (!validYear.isValid) {\n\t\t\terrorMessages = !validYear.expiry\n\t\t\t\t? {\n\t\t\t\t\t\t...errorMessages,\n\t\t\t\t\t\tyear: validYear.error,\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\t...errorMessages,\n\t\t\t\t\t\texpiry: validYear.error,\n\t\t\t\t };\n\t\t\tvalid = false;\n\t\t}\n\t\tconst validCode = validateCode(code);\n\t\tif (!validCode.isValid) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcode: validCode.error,\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (!valid) {\n\t\t\tdispatch(setCardAddErrorMsg({ errorMsg: errorMessages }));\n\t\t} else {\n\t\t\tconst data = {\n\t\t\t\tcard,\n\t\t\t\tname,\n\t\t\t\tyear,\n\t\t\t\tmonth,\n\t\t\t\tcode,\n\t\t\t\tsessId,\n\t\t\t\tsave,\n\t\t\t\tcardPromo: promo != null ? promo.value : 0,\n\t\t\t};\n\t\t\tdispatch(setPaymentProcess({ isProcessing: true }));\n\t\t\tdispatch(fetchCardToken(data, OPENPAY_TOKEN_ACTION.PAY));\n\t\t}\n\t}\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrors() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t\t{renderError(errorMsg.name)}\n\t\t\t\t\t\t{renderError(errorMsg.card)}\n\t\t\t\t\t\t{renderError(errorMsg.month)}\n\t\t\t\t\t\t{renderError(errorMsg.year)}\n\t\t\t\t\t\t{renderError(errorMsg.expiry)}\n\t\t\t\t\t\t{renderError(errorMsg.code)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\t// Render\n\tif (!openPayLoaded || sessId == null) {\n\t\treturn ;\n\t}\n\tfunction getFieldProps(property) {\n\t\tif (errorMsg == null) {\n\t\t\tif (property === \"month\" || property === \"year\" || property === \"code\") {\n\t\t\t\treturn { className: \"half\" };\n\t\t\t}\n\t\t\treturn {};\n\t\t}\n\t\tif (\n\t\t\t(property === \"month\" || property === \"year\") &&\n\t\t\t\"expiry\" in errorMsg &&\n\t\t\terrorMsg[\"expiry\"] != null\n\t\t) {\n\t\t\treturn { className: \"half error\" };\n\t\t}\n\t\tif (property in errorMsg && errorMsg[property] != null) {\n\t\t\tif (property === \"month\" || property === \"year\" || property === \"code\") {\n\t\t\t\treturn { className: \"half error\" };\n\t\t\t}\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\tif (property === \"month\" || property === \"year\" || property === \"code\") {\n\t\t\treturn { className: \"half\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderPromoDropdown() {\n\t\tif (promoList != null && promoList.length > 1) {\n\t\t\tconst filteredList = promoList.filter(\n\t\t\t\t(el) => cartObject.Total >= el.Minimo\n\t\t\t);\n\t\t\tconst options = filteredList.map((el) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: el.Id,\n\t\t\t\t\tlabel: el.Nombre + \" \" + el.Mensaje,\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst selectedOption = promo == null ? options[0] : promo;\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderSaveCard() {\n\t\tif (cardList == null || (cardList != null && cardList.length < OPENPAY_CARD_LIMIT)) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Tarjetas de Crédito
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Tarjetas de Débito
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t{renderPromoDropdown()}\n\t\t\t\t{renderErrors()}\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    Transacciones realizadas vía:
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\"Openpay\"\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\tTus pagos se realizan de forma segura con encriptación de 256\n\t\t\t\t\t\t\t\t\tbits\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t{renderSaveCard()}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tAnterior\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tFinalizar\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Dropdown from \"react-dropdown\";\nimport { isServer } from \"features/functions\";\nimport { cartLoadOpenPay, setPaymentProcess } from \"features/cart/cartSlice\";\nimport {\n\tsetCardAddId,\n\tsetCardAddErrorMsg,\n} from \"features/account/accountCardAddSlice\";\nimport Loader from \"components/Loader\";\nimport { fetchPaymentCard } from \"features/cart/cartSlice\";\nimport { toggleShowPoints } from \"features/cart/cartSlice\";\n\nexport default function OpenPayCvvCardForm(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { errorMsg, sessId } = useSelector((state) => state.accountCardAdd);\n\tconst isLoadingCart = useSelector((state) => state.cart.isLoading);\n\tconst { cartObject } = useSelector((state) => state.cart);\n\tconst { openPayLoaded, paymentCard, paymentCardItem } = useSelector(\n\t\t(state) => state.cart\n\t);\n\tconst cardList = useSelector((state) => state.accountCards.list);\n\tconst promoList = useSelector((state) => state.paymentCard.list);\n\t// State\n\tconst [cardValidators, setCardValidators] = useState(null);\n\tconst [code, setCode] = useState(\"\");\n\tconst [promo, setPromo] = useState(null);\n\t// Effect\n\tuseEffect(() => {\n\t\tif (!isServer) {\n\t\t\t// OpenPay not loaded\n\t\t\tif (!openPayLoaded) {\n\t\t\t\tdispatch(cartLoadOpenPay());\n\t\t\t\t// Antifraud not loaded\n\t\t\t} else if (sessId == null) {\n\t\t\t\tdispatch(setCardAddId({ sessId: window.OpenPay.deviceData.setup() }));\n\t\t\t\t// Antifraud Loaded\n\t\t\t} else {\n\t\t\t\tlet newCardValidators = window.OpenPay.card;\n\t\t\t\tsetCardValidators({\n\t\t\t\t\tvalidateCVC: newCardValidators.validateCVC,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, [openPayLoaded, sessId, isLoadingCart, dispatch]);\n\t// Handlers\n\tfunction handleReset() {\n\t\tsetCode(\"\");\n\t\tsetPromo(null);\n\t\tdispatch(setCardAddErrorMsg({ errorMsg: null }));\n\t}\n\tfunction handlePrevClick() {\n\t\thandleReset();\n\t\tprops.onPrev();\n\t}\n\tfunction handleCodeChange(e) {\n\t\tconst value = e.target.value.replace(/[^0-9]/g, \"\");\n\t\tif (errorMsg != null && errorMsg.code != null) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, code: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCode(value);\n\t}\n\tfunction validateCode(cardCode) {\n\t\tif (cardCode.trim().length === 0) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"Debes escribir el código de seguridad.\",\n\t\t\t};\n\t\t}\n\t\tconst validCode = cardValidators.validateCVC(cardCode);\n\t\tif (!validCode) {\n\t\t\treturn { isValid: false, error: \"El código de seguridad no es válido.\" };\n\t\t}\n\t\tif (\n\t\t\tpaymentCardItem.label.substring(0, 9) === \"AMERICAN_\" &&\n\t\t\tcardCode.length !== 4\n\t\t) {\n\t\t\treturn { isValid: false, error: \"El código de seguridad no es válido.\" };\n\t\t}\n\t\tif (\n\t\t\tpaymentCardItem.label.substring(0, 9) !== \"AMERICAN_\" &&\n\t\t\tcardCode.length !== 3\n\t\t) {\n\t\t\treturn { isValid: false, error: \"El código de seguridad no es válido.\" };\n\t\t}\n\t\treturn { isValid: true, error: null };\n\t}\n\tfunction handleCodeBlur(e) {\n\t\tconst validatedCode = validateCode(e.target.value);\n\t\tif (!validatedCode.isValid) {\n\t\t\tdispatch(\n\t\t\t\tsetCardAddErrorMsg({\n\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\tcode: validatedCode.error,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\tfunction handlePromoChange(option) {\n\t\tsetPromo(option);\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tconst validCode = validateCode(code);\n\t\tif (!validCode.isValid) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcode: validCode.error,\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (!valid) {\n\t\t\tdispatch(setCardAddErrorMsg({ errorMsg: errorMessages }));\n\t\t} else {\n\t\t\tconst data = {\n\t\t\t\tcode,\n\t\t\t\tsave: false,\n\t\t\t\tusePoints: false,\n\t\t\t\tcardPromo: promo != null ? promo.value : 0,\n\t\t\t};\n\t\t\tdispatch(setPaymentProcess({ isProcessing: true }));\n\t\t\tconst selectedCard = cardList.filter((el) => el.Id === paymentCard)[0];\n\t\t\tif (selectedCard.Puntos === true && data.cardPromo === 0) {\n\t\t\t\tdispatch(toggleShowPoints({ isOpenPoints: false, pointsData: data }));\n\t\t\t} else {\n\t\t\t\tdispatch(fetchPaymentCard(data));\n\t\t\t}\n\t\t}\n\t}\n\t// Render functions\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrors() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t\t{renderError(errorMsg.code)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\t// Render\n\tif (!openPayLoaded || sessId == null) {\n\t\treturn ;\n\t}\n\tif (paymentCard === 0) {\n\t\treturn null;\n\t}\n\tfunction getFieldProps(property) {\n\t\tif (errorMsg == null) {\n\t\t\tif (property === \"code\") {\n\t\t\t\treturn { className: \"half\" };\n\t\t\t}\n\t\t\treturn {};\n\t\t}\n\t\tif (property in errorMsg && errorMsg[property] != null) {\n\t\t\tif (property === \"code\") {\n\t\t\t\treturn { className: \"half error\" };\n\t\t\t}\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\tif (property === \"code\") {\n\t\t\treturn { className: \"half\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderPromoDropdown() {\n\t\tif (promoList != null && promoList.length > 1) {\n\t\t\tconst selectedCard = cardList.filter((el) => el.Id === paymentCard)[0];\n\t\t\tif (selectedCard.Tipo.toLowerCase() !== \"credit\") {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst filteredList = promoList.filter(\n\t\t\t\t(el) =>\n\t\t\t\t\tcartObject.Total >= el.Minimo &&\n\t\t\t\t\t(selectedCard.Msi === el.Codigo || el.Codigo === \"\")\n\t\t\t);\n\t\t\tconst options = filteredList.map((el) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: el.Id,\n\t\t\t\t\tlabel: el.Nombre + \" \" + el.Mensaje,\n\t\t\t\t};\n\t\t\t});\n\t\t\tif (options.length <= 1) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst selectedOption = promo == null ? options[0] : promo;\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
     
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Tarjetas de Crédito
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Tarjetas de Débito
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{paymentCardItem.label}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t{renderPromoDropdown()}\n\t\t\t\t{renderErrors()}\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    Transacciones realizadas vía:
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\"Openpay\"\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\tTus pagos se realizan de forma segura con encriptación de 256\n\t\t\t\t\t\t\t\t\tbits\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tAnterior\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tFinalizar\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { SHIP_TYPES as s, PAYMENT_METHODS as p } from \"features/constants\";\nimport { gtmTriggerCartCheckoutButton } from \"features/tagmanager\";\nimport {\n\tgetBrandClass,\n\timageFormat,\n\tdoesDiscountAplies,\n\tformatProductCount,\n\tgetModalButtonClass,\n\tcurrencyFormat,\n} from \"features/functions\";\nimport {\n\tsetCartActiveTab,\n\tfetchPaymentCard,\n\tfetchPaymentDeposit,\n\tfetchPaymentPaynet,\n\tfetchPaymentPayPal,\n\tfetchPaymentSafetyPay,\n} from \"features/cart/cartSlice\";\nimport Loader from \"../Loader\";\nimport OpenPayCardForm from \"./OpenPayCardForm\";\nimport OpenPayCvvCardForm from \"./OpenPayCvvCardForm\";\n\nexport default function CartSummary() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst {\n\t\tisLoading,\n\t\tcartObject,\n\t\tpaymentType,\n\t\tshowTab,\n\t\tshipType,\n\t\tinvoiceAddressItem,\n\t\tpaymentCard,\n\t\tisProcessing,\n\t} = useSelector((state) => state.cart);\n\t// Handlers\n\tfunction handlePrevClick() {\n\t\tdispatch(setCartActiveTab({ showTab: showTab - 1 }));\n\t}\n\tfunction handleFinishClick() {\n\t\tdispatch(gtmTriggerCartCheckoutButton());\n\t\tswitch (paymentType) {\n\t\t\tcase p.CREDITCARD:\n\t\t\t\tdispatch(fetchPaymentCard());\n\t\t\t\tbreak;\n\t\t\tcase p.PAYPAL:\n\t\t\t\tdispatch(fetchPaymentPayPal());\n\t\t\t\tbreak;\n\t\t\tcase p.SAFETYPAY:\n\t\t\t\tdispatch(fetchPaymentSafetyPay());\n\t\t\t\tbreak;\n\t\t\tcase p.DEPOSIT:\n\t\t\t\tdispatch(fetchPaymentDeposit());\n\t\t\t\tbreak;\n\t\t\tcase p.PAYNET:\n\t\t\t\tdispatch(fetchPaymentPaynet());\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tfunction getFinishStatus() {\n\t\tlet result = true;\n\t\tif (shipType !== null && paymentType !== null) {\n\t\t\tresult = false;\n\t\t}\n\t\tif (paymentType === p.CREDITCARD || paymentType === p.PAYPAL) {\n\t\t\tresult = false;\n\t\t}\n\t\treturn result;\n\t}\n\t// Render functions\n\tconst totalAmount =\n\t\tshipType === s.DHL_EMPLEADOS\n\t\t\t? cartObject.Total * 1.16 + cartObject.Costo_Envio\n\t\t\t: cartObject.Total * 1.16;\n\tconst finishStatus = getFinishStatus();\n\tfunction renderContentSummary(data, aplicaDescuento) {\n\t\tconst campania = cartObject.CuponDescuento.Campania;\n\t\treturn (\n\t\t\t
    \n\t\t\t\t{data.map(function (element, index) {\n\t\t\t\t\t// Generador de Precio y Subtotal\n\t\t\t\t\tlet price = null;\n\t\t\t\t\tlet subtotal = null;\n\t\t\t\t\tif (aplicaDescuento) {\n\t\t\t\t\t\t// Si el tipo de campaña es 6 (SinCuponPorProductoMinPorCodigo)\n\t\t\t\t\t\tif (campania.Tipo === 6) {\n\t\t\t\t\t\t\t// Si aplica el descuento\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\telement.Tire.Discount > 0 &&\n\t\t\t\t\t\t\t\telement.Cantidad >= campania.MinProductos\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Si la llanta tiene descuento y aplica\n\t\t\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(element.Tire.ListPrice * 1.16)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.Price * 1.16)}

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\t\t\telement.Tire.Price * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Si la llanta no tiene descuento\n\t\t\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.ListPrice * 1.16)}

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\t\t\telement.Tire.ListPrice * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Si aplica el descuento\n\t\t\t\t\t\t\tif (element.Tire.Discount > 0) {\n\t\t\t\t\t\t\t\t// Si la llanta tiene descuento\n\t\t\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(element.Tire.ListPrice * 1.16)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.Price * 1.16)}

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\t\t\telement.Tire.Price * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Si la llanta no tiene descuento\n\t\t\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.ListPrice * 1.16)}

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\t\t\telement.Tire.ListPrice * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Si no aplica el descuento\n\t\t\t\t\t\tprice = (\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {currencyFormat(element.Tire.ListPrice * 1.16)}

    \n\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t);\n\t\t\t\t\t\tsubtotal = (\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\t\t\telement.Tire.ListPrice * element.Cantidad * 1.16\n\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {element.Cantidad}

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {element.Tire.TireProduct.Name}

    \n\t\t\t\t\t\t\t\t

    {element.Tire.Size}

    \n\t\t\t\t\t\t\t\t

    {element.Kartis}

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{price}\n\t\t\t\t\t\t\t{subtotal}\n\t\t\t\t\t\t
    \n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
    \n\t\t);\n\t}\n\tif (isLoading) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderCardForm() {\n\t\tif (paymentType === p.CREDITCARD && paymentCard === 0) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderCvvForm() {\n\t\tif (paymentType === p.CREDITCARD && paymentCard > 0) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\tfunction renderSubmit() {\n\t\tif (paymentType !== p.CREDITCARD) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tAnterior\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tFinalizar\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif (isProcessing) {\n\t\treturn ;\n\t}\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t{formatProductCount(cartObject.Articulos)}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    Cantidad
    \n\t\t\t\t
    Descripción
    \n\t\t\t\t
    Precio
    \n\t\t\t\t
    Importe
    \n\t\t\t
    \n\t\t\t{renderContentSummary(\n\t\t\t\tcartObject.Elementos,\n\t\t\t\tdoesDiscountAplies(\n\t\t\t\t\tcartObject.ArticulosDescuento,\n\t\t\t\t\tcartObject.CuponDescuento\n\t\t\t\t)\n\t\t\t)}\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tEnvío - \n\t\t\t\t\t\t{s.properties[shipType].fullname}\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tFacturación - \n\t\t\t\t\t\t{invoiceAddressItem.Alias} ({invoiceAddressItem.RFC})\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tForma de pago - \n\t\t\t\t\t\t{p.properties[paymentType].name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Subtotal
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 1.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Envío
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{currencyFormat(\n\t\t\t\t\t\t\t\tshipType === s.DHL_EMPLEADOS ? cartObject.Costo_Envio : 0\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Total
    \n\t\t\t\t\t\t
    {currencyFormat(totalAmount)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Desglose IVA
    \n\t\t\t\t\t\t
    {currencyFormat(cartObject.Total * 0.16)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t{renderSubmit()}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{renderCardForm()}\n\t\t\t{renderCvvForm()}\n\t\t
    \n\t);\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nexport default function PaymentCreditCardForm() {\n\t// Selectors\n\tconst { creditCardResponse } = useSelector((state) => state.cart);\n\t// Ref\n\tconst formRef = useRef();\n\t// Effect\n\tuseEffect(() => {\n\t\tformRef.current.submit();\n\t}, []);\n\t// Render functions\n\tfunction renderFormInputs() {\n\t\treturn Object.keys(creditCardResponse).map((name, index) => {\n\t\t\tif (name !== \"Url\") {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\t}\n\tconst { Url } = creditCardResponse;\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t{renderFormInputs()}\n\t\t
    \n\t);\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nexport default function PaymentPayPalForm() {\n\t// Selectors\n\tconst { payPalResponse } = useSelector((state) => state.cart);\n\t// Ref\n\tconst formRef = useRef();\n\t// Effect\n\tuseEffect(() => {\n\t\tformRef.current.submit();\n\t}, []);\n\t// Render functions\n\tfunction renderFormInputs() {\n\t\treturn Object.keys(payPalResponse).map((name, index) => {\n\t\t\tif (name !== \"Url\") {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\t}\n\tconst { Url } = payPalResponse;\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t{renderFormInputs()}\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { CART_STEPS as s, PAYMENT_METHODS as p } from \"features/constants\";\nimport CartDetails from \"./CartDetails\";\nimport CartShip from \"./CartShip\";\nimport CartInvoice from \"./CartInvoice\";\nimport CartPayment from \"./CartPayment\";\nimport CartSummary from \"./CartSummary\";\nimport PaymentCreditCardForm from \"./PaymentCreditCardForm\";\nimport PaymentPayPalForm from \"./PaymentPayPalForm\";\n\nexport default function Cart() {\n\t// Selectors\n\tconst {\n\t\tshowTab,\n\t\tcreditCardResponse,\n\t\tpayPalResponse,\n\t\tsafetyPayResponse,\n\t\tpaymentType\n\t} = useSelector((state) => state.cart);\n\t// Render functions\n\tfunction renderSummary() {\n\t\tif (\n\t\t\tcreditCardResponse !== null ||\n\t\t\tpayPalResponse !== null ||\n\t\t\tsafetyPayResponse !== null\n\t\t) {\n\t\t\tswitch (paymentType) {\n\t\t\t\tcase p.CREDITCARD:\n\t\t\t\t\treturn ;\n\t\t\t\tcase p.PAYPAL:\n\t\t\t\t\treturn ;\n\t\t\t\tcase p.SAFETYPAY:\n\t\t\t\t\twindow.location.assign(safetyPayResponse.Url);\n\t\t\t\t\treturn null;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\treturn ;\n\t\t}\n\t}\n\t// Render\n\tswitch (showTab) {\n\t\tcase s.DETAILS:\n\t\tdefault:\n\t\t\treturn ;\n\t\tcase s.SHIP:\n\t\t\treturn ;\n\t\tcase s.INVOICE:\n\t\t\treturn \n\t\tcase s.PAYMENT:\n\t\t\treturn ;\n\t\tcase s.SUMMARY:\n\t\t\treturn renderSummary();\n\t}\n}\n","import React from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport ReactGA from \"react-ga4\";\nimport Modal from \"react-modal\";\nimport { PAYMENT_METHODS } from \"features/constants\";\nimport { toggleShowCart } from \"features/cart/cartSlice.js\";\nimport Cart from \"./Cart\";\n\nexport default function CartModal(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isOpen, showTab, paymentType, invoiceAddress } = useSelector(\n\t\t(state) => state.cart\n\t);\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tReactGA.send({ hitType: \"pageview\", page: \"/\"});\n\t\tdispatch(toggleShowCart({ isOpen: true }));\n\t}\n\t// Render Functions\n\tfunction renderCartDisclaimer() {\n\t\t// Depósito bancario\n\t\tif (\n\t\t\tshowTab >= 4 &&\n\t\t\tpaymentType != null &&\n\t\t\tpaymentType === PAYMENT_METHODS.DEPOSIT\n\t\t) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\tAl seleccionar la forma de pago “Depósito Bancario” tus llantas están\n\t\t\t\t\tsujetas a disponibilidad debido a que el inventario con que se cuenta\n\t\t\t\t\tal momento de hacer tu pedido puede variar a la fecha de la\n\t\t\t\t\tconfirmación de tu pago y validación de tu pago.\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\t// Paynet\n\t\tif (\n\t\t\tshowTab >= 4 &&\n\t\t\tpaymentType != null &&\n\t\t\tpaymentType === PAYMENT_METHODS.PAYNET\n\t\t) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\tAl seleccionar la forma de pago “Pago en Establecimientos” tus llantas\n\t\t\t\t\testán sujetas a disponibilidad debido a que el inventario con que se\n\t\t\t\t\tcuenta al momento de hacer tu pedido puede variar a la fecha de la\n\t\t\t\t\tconfirmación de tu pago.\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\tif (showTab === 3 && invoiceAddress !== 0) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\tCon la última legislación fiscal, será importante verificar la\n\t\t\t\t\tinformación del Régimen fiscal, así como colocar correctamente tu\n\t\t\t\t\tnombre/razón social tal como está registrado ante el SAT, ejemplo sin\n\t\t\t\t\tel “S.A. de C.V.” o el equivalente dependiendo de la constitución de\n\t\t\t\t\tla empresa.\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getTabProps(tab) {\n\t\tif (showTab === tab) {\n\t\t\treturn { className: \"active\" };\n\t\t}\n\t\treturn {};\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Mi Carrito

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\tCarrito\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\tEnvío\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t3\n\t\t\t\t\t\t\tFacturación\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t4\n\t\t\t\t\t\t\tForma de Pago\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t5\n\t\t\t\t\t\t\tResumen\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t{renderCartDisclaimer()}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { format, parseISO } from \"date-fns\";\nimport { SHIP_TYPES as s, PAYMENT_METHODS as p } from \"features/constants\";\nimport { currencyFormat } from \"features/functions\";\n\nexport default function PaynetOrderConfirmation() {\n\t// Selectors\n\tconst { order } = useSelector((state) => state.orderConfirmation);\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t

    {order.Nombre}

    \n\t\t\t

    \n\t\t\t\tTu pedido ha sido completado satisfactoriamente, a continuación el\n\t\t\t\tformato para pago en establecimiento junto con los datos de tu compra.\n\t\t\t

    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Fecha límite de pago
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t{format(\n\t\t\t\t\t\t\t\t\tparseISO(order.Paynet.DueDate),\n\t\t\t\t\t\t\t\t\t\"dd/MMM/yyyy hh:mm aaaa\"\n\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Total a pagar
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t{currencyFormat(order.Total)} MXN\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\tLa comisión por recepción del pago varía de acuerdo a los\n\t\t\t\t\t\t\t\t\ttérminos y condiciones que cada cadena comercial establece.\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Servicio a pagar
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Referencia de pago
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\"Código\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    {order.Paynet.Reference}
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\tEn caso de que el escáner no sea capaz de leer el código de\n\t\t\t\t\t\t\t\t\tbarras, escribir la referencia tal como se muestra.\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    Detalles de tu compra
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Número de Pedido:
    \n\t\t\t\t\t\t\t
    {order.Numero}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Fecha y hora:
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t{format(parseISO(order.Fecha), \"dd/MMM/yyyy hh:mm aaaa\")}{\" \"}\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Artículos:
    \n\t\t\t\t\t\t\t
    {order.Articulos}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Acumulados en el año:
    \n\t\t\t\t\t\t\t
    {order.Acumuladas}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Forma de Pago:
    \n\t\t\t\t\t\t\t
    {p.properties[order.MetodoPago].name}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Envío:
    \n\t\t\t\t\t\t\t
    {s.properties[order.TipoEnvio].name}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Cómo realizar el pago
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t\t
    1. Acude a cualquier tienda afiliada
    2. \n\t\t\t\t\t\t\t\t\t
    3. \n\t\t\t\t\t\t\t\t\t\tEntrega al cajero el código de barras y menciona que\n\t\t\t\t\t\t\t\t\t\trealizarás un pago de servicio Paynet\n\t\t\t\t\t\t\t\t\t
    4. \n\t\t\t\t\t\t\t\t\t
    5. \n\t\t\t\t\t\t\t\t\t\tRealizar el pago en efectivo por{\" \"}\n\t\t\t\t\t\t\t\t\t\t{currencyFormat(order.Total)} MXN\n\t\t\t\t\t\t\t\t\t
    6. \n\t\t\t\t\t\t\t\t\t
    7. Conserva el ticket para cualquier aclaración
    8. \n\t\t\t\t\t\t\t\t\t
    9. \n\t\t\t\t\t\t\t\t\t\tSi tienes dudas comunícate a {order.Paynet.MerchantName} al\n\t\t\t\t\t\t\t\t\t\tteléfono {order.Paynet.Phone} o al correo{\" \"}\n\t\t\t\t\t\t\t\t\t\t{order.Paynet.Email}\n\t\t\t\t\t\t\t\t\t
    10. \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Instrucciones para el cajero
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t\t
    1. Ingresar al menú de Pago de Servicios
    2. \n\t\t\t\t\t\t\t\t\t
    3. Seleccionar Paynet
    4. \n\t\t\t\t\t\t\t\t\t
    5. \n\t\t\t\t\t\t\t\t\t\tEscanear el código de barras o ingresar el núm. de\n\t\t\t\t\t\t\t\t\t\treferencia\n\t\t\t\t\t\t\t\t\t
    6. \n\t\t\t\t\t\t\t\t\t
    7. Ingresa la cantidad total a pagar
    8. \n\t\t\t\t\t\t\t\t\t
    9. Cobrar al cliente el monto total más la comisión
    10. \n\t\t\t\t\t\t\t\t\t
    11. \n\t\t\t\t\t\t\t\t\t\tConfirmar la transacción y entregar el ticket al cliente\n\t\t\t\t\t\t\t\t\t
    12. \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tPara cualquier duda sobre como cobrar, por favor llamar al\n\t\t\t\t\t\t\t\tteléfono (55) 5351 7371 en un horario de 8am a 9pm de lunes a\n\t\t\t\t\t\t\t\tdomingo.\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    ¿Quieres pagar en otras tiendas?
    \n\t\t\t\t\t\t\t
    Visítanos en: www.openpay.mx/tiendas
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t

    Conserve todos estos datos para cualquier aclaración.

    \n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { format, parseISO } from \"date-fns\";\nimport ReactGA from \"react-ga4\";\nimport {\n\tSHIP_TYPES as s,\n\tPAYMENT_METHODS as p,\n\tORDER_STATUS_TYPES as o,\n} from \"features/constants\";\nimport { currencyFormat } from \"features/functions\";\nimport { gtmTriggerOrderConfirmation } from \"features/tagmanager\";\nimport PaynetOrderConfirmation from \"./PaynetOrderConfirmation\";\n\nexport default function OrderConfirmation() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { order } = useSelector((state) => state.orderConfirmation);\n\t// Handlers\n\tconst purchaseLog = () => {\n\t\tconst orderItems = [];\n\t\torder.Elementos.forEach((el) => {\n\t\t\torderItems.push({\n\t\t\t\titem_id: el.Codigo,\n\t\t\t\titem_name: el.Nombre,\n\t\t\t\titem_brand: el.Marca,\n\t\t\t\titem_category: \"Llantas/\" + el.Tipo,\n\t\t\t\titem_variant: el.Medida,\n\t\t\t\tprice: el.Precio,\n\t\t\t\tquantity: el.Cantidad,\n\t\t\t});\n\t\t});\n\t\tReactGA.gtag(\"event\", \"purchase\", {\n\t\t\ttransaction_id: order.Numero,\n\t\t\tvalue: order.Importe,\n\t\t\ttax: order.IVA,\n\t\t\tshipping: order.Envio,\n\t\t\tcurrency: \"MXN\",\n\t\t\titems: orderItems,\n\t\t});\n\t}\n\t// Render functions\n\tfunction renderOk() {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t

    {order.Nombre}

    \n\t\t\t\t

    \n\t\t\t\t\tTu pedido ha sido completado satisfactoriamente, los datos de tu\n\t\t\t\t\tcompra son:\n\t\t\t\t

    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Número de Pedido:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{order.Numero}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Fecha y hora:
    \n\t\t\t\t\t\t
    {format(parseISO(order.Fecha), \"dd/MMM/yyyy hh:mm aaaa\")}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Importe:
    \n\t\t\t\t\t\t
    {currencyFormat(order.Total)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Estatus
    \n\t\t\t\t\t\t
    {o.properties[order.Estatus].name}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Articulos:
    \n\t\t\t\t\t\t
    {order.Articulos}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Forma de Pago:
    \n\t\t\t\t\t\t
    {p.properties[order.MetodoPago].name}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Envío:
    \n\t\t\t\t\t\t
    {s.properties[order.TipoEnvio].fullname}
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t

    Conserve todos estos datos para cualquier aclaración.

    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderNO() {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t

    {order.Nombre}

    \n\t\t\t\t

    Lo sentimos, pero tu pedido No se ha sido podido completar.

    \n\t\t\t\t

    Los detalles de tu compra son:

    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Fecha y hora:
    \n\t\t\t\t\t\t
    {format(parseISO(order.Fecha), \"dd/MMM/yyyy hh:mm aaaa\")}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Importe:
    \n\t\t\t\t\t\t
    {currencyFormat(order.Total)}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Estatus
    \n\t\t\t\t\t\t
    {o.properties[order.Estatus].name}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Articulos:
    \n\t\t\t\t\t\t
    {order.Articulos}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Forma de Pago:
    \n\t\t\t\t\t\t
    {p.properties[order.MetodoPago].name}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Envío:
    \n\t\t\t\t\t\t
    {s.properties[order.TipoEnvio].fullname}
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t

    Conserve todos estos datos para cualquier aclaración.

    \n\t\t\t
    \n\t\t);\n\t}\n\t// Render\n\tif (order == null) {\n\t\treturn null;\n\t}\n\t// Render Paynet Order Confirmation\n\tif (order.Estatus === o.RESERVE && order.MetodoPago === p.PAYNET) {\n\t\tpurchaseLog();\n\t\tdispatch(gtmTriggerOrderConfirmation(order));\n\t\treturn ;\n\t}\n\t// Render Order Confirmation Ok\n\tif (order.Estatus === o.VALIDATION) {\n\t\tpurchaseLog();\n\t\tdispatch(gtmTriggerOrderConfirmation(order));\n\t\treturn renderOk();\n\t}\n\treturn renderNO();\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport { toggleShowOrderConfirmation } from \"features/orders/orderConfirmationSlice\";\nimport Loader from \"../Loader\";\nimport OrderConfirmation from \"./OrderConfirmation\";\nimport { useHistory, useLocation } from \"react-router\";\n\nexport default function OrderConfirmationModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, isOpen, order, orderId } = useSelector(\n\t\t(state) => state.orderConfirmation\n\t);\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Handlers\n\tfunction handleModalClose() {\n\t\tdispatch(toggleShowOrderConfirmation({ isOpen }));\n\t\tif (location !== \"/\") {\n\t\t\thistory.replace(\"/\");\n\t\t}\n\t}\n\t// Render functions\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\tfunction renderOrderConfirmation() {\n\t\tif (!isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\t// Render\n\tif (!isLoading && (orderId == null || order == null)) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t

    Pedido ContiShop

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderOrderConfirmation()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { toggleShowAlert, setAlert } from \"features/alerts/alertsSlice\";\n\nconst resetPassword = createSlice({\n\tname: \"resetPassword\",\n\tinitialState: {\n\t\tisLoading: false,\n\t\tisOpen: false,\n\t\terrorMsg: null,\n\t},\n\treducers: {\n\t\trequestPassword(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tcompletePassword(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\ttoggleShowPassword(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Usuario\",\n\t\t\t\t\taction: \"Mostrar Recuper Contraseña\"});\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetPasswordErrorMsg(state, action) {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t},\n});\n\nexport const {\n\trequestPassword,\n\tcompletePassword,\n\ttoggleShowPassword,\n\tsetPasswordErrorMsg,\n} = resetPassword.actions;\n\nexport const fetchPasswordReset = (email) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"POST\",\n\t\theaders: headers,\n\t\tbody: JSON.stringify({\n\t\t\temail: email,\n\t\t}),\n\t};\n\tdispatch(requestPassword());\n\treturn fetch(\n\t\tBASE_API_URL + \"/api/Cuenta/RecuperaContrasena\",\n\t\toptions\n\t)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.text();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((text) => Promise.reject(text));\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Usuario\",\n\t\t\t\taction: \"Recuperar Contraseña\",\n\t\t\t});\n\t\t\tdispatch(\n\t\t\t\tsetAlert({alert: {\n\t\t\t\t\ttitle: \"¡Excelente!\",\n\t\t\t\t\tdescription: \"Se ha enviado el correo con tu nueva contraseña.\",\n\t\t\t\t\tdetails: null,\n\t\t\t\t}})\n\t\t\t);\n\t\t\tdispatch(toggleShowPassword({isOpen: true}));\n\t\t\tdispatch(completePassword());\n\t\t\tdispatch(toggleShowAlert({isOpen: false}));\n\t\t\tdispatch(setPasswordErrorMsg({errorMsg: null}));\n\t\t})\n\t\t.catch((error) => {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Usuario\",\n\t\t\t\taction: \"Error al Recuperar Contraseña\",\n\t\t\t});\n\t\t\tdispatch(\n\t\t\t\tsetAlert({alert: {\n\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"No se ha podido enviar el correo de recuperación de contraseña. Verifique los datos y vuelva a intentar.\",\n\t\t\t\t\tdetails: error.Message,\n\t\t\t\t}})\n\t\t\t);\n\t\t\tdispatch(completePassword());\n\t\t\tdispatch(setPasswordErrorMsg({errorMsg: error.Message}));\n\t\t\tdispatch(toggleShowAlert({isOpen: false}));\n\t\t});\n};\n\nexport default resetPassword.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport ReactGA from \"react-ga4\";\nimport history from \"../history\";\nimport { BASE_API_URL } from \"../constants\";\nimport { toggleShowAlert, setAlert } from \"features/alerts/alertsSlice\";\n\nconst initialState = {\n\tisLoading: false,\n isOpen: false,\n\terrorMsg: null,\n};\n\nconst sendConfirmation = createSlice({\n\tname: \"sendConfirmation\",\n\tinitialState,\n\treducers: {\n\t\trequestConfirmation(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tcompleteConfirmation(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\ttoggleShowConfirmation(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\taction: \"Mostrar Enviar Confirmación\"});\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetConfirmationErrorMsg(state, action) {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tclearConfirmationData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestConfirmation,\n\tcompleteConfirmation,\n\ttoggleShowConfirmation,\n\tsetConfirmationErrorMsg,\n\tclearConfirmationData,\n} = sendConfirmation.actions;\n\nexport const fetchSendConfirmation = (email) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\t// const theState = getState();\n\tconst options = {\n\t\tmethod: \"POST\",\n\t\theaders: headers,\n\t\tbody: JSON.stringify({\n\t\t\temail: email,\n\t\t}),\n\t};\n\tdispatch(requestConfirmation());\n\tconst url = BASE_API_URL + \"/api/Cuenta/Confirmacion/\";\n\tlet responseStatus = 0;\n\treturn fetch(url, options)\n\t\t.then((response) => {\n\t\t\tresponseStatus = response.status;\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.text();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((text) => Promise.reject(text));\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\taction: \"Enviar Confirmación\",\n\t\t\t});\n\t\t\tdispatch(completeConfirmation());\n\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\tdispatch(clearConfirmationData());\n\t\t\tdispatch(\n\t\t\t\tsetAlert({\n\t\t\t\t\talert: {\n\t\t\t\t\t\ttitle: \"¡Excelente!\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Se envió el correo de confirmación. No olvides también verificar que el correo no se encuentre en el filtro de spam.\",\n\t\t\t\t\t\tdetails: null,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t\thistory.push(\"/login\")\n\t\t})\n\t\t.catch((error) => {\n\t\t\t// TODO: fetch error actions\n\t\t\tdispatch(completeConfirmation());\n\t\t\t// Not Found (404)\n\t\t\tif (responseStatus === 404) {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetConfirmationErrorMsg({\n\t\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t\terror: \"Ocurrió un error, verifica que el correo sea correcto.\",\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\taction: \"Error al enviar Confirmación\",\n\t\t\t\t\tlabel: \"Ocurrió un error, verifica que el correo sea correcto.\",\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Bad Request (400)\n\t\t\tif (responseStatus === 400) {\n\t\t\t\tif (error.includes(\"Message\")) {\n\t\t\t\t\tconst json = JSON.parse(error);\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tsetConfirmationErrorMsg({ errorMsg: { error: json.Message } })\n\t\t\t\t\t);\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\t\taction: \"Error al enviar Confirmación\",\n\t\t\t\t\t\tlabel: json.Message,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tsetConfirmationErrorMsg({\n\t\t\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t\t\terror:\n\t\t\t\t\t\t\t\t\t\"Ocurrió un error, por favor notifícalo al empleado que te invitó.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\t\taction: \"Error al enviar Confirmación\",\n\t\t\t\t\t\tlabel:\n\t\t\t\t\t\t\t\"Ocurrió un error, por favor notifícalo al empleado que te invitó.\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n};\n\nexport default sendConfirmation.reducer;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport {\n\tfetchLogin,\n\ttoggleShowLogin,\n\tsetLoginErrorMessage,\n} from \"features/account/loginSlice\";\nimport { toggleShowRegister } from \"features/account/registerSlice\";\nimport { toggleShowPassword } from \"features/account/resetPasswordSlice\";\nimport { toggleShowConfirmation } from \"features/account/confirmationSlice\";\nimport Loader from \"../Loader\";\n\nconst renderError = (error) => {\n\tif (error != null) {\n\t\treturn
  • {error}
  • ;\n\t}\n\treturn null;\n};\n\nexport default function LoginModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, errorMsg, isOpen } = useSelector((state) => state.login);\n\tconst { checked, authenticated } = useSelector((state) => state.session);\n\t// State\n\tconst [usrname, setUsrname] = useState(\"\");\n\tconst [pwd, setPwd] = useState(\"\");\n\t// Refs\n\tconst usrnameRef = useRef();\n\tconst pwdRef = useRef();\n\t// Effect\n\tuseEffect(() => {\n\t\tusrnameRef.current && usrnameRef.current.focus();\n\t\tlet prevAuthenticated;\n\t\tif (authenticated && !prevAuthenticated) {\n\t\t\tsetUsrname(\"\");\n\t\t\tsetPwd(\"\");\n\t\t}\n\t\treturn () => {\n\t\t\tprevAuthenticated = authenticated;\n\t\t};\n\t}, [authenticated]);\n\t// Handlers\n\tfunction handleUsrnameChange(e) {\n\t\tif (errorMsg != null && errorMsg.usrname != null) {\n\t\t\tdispatch(\n\t\t\t\tsetLoginErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, usrname: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetUsrname(e.target.value);\n\t}\n\tfunction handleUsrnameKeyPress(e) {\n\t\tif (e.key === \"Enter\") {\n\t\t\te.preventDefault();\n\t\t\tpwdRef.current.focus();\n\t\t}\n\t}\n\tfunction handlePwdChange(e) {\n\t\tif (errorMsg != null && errorMsg.pwd != null) {\n\t\t\tdispatch(\n\t\t\t\tsetLoginErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, pwd: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetPwd(e.target.value);\n\t}\n\tfunction handleReset() {\n\t\tsetUsrname(\"\");\n\t\tsetPwd(\"\");\n\t\tdispatch(setLoginErrorMessage({ errorMsg: null }));\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowLogin({ isOpen }));\n\t}\n\tfunction handleOverlayCloseClick() {\n\t\tdispatch(toggleShowLogin({ isOpen }));\n\t}\n\tfunction handleRegisterClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowLogin({ isOpen: true }));\n\t\tdispatch(toggleShowRegister({ isOpen: false }));\n\t}\n\tfunction handleResetPasswordClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowLogin({ isOpen: true }));\n\t\tdispatch(toggleShowPassword({ isOpen: false }));\n\t}\n\tfunction handleConfirmationClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowLogin({ isOpen: true }));\n\t\tdispatch(toggleShowConfirmation({ isOpen: false }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (usrname.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tusrname: \"Debes escribir tu correo electrónico\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (pwd.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tpwd: \"Debes escribir tu contraseña\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(fetchLogin(usrname, pwd));\n\t\t\tsetPwd(\"\");\n\t\t} else {\n\t\t\tdispatch(setLoginErrorMessage({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorMsg() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t\t{renderError(errorMsg.usrname)}\n\t\t\t\t\t\t{renderError(errorMsg.pwd)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderLoginForm() {\n\t\tif (!isLoading) {\n\t\t\tlet errClass = { usrname: {}, pwd: {} };\n\t\t\tif (errorMsg != null) {\n\t\t\t\tif (errorMsg.usrname != null) {\n\t\t\t\t\terrClass = { ...errClass, usrname: { className: \"error\" } };\n\t\t\t\t}\n\t\t\t\tif (errorMsg.pwd != null) {\n\t\t\t\t\terrClass = { ...errClass, pwd: { className: \"error\" } };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderErrorMsg()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tRegistrarme\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tOlvidé mi contraseña\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tNo recibí correo de confirmación\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif (checked && authenticated) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Login

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderLoginForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport DatePicker from \"react-datepicker\";\nimport { sub } from \"date-fns\";\nimport { validateMail, validatePhone, validatePwd } from \"features/functions\";\nimport {\n\tsetRegistrationErrorMsg,\n\tclearRegisterData,\n\ttoggleShowRegister,\n\tfetchRegister,\n} from \"features/account/registerSlice\";\nimport Loader from \"components/Loader\";\n\nexport default function RegisterModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, errorMsg, isOpen } = useSelector(\n\t\t(state) => state.register\n\t);\n\t// State\n\tconst [usrname, setUsrname] = useState(\"\");\n\tconst [pwd, setPwd] = useState(\"\");\n\tconst [name, setName] = useState(\"\");\n\tconst [lastName, setLastName] = useState(\"\");\n\tconst [motherName, setMotherName] = useState(\"\");\n\tconst [phone, setPhone] = useState(\"\");\n\tconst [gender, setGender] = useState(null);\n\tconst [birthdate, setBirthdate] = useState(null);\n\tconst [accept, setAccept] = useState(true);\n\tconst [subscribe, setSubscribe] = useState(true);\n\tconst [defaultBirthdate, setDefaultBirthdate] = useState(true);\n\t// Refs\n\tconst usernameRef = useRef();\n\tuseEffect(() => usernameRef.current && usernameRef.current.focus(), []);\n\t// Handlers\n\tfunction handleUsrnameChange(e) {\n\t\tif (errorMsg != null && errorMsg.usrname != null) {\n\t\t\tdispatch(\n\t\t\t\tsetRegistrationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, usrname: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetUsrname(e.target.value);\n\t}\n\tfunction handlePwdChange(e) {\n\t\tif (errorMsg != null && errorMsg.pwd != null) {\n\t\t\tdispatch(\n\t\t\t\tsetRegistrationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, pwd: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetPwd(e.target.value);\n\t}\n\tfunction handleNameChange(e) {\n\t\tif (errorMsg != null && errorMsg.name != null) {\n\t\t\tdispatch(\n\t\t\t\tsetRegistrationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, name: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetName(e.target.value);\n\t}\n\tfunction handleLastNameChange(e) {\n\t\tif (errorMsg != null && errorMsg.lastName != null) {\n\t\t\tdispatch(\n\t\t\t\tsetRegistrationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, lastName: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetLastName(e.target.value);\n\t}\n\tfunction handleMotherNameChange(e) {\n\t\tsetMotherName(e.target.value);\n\t}\n\tfunction handlePhoneChange(e) {\n\t\tif (errorMsg != null && errorMsg.phone != null) {\n\t\t\tdispatch(\n\t\t\t\tsetRegistrationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, phone: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetPhone(e.target.value);\n\t}\n\tfunction handleGenderChange(e) {\n\t\tif (errorMsg != null && errorMsg.gender != null) {\n\t\t\tdispatch(\n\t\t\t\tsetRegistrationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, gender: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetGender(e.target.value);\n\t}\n\tfunction handleDateChange(date) {\n\t\tif (errorMsg != null && errorMsg.birthdate != null) {\n\t\t\tdispatch(\n\t\t\t\tsetRegistrationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, birthdate: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetBirthdate(date);\n\t\tsetDefaultBirthdate(false);\n\t}\n\tfunction handleTermsChange(e) {\n\t\tif (errorMsg != null && errorMsg.accept != null) {\n\t\t\tdispatch(\n\t\t\t\tsetRegistrationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, accept: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetAccept(e.target.checked);\n\t}\n\tfunction handleSubscriptionChange(e) {\n\t\tsetSubscribe(e.target.checked);\n\t}\n\tfunction handleReset() {\n\t\tsetUsrname(\"\");\n\t\tsetPwd(\"\");\n\t\tsetName(\"\");\n\t\tsetLastName(\"\");\n\t\tsetMotherName(\"\");\n\t\tsetPhone(\"\");\n\t\tsetGender(null);\n\t\tsetBirthdate(null);\n\t\tsetAccept(true);\n\t\tsetSubscribe(true);\n\t\tsetDefaultBirthdate(true);\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(clearRegisterData());\n\t\tdispatch(toggleShowRegister({ isOpen }));\n\t}\n\tfunction handleOverlayCloseClick() {\n\t\tdispatch(toggleShowRegister({ isOpen }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (usrname.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tusrname: \"Debes escribir tu correo electrónico\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validateMail(usrname)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tusrname: \"Debes escribir un correo electrónico válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (pwd.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tpwd: \"Debes escribir una contraseña\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validatePwd(pwd)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tpwd: \"La contraseña debe tener entre 8 y 16 caracteres y debe contener al menos una Mayúscula, una minúscula, un número y un caracter especial\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (name.trim() === \"\") {\n\t\t\terrorMessages = { ...errorMessages, name: \"Debes escribir tu nombre\" };\n\t\t\tvalid = false;\n\t\t}\n\t\tif (lastName.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tlastName: \"Debes escribir tu apellido paterno\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (phone.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tphone: \"Debes escribir un teléfono para poder contactarte\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validatePhone(phone)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tphone: \"Debes escribir un teléfono válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (defaultBirthdate) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tbirthdate: \"Debes seleccionar tu fecha de nacimiento\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (gender == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tgender: \"Debes seleccionar el género\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (!accept) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\taccept: \"Debes aceptar los términos y condiciones de uso\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(\n\t\t\t\tfetchRegister({\n\t\t\t\t\tusrname,\n\t\t\t\t\tpwd,\n\t\t\t\t\tname,\n\t\t\t\t\tlastName,\n\t\t\t\t\tmotherName,\n\t\t\t\t\tphone,\n\t\t\t\t\tbirthdate,\n\t\t\t\t\tgender,\n\t\t\t\t\taccept,\n\t\t\t\t\tsubscribe,\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetPwd(\"\");\n\t\t} else {\n\t\t\tdispatch(setRegistrationErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render Functions\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorList() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t\t{renderError(errorMsg.usrname)}\n\t\t\t\t\t\t{renderError(errorMsg.pwd)}\n\t\t\t\t\t\t{renderError(errorMsg.name)}\n\t\t\t\t\t\t{renderError(errorMsg.lastName)}\n\t\t\t\t\t\t{renderError(errorMsg.phone)}\n\t\t\t\t\t\t{renderError(errorMsg.birthdate)}\n\t\t\t\t\t\t{renderError(errorMsg.gender)}\n\t\t\t\t\t\t{renderError(errorMsg.coupon)}\n\t\t\t\t\t\t{renderError(errorMsg.accept)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getFieldProps(property) {\n\t\tif (errorMsg == null) {\n\t\t\tif (property === \"terms\") {\n\t\t\t\treturn { className: \"full\" };\n\t\t\t}\n\t\t\treturn {};\n\t\t}\n\t\tif (property in errorMsg && errorMsg[property] != null) {\n\t\t\tif (property === \"terms\") {\n\t\t\t\treturn { className: \"full error\" };\n\t\t\t}\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\tif (property === \"terms\") {\n\t\t\treturn { className: \"full\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderForm() {\n\t\tif (!isLoading) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    TÉRMINOS Y CONDICIONES DE USO

    \n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\tCONTINENTAL Tire México S.A. de C.V. y sus filiales y\n\t\t\t\t\t\t\t\t\tsubsidiarias (en adelante \"CONTINENTAL\"), le dan la más\n\t\t\t\t\t\t\t\t\tcordial bienvenida. Agradecemos su preferencia y nos\n\t\t\t\t\t\t\t\t\tpermitimos informarle sobre algunos puntos importantes a\n\t\t\t\t\t\t\t\t\tconsiderar durante su visita a www.contishop.com.mx.\n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\tCon el objetivo de ofrecerle un ambiente seguro y agradable\n\t\t\t\t\t\t\t\t\tpara nuestros clientes y visitantes, hemos establecido reglas\n\t\t\t\t\t\t\t\t\ty términos bajo los cuales se delimitan las áreas de\n\t\t\t\t\t\t\t\t\tresponsabilidad y derechos, tanto de CONTINENTAL como de\n\t\t\t\t\t\t\t\t\tnuestros visitantes.\n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\tAL INGRESAR Y UTILIZAR ESTE SITIO DE INTERNET, CUYO NOMBRE DE\n\t\t\t\t\t\t\t\t\tDOMINIOES: www.contishop.com.mx, PROPIEDAD DE CONTINENTAL TIRE\n\t\t\t\t\t\t\t\t\tDE MÉXICO, S.A. DE C.V. y sus filiales, EN LO SUCESIVO\n\t\t\t\t\t\t\t\t\t“CONTINENTAL” USTED (EL USUARIO) ESTÁ ACEPTANDO LOS TÉRMINOS Y\n\t\t\t\t\t\t\t\t\tLAS CONDICIONES CONTENIDOS EN ESTE CONVENIO Y DECLARA\n\t\t\t\t\t\t\t\t\tEXPRESAMENTE SU ACEPTACIÓN, MANIFESTANDO SU VOLUNTAD EN\n\t\t\t\t\t\t\t\t\tTÉRMINOS DE LO ESTABLECIDO POR LOS ARTÍCULO 1803 Y 1834 BISDEL\n\t\t\t\t\t\t\t\t\tCÓDIGO CIVIL FEDERAL, 80, 81, 89 Y DEMÁS RELATIVOS Y\n\t\t\t\t\t\t\t\t\tAPLICABLES DEL CÓDIGO DE COMERCIO Y DEMÁS RELATIVOS Y\n\t\t\t\t\t\t\t\t\tAPLICABLES DE LA LEGISLACIÓN APLICABLE.\n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\tSI EL USUARIO NO ACEPTA EN FORMA ABSOLUTA LOS TÉRMINOS Y\n\t\t\t\t\t\t\t\t\tCONDICIONES DE ESTE CONVENIO, DEBERÁ ABSTENERSE DE USAR Y VER\n\t\t\t\t\t\t\t\t\twww.contishop.com.mx PARA EL CASO QUE EL USUARIO CONTINÚE EN\n\t\t\t\t\t\t\t\t\tEL USO DE www.contishop.com.mx, DICHA ACCIÓN SE CONSIDERARÁ\n\t\t\t\t\t\t\t\t\tCOMO SU ABSOLUTA ACEPTACIÓN A LOS TÉRMINOS Y CONDICIONES AQUÍ\n\t\t\t\t\t\t\t\t\tESTABLECIDOS. LA SOLA UTILIZACIÓN DEL SITIO LE OTORGA AL\n\t\t\t\t\t\t\t\t\tPÚBLICO EN GENERAL O A QUIEN LO USE, LA CONDICIÓN DE USUARIO\n\t\t\t\t\t\t\t\t\t(EN ADELANTE REFERIDO COMO EL\"USUARIO\" O LOS \"USUARIOS\") E\n\t\t\t\t\t\t\t\t\tIMPLICA LA ACEPTACIÓN, PLENA E INCONDICIONAL, DE TODAS Y CADA\n\t\t\t\t\t\t\t\t\tUNA DE LAS CONDICIONES GENERALES Y PARTICULARES INCLUIDAS EN\n\t\t\t\t\t\t\t\t\tESTOS TÉRMINOS DE USO EN LA VERSIÓN PUBLICADA POR CONTINENTAL\n\t\t\t\t\t\t\t\t\tEN EL MOMENTO MISMO EN QUE EL USUARIO ACCEDA AL SITIO.\n\t\t\t\t\t\t\t\t\tCUALQUIER MODIFICACIÓN A LOS PRESENTES TÉRMINOS DE USO SERÁ\n\t\t\t\t\t\t\t\t\tREALIZADA CUANDO CONTINENTAL LO CONSIDERE APROPIADO, SIENDO\n\t\t\t\t\t\t\t\t\tEXCLUSIVA RESPONSABILIDAD DEL USUARIO ASEGURARSE DE TOMAR\n\t\t\t\t\t\t\t\t\tCONOCIMIENTO DE TALES MODIFICACIONES.\n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\tCONTRATO DE ADHESIÓN PARA USO DE SITIO DE INTERNET, QUE\n\t\t\t\t\t\t\t\t\tCELEBRAN POR UNA PARTE CONTINENTAL TIRE DE MÉXICO S.A. DE C.V.\n\t\t\t\t\t\t\t\t\tY/O SUS FILIALES (EN LOSUCESIVO CONTINENTAL) Y, POR LA OTRA,\n\t\t\t\t\t\t\t\t\tEL USUARIO, SUJETÁNDOSE, AMBAS PARTES, A LO ESTABLECIDO EN EL\n\t\t\t\t\t\t\t\t\tTEXTO DEL PRESENTE CONTRATO.\n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    {renderErrorList()}
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Registro

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport { validateMail } from \"features/functions\";\nimport { toggleShowLogin } from \"features/account/loginSlice\";\nimport { toggleShowRegister } from \"features/account/registerSlice\";\nimport { toggleShowPassword, setPasswordErrorMsg, fetchPasswordReset } from \"features/account/resetPasswordSlice\";\nimport { toggleShowConfirmation } from \"features/account/confirmationSlice\";\nimport Loader from \"../Loader\";\n\nconst renderError = (error) => {\n\tif (error != null) {\n\t\treturn
  • {error}
  • ;\n\t}\n\treturn null;\n};\n\nexport default function PasswordModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, errorMsg, isOpen } = useSelector((state) => state.resetPassword);\n\tconst { checked, authenticated } = useSelector((state) => state.session);\n\t// State\n\tconst [usrname, setUsrname] = useState(\"\");\n\t// Refs\n\tconst usrnameRef = useRef();\n\t// Handlers\n\tfunction handleUsrnameChange(e) {\n\t\tif (errorMsg != null && errorMsg.usrname != null) {\n\t\t\tdispatch(\n\t\t\t\tsetPasswordErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, usrname: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetUsrname(e.target.value);\n\t}\n\tfunction handleReset() {\n\t\tsetUsrname(\"\");\n\t\tdispatch(setPasswordErrorMsg({ errorMsg: null }));\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowPassword({ isOpen }));\n\t}\n\tfunction handleOverlayCloseClick() {\n\t\tdispatch(toggleShowPassword({ isOpen }));\n\t}\n\tfunction handleRegisterClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowPassword({ isOpen: true }));\n\t\tdispatch(toggleShowRegister({ isOpen: false }));\n\t}\n\tfunction handleLoginClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowLogin({ isOpen: false }));\n\t\tdispatch(toggleShowPassword({ isOpen: true }));\n\t}\n\tfunction handleConfirmationClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowPassword({ isOpen: true }));\n\t\tdispatch(toggleShowConfirmation({ isOpen: false }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (usrname.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tusrname: \"Debes escribir tu correo electrónico\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\telse if (!validateMail(usrname.trim())) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tusrname: \"El correo electrónico no es válido\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t};\n\t\tif (valid) {\n\t\t\tdispatch(fetchPasswordReset(usrname));\n\t\t} else {\n\t\t\tdispatch(setPasswordErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorMsg() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t\t{renderError(errorMsg.usrname)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderForm() {\n\t\tif (!isLoading) {\n\t\t\tlet errClass = { usrname: {} };\n\t\t\tif (errorMsg != null) {\n\t\t\t\tif (errorMsg.usrname != null) {\n\t\t\t\t\terrClass = { ...errClass, usrname: { className: \"error\" } };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderErrorMsg()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tLogin\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tRegistrarme\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tNo recibí correo de confirmación\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif (checked && authenticated) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Recuperar Contraseña

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport {\n\tfetchSendConfirmation,\n\tsetConfirmationErrorMsg,\n\tclearConfirmationData,\n\ttoggleShowConfirmation,\n} from \"features/account/confirmationSlice\";\nimport { toggleShowLogin } from \"features/account/loginSlice\";\nimport { toggleShowPassword } from \"features/account/resetPasswordSlice\";\nimport { toggleShowRegister } from \"features/account/registerSlice\";\nimport Loader from \"components/Loader\";\n\nconst renderError = (error) => {\n\tif (error != null) {\n\t\treturn
  • {error}
  • ;\n\t}\n\treturn null;\n};\n\nexport default function ConfirmationModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, errorMsg, isOpen } = useSelector(\n\t\t(state) => state.sendConfirmation\n\t);\n\tconst { checked, authenticated } = useSelector((state) => state.session);\n\t// State\n\tconst [usrname, setUsrname] = useState(\"\");\n\t// Refs\n\tconst usernameRef = useRef();\n\tuseEffect(() => usernameRef.current && usernameRef.current.focus(), []);\n\t// Handlers\n\tfunction handleUsrnameChange(e) {\n\t\tif (errorMsg != null && errorMsg.usrname != null) {\n\t\t\tdispatch(\n\t\t\t\tsetConfirmationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, usrname: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetUsrname(e.target.value);\n\t}\n\tfunction handleReset() {\n\t\tsetUsrname(\"\");\n\t\tdispatch(setConfirmationErrorMsg({ errorMsg: null }));\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(clearConfirmationData());\n\t\tdispatch(toggleShowConfirmation({ isOpen: true }));\n\t}\n\tfunction handleOverlayCloseClick() {\n\t\tdispatch(toggleShowConfirmation({ isOpen: true }));\n\t}\n\tfunction handleRegisterClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowConfirmation({ isOpen: true }));\n\t\tdispatch(toggleShowRegister({ isOpen: false }));\n\t}\n\tfunction handleResetPasswordClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowConfirmation({ isOpen: true }));\n\t\tdispatch(toggleShowPassword({ isOpen: false }));\n\t}\n\tfunction handleLoginClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowConfirmation({ isOpen: true }));\n\t\tdispatch(toggleShowLogin({ isOpen: false }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (usrname.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tusrname: \"Debes escribir tu correo electrónico\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(fetchSendConfirmation(usrname));\n\t\t} else {\n\t\t\tdispatch(setConfirmationErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render Functions\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorMsg() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t\t{renderError(errorMsg.usrname)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\tfunction renderForm() {\n\t\tif (!isLoading) {\n\t\t\tlet errClass = { usrname: {} };\n\t\t\tif (errorMsg != null) {\n\t\t\t\tif (errorMsg.usrname != null) {\n\t\t\t\t\terrClass = { ...errClass, usrname: { className: \"error\" } };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderErrorMsg()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tLogin\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tOlvidé mi contraseña\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tRegistrarme\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif (checked && !authenticated) {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t

    Reenviar Confirmación

    \n\t\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t\t{renderForm()}\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t);\n\t}\n\treturn null;\n}\n","import React from \"react\";\n\nexport default function AddressItem(props) {\n\t// Handlers\n\tfunction handleSelectAddress() {\n\t\tprops.onClick(props.index)\n\t}\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    {props.item.Alias}
    \n\t\t
    \n\t);\n}\n","import React, { useState } from \"react\";\nimport Modal from \"react-modal\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport {\n\ttoggleShowShipAddress,\n\ttoggleShowShipAddressAdd,\n} from \"features/account/shipAddressSlice\";\nimport Loader from \"components/Loader\";\nimport AddressItem from \"./AddressItem\";\nimport { setShipAddressEdit } from \"features/account/shipAddressEditSlice\";\nimport { toggleShowShipAddressEdit } from \"features/account/shipAddressEditSlice\";\n\nexport default function ShipAddressModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, isOpen, list } = useSelector((state) => state.shipAddress);\n\t// State\n\tconst [selectedIndex, setSelectedIndex] = useState(0);\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tsetSelectedIndex(0);\n\t\tdispatch(toggleShowShipAddress({ isOpen: true }));\n\t}\n\tfunction handleSelect(index) {\n\t\tsetSelectedIndex(index);\n\t}\n\tfunction handleAddClick() {\n\t\tdispatch(toggleShowShipAddressAdd({ isOpenAdd: false }));\n\t}\n\tfunction handleEditClick() {\n\t\tconst selectedItem = list[selectedIndex];\n\t\tdispatch(setShipAddressEdit({ address: selectedItem }));\n\t\tdispatch(toggleShowShipAddressEdit({ isOpen: false }));\n\t}\n\t// Render Functions\n\tfunction formatAddress() {\n\t\tconst selectedItem = list[selectedIndex];\n\t\tlet result =
     
    ;\n\t\tlet numint = \"\";\n\t\tif (selectedItem != null) {\n\t\t\tif (selectedItem.Numero_Interior.length > 0) {\n\t\t\t\tnumint = \" - \" + selectedItem.Numero_Interior;\n\t\t\t}\n\t\t\tresult = (\n\t\t\t\t
    \n\t\t\t\t\t{selectedItem.Calle + \" \" + selectedItem.Numero_Exterior + numint}\n\t\t\t\t\t
    \n\t\t\t\t\tCol. {selectedItem.Colonia}\n\t\t\t\t\t
    \n\t\t\t\t\t{selectedItem.Codigo_Postal + \" \" + selectedItem.Delegacion}\n\t\t\t\t\t
    \n\t\t\t\t\t{selectedItem.Estado_Descripcion}\n\t\t\t\t\t
    \n\t\t\t\t\tTel. {selectedItem.Telefono}\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn result;\n\t}\n\tfunction renderAddressList() {\n\t\tif (list === null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    No hay direcciones de envío registradas
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{list.map((element, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\t
     
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderEditButton() {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\tEditar\n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderSelectedAddress() {\n\t\tif (list != null && list.length > 0) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t{formatAddress()}\n\t\t\t\t\t{renderEditButton()}\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Direcciones de Envío

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{renderAddressList()}\n\t\t\t\t\t\t\t{renderSelectedAddress()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsZipCodes } from \"../functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\tstateId: null,\n};\n\nconst zipCodes = createSlice({\n\tname: \"zipCodes\",\n\tinitialState,\n\treducers: {\n\t\trequestZipCodesList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveZipCodesList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tloadZipCodesSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateZipCodesSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tupdateZipCodeValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateZipCodeItem(state, action) {\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\tsetZipCodesStateId(state, action) {\n\t\t\tstate.stateId = action.payload.stateId;\n\t\t},\n\t\tclearZipCodesSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearZipCodeValue(state) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t},\n\t},\n});\n\nexport const {\n\trequestZipCodesList,\n\treceiveZipCodesList,\n\tloadZipCodesSuggestionsBegin,\n\tmaybeUpdateZipCodesSuggestions,\n\tupdateZipCodeValue,\n\tupdateZipCodeItem,\n\tsetZipCodesStateId,\n\tclearZipCodesSuggestions,\n\tclearZipCodeValue,\n} = zipCodes.actions;\n\nconst shouldFetchZipCodes = (state, stateId) => {\n\tif (state.zipCodes.list == null) {\n\t\treturn true;\n\t}\n\tif (state.zipCodes.stateId !== stateId) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchZipCodesIfNeeded =\n\t(stateId) => async (dispatch, getState) => {\n\t\tif (shouldFetchZipCodes(getState(), stateId)) {\n\t\t\treturn dispatch(fetchZipCodes(stateId));\n\t\t}\n\t};\n\nexport const loadZipCodesSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tdispatch(loadZipCodesSuggestionsBegin());\n\t\tdispatch(fetchZipCodesIfNeeded(theState.zipCodes.stateId));\n\t\tsetTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateZipCodesSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsZipCodes(theState.zipCodes, value),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\n\nexport const fetchZipCodes = (stateId) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestZipCodesList());\n\treturn fetch(BASE_API_URL + \"/api/Cuenta/CodigosPostales/\" + stateId, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveZipCodesList({ list: json }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// If 401 Unauthorized login failed\n\t\t});\n};\n\nexport default zipCodes.reducer;","import { createSlice } from \"@reduxjs/toolkit\";\nimport { BASE_API_URL } from \"../constants\";\nimport { getMatchingItemsNeighborhoods } from \"../functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tvalue: \"\",\n\tselectedItem: {},\n\tsuggestions: [],\n\tlist: null,\n\tzipCode: null,\n};\n\nconst neighborhoods = createSlice({\n\tname: \"neighborhoods\",\n\tinitialState,\n\treducers: {\n\t\trequestNeighborhoodsList(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveNeighborhoodsList(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t\tloadNeighborhoodsSuggestionsBegin(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\tmaybeUpdateNeighborhoodsSuggestions(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tif (state.value === action.payload.value) {\n\t\t\t\tstate.suggestions = action.payload.suggestions;\n\t\t\t}\n\t\t},\n\t\tsetNeighborhoodsZipCode(state, action) {\n\t\t\tstate.zipCode = action.payload.zipCode;\n\t\t},\n\t\tupdateNeighborhoodValue(state, action) {\n\t\t\tstate.value = action.payload.value;\n\t\t},\n\t\tupdateNeighborhoodItem(state, action) {\n\t\t\tstate.selectedItem = action.payload.selectedItem;\n\t\t},\n\t\tclearNeighborhoodsSuggestions(state) {\n\t\t\tstate.suggestions = [];\n\t\t},\n\t\tclearNeighborhoodValue(state) {\n\t\t\tstate.value = \"\";\n\t\t\tstate.selectedItem = {};\n\t\t},\n\t},\n});\n\nexport const {\n\trequestNeighborhoodsList,\n\treceiveNeighborhoodsList,\n\tloadNeighborhoodsSuggestionsBegin,\n\tmaybeUpdateNeighborhoodsSuggestions,\n\tsetNeighborhoodsZipCode,\n\tupdateNeighborhoodValue,\n\tupdateNeighborhoodItem,\n\tclearNeighborhoodsSuggestions,\n\tclearNeighborhoodValue\n} = neighborhoods.actions;\n\nconst shouldFetchNeighborhoods = (state, zipCode) => {\n\tif (state.neighborhoods.list == null) {\n\t\treturn true;\n\t}\n\tif (state.neighborhoods.zipCode !== zipCode) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexport const fetchNeighborhoodsIfNeeded =\n\t(zipCode) => async (dispatch, getState) => {\n\t\tif (shouldFetchNeighborhoods(getState(), zipCode)) {\n\t\t\treturn dispatch(fetchNeighborhoods(zipCode));\n\t\t}\n\t};\n\nexport const loadNeighborhoodsSuggestions =\n\t(value) => async (dispatch, getState) => {\n\t\tconst theState = getState();\n\t\tdispatch(loadNeighborhoodsSuggestionsBegin());\n\t\tdispatch(fetchNeighborhoodsIfNeeded(theState.neighborhoods.zipCode));\n\t\tsetTimeout(() => {\n\t\t\tdispatch(\n\t\t\t\tmaybeUpdateNeighborhoodsSuggestions({\n\t\t\t\t\tsuggestions: getMatchingItemsNeighborhoods(\n\t\t\t\t\t\ttheState.neighborhoods,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t),\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t};\n\nexport const fetchNeighborhoods = (zipCode) => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\tmethod: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestNeighborhoodsList());\n\treturn fetch(BASE_API_URL + \"/api/Cuenta/Colonias/\" + zipCode, options)\n\t\t.then((response) => {\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t\treturn response.text().then((error) => Promise.reject(error));\n\t\t\t}\n\t\t})\n\t\t.then((json) => {\n\t\t\tdispatch(receiveNeighborhoodsList({ list: json }));\n\t\t})\n\t\t.catch(() => {\n\t\t\t// If 401 Unauthorized login failed\n\t\t});\n};\n\nexport default neighborhoods.reducer;\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Autosuggest from \"react-autosuggest\";\nimport {\n\tupdateZipCodeItem,\n\tupdateZipCodeValue,\n\tloadZipCodesSuggestions,\n\tclearZipCodesSuggestions,\n} from \"features/account/zipCodesSlice\";\nimport {\n\tfetchNeighborhoodsIfNeeded,\n\tsetNeighborhoodsZipCode,\n} from \"features/account/neighborhoodsSlice\";\nimport { fetchShipAddressCity } from \"features/account/shipAddressSlice\";\nimport { fetchInvoiceAddressCity } from \"features/account/invoiceAddressSlice\";\n\nexport default function ZipCodeAutosuggest(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { value, suggestions } = useSelector((state) => state.zipCodes);\n\t// Handlers\n\tfunction handleChange(event, { newValue }) {\n\t\tconst fixed = newValue.replace(/[^0-9]/g, \"\");\n\t\tdispatch(updateZipCodeValue({value: fixed}));\n\t}\n\tfunction onSuggestionSelected(event, { suggestion }) {\n\t\tdispatch(updateZipCodeItem({selectedItem: suggestion}));\n\t\tdispatch(fetchNeighborhoodsIfNeeded(suggestion.Codigo));\n\t\tdispatch(setNeighborhoodsZipCode(suggestion.Codigo));\n\t\tdispatch(fetchShipAddressCity(suggestion.Codigo));\n\t\tdispatch(fetchInvoiceAddressCity(suggestion.Codigo));\n\t}\n\tfunction onSuggestionsFetchRequested({ value }) {\n\t\tdispatch(loadZipCodesSuggestions(value));\n\t}\n\tfunction onSuggestionsClearRequested() {\n\t\tdispatch(clearZipCodesSuggestions());\n\t}\n\tfunction getSuggestionValue(suggestion) {\n\t\treturn suggestion.Codigo + \"\";\n\t}\n\tfunction shouldRenderSuggestions() {\n\t\treturn true;\n\t}\n\tfunction renderSuggestion(suggestion) {\n\t\treturn
    {suggestion.Codigo}
    ;\n\t}\n\t// Render\n\tconst inputProps = {\n\t\tplaceholder: \"Código Postal\",\n\t\tvalue,\n\t\tonChange: handleChange,\n\t\tautoComplete: \"erp-zipcode-from-database\",\n\t\tonSelect: props.onSelect,\n\t};\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Autosuggest from \"react-autosuggest\";\nimport {\n\tupdateNeighborhoodItem,\n\tupdateNeighborhoodValue,\n\tloadNeighborhoodsSuggestions,\n\tclearNeighborhoodsSuggestions,\n} from \"features/account/neighborhoodsSlice\";\n\nexport default function NighborhoodAutosuggest(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { value, suggestions } = useSelector((state) => state.neighborhoods);\n\t// Handlers\n\tfunction handleChange(event, { newValue }) {\n\t\tdispatch(updateNeighborhoodValue({ value: newValue }));\n\t}\n\tfunction onSuggestionSelected(event, { suggestion }) {\n\t\tdispatch(updateNeighborhoodItem({ selectedItem: suggestion }));\n\t}\n\tfunction onSuggestionsFetchRequested({ value }) {\n\t\tdispatch(loadNeighborhoodsSuggestions(value));\n\t}\n\tfunction onSuggestionsClearRequested() {\n\t\tdispatch(clearNeighborhoodsSuggestions());\n\t}\n\tfunction getSuggestionValue(suggestion) {\n\t\treturn suggestion.Nombre;\n\t}\n\tfunction shouldRenderSuggestions() {\n\t\treturn true;\n\t}\n\tfunction renderSuggestion(suggestion) {\n\t\treturn
    {suggestion.Nombre}
    ;\n\t}\n\t// Render\n\tconst inputProps = {\n\t\tplaceholder: \"Colonia\",\n\t\tvalue,\n\t\tonChange: handleChange,\n\t\tautoComplete: \"erp-neighborhood-from-database\",\n\t\tonSelect: props.onSelect,\n\t};\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Autosuggest from \"react-autosuggest\";\nimport {\n\tupdateCityItem,\n\tupdateCityValue,\n\tloadCitiesSuggestions,\n\tclearCitiesSuggestions,\n} from \"features/account/citiesSlice\";\n\nexport default function CityAutosuggest(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { value, suggestions } = useSelector((state) => state.cities);\n\t// Handlers\n\tfunction handleChange(event, { newValue }) {\n\t\tdispatch(updateCityValue({ value: newValue }));\n\t}\n\tfunction onSuggestionSelected(event, { suggestion }) {\n\t\tdispatch(updateCityItem({ selectedItem: suggestion }));\n\t}\n\tfunction onSuggestionsFetchRequested({ value }) {\n\t\tdispatch(loadCitiesSuggestions(value));\n\t}\n\tfunction onSuggestionsClearRequested() {\n\t\tdispatch(clearCitiesSuggestions());\n\t}\n\tfunction getSuggestionValue(suggestion) {\n\t\treturn suggestion.Cd;\n\t}\n\tfunction shouldRenderSuggestions() {\n\t\treturn true;\n\t}\n\tfunction renderSuggestion(suggestion) {\n\t\treturn
    {suggestion.Cd}
    ;\n\t}\n\t// Render\n\tconst inputProps = {\n\t\tplaceholder: \"Ciudad\",\n\t\tvalue,\n\t\tonChange: handleChange,\n\t\tautoComplete: \"erp-city-from-database\",\n\t\tonSelect: props.onSelect,\n\t};\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Autosuggest from \"react-autosuggest\";\nimport { \n\tupdateCountyItem,\n\tupdateCountyValue,\n\tloadCountiesSuggestions,\n\tclearCountiesSuggestions,\n } from \"features/account/countiesSlice\";\n\nexport default function CountyAutosuggest(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { value, suggestions } = useSelector((state) => state.counties);\n\t// Handlers\n\tfunction handleChange(event, { newValue }) {\n\t\tdispatch(updateCountyValue({ value: newValue }));\n\t}\n\tfunction onSuggestionSelected(event, { suggestion }) {\n\t\tdispatch(updateCountyItem({ selectedItem: suggestion }));\n\t}\n\tfunction onSuggestionsFetchRequested({ value }) {\n\t\tdispatch(loadCountiesSuggestions(value));\n\t}\n\tfunction onSuggestionsClearRequested() {\n\t\tdispatch(clearCountiesSuggestions());\n\t}\n\tfunction getSuggestionValue(suggestion) {\n\t\treturn suggestion.Nombre;\n\t}\n\tfunction shouldRenderSuggestions() {\n\t\treturn true;\n\t}\n\tfunction renderSuggestion(suggestion) {\n\t\treturn
    {suggestion.Nombre}
    ;\n\t}\n\t// Render\n\tconst inputProps = {\n\t\tplaceholder: \"Delegación / Municipio\",\n\t\tvalue,\n\t\tonChange: handleChange,\n\t\tautoComplete: \"erp-county-from-database\",\n\t\tonSelect: props.onSelect,\n\t};\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport ReactDropdown from \"react-dropdown\";\nimport { validateZip, validatePhone } from \"features/functions\";\nimport ZipCodeAutoSuggest from \"components/autosuggest/ZipCodeAutosuggest\";\nimport NeighborhoodAutosuggest from \"components/autosuggest/NeighborhoodAutosuggest\";\nimport CityAutosuggest from \"components/autosuggest/CityAutosuggest\";\nimport CountyAutosuggest from \"components/autosuggest/CountyAutosuggest\";\nimport {\n\tsetShipAddressErrorMessage,\n\tclearShipAddressAddData,\n\ttoggleShowShipAddressAdd,\n\tfetchAddShipAddress,\n} from \"features/account/shipAddressSlice\";\nimport {\n\tfetchZipCodesIfNeeded,\n\tsetZipCodesStateId,\n\tclearZipCodeValue,\n} from \"features/account/zipCodesSlice\";\nimport { clearNeighborhoodValue } from \"features/account/neighborhoodsSlice\";\nimport {\n\tfetchCitiesIfNeeded,\n\tclearCityValue,\n} from \"features/account/citiesSlice\";\nimport {\n\tfetchCountiesIfNeeded,\n\tclearCountyValue,\n} from \"features/account/countiesSlice\";\nimport Loader from \"components/Loader\";\n\nconst clearCityCountyError = (errorMsg) => async (dispatch) => {\n\tif (errorMsg != null && errorMsg.city != null) {\n\t\tdispatch(\n\t\t\tsetShipAddressErrorMessage({\n\t\t\t\terrorMsg: { ...errorMsg, city: null, county: null },\n\t\t\t})\n\t\t);\n\t}\n};\n\nexport default function ShipAddressAddModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isOpenAdd, isLoadingAdd, errorMsg } = useSelector(\n\t\t(state) => state.shipAddress\n\t);\n\tconst { options } = useSelector((state) => state.states);\n\tconst zipValue = useSelector((state) => state.zipCodes.value);\n\tconst cityValue = useSelector((state) => state.cities.value);\n\tconst countyValue = useSelector((state) => state.counties.value);\n\t// State\n\tconst [alias, setAlias] = useState(\"\");\n\tconst [phone, setPhone] = useState(\"\");\n\tconst [street, setStreet] = useState(\"\");\n\tconst [ext, setExt] = useState(\"\");\n\tconst [int, setInt] = useState(\"\");\n\tconst [selectedState, setSelectedState] = useState(null);\n\tconst [zip, setZip] = useState(\"\");\n\tconst [neighborhood, setNeighborhood] = useState(\"\");\n\tconst [city, setCity] = useState(\"\");\n\tconst [county, setCounty] = useState(\"\");\n\t// Effect\n\tuseEffect(() => {\n\t\tlet prevZipValue;\n\t\tlet prevCityValue;\n\t\tlet prevCountyValue;\n\t\tif (\n\t\t\tprevZipValue !== zipValue &&\n\t\t\tprevCityValue !== cityValue &&\n\t\t\tcityValue !== \"\" &&\n\t\t\tprevCountyValue !== countyValue &&\n\t\t\tcountyValue !== \"\"\n\t\t) {\n\t\t\tsetCity(cityValue);\n\t\t\tsetCounty(countyValue);\n\t\t\tdispatch(clearCityCountyError(errorMsg));\n\t\t}\n\t\treturn () => {\n\t\t\tprevZipValue = zipValue;\n\t\t\tprevCityValue = cityValue;\n\t\t\tprevCountyValue = countyValue;\n\t\t};\n\t}, [dispatch, errorMsg, zipValue, cityValue, countyValue]);\n\t// Handlers\n\tfunction handleFocus(e) {\n\t\te.target.select();\n\t}\n\tfunction handleAliasChange(e) {\n\t\tif (errorMsg != null && errorMsg.alias != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, alias: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetAlias(e.target.value);\n\t}\n\tfunction handlePhoneChange(e) {\n\t\tif (errorMsg != null && errorMsg.phone != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, phone: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetPhone(e.target.value);\n\t}\n\tfunction handleStreetChange(e) {\n\t\tif (errorMsg != null && errorMsg.street != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, street: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetStreet(e.target.value);\n\t}\n\tfunction handleExtChange(e) {\n\t\tif (errorMsg != null && errorMsg.ext != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, ext: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetExt(e.target.value);\n\t}\n\tfunction handleIntChange(e) {\n\t\tif (errorMsg != null && errorMsg.int != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, int: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetInt(e.target.value);\n\t}\n\tfunction handleSelectState(option) {\n\t\tif (errorMsg != null && errorMsg.selectedState != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, selectedState: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tconst stateId = option.value + \"\";\n\t\tsetSelectedState(option);\n\t\tsetZip(\"\");\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearZipCodeValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t\tdispatch(fetchZipCodesIfNeeded(stateId));\n\t\tdispatch(fetchCitiesIfNeeded(stateId));\n\t\tdispatch(fetchCountiesIfNeeded(stateId));\n\t\tdispatch(setZipCodesStateId({ stateId }));\n\t}\n\tfunction handleZipChange(e) {\n\t\tif (errorMsg != null && errorMsg.zip != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, zip: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetZip(e.target.value);\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t}\n\tfunction handleNeighborhoodChange(e) {\n\t\tif (errorMsg != null && errorMsg.neighborhood != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, neighborhood: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetNeighborhood(e.target.value);\n\t}\n\tfunction handleCityChange(e) {\n\t\tif (errorMsg != null && errorMsg.city != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, city: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCity(e.target.value);\n\t}\n\tfunction handleCountyChange(e) {\n\t\tif (errorMsg != null && errorMsg.county != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, county: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCounty(e.target.value);\n\t}\n\tfunction handleReset() {\n\t\tsetAlias(\"\");\n\t\tsetPhone(\"\");\n\t\tsetStreet(\"\");\n\t\tsetExt(\"\");\n\t\tsetInt(\"\");\n\t\tsetSelectedState(null);\n\t\tsetZip(\"\");\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearZipCodeValue());\n\t\tdispatch(clearShipAddressAddData());\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowShipAddressAdd({ isOpenAdd: true }));\n\t}\n\tfunction handleOverlayCloseClick() {\n\t\tdispatch(toggleShowShipAddressAdd({ isOpenAdd: true }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (alias.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\talias: \"Debes escribir un alias único para esta dirección\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (phone.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tphone: \"Debes escribir un teléfono de contacto\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validatePhone(phone)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tphone: \"Debes escribir un teléfono válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (street.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tstreet: \"Debes escribir la calle\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (ext.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\text: \"Debes escribir el número exterior\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (selectedState == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tselectedState: \"Debes seleccionar un estado\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst zipString = zip + \"\";\n\t\tif (zipString.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tzip: \"Debes escribir el código postal\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validateZip(zip)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tzip: \"El código postal no es válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (neighborhood.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tneighborhood: \"Debes escribir la colonia\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (city.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcity: \"Debes escribir la ciudad\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (county.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcounty: \"Debes escribir el municipio\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(\n\t\t\t\tfetchAddShipAddress({\n\t\t\t\t\talias,\n\t\t\t\t\tphone,\n\t\t\t\t\tstreet,\n\t\t\t\t\text,\n\t\t\t\t\tint,\n\t\t\t\t\tzip,\n\t\t\t\t\tneighborhood,\n\t\t\t\t\tcity,\n\t\t\t\t\tcounty,\n\t\t\t\t\tstateId: selectedState.value,\n\t\t\t\t})\n\t\t\t);\n\t\t\tdispatch(setShipAddressErrorMessage({ errorMsg: null }));\n\t\t} else {\n\t\t\tdispatch(setShipAddressErrorMessage({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render Functions\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorList() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.alias)}\n\t\t\t\t\t\t{renderError(errorMsg.phone)}\n\t\t\t\t\t\t{renderError(errorMsg.street)}\n\t\t\t\t\t\t{renderError(errorMsg.ext)}\n\t\t\t\t\t\t{renderError(errorMsg.int)}\n\t\t\t\t\t\t{renderError(errorMsg.selectedState)}\n\t\t\t\t\t\t{renderError(errorMsg.zip)}\n\t\t\t\t\t\t{renderError(errorMsg.neighborhood)}\n\t\t\t\t\t\t{renderError(errorMsg.city)}\n\t\t\t\t\t\t{renderError(errorMsg.county)}\n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getFieldProps(p) {\n\t\tif (\n\t\t\terrorMsg == null ||\n\t\t\t!(errorMsg != null && p in errorMsg) ||\n\t\t\t(errorMsg != null && p in errorMsg && errorMsg[p] == null)\n\t\t) {\n\t\t\tif (p === \"street\") {\n\t\t\t\treturn { className: \"full\" };\n\t\t\t}\n\t\t\tif (p === \"ext\" || p === \"int\") {\n\t\t\t\treturn { className: \"half\" };\n\t\t\t}\n\t\t}\n\t\tif (errorMsg != null && p in errorMsg && errorMsg[p] != null) {\n\t\t\tif (p === \"street\") {\n\t\t\t\treturn { className: \"full error\" };\n\t\t\t}\n\t\t\tif (p === \"ext\" || p === \"int\") {\n\t\t\t\treturn { className: \"half error\" };\n\t\t\t}\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoadingAdd) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tconst defaultOption = selectedState == null ? \"Estado\" : selectedState;\n\tfunction renderForm() {\n\t\tif (!isLoadingAdd) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    {renderErrorList()}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\tCancelar\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Nueva Dirección de Envío

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState } from \"react\";\nimport Modal from \"react-modal\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport {\n\ttoggleShowInvoiceAddress,\n\ttoggleShowInvoiceAddressAdd,\n} from \"features/account/invoiceAddressSlice\";\nimport Loader from \"components/Loader\";\nimport AddressItem from \"./AddressItem\";\nimport { setInvoiceAddressEdit } from \"features/account/invoiceAddressEditSlice\";\nimport { toggleShowInvoiceAddressEdit } from \"features/account/invoiceAddressEditSlice\";\n\nexport default function InvoiceAddressModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, isOpen, list } = useSelector(\n\t\t(state) => state.invoiceAddress\n\t);\n\tconst regimeList = useSelector((state) => state.cfdiRegime.list);\n\tconst usoList = useSelector((state) => state.cfdiUso.list);\n\t// State\n\tconst [selectedIndex, setSelectedIndex] = useState(0);\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tsetSelectedIndex(0);\n\t\tdispatch(toggleShowInvoiceAddress({ isOpen: true }));\n\t}\n\tfunction handleSelect(index) {\n\t\tsetSelectedIndex(index);\n\t}\n\tfunction handleAddClick() {\n\t\tdispatch(toggleShowInvoiceAddressAdd({ isOpenAdd: false }));\n\t}\n\tfunction handleEditClick() {\n\t\tconst selectedItem = list[selectedIndex];\n\t\tdispatch(setInvoiceAddressEdit({ address: selectedItem }));\n\t\tdispatch(toggleShowInvoiceAddressEdit({ isOpen: false }));\n\t}\n\t// Render Functions\n\tfunction formatAddress() {\n\t\tconst selectedItem = list[selectedIndex];\n\t\tlet result =
     
    ;\n\t\tlet numint = \"\";\n\t\tif (selectedItem != null) {\n\t\t\tconst cssAlert = { color: \"red\" };\n\t\t\tconst cssTag = {\n\t\t\t\tcolor: \"orange\",\n\t\t\t\tfontWeight: \"400\",\n\t\t\t\tfontStyle: \"normal\",\n\t\t\t};\n\t\t\tconst addressRegime =\n\t\t\t\tselectedItem.RegimenFiscal != null &&\n\t\t\t\tselectedItem.RegimenFiscal !== \"\" ? (\n\t\t\t\t\tregimeList.filter(\n\t\t\t\t\t\t(el) => el.Id === selectedItem.RegimenFiscal\n\t\t\t\t\t)[0].Nombre\n\t\t\t\t) : (\n\t\t\t\t\tN/A\n\t\t\t\t);\n\t\t\tconst addressUso =\n\t\t\t\tselectedItem.Uso != null && selectedItem.Uso !== \"\" ? (\n\t\t\t\t\tusoList.filter((el) => el.Id === selectedItem.Uso)[0].Nombre\n\t\t\t\t) : (\n\t\t\t\t\tN/A\n\t\t\t\t);\n\t\t\tif (selectedItem !== null) {\n\t\t\t\tif (selectedItem.Numero_Interior.length > 0) {\n\t\t\t\t\tnumint = \" - \" + selectedItem.Numero_Interior;\n\t\t\t\t}\n\t\t\t\tresult = (\n\t\t\t\t\t
    \n\t\t\t\t\t\t{selectedItem.RFC}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{selectedItem.RazonSocial}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{selectedItem.Calle +\n\t\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\t\tselectedItem.Numero_Exterior +\n\t\t\t\t\t\t\tnumint}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\tCol. {selectedItem.Colonia}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{selectedItem.Codigo_Postal +\n\t\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\t\tselectedItem.Delegacion}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{selectedItem.Estado_Descripcion}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\tRégimen Fiscal: {addressRegime}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\tUso de CFDI: {addressUso}\n\t\t\t\t\t
    \n\t\t\t\t);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderAddressList() {\n\t\tif (list === null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    No hay direcciones de facturación registradas
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{list.map((element, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\t
     
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderIncomplete() {\n\t\tconst selectedItem = list[selectedIndex];\n\t\tif (\n\t\t\tselectedItem.RegimenFiscal == null ||\n\t\t\tselectedItem.Uso == null\n\t\t) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\tLos datos fiscales están\n\t\t\t\t\tincompletos. Por favor complete la información faltante para poder\n\t\t\t\t\tutilizar estos datos.\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t}\n\tfunction renderEditButton() {\n\t\tif (selectedIndex != 0)\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\tEditar\n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderSelectedAddress() {\n\t\tif (list != null && list.length > 0) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t{formatAddress()}\n\t\t\t\t\t{renderIncomplete()}\n\t\t\t\t\t{renderEditButton()}\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Direcciones de Facturación

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{renderAddressList()}\n\t\t\t\t\t\t\t{renderSelectedAddress()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport ReactDropdown from \"react-dropdown\";\nimport { validateZip, validateRFC } from \"features/functions\";\nimport ZipCodeAutoSuggest from \"components/autosuggest/ZipCodeAutosuggest\";\nimport NeighborhoodAutosuggest from \"components/autosuggest/NeighborhoodAutosuggest\";\nimport CityAutosuggest from \"components/autosuggest/CityAutosuggest\";\nimport CountyAutosuggest from \"components/autosuggest/CountyAutosuggest\";\nimport {\n\tsetInvoiceAddressErrorMessage,\n\tclearInvoiceAddressAddData,\n\ttoggleShowInvoiceAddressAdd,\n\tfetchAddInvoiceAddress,\n} from \"features/account/invoiceAddressSlice\";\nimport {\n\tfetchZipCodesIfNeeded,\n\tsetZipCodesStateId,\n\tclearZipCodeValue,\n} from \"features/account/zipCodesSlice\";\nimport { clearNeighborhoodValue } from \"features/account/neighborhoodsSlice\";\nimport {\n\tfetchCitiesIfNeeded,\n\tclearCityValue,\n} from \"features/account/citiesSlice\";\nimport {\n\tfetchCountiesIfNeeded,\n\tclearCountyValue,\n} from \"features/account/countiesSlice\";\nimport Loader from \"components/Loader\";\nimport { CFDI_TYPE } from \"features/constants\";\nimport { validateRazonSocial } from \"features/functions\";\nimport { getCfdiType } from \"features/functions\";\nimport { mapCfdiOptions } from \"features/functions\";\n\nconst clearCityCountyError = (errorMsg) => async (dispatch) => {\n\tif (errorMsg != null && errorMsg.city != null) {\n\t\tdispatch(\n\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\terrorMsg: { ...errorMsg, city: null, county: null },\n\t\t\t})\n\t\t);\n\t}\n};\n\nexport default function InvoiceAddressAddModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isOpenAdd, isLoadingAdd, errorMsg } = useSelector(\n\t\t(state) => state.invoiceAddress\n\t);\n\tconst { options } = useSelector((state) => state.states);\n\tconst zipValue = useSelector((state) => state.zipCodes.value);\n\tconst cityValue = useSelector((state) => state.cities.value);\n\tconst countyValue = useSelector((state) => state.counties.value);\n\tconst regimeList = useSelector((state) => state.cfdiRegime.list);\n\tconst usoList = useSelector((state) => state.cfdiUso.list);\n\t// State\n\tconst [alias, setAlias] = useState(\"\");\n\tconst [rfc, setRfc] = useState(\"\");\n\tconst [cfdiType, setCfdiType] = useState(null);\n\tconst [name, setName] = useState(\"\");\n\tconst [street, setStreet] = useState(\"\");\n\tconst [ext, setExt] = useState(\"\");\n\tconst [int, setInt] = useState(\"\");\n\tconst [selectedState, setSelectedState] = useState(null);\n\tconst [zip, setZip] = useState(\"\");\n\tconst [neighborhood, setNeighborhood] = useState(\"\");\n\tconst [city, setCity] = useState(\"\");\n\tconst [county, setCounty] = useState(\"\");\n\tconst [regime, setRegime] = useState(null);\n\tconst [uso, setUso] = useState(null);\n\t// Effect\n\tuseEffect(() => {\n\t\tlet prevZipValue;\n\t\tlet prevCityValue;\n\t\tlet prevCountyValue;\n\t\tif (\n\t\t\tprevZipValue !== zipValue &&\n\t\t\tprevCityValue !== cityValue &&\n\t\t\tcityValue !== \"\" &&\n\t\t\tprevCountyValue !== countyValue &&\n\t\t\tcountyValue !== \"\"\n\t\t) {\n\t\t\tsetCity(cityValue);\n\t\t\tsetCounty(countyValue);\n\t\t\tdispatch(clearCityCountyError(errorMsg));\n\t\t}\n\t\treturn () => {\n\t\t\tprevZipValue = zipValue;\n\t\t\tprevCityValue = cityValue;\n\t\t\tprevCountyValue = countyValue;\n\t\t};\n\t}, [dispatch, errorMsg, zipValue, cityValue, countyValue]);\n\t// Handlers\n\tfunction handleAliasChange(e) {\n\t\tif (errorMsg != null && errorMsg.alias != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, alias: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetAlias(e.target.value);\n\t}\n\tfunction handleRfcChange(e) {\n\t\tif (errorMsg != null && errorMsg.rfc != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, rfc: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tconst fixed = e.target.value.replace(/[^a-zA-Z0-9&]/g, \"\");\n\t\tsetRfc(fixed.toUpperCase());\n\t\tsetRegime(null);\n\t\tsetUso(null);\n\t\te.target.value = fixed;\n\t\tif (validateRFC(fixed)) {\n\t\t\tsetCfdiType(getCfdiType(fixed));\n\t\t} else {\n\t\t\tsetCfdiType(null);\n\t\t}\n\t}\n\tfunction handleNameChange(e) {\n\t\tif (errorMsg != null && errorMsg.name != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, name: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetName(e.target.value.toUpperCase());\n\t}\n\tfunction handleStreetChange(e) {\n\t\tif (errorMsg != null && errorMsg.street != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, street: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetStreet(e.target.value);\n\t}\n\tfunction handleExtChange(e) {\n\t\tif (errorMsg != null && errorMsg.ext != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, ext: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetExt(e.target.value);\n\t}\n\tfunction handleIntChange(e) {\n\t\tif (errorMsg != null && errorMsg.int != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, int: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetInt(e.target.value);\n\t}\n\tfunction handleSelectState(option) {\n\t\tif (errorMsg != null && errorMsg.selectedState != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, selectedState: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tconst stateId = option.value + \"\";\n\t\tsetSelectedState(option);\n\t\tsetZip(\"\");\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearZipCodeValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t\tdispatch(fetchZipCodesIfNeeded(stateId));\n\t\tdispatch(fetchCitiesIfNeeded(stateId));\n\t\tdispatch(fetchCountiesIfNeeded(stateId));\n\t\tdispatch(setZipCodesStateId({ stateId }));\n\t}\n\tfunction handleZipChange(e) {\n\t\tif (errorMsg != null && errorMsg.zip != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, zip: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetZip(e.target.value);\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t}\n\tfunction handleNeighborhoodChange(e) {\n\t\tif (errorMsg != null && errorMsg.neighborhood != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, neighborhood: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetNeighborhood(e.target.value);\n\t}\n\tfunction handleCityChange(e) {\n\t\tif (errorMsg != null && errorMsg.city != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, city: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCity(e.target.value);\n\t}\n\tfunction handleCountyChange(e) {\n\t\tif (errorMsg != null && errorMsg.county != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, county: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCounty(e.target.value);\n\t}\n\tfunction handleRegimeSelect(option) {\n\t\tif (errorMsg != null && errorMsg.regime != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, regime: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetRegime(option);\n\t}\n\tfunction handleUsoSelect(option) {\n\t\tif (errorMsg != null && errorMsg.uso != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressErrorMessage({\n\t\t\t\t\terrorMsg: { ...errorMsg, uso: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetUso(option);\n\t}\n\n\tfunction handleReset() {\n\t\tsetAlias(\"\");\n\t\tsetName(\"\");\n\t\tsetRfc(\"\");\n\t\tsetStreet(\"\");\n\t\tsetExt(\"\");\n\t\tsetInt(\"\");\n\t\tsetSelectedState(null);\n\t\tsetZip(\"\");\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tsetRegime(null);\n\t\tsetUso(null);\n\t\tsetCfdiType(null);\n\t\tdispatch(clearZipCodeValue());\n\t\tdispatch(clearInvoiceAddressAddData());\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowInvoiceAddressAdd({ isOpenAdd: true }));\n\t}\n\tfunction handleOverlayCloseClick() {\n\t\tdispatch(toggleShowInvoiceAddressAdd({ isOpenAdd: true }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (alias.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\talias: \"Debes escribir un alias único para esta dirección\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (rfc.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\trfc: \"Debes escribir el RFC\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validateRFC(rfc)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\trfc: \"Debes escribir un RFC válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (name.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tname: \"Debes escribir el nombre o razón social\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst rfcType = getCfdiType(rfc);\n\t\tif (rfcType === CFDI_TYPE.MORAL && !validateRazonSocial(name)) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tname: \"La razón social no es válida para CFDI 4.0 debes escribirla como la CSF del SAT\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (street.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tstreet: \"Debes escribir la calle\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (ext.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\text: \"Debes escribir el número exterior\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (selectedState == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tselectedState: \"Debes seleccionar un estado\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst zipString = zip + \"\";\n\t\tif (zipString.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tzip: \"Debes escribir el código postal\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validateZip(zip)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tzip: \"El código postal no es válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (neighborhood.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tneighborhood: \"Debes escribir la colonia\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (city.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcity: \"Debes escribir la ciudad\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (county.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcounty: \"Debes escribir el municipio\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (regime == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tregime: \"Debes seleccionar el Régimen Fiscal\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tconst regimeFiltered = regimeList.filter(\n\t\t\t\t(el) => el.Id === regime.value\n\t\t\t)[0];\n\t\t\tif (\n\t\t\t\t(rfcType === CFDI_TYPE.FISICA && !regimeFiltered.Fisica) ||\n\t\t\t\t(rfcType === CFDI_TYPE.MORAL && !regimeFiltered.Moral)\n\t\t\t) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tregime: \"El Régimen Fiscal no es válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (uso == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tuso: \"Debes seleccionar el Uso del CFDI\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tconst usoFiltered = usoList.filter((el) => el.Id === uso.value)[0];\n\t\t\tif (\n\t\t\t\t(rfcType === CFDI_TYPE.FISICA && !usoFiltered.Fisica) ||\n\t\t\t\t(rfcType === CFDI_TYPE.MORAL && !usoFiltered.Moral)\n\t\t\t) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tregime: \"El Uso del CFDI no es válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(\n\t\t\t\tfetchAddInvoiceAddress({\n\t\t\t\t\talias,\n\t\t\t\t\trfc,\n\t\t\t\t\tname,\n\t\t\t\t\tstreet,\n\t\t\t\t\text,\n\t\t\t\t\tint,\n\t\t\t\t\tzip,\n\t\t\t\t\tneighborhood,\n\t\t\t\t\tcity,\n\t\t\t\t\tcounty,\n\t\t\t\t\tstateId: selectedState.value,\n\t\t\t\t\tregime: regime.value,\n\t\t\t\t\tuso: uso.value,\n\t\t\t\t})\n\t\t\t);\n\t\t\tdispatch(setInvoiceAddressErrorMessage({ errorMsg: null }));\n\t\t} else {\n\t\t\tdispatch(setInvoiceAddressErrorMessage({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render Functions\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorList() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.alias)}\n\t\t\t\t\t\t{renderError(errorMsg.rfc)}\n\t\t\t\t\t\t{renderError(errorMsg.name)}\n\t\t\t\t\t\t{renderError(errorMsg.street)}\n\t\t\t\t\t\t{renderError(errorMsg.ext)}\n\t\t\t\t\t\t{renderError(errorMsg.int)}\n\t\t\t\t\t\t{renderError(errorMsg.selectedState)}\n\t\t\t\t\t\t{renderError(errorMsg.zip)}\n\t\t\t\t\t\t{renderError(errorMsg.neighborhood)}\n\t\t\t\t\t\t{renderError(errorMsg.city)}\n\t\t\t\t\t\t{renderError(errorMsg.county)}\n\t\t\t\t\t\t{renderError(errorMsg.regime)}\n\t\t\t\t\t\t{renderError(errorMsg.uso)}\n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getFieldProps(p) {\n\t\tif (\n\t\t\terrorMsg == null ||\n\t\t\t!(errorMsg != null && p in errorMsg) ||\n\t\t\t(errorMsg != null && p in errorMsg && errorMsg[p] == null)\n\t\t) {\n\t\t\tif (p === \"street\" || p === \"name\") {\n\t\t\t\treturn { className: \"full\" };\n\t\t\t}\n\t\t\tif (p === \"ext\" || p === \"int\") {\n\t\t\t\treturn { className: \"half\" };\n\t\t\t}\n\t\t}\n\t\tif (errorMsg != null && p in errorMsg && errorMsg[p] != null) {\n\t\t\tif (p === \"street\" || p === \"name\") {\n\t\t\t\treturn { className: \"full error\" };\n\t\t\t}\n\t\t\tif (p === \"ext\" || p === \"int\") {\n\t\t\t\treturn { className: \"half error\" };\n\t\t\t}\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoadingAdd) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tconst defaultOption = selectedState == null ? \"Estado\" : selectedState;\n\tconst regimeOptions = mapCfdiOptions(regimeList, cfdiType);\n\tconst defaultRegimeOption = regime == null ? \"Régimen Fiscal\" : regime;\n\tconst usoOptions = mapCfdiOptions(usoList, cfdiType);\n\tconst defaultUsoOption = uso == null ? \"Uso de CFDI\" : uso;\n\tfunction renderForm() {\n\t\tif (!isLoadingAdd) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    {renderErrorList()}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\tCancelar\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Nueva Dirección de Facturación

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport ReactDropdown from \"react-dropdown\";\nimport { validateZip, validateRFC } from \"features/functions\";\nimport ZipCodeAutoSuggest from \"components/autosuggest/ZipCodeAutosuggest\";\nimport NeighborhoodAutosuggest from \"components/autosuggest/NeighborhoodAutosuggest\";\nimport CityAutosuggest from \"components/autosuggest/CityAutosuggest\";\nimport CountyAutosuggest from \"components/autosuggest/CountyAutosuggest\";\nimport {\n\tsetInvoiceAddressEditErrorMsg,\n\tclearInvoiceAddressEdit,\n\ttoggleShowInvoiceAddressEdit,\n\tfetchInvoiceAddressEdit,\n\tsetInvoiceAddressEditLoaded,\n} from \"features/account/invoiceAddressEditSlice\";\nimport {\n\tfetchZipCodesIfNeeded,\n\tfetchZipCodes,\n\tsetZipCodesStateId,\n\tclearZipCodeValue,\n\tupdateZipCodeValue,\n} from \"features/account/zipCodesSlice\";\nimport {\n\tupdateNeighborhoodItem,\n\tupdateNeighborhoodValue,\n\tfetchNeighborhoods,\n\tclearNeighborhoodValue,\n} from \"features/account/neighborhoodsSlice\";\nimport {\n\tfetchCitiesIfNeeded,\n\tsetCitiesStateId,\n\tfetchCities,\n\tupdateCityValue,\n\tclearCityValue,\n} from \"features/account/citiesSlice\";\nimport {\n\tfetchCountiesIfNeeded,\n\tfetchCounties,\n\tclearCountyValue,\n\tsetCountiesStateId,\n\tupdateCountyValue,\n} from \"features/account/countiesSlice\";\nimport Loader from \"components/Loader\";\nimport { CFDI_TYPE } from \"features/constants\";\nimport { getCfdiType } from \"features/functions\";\nimport { mapCfdiOptions } from \"features/functions\";\nimport { validateRazonSocial } from \"features/functions\";\n\nconst clearCityCountyError = (errorMsg) => async (dispatch) => {\n\tif (errorMsg != null && errorMsg.city != null) {\n\t\tdispatch(\n\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\terrorMsg: { ...errorMsg, city: null, county: null },\n\t\t\t})\n\t\t);\n\t}\n};\n\nexport default function InvoiceAddressEditModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isOpen, isLoading, errorMsg, address, loaded } = useSelector(\n\t\t(state) => state.invoiceAddressEdit\n\t);\n\tconst { options } = useSelector((state) => state.states);\n\tconst zipValue = useSelector((state) => state.zipCodes.value);\n\tconst cityValue = useSelector((state) => state.cities.value);\n\tconst countyValue = useSelector((state) => state.counties.value);\n\tconst regimeList = useSelector((state) => state.cfdiRegime.list);\n\tconst usoList = useSelector((state) => state.cfdiUso.list);\n\tconst { authenticated } = useSelector((state) => state.session);\n\t// State\n\tconst [alias, setAlias] = useState(\"\");\n\tconst [rfc, setRfc] = useState(\"\");\n\tconst [cfdiType, setCfdiType] = useState(null);\n\tconst [name, setName] = useState(\"\");\n\tconst [street, setStreet] = useState(\"\");\n\tconst [ext, setExt] = useState(\"\");\n\tconst [int, setInt] = useState(\"\");\n\tconst [selectedState, setSelectedState] = useState(null);\n\tconst [zip, setZip] = useState(\"\");\n\tconst [neighborhood, setNeighborhood] = useState(\"\");\n\tconst [city, setCity] = useState(\"\");\n\tconst [county, setCounty] = useState(\"\");\n\tconst [regime, setRegime] = useState(null);\n\tconst [uso, setUso] = useState(null);\n\t// Refs\n\tconst aliasRef = useRef();\n\t// Effect\n\tuseEffect(() => {\n\t\t//aliasRef.current && aliasRef.current.focus();\n\t\tif (authenticated && address != null && !loaded) {\n\t\t\tsetAlias(address.Alias);\n\t\t\tsetRfc(address.RFC);\n\t\t\tsetName(address.RazonSocial);\n\t\t\tsetStreet(address.Calle);\n\t\t\tsetExt(address.Numero_Exterior);\n\t\t\tsetInt(address.Numero_Interior);\n\t\t\t// State\n\t\t\tconst selState = options.filter(\n\t\t\t\t(el) => el.value === address.Estado_Clave\n\t\t\t)[0];\n\t\t\tsetSelectedState(selState);\n\t\t\t// Zip Code\n\t\t\tdispatch(setZipCodesStateId({ stateId: address.Estado_Clave }));\n\t\t\tdispatch(updateZipCodeValue({ value: address.Codigo_Postal }));\n\t\t\tdispatch(fetchZipCodes(address.Estado_Clave));\n\t\t\tsetZip(address.Codigo_Postal);\n\t\t\t// Neighborhood\n\t\t\tdispatch(updateNeighborhoodValue({ value: address.Colonia }));\n\t\t\tdispatch(\n\t\t\t\tupdateNeighborhoodItem({ selectedItem: { Nombre: address.Colonia } })\n\t\t\t);\n\t\t\tdispatch(fetchNeighborhoods(address.Codigo_Postal));\n\t\t\tsetNeighborhood(address.Colonia);\n\t\t\t// City\n\t\t\tdispatch(setCitiesStateId({ stateId: address.Estado_Clave }));\n\t\t\tdispatch(updateCityValue({ value: address.Ciudad }));\n\t\t\tdispatch(fetchCities(address.Estado_Clave));\n\t\t\tsetCity(address.Ciudad);\n\t\t\t// County\n\t\t\tdispatch(setCountiesStateId({ stateId: address.Estado_Clave }));\n\t\t\tdispatch(fetchCounties(address.Estado_Clave));\n\t\t\tdispatch(updateCountyValue({ value: address.Delegacion }));\n\t\t\tsetCounty(address.Delegacion);\n\t\t\t// Regime\n\t\t\tsetCfdiType(getCfdiType(address.RFC));\n\t\t\tlet errMsg = {};\n\t\t\tif (!validateRazonSocial(address.RazonSocial)) {\n\t\t\t\terrMsg = {\n\t\t\t\t\t...errMsg,\n\t\t\t\t\tname: \"La razón social no es válida para CFDI 4.0, debe coincidir con la CSF del SAT\",\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (address.RegimenFiscal == null) {\n\t\t\t\terrMsg = { ...errMsg, regime: \"Debes seleccionar el Régimen Fiscal\" };\n\t\t\t} else {\n\t\t\t\tconst regimeOption = regimeList.filter(\n\t\t\t\t\t(el) => el.Id === address.RegimenFiscal\n\t\t\t\t);\n\t\t\t\tif (regimeOption.length > 0) {\n\t\t\t\t\tsetRegime({\n\t\t\t\t\t\tlabel: regimeOption[0].Nombre,\n\t\t\t\t\t\tvalue: regimeOption[0].Id,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t(cfdiType === CFDI_TYPE.MORAL && !regimeOption[0].Moral) ||\n\t\t\t\t\t(cfdiType === CFDI_TYPE.FISICA && !regimeOption[0].Fisica)\n\t\t\t\t) {\n\t\t\t\t\terrMsg = { ...errMsg, regime: \"El Régimen Fiscal no es válido\" };\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Uso\n\t\t\tif (address.Uso == null) {\n\t\t\t\terrMsg = { ...errMsg, uso: \"Debes seleccionar el Uso del CFDI\" };\n\t\t\t} else {\n\t\t\t\tconst usoOption = usoList.filter((el) => el.Id === address.Uso);\n\t\t\t\tif (usoOption.length > 0) {\n\t\t\t\t\tsetUso({ label: usoOption[0].Nombre, value: usoOption[0].Id });\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t(cfdiType === CFDI_TYPE.MORAL && !usoOption[0].Moral) ||\n\t\t\t\t\t(cfdiType === CFDI_TYPE.FISICA && !usoOption[0].Fisica)\n\t\t\t\t) {\n\t\t\t\t\terrMsg = { ...errMsg, uso: \"El Uso del CFDI no es válido\" };\n\t\t\t\t}\n\t\t\t}\n\t\t\tdispatch(setInvoiceAddressEditLoaded({ loaded: true }));\n\t\t\tdispatch(setInvoiceAddressEditErrorMsg({ errorMsg: errMsg }));\n\t\t}\n\t\tlet prevZipValue;\n\t\tlet prevCityValue;\n\t\tlet prevCountyValue;\n\t\tif (\n\t\t\tprevZipValue !== zipValue &&\n\t\t\tprevCityValue !== cityValue &&\n\t\t\tcityValue !== \"\" &&\n\t\t\tprevCountyValue !== countyValue &&\n\t\t\tcountyValue !== \"\"\n\t\t) {\n\t\t\tsetCity(cityValue);\n\t\t\tsetCounty(countyValue);\n\t\t\tdispatch(clearCityCountyError(errorMsg));\n\t\t}\n\t\treturn () => {\n\t\t\tprevZipValue = zipValue;\n\t\t\tprevCityValue = cityValue;\n\t\t\tprevCountyValue = countyValue;\n\t\t};\n\t}, [\n\t\tauthenticated,\n\t\taddress,\n\t\tdispatch,\n\t\terrorMsg,\n\t\tzipValue,\n\t\tcityValue,\n\t\tcountyValue,\n\t]);\n\t// Handlers\n\tfunction handleAliasChange(e) {\n\t\tif (errorMsg != null && errorMsg.alias != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, alias: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetAlias(e.target.value);\n\t}\n\tfunction handleRfcChange(e) {\n\t\tif (errorMsg != null && errorMsg.rfc != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, rfc: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tconst fixed = e.target.value.replace(/[^a-zA-Z0-9&]/g, \"\");\n\t\tsetRfc(fixed.toUpperCase());\n\t\tsetRegime(null);\n\t\tsetUso(null);\n\t\te.target.value = fixed;\n\t\tif (validateRFC(fixed)) {\n\t\t\tsetCfdiType(getCfdiType(fixed));\n\t\t} else {\n\t\t\tsetCfdiType(null);\n\t\t}\n\t}\n\tfunction handleRfcBlur(e) {\n\t\tif (rfc.trim() === \"\") {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, rfc: \"Debes escribir el RFC\" },\n\t\t\t\t})\n\t\t\t);\n\t\t} else {\n\t\t\tif (!validateRFC(rfc)) {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\t\terrorMsg: { ...errorMsg, rfc: \"Debes escribir un RFC válido\" },\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\tfunction handleNameChange(e) {\n\t\tif (errorMsg != null && errorMsg.name != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, name: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetName(e.target.value.toUpperCase());\n\t}\n\tfunction handleStreetChange(e) {\n\t\tif (errorMsg != null && errorMsg.street != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, street: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetStreet(e.target.value);\n\t}\n\tfunction handleExtChange(e) {\n\t\tif (errorMsg != null && errorMsg.ext != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, ext: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetExt(e.target.value);\n\t}\n\tfunction handleIntChange(e) {\n\t\tif (errorMsg != null && errorMsg.int != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, int: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetInt(e.target.value);\n\t}\n\tfunction handleSelectState(option) {\n\t\tif (errorMsg != null && errorMsg.selectedState != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, selectedState: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tconst stateId = option.value + \"\";\n\t\tsetSelectedState(option);\n\t\tsetZip(\"\");\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearZipCodeValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t\tdispatch(fetchZipCodesIfNeeded(stateId));\n\t\tdispatch(fetchCitiesIfNeeded(stateId));\n\t\tdispatch(fetchCountiesIfNeeded(stateId));\n\t\tdispatch(setZipCodesStateId({ stateId }));\n\t}\n\tfunction handleZipChange(e) {\n\t\tif (errorMsg != null && errorMsg.zip != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, zip: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetZip(e.target.value);\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t}\n\tfunction handleNeighborhoodChange(e) {\n\t\tif (errorMsg != null && errorMsg.neighborhood != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, neighborhood: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetNeighborhood(e.target.value);\n\t}\n\tfunction handleCityChange(e) {\n\t\tif (errorMsg != null && errorMsg.city != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, city: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCity(e.target.value);\n\t}\n\tfunction handleCountyChange(e) {\n\t\tif (errorMsg != null && errorMsg.county != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, county: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCounty(e.target.value);\n\t}\n\tfunction handleRegimeSelect(option) {\n\t\tif (errorMsg != null && errorMsg.regime != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, regime: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetRegime(option);\n\t}\n\tfunction handleUsoSelect(option) {\n\t\tif (errorMsg != null && errorMsg.uso != null) {\n\t\t\tdispatch(\n\t\t\t\tsetInvoiceAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, uso: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetUso(option);\n\t}\n\n\tfunction handleReset() {\n\t\tsetAlias(\"\");\n\t\tsetName(\"\");\n\t\tsetRfc(\"\");\n\t\tsetStreet(\"\");\n\t\tsetExt(\"\");\n\t\tsetInt(\"\");\n\t\tsetSelectedState(null);\n\t\tsetZip(\"\");\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tsetRegime(null);\n\t\tsetUso(null);\n\t\tdispatch(clearZipCodeValue());\n\t\tdispatch(clearInvoiceAddressEdit());\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowInvoiceAddressEdit({ isOpen: true }));\n\t}\n\tfunction handleOverlayCloseClick() {\n\t\tdispatch(toggleShowInvoiceAddressEdit({ isOpen: true }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (alias.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\talias: \"Debes escribir un alias único para esta dirección\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (rfc.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\trfc: \"Debes escribir el RFC\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validateRFC(rfc)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\trfc: \"Debes escribir un RFC válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (name.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tname: \"Debes escribir el nombre o razón social\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst rfcType = getCfdiType(rfc);\n\t\tif (rfcType === CFDI_TYPE.MORAL && name != null && !validateRazonSocial(name)) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tname: \"La razón social no es válida para CFDI 4.0, debe coincidir con la CSF del SAT\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (street.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tstreet: \"Debes escribir la calle\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (ext.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\text: \"Debes escribir el número exterior\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (selectedState == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tselectedState: \"Debes seleccionar un estado\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst zipString = zip + \"\";\n\t\tif (zipString.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tzip: \"Debes escribir el código postal\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validateZip(zip)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tzip: \"El código postal no es válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (neighborhood.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tneighborhood: \"Debes escribir la colonia\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (city.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcity: \"Debes escribir la ciudad\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (county.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcounty: \"Debes escribir el municipio\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (regime == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tregime: \"Debes seleccionar el Régimen Fiscal\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tconst regimeFiltered = regimeList.filter(\n\t\t\t\t(el) => el.Id === regime.value\n\t\t\t)[0];\n\t\t\tif (\n\t\t\t\t(rfcType === CFDI_TYPE.FISICA && !regimeFiltered.Fisica) ||\n\t\t\t\t(rfcType === CFDI_TYPE.MORAL && !regimeFiltered.Moral)\n\t\t\t) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tregime: \"El Régimen Fiscal no es válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (uso == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tuso: \"Debes seleccionar el Uso del CFDI\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tconst usoFiltered = usoList.filter((el) => el.Id === uso.value)[0];\n\t\t\tif (\n\t\t\t\t(rfcType === CFDI_TYPE.FISICA && !usoFiltered.Fisica) ||\n\t\t\t\t(rfcType === CFDI_TYPE.MORAL && !usoFiltered.Moral)\n\t\t\t) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tregime: \"El Uso del CFDI no es válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(\n\t\t\t\tfetchInvoiceAddressEdit({\n\t\t\t\t\talias: address.Alias,\n\t\t\t\t\tnewAlias: alias,\n\t\t\t\t\trfc,\n\t\t\t\t\tname,\n\t\t\t\t\tstreet,\n\t\t\t\t\text,\n\t\t\t\t\tint,\n\t\t\t\t\tzip,\n\t\t\t\t\tneighborhood,\n\t\t\t\t\tcity,\n\t\t\t\t\tcounty,\n\t\t\t\t\tstateId: selectedState.value,\n\t\t\t\t\tregime: regime.value,\n\t\t\t\t\tuso: uso.value,\n\t\t\t\t})\n\t\t\t);\n\t\t\tdispatch(setInvoiceAddressEditErrorMsg({ errorMsg: null }));\n\t\t} else {\n\t\t\tdispatch(setInvoiceAddressEditErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render Functions\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorList() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.alias)}\n\t\t\t\t\t\t{renderError(errorMsg.rfc)}\n\t\t\t\t\t\t{renderError(errorMsg.name)}\n\t\t\t\t\t\t{renderError(errorMsg.street)}\n\t\t\t\t\t\t{renderError(errorMsg.ext)}\n\t\t\t\t\t\t{renderError(errorMsg.int)}\n\t\t\t\t\t\t{renderError(errorMsg.selectedState)}\n\t\t\t\t\t\t{renderError(errorMsg.zip)}\n\t\t\t\t\t\t{renderError(errorMsg.neighborhood)}\n\t\t\t\t\t\t{renderError(errorMsg.city)}\n\t\t\t\t\t\t{renderError(errorMsg.county)}\n\t\t\t\t\t\t{renderError(errorMsg.regime)}\n\t\t\t\t\t\t{renderError(errorMsg.uso)}\n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getFieldProps(p) {\n\t\tif (\n\t\t\terrorMsg == null ||\n\t\t\t!(errorMsg != null && p in errorMsg) ||\n\t\t\t(errorMsg != null && p in errorMsg && errorMsg[p] == null)\n\t\t) {\n\t\t\tif (p === \"street\" || p === \"name\") {\n\t\t\t\treturn { className: \"full\" };\n\t\t\t}\n\t\t\tif (p === \"ext\" || p === \"int\") {\n\t\t\t\treturn { className: \"half\" };\n\t\t\t}\n\t\t}\n\t\tif (errorMsg != null && p in errorMsg && errorMsg[p] != null) {\n\t\t\tif (p === \"street\" || p === \"name\") {\n\t\t\t\treturn { className: \"full error\" };\n\t\t\t}\n\t\t\tif (p === \"ext\" || p === \"int\") {\n\t\t\t\treturn { className: \"half error\" };\n\t\t\t}\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tif (address == null) {\n\t\treturn null;\n\t}\n\tconst defaultOption = selectedState == null ? \"Estado\" : selectedState;\n\tconst regimeOptions = mapCfdiOptions(regimeList, cfdiType);\n\tconst defaultRegimeOption = regime == null ? \"Régimen Fiscal\" : regime;\n\tconst usoOptions = mapCfdiOptions(usoList, cfdiType);\n\tconst defaultUsoOption = uso == null ? \"Uso de CFDI\" : uso;\n\tfunction renderForm() {\n\t\tif (!isLoading) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    {renderErrorList()}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\tCancelar\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Editar Datos de Facturación

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { format, parseISO } from \"date-fns\";\nimport Modal from \"react-modal\";\nimport es from \"date-fns/locale/es\";\nimport {\n\tPAYMENT_METHODS as p,\n\tSHIP_TYPES as s,\n\tORDER_STATUS_TYPES as o,\n} from \"features/constants\";\nimport { currencyFormat } from \"features/functions\";\nimport {\n\ttoggleShowOrdersList,\n\tfetchOrderIfNeeded,\n} from \"features/orders/ordersSlice\";\nimport Loader from \"../Loader\";\n\nexport default function AccountOrders() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list, isOpen } = useSelector((state) => state.orders);\n\t// Handlers\n\tfunction handleClose() {\n\t\tdispatch(toggleShowOrdersList({ isOpen }));\n\t}\n\tfunction handleOrderOpen(selected) {\n\t\tdispatch(fetchOrderIfNeeded(selected));\n\t}\n\t// Render functions\n\tfunction renderHistoryList() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\tif (list != null && list.length > 0) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{list.map((element, index) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    handleOrderOpen(element)} key={index}>\n\t\t\t\t\t\t\t\t\t
    {element.Numero}
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t{format(parseISO(element.Fecha), \"dd/MMM/yyyy\", {\n\t\t\t\t\t\t\t\t\t\t\tlocale: es,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t{format(parseISO(element.Fecha), \"hh:mm aaaa\", {\n\t\t\t\t\t\t\t\t\t\t\t\tlocale: es,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    {currencyFormat(element.Total)}
    \n\t\t\t\t\t\t\t\t\t
    {p.properties[element.MetodoPago].shortname}
    \n\t\t\t\t\t\t\t\t\t
    {s.properties[element.TipoEnvio].shortname}
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{o.properties[element.Estatus].shortname}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn
    No hay pedidos que mostrar.
    ;\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Historial de Pedidos

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    Num
    \n\t\t\t\t\t\t\t\t
    Fecha
    \n\t\t\t\t\t\t\t\t
    Importe
    \n\t\t\t\t\t\t\t\t
    Forma Pago
    \n\t\t\t\t\t\t\t\t
    Tipo Envío
    \n\t\t\t\t\t\t\t\t
    Estatus
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderHistoryList()}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { format, parseISO } from \"date-fns\";\nimport Modal from \"react-modal\";\nimport ReactGA from \"react-ga4\";\nimport es from \"date-fns/locale/es\";\nimport {\n\tPAYMENT_METHODS as p,\n\tSHIP_TYPES as s,\n\tORDER_STATUS_TYPES as o,\n} from \"features/constants\";\nimport {\n\tcurrencyFormat,\n\timageFormat,\n\tgetBrandClass,\n\tformatShipAddress,\n\tformatInvoiceAddress,\n} from \"features/functions\";\nimport { toggleShowOrdersListItem } from \"features/orders/ordersSlice\";\nimport Loader from \"../Loader\";\n\nexport default function OrderModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoadingItem, isOpenItem, item } = useSelector(\n\t\t(state) => state.orders\n\t);\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tReactGA.event({\n\t\t\tcategory: \"Cuenta\",\n\t\t\taction: \"Pedidos\",\n\t\t});\n\t\tdispatch(toggleShowOrdersListItem({ isOpenItem }));\n\t}\n\t// Render functions\n\tfunction renderLoader() {\n\t\tif (isLoadingItem) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderDHL() {\n\t\tif (item.TipoEnvio === s.ADDRESS && item.Guia != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    Mensajería
    \n\t\t\t\t\t
    {item.Carrier}
    \n\t\t\t\t\t
    Número de Guía
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderItemsQty() {\n\t\tlet strItems = \" Artículos\";\n\t\tif (item.Articulos === 1) {\n\t\t\tstrItems = \" Artículo\";\n\t\t}\n\t\treturn
    {item.Articulos + strItems}
    ;\n\t}\n\tfunction renderItems() {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t{item.Elementos.map((tire, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {tire.Cantidad}

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t{tire.Nombre}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {tire.Nombre}

    \n\t\t\t\t\t\t\t\t

    {tire.Medida}

    \n\t\t\t\t\t\t\t\t

    {tire.Codigo}

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {currencyFormat(tire.Precio * 1.16)}

    \n\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t

    {currencyFormat(tire.Precio * tire.Cantidad * 1.16)}

    \n\t\t\t\t\t\t\t\t

    MXN

    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
    \n\t\t);\n\t}\n\tfunction renderDetails() {\n\t\tif (item != null && !isLoadingItem) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tNúmero de Pedido\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    {item.Numero}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Fecha y Hora
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t{format(parseISO(item.Fecha), \"dd/MMM/yyyy hh:mm aaaa\", {locale: es})}\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Forma de Pago
    \n\t\t\t\t\t\t\t
    {p.properties[item.MetodoPago].fullname}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Forma de Envío
    \n\t\t\t\t\t\t\t
    {s.properties[item.TipoEnvio].fullname}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Estatus
    \n\t\t\t\t\t\t\t
    {o.properties[item.Estatus].name}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderDHL()}\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{renderItemsQty()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Cant
    \n\t\t\t\t\t\t\t
    Descripción
    \n\t\t\t\t\t\t\t
    Precio
    \n\t\t\t\t\t\t\t
    Importe
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderItems()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    Subtotal
    \n\t\t\t\t\t\t\t\t
    {currencyFormat(item.Importe * 1.16)}
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    Envío
    \n\t\t\t\t\t\t\t\t
    {currencyFormat(item.Envio)}
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    Total
    \n\t\t\t\t\t\t\t\t
    {currencyFormat(item.Total)}
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    Desglose IVA
    \n\t\t\t\t\t\t\t\t
    {currencyFormat(item.IVA)}
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    Dirección de Envío
    \n\t\t\t\t\t\t\t{formatShipAddress(item.DireccionEnvio)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    Dirección de Facturación
    \n\t\t\t\t\t\t\t{formatInvoiceAddress(item.DireccionFacturacion)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCerrar\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Detalles de Pedido

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderDetails()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { sessionService } from \"redux-react-session\";\nimport ReactGA from \"react-ga4\";\nimport { BASE_API_URL } from \"../constants\";\nimport { runUnauthorizedActions } from \"./loginSlice\";\nimport { toggleShowAccountData } from \"./accountSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\terrorMsg: null,\n};\n\nconst accountEditSlice = createSlice({\n\tname: \"accountEdit\",\n\tinitialState,\n\treducers: {\n\t\trequestAccountEdit(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveAccountEdit(state) {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\ttoggleShowAccountEdit(state, action) {\n\t\t\tif (!action.payload.isOpen) {\n\t\t\t\tReactGA.event({ category: \"Cuenta\", action: \"Editar Datos\" });\n\t\t\t}\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tsetAccountEditErrorMsg(state, action) {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\tclearAccountEditData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestAccountEdit,\n\treceiveAccountEdit,\n\ttoggleShowAccountEdit,\n\tsetAccountEditErrorMsg,\n\tclearAccountEditData,\n} = accountEditSlice.actions;\n\nexport const fetchAccountEdit = (data) => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst body = JSON.stringify({\n\t\t\t\tname: data.name.trim(),\n\t\t\t\tlastname: data.lastName.trim(),\n\t\t\t\tmothername: data.motherName.trim(),\n\t\t\t\tgender: data.gender,\n\t\t\t\tbirthdate: data.birthdate,\n\t\t\t\tphone: data.phone,\n\t\t\t\tsubscribe: data.subscribe,\n\t\t\t});\n\t\t\tdispatch(requestAccountEdit());\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/ActualizaDatos\";\n\t\t\treturn axios\n\t\t\t\t.post(url, body, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tsessionService\n\t\t\t\t\t\t.saveUser({ user: response.data })\n\t\t\t\t\t\t.then()\n\t\t\t\t\t\t.catch((error) => console.log(\"error\", error));\n\t\t\t\t\tdispatch(receiveAccountEdit());\n\t\t\t\t\tdispatch(toggleShowAccountEdit({ isOpen: true }));\n\t\t\t\t\tdispatch(toggleShowAccountData({ isOpen: false }));\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(receiveAccountEdit());\n\t\t\t\t\t\tdispatch(setAccountEditErrorMsg({ error: error.Message }));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => console.log(\"Error\", err));\n};\n\nexport default accountEditSlice.reducer;\n","import React from \"react\";\nimport Modal from \"react-modal\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { format, parseISO } from \"date-fns\";\nimport es from \"date-fns/locale/es\";\nimport { GENDER_TYPES } from \"features/constants\";\nimport { toggleShowAccountData } from \"features/account/accountSlice\";\nimport { toggleShowAccountEdit } from \"../../features/account/accountEditSlice\";\nimport Loader from \"components/Loader\";\n\nexport default function AccountDetailsModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, isOpen } = useSelector((state) => state.account);\n\tconst { user } = useSelector((state) => state.session);\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tdispatch(toggleShowAccountData({ isOpen: true }));\n\t}\n\tfunction handleChangeClick() {\n\t\tdispatch(toggleShowAccountEdit({ isOpen: false }));\n\t}\n\t// Render Functions\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderDetails() {\n\t\tif (!isLoading && user.user != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Nombre
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{user.user.name +\n\t\t\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\t\t\tuser.user.lastname +\n\t\t\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\t\t\tuser.user.mothername}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Correo
    \n\t\t\t\t\t\t
    {user.user.email}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Género
    \n\t\t\t\t\t\t
    {GENDER_TYPES.properties[user.user.gender].name}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Fecha de Nacimiento
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{format(parseISO(user.user.birthdate), \"dd/MMM/yyyy\", {locale: es})}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Teléfono
    \n\t\t\t\t\t\t
    {user.user.phone}
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Deseo recibir correos con información y promociones
    \n\t\t\t\t\t\t
    {user.user.subscribe ? \"Sí\" : \"No\"}
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderControls() {\n\t\tif (!isLoading && user != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tModificar\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tCerrar\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\tCerrar\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Mis Datos

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{renderDetails()}\n\t\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t\t{renderControls()}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport DatePicker from \"react-datepicker\";\nimport { sub, parseISO } from \"date-fns\";\nimport { validatePhone } from \"features/functions\";\nimport {\n\tclearAccountEditData,\n\tsetAccountEditErrorMsg,\n\tfetchAccountEdit,\n\ttoggleShowAccountEdit,\n} from \"../../features/account/accountEditSlice\";\nimport Loader from \"components/Loader\";\n\nexport default function AccountEditModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, errorMsg, isOpen } = useSelector(\n\t\t(state) => state.accountEdit\n\t);\n\tconst { checked, authenticated, user } = useSelector(\n\t\t(state) => state.session\n\t);\n\t// State\n\tconst [name, setName] = useState(\"\");\n\tconst [lastName, setLastName] = useState(\"\");\n\tconst [motherName, setMotherName] = useState(\"\");\n\tconst [phone, setPhone] = useState(\"\");\n\tconst [gender, setGender] = useState(null);\n\tconst [birthdate, setBirthdate] = useState(null);\n\tconst [subscribe, setSubscribe] = useState(true);\n\t// Refs\n\tconst nameRef = useRef();\n\tuseEffect(() => {\n\t\tnameRef.current && nameRef.current.focus();\n\t\tif (authenticated && user.user != null) {\n\t\t\tsetName(user.user.name);\n\t\t\tsetLastName(user.user.lastname);\n\t\t\tsetMotherName(user.user.mothername);\n\t\t\tsetPhone(user.user.phone);\n\t\t\tsetGender(user.user.gender);\n\t\t\tsetBirthdate(parseISO(user.user.birthdate));\n\t\t\tsetSubscribe(user.user.subscribe);\n\t\t}\n\t}, [authenticated, user]);\n\t// Handlers\n\tfunction handleNameChange(e) {\n\t\tif (errorMsg != null && (errorMsg.name != null || errorMsg.error != null)) {\n\t\t\tdispatch(\n\t\t\t\tsetAccountEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, name: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetName(e.target.value);\n\t}\n\tfunction handleLastNameChange(e) {\n\t\tif (errorMsg != null && errorMsg.lastName != null) {\n\t\t\tdispatch(\n\t\t\t\tsetAccountEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, lastName: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetLastName(e.target.value);\n\t}\n\tfunction handleMotherNameChange(e) {\n\t\tsetMotherName(e.target.value);\n\t}\n\tfunction handlePhoneChange(e) {\n\t\tif (errorMsg != null && errorMsg.phone != null) {\n\t\t\tdispatch(\n\t\t\t\tsetAccountEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, phone: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetPhone(e.target.value);\n\t}\n\tfunction handleGenderChange(e) {\n\t\tif (errorMsg != null && errorMsg.gender != null) {\n\t\t\tdispatch(\n\t\t\t\tsetAccountEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, gender: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetGender(e.target.value);\n\t}\n\tfunction handleDateChange(date) {\n\t\tif (errorMsg != null && errorMsg.birthdate != null) {\n\t\t\tdispatch(\n\t\t\t\tsetAccountEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, birthdate: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetBirthdate(date);\n\t}\n\tfunction handleSubscriptionChange(e) {\n\t\tsetSubscribe(e.target.checked);\n\t}\n\tfunction handleReset() {\n\t\tif (user.user != null) {\n\t\t\tsetName(user.user.name);\n\t\t\tsetLastName(user.user.lastname);\n\t\t\tsetMotherName(user.user.mothername);\n\t\t\tsetPhone(user.user.phone);\n\t\t\tsetGender(user.user.gender);\n\t\t\tsetBirthdate(parseISO(user.user.birthdate));\n\t\t\tsetSubscribe(user.user.subscribe === true);\n\t\t}\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(clearAccountEditData());\n\t\tdispatch(toggleShowAccountEdit({ isOpen }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (name.trim() === \"\") {\n\t\t\terrorMessages = { ...errorMessages, name: \"Debes escribir tu nombre\" };\n\t\t\tvalid = false;\n\t\t}\n\t\tif (lastName.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tlastName: \"Debes escribir tu apellido paterno\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (phone.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tphone: \"Debes escribir un teléfono para poder contactarte\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validatePhone(phone)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tphone: \"Debes escribir un teléfono válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (gender == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tgender: \"Debes seleccionar el género\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (name === user.user.name \n\t\t\t&& lastName === user.user.lastname\n\t\t\t&& motherName === user.user.mothername\n\t\t\t&& phone === user.user.phone\n\t\t\t&& birthdate === birthdate\n\t\t\t&& gender === gender\n\t\t\t&& subscribe === subscribe\n\t\t\t) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\terror: \"No se detectaron cambios\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(\n\t\t\t\tfetchAccountEdit({\n\t\t\t\t\tname,\n\t\t\t\t\tlastName,\n\t\t\t\t\tmotherName,\n\t\t\t\t\tphone,\n\t\t\t\t\tbirthdate,\n\t\t\t\t\tgender,\n\t\t\t\t\tsubscribe,\n\t\t\t\t})\n\t\t\t);\n\t\t} else {\n\t\t\tdispatch(setAccountEditErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render Functions\n\tif (checked && !authenticated) {\n\t\treturn null;\n\t}\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorList() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t\t{renderError(errorMsg.name)}\n\t\t\t\t\t\t{renderError(errorMsg.lastName)}\n\t\t\t\t\t\t{renderError(errorMsg.phone)}\n\t\t\t\t\t\t{renderError(errorMsg.birthdate)}\n\t\t\t\t\t\t{renderError(errorMsg.gender)}\n\t\t\t\t\t\t{renderError(errorMsg.coupon)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getFieldProps(property) {\n\t\tif (errorMsg == null) {\n\t\t\treturn {};\n\t\t}\n\t\tif (property in errorMsg && errorMsg[property] != null) {\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderForm() {\n\t\tif (!isLoading) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    {renderErrorList()}
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\tCancelar\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Editar Mis Datos

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { BASE_API_URL } from \"../constants\";\nimport axios from \"axios\";\nimport { isServer } from \"features/functions\";\nimport ReactGA from \"react-ga4\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\tmessage: null,\n};\nconst activation = createSlice({\n\tname: \"activation\",\n\tinitialState,\n\treducers: {\n\t\trequestActivation(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveActivation(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.message = action.payload.message;\n\t\t},\n\t\ttoggleShowActivation(state, action) {\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\tclearActivationData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestActivation,\n\treceiveActivation,\n\ttoggleShowActivation,\n\tclearActivationData,\n} = activation.actions;\n\nexport const fetchActivation = (userId) => async (dispatch) => {\n\tconst headers = isServer\n\t\t? {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tOrigin: [process.env.RAZZLE_SRV_HOST],\n\t\t }\n\t\t: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t };\n\tconst data = JSON.stringify({\n\t\tid: userId,\n\t});\n\tconst options = {\n\t\theaders: headers,\n\t};\n\tdispatch(requestActivation());\n\tconst url = BASE_API_URL + \"/api/Cuenta/Activacion/\";\n\tawait axios\n\t\t.post(url, data, options)\n\t\t.then((response) => {\n\t\t\tReactGA.event({\n\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\taction: \"Activar Cuenta\",\n\t\t\t});\n\t\t\tdispatch(receiveActivation({ message: response.data }));\n\t\t\tdispatch(toggleShowActivation({ isOpen: false }));\n\t\t})\n\t\t.catch((error) => {\n\t\t\tif (error.response) {\n\t\t\t\tReactGA.event({\n\t\t\t\t\tcategory: \"Cuenta\",\n\t\t\t\t\taction: \"Error al Activar Cuenta\",\n\t\t\t\t});\n\t\t\t\tif (error.response.status === \"404\") {\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\treceiveActivation({\n\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\"No se pudo encontrar la clave de activación, por favor verifica que la url sea correcta.\",\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof error.response.data === \"object\") {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\treceiveActivation({ message: error.response.data.Message })\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch(receiveActivation({ message: error.response.data }));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatch(\n\t\t\t\t\treceiveActivation({\n\t\t\t\t\t\tmessage: \"Ocurrió un error al intentar activar tu cuenta.\",\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tdispatch(toggleShowActivation({ isOpen: false }));\n\t\t});\n};\n\nexport default activation.reducer;\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport Modal from \"react-modal\";\nimport { clearActivationData } from \"features/account/activationSlice\";\nimport Loader from \"../Loader\";\n\nexport default function ActivationModal() {\n\tconst dispatch = useDispatch();\n\t// Selector\n\tconst { isOpen, isLoading, message } = useSelector(\n\t\t(state) => state.activation\n\t);\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Handlers\n\tfunction handleCloseClick() {\n\t\tdispatch(clearActivationData());\n\t\tif (location !== \"/\") {\n\t\t\thistory.replace(\"/\");\n\t\t}\n\t}\n\t// Render functions\n\tfunction renderAlert() {\n\t\tif (!isLoading) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t

    {message}

    \n\t\t\t\t\t
    \n\t\t\t\t\t\tCerrar\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\t// Render\n\tif (!isOpen) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Activación

    \n\t\t\t\t\t{renderAlert()}\n\t\t\t\t\t{renderLoader()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport ReactGA from \"react-ga4\";\nimport Modal from \"react-modal\";\nimport { setAlert, toggleShowAlert } from \"features/alerts/alertsSlice\";\n\nexport default function AlertModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isOpen, alert } = useSelector((state) => state.alert);\n\t// Handlers\n\tfunction handleClick() {\n\t\tReactGA.send({ hitType: \"pageview\", page: \"/\"});\n\t\tdispatch(setAlert({ alert: null }));\n\t\tdispatch(toggleShowAlert(isOpen));\n\t}\n\t// Render\n\tif (alert == null) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    {alert.title}

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    {alert.description}
    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t{alert.details}\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tCerrar\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport ReactDropdown from \"react-dropdown\";\nimport { validateZip, validatePhone } from \"features/functions\";\nimport ZipCodeAutoSuggest from \"components/autosuggest/ZipCodeAutosuggest\";\nimport NeighborhoodAutosuggest from \"components/autosuggest/NeighborhoodAutosuggest\";\nimport CityAutosuggest from \"components/autosuggest/CityAutosuggest\";\nimport CountyAutosuggest from \"components/autosuggest/CountyAutosuggest\";\nimport {\n\tsetShipAddressEditLoaded,\n\tsetShipAddressEditErrorMsg,\n\tclearShipAddressEdit,\n\ttoggleShowShipAddressEdit,\n\tfetchShipAddressEdit,\n} from \"features/account/shipAddressEditSlice\";\nimport {\n\tfetchZipCodesIfNeeded,\n\tfetchZipCodes,\n\tsetZipCodesStateId,\n\tclearZipCodeValue,\n\tupdateZipCodeValue,\n} from \"features/account/zipCodesSlice\";\nimport {\n\tupdateNeighborhoodItem,\n\tupdateNeighborhoodValue,\n\tfetchNeighborhoods,\n\tclearNeighborhoodValue,\n} from \"features/account/neighborhoodsSlice\";\nimport {\n\tfetchCitiesIfNeeded,\n\tsetCitiesStateId,\n\tfetchCities,\n\tupdateCityValue,\n\tclearCityValue,\n} from \"features/account/citiesSlice\";\nimport {\n\tfetchCountiesIfNeeded,\n\tfetchCounties,\n\tclearCountyValue,\n\tsetCountiesStateId,\n\tupdateCountyValue,\n} from \"features/account/countiesSlice\";\nimport Loader from \"components/Loader\";\n\nconst clearCityCountyError = (errorMsg) => async (dispatch) => {\n\tif (errorMsg != null && errorMsg.city != null) {\n\t\tdispatch(\n\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\terrorMsg: { ...errorMsg, city: null, county: null },\n\t\t\t})\n\t\t);\n\t}\n};\n\nexport default function ShipAddressEditModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isOpen, isLoading, errorMsg, address, loaded } = useSelector(\n\t\t(state) => state.shipAddressEdit\n\t);\n\tconst { options } = useSelector((state) => state.states);\n\tconst zipValue = useSelector((state) => state.zipCodes.value);\n\tconst cityValue = useSelector((state) => state.cities.value);\n\tconst countyValue = useSelector((state) => state.counties.value);\n\tconst { authenticated } = useSelector((state) => state.session);\n\t// State\n\tconst [alias, setAlias] = useState(\"\");\n\tconst [phone, setPhone] = useState(\"\");\n\tconst [street, setStreet] = useState(\"\");\n\tconst [ext, setExt] = useState(\"\");\n\tconst [int, setInt] = useState(\"\");\n\tconst [selectedState, setSelectedState] = useState(null);\n\tconst [zip, setZip] = useState(\"\");\n\tconst [neighborhood, setNeighborhood] = useState(\"\");\n\tconst [city, setCity] = useState(\"\");\n\tconst [county, setCounty] = useState(\"\");\n\t// Refs\n\tconst aliasRef = useRef();\n\t// Effect\n\tuseEffect(() => {\n\t\tif (authenticated && address != null && !loaded) {\n\t\t\tsetAlias(address.Alias);\n\t\t\t// Phone\n\t\t\tlet errMsg = {};\n\t\t\tif (\n\t\t\t\taddress.Telefono == null ||\n\t\t\t\t(address.Telefono != null && address.Telefono.trim() === \"\")\n\t\t\t) {\n\t\t\t\terrMsg = {\n\t\t\t\t\t...errMsg,\n\t\t\t\t\tphone: \"Debes escribir un teléfono de contacto\",\n\t\t\t\t};\n\t\t\t}\n\t\t\tsetPhone(address.Telefono);\n\t\t\tsetStreet(address.Calle);\n\t\t\tsetExt(address.Numero_Exterior);\n\t\t\tsetInt(address.Numero_Interior);\n\t\t\t// State\n\t\t\tconst selState = options.filter(\n\t\t\t\t(el) => el.value === address.Estado_Clave\n\t\t\t)[0];\n\t\t\tsetSelectedState(selState);\n\t\t\t// Zip Code\n\t\t\tdispatch(setZipCodesStateId({ stateId: address.Estado_Clave }));\n\t\t\tdispatch(updateZipCodeValue({ value: address.Codigo_Postal }));\n\t\t\tdispatch(fetchZipCodes(address.Estado_Clave));\n\t\t\tsetZip(address.Codigo_Postal);\n\t\t\t// Neighborhood\n\t\t\tdispatch(updateNeighborhoodValue({ value: address.Colonia }));\n\t\t\tdispatch(\n\t\t\t\tupdateNeighborhoodItem({ selectedItem: { Nombre: address.Colonia } })\n\t\t\t);\n\t\t\tdispatch(fetchNeighborhoods(address.Codigo_Postal));\n\t\t\tsetNeighborhood(address.Colonia);\n\t\t\t// City\n\t\t\tdispatch(setCitiesStateId({ stateId: address.Estado_Clave }));\n\t\t\tdispatch(updateCityValue({ value: address.Ciudad }));\n\t\t\tdispatch(fetchCities(address.Estado_Clave));\n\t\t\tsetCity(address.Ciudad);\n\t\t\t// County\n\t\t\tdispatch(setCountiesStateId({ stateId: address.Estado_Clave }));\n\t\t\tdispatch(fetchCounties(address.Estado_Clave));\n\t\t\tdispatch(updateCountyValue({ value: address.Delegacion }));\n\t\t\tsetCounty(address.Delegacion);\n\n\t\t\tdispatch(setShipAddressEditErrorMsg({ errorMsg: errMsg }));\n\t\t\tdispatch(setShipAddressEditLoaded({ loaded: true }));\n\t\t\taliasRef.current && aliasRef.current.focus();\n\t\t}\n\t\tlet prevZipValue;\n\t\tlet prevCityValue;\n\t\tlet prevCountyValue;\n\t\tif (\n\t\t\tprevZipValue !== zipValue &&\n\t\t\tprevCityValue !== cityValue &&\n\t\t\tcityValue !== \"\" &&\n\t\t\tprevCountyValue !== countyValue &&\n\t\t\tcountyValue !== \"\"\n\t\t) {\n\t\t\tsetCity(cityValue);\n\t\t\tsetCounty(countyValue);\n\t\t\tdispatch(clearCityCountyError(errorMsg));\n\t\t}\n\t\treturn () => {\n\t\t\tprevZipValue = zipValue;\n\t\t\tprevCityValue = cityValue;\n\t\t\tprevCountyValue = countyValue;\n\t\t};\n\t}, [\n\t\tauthenticated,\n\t\taddress,\n\t\tdispatch,\n\t\terrorMsg,\n\t\tzipValue,\n\t\tcityValue,\n\t\tcountyValue,\n\t]);\n\t// Handlers\n\tfunction handleFocus(e) {\n\t\te.target.select();\n\t}\n\tfunction handleAliasChange(e) {\n\t\tif (errorMsg != null && errorMsg.alias != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, alias: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetAlias(e.target.value);\n\t}\n\tfunction handlePhoneChange(e) {\n\t\tif (errorMsg != null && errorMsg.phone != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, phone: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetPhone(e.target.value);\n\t}\n\tfunction handleStreetChange(e) {\n\t\tif (errorMsg != null && errorMsg.street != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, street: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetStreet(e.target.value);\n\t}\n\tfunction handleExtChange(e) {\n\t\tif (errorMsg != null && errorMsg.ext != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, ext: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetExt(e.target.value);\n\t}\n\tfunction handleIntChange(e) {\n\t\tif (errorMsg != null && errorMsg.int != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, int: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetInt(e.target.value);\n\t}\n\tfunction handleSelectState(option) {\n\t\tif (errorMsg != null && errorMsg.selectedState != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, selectedState: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tconst stateId = option.value + \"\";\n\t\tsetSelectedState(option);\n\t\tsetZip(\"\");\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearZipCodeValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t\tdispatch(fetchZipCodesIfNeeded(stateId));\n\t\tdispatch(fetchCitiesIfNeeded(stateId));\n\t\tdispatch(fetchCountiesIfNeeded(stateId));\n\t\tdispatch(setZipCodesStateId({ stateId }));\n\t}\n\tfunction handleZipChange(e) {\n\t\tif (errorMsg != null && errorMsg.zip != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, zip: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetZip(e.target.value);\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t}\n\tfunction handleNeighborhoodChange(e) {\n\t\tif (errorMsg != null && errorMsg.neighborhood != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, neighborhood: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetNeighborhood(e.target.value);\n\t}\n\tfunction handleCityChange(e) {\n\t\tif (errorMsg != null && errorMsg.city != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, city: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCity(e.target.value);\n\t}\n\tfunction handleCountyChange(e) {\n\t\tif (errorMsg != null && errorMsg.county != null) {\n\t\t\tdispatch(\n\t\t\t\tsetShipAddressEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, county: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetCounty(e.target.value);\n\t}\n\tfunction handleReset() {\n\t\tsetAlias(\"\");\n\t\tsetPhone(\"\");\n\t\tsetStreet(\"\");\n\t\tsetExt(\"\");\n\t\tsetInt(\"\");\n\t\tsetSelectedState(null);\n\t\tsetZip(\"\");\n\t\tsetNeighborhood(\"\");\n\t\tsetCity(\"\");\n\t\tsetCounty(\"\");\n\t\tdispatch(clearZipCodeValue());\n\t\tdispatch(clearShipAddressEdit());\n\t\tdispatch(clearNeighborhoodValue());\n\t\tdispatch(clearCityValue());\n\t\tdispatch(clearCountyValue());\n\t}\n\tfunction handleCloseClick() {\n\t\thandleReset();\n\t\tdispatch(toggleShowShipAddressEdit({ isOpen: true }));\n\t}\n\tfunction handleOverlayCloseClick() {\n\t\tdispatch(toggleShowShipAddressEdit({ isOpen: true }));\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (alias.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\talias: \"Debes escribir un alias único para esta dirección\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (phone.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tphone: \"Debes escribir un teléfono de contacto\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validatePhone(phone)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tphone: \"Debes escribir un teléfono válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (street.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tstreet: \"Debes escribir la calle\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (ext.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\text: \"Debes escribir el número exterior\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (selectedState == null) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tselectedState: \"Debes seleccionar un estado\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst zipString = zip + \"\";\n\t\tif (zipString.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tzip: \"Debes escribir el código postal\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t} else {\n\t\t\tif (!validateZip(zip)) {\n\t\t\t\terrorMessages = {\n\t\t\t\t\t...errorMessages,\n\t\t\t\t\tzip: \"El código postal no es válido\",\n\t\t\t\t};\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t\tif (neighborhood.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tneighborhood: \"Debes escribir la colonia\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (city.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcity: \"Debes escribir la ciudad\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (county.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tcounty: \"Debes escribir el municipio\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(\n\t\t\t\tfetchShipAddressEdit({\n\t\t\t\t\talias: address.Alias,\n\t\t\t\t\tnewAlias: alias,\n\t\t\t\t\tphone,\n\t\t\t\t\tstreet,\n\t\t\t\t\text,\n\t\t\t\t\tint,\n\t\t\t\t\tzip,\n\t\t\t\t\tneighborhood,\n\t\t\t\t\tcity,\n\t\t\t\t\tcounty,\n\t\t\t\t\tstateId: selectedState.value,\n\t\t\t\t})\n\t\t\t);\n\t\t\tdispatch(setShipAddressEditErrorMsg({ errorMsg: null }));\n\t\t} else {\n\t\t\tdispatch(setShipAddressEditErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\t// Render Functions\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrorList() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.alias)}\n\t\t\t\t\t\t{renderError(errorMsg.phone)}\n\t\t\t\t\t\t{renderError(errorMsg.street)}\n\t\t\t\t\t\t{renderError(errorMsg.ext)}\n\t\t\t\t\t\t{renderError(errorMsg.int)}\n\t\t\t\t\t\t{renderError(errorMsg.selectedState)}\n\t\t\t\t\t\t{renderError(errorMsg.zip)}\n\t\t\t\t\t\t{renderError(errorMsg.neighborhood)}\n\t\t\t\t\t\t{renderError(errorMsg.city)}\n\t\t\t\t\t\t{renderError(errorMsg.county)}\n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getFieldProps(p) {\n\t\tif (\n\t\t\terrorMsg == null ||\n\t\t\t!(errorMsg != null && p in errorMsg) ||\n\t\t\t(errorMsg != null && p in errorMsg && errorMsg[p] == null)\n\t\t) {\n\t\t\tif (p === \"street\") {\n\t\t\t\treturn { className: \"full\" };\n\t\t\t}\n\t\t\tif (p === \"ext\" || p === \"int\") {\n\t\t\t\treturn { className: \"half\" };\n\t\t\t}\n\t\t}\n\t\tif (errorMsg != null && p in errorMsg && errorMsg[p] != null) {\n\t\t\tif (p === \"street\") {\n\t\t\t\treturn { className: \"full error\" };\n\t\t\t}\n\t\t\tif (p === \"ext\" || p === \"int\") {\n\t\t\t\treturn { className: \"half error\" };\n\t\t\t}\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tconst defaultOption = selectedState == null ? \"Estado\" : selectedState;\n\tfunction renderForm() {\n\t\tif (!isLoading) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    {renderErrorList()}
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\tCancelar\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Editar Dirección de Envío

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport { toggleShowPoints, fetchPaymentCard } from \"features/cart/cartSlice\";\n\nexport default function OpenPayPointsModal() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isOpenPoints, pointsData } = useSelector((state) => state.cart);\n\t// Handlers\n\tfunction handleYesClick() {\n\t\tconst data = { ...pointsData, usePoints: true };\n\t\tdispatch(fetchPaymentCard(data));\n\t\tdispatch(toggleShowPoints({ isOpenPoints }));\n\t}\n\tfunction handleNoClick() {\n\t\tconst data = { ...pointsData, usePoints: false };\n\t\tdispatch(fetchPaymentCard(data));\n\t\tdispatch(toggleShowPoints({ isOpenPoints }));\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Pagar con Puntos Bancarios

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t¿Deseas usar los puntos bancarios de tu tarjeta para realizar este\n\t\t\t\t\t\t\tpago?\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tNo\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tSí\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { toggleShowAlert } from \"features/alerts/alertsSlice\";\nimport { setAlert } from \"features/alerts/alertsSlice\";\nimport { BASE_API_URL } from \"features/constants\";\nimport { sessionService } from \"redux-react-session\";\nimport { fetchAccountCards } from \"./accountCardsSlice\";\nimport { runUnauthorizedActions } from \"./loginSlice\";\n\nconst initialState = {\n\tisLoading: false,\n\tisOpen: false,\n\tisOpenDelete: false,\n\terrorMsg: null,\n};\n\nconst accountCardEdit = createSlice({\n\tname: \"accountCardEdit\",\n\tinitialState,\n\treducers: {\n\t\trequestCardEdit: (state) => {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCardEdit: (state) => {\n\t\t\tstate.isLoading = false;\n\t\t},\n\t\tsetCardEditErrorMsg: (state, action) => {\n\t\t\tstate.errorMsg = action.payload.errorMsg;\n\t\t},\n\t\ttoggleShowEditCard: (state, action) => {\n\t\t\tstate.isOpen = !action.payload.isOpen;\n\t\t},\n\t\ttoggleShowDeleteCard: (state, action) => {\n\t\t\tstate.isOpenDelete = !action.payload.isOpenDelete;\n\t\t},\n\t\tclearCardEditData: () => initialState,\n\t},\n});\n\nexport const {\n\trequestCardEdit,\n\treceiveCardEdit,\n\tsetCardEditErrorMsg,\n\ttoggleShowEditCard,\n\ttoggleShowDeleteCard,\n\tclearCardEditData,\n} = accountCardEdit.actions;\n\nexport const fetchCardEdit = (data) => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/Tarjetas/\" + data.cardId;\n\t\t\tdispatch(requestCardEdit());\n\t\t\t//return;\n\t\t\treturn axios\n\t\t\t\t.put(url, JSON.stringify(data), options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tdispatch(receiveCardEdit());\n\t\t\t\t\tdispatch(fetchAccountCards());\n\t\t\t\t\tdispatch(toggleShowEditCard({ isOpen: true }));\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tdispatch(receiveCardEdit());\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t\t// If 404 Not Found\n\t\t\t\t\tif (error.response.status === 404) {\n\t\t\t\t\t\tdispatch(fetchAccountCards());\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se pudo modificar la tarjeta porque esta tarjeta ya fue eliminada.\",\n\t\t\t\t\t\t\t\t\tdetails: null,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t}\n\t\t\t\t\t// If 400 BadRequest model state\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (error.response.data.Message != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t\"No se ha podido eliminar la tarjeta por el siguiente motivo:\",\n\t\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => {\n\t\t\tconsole.log(\"Error\",err);\n\t\t});\n};\nexport const fetchCardDelete = (cardId) => async (dispatch) => {\n\tsessionService\n\t\t.loadSession()\n\t\t.then((session) => {\n\t\t\tconst headers = {\n\t\t\t\tAuthorization: \"bearer \" + session.loginData.access_token,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\theaders: headers,\n\t\t\t};\n\t\t\tconst url = BASE_API_URL + \"/api/Cuenta/MiCuenta/Tarjetas/\" + cardId;\n\t\t\tdispatch(requestCardEdit());\n\t\t\t//return;\n\t\t\treturn axios\n\t\t\t\t.delete(url, options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tdispatch(receiveCardEdit());\n\t\t\t\t\tdispatch(fetchAccountCards());\n\t\t\t\t\tdispatch(toggleShowDeleteCard({ isOpenDelete: true }));\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\ttitle: \"Aviso\",\n\t\t\t\t\t\t\t\tdescription: \"Se eliminó la tarjeta con éxito.\",\n\t\t\t\t\t\t\t\tdetails: null,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tdispatch(setCardsIsLoading({ isLoading: false }));\n\t\t\t\t\t// If 401 Unauthorized login failed\n\t\t\t\t\tif (error.response.status === 401) {\n\t\t\t\t\t\tdispatch(runUnauthorizedActions());\n\t\t\t\t\t}\n\t\t\t\t\t// If 404 Not Found\n\t\t\t\t\tif (error.response.status === 404) {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\"No se ha podido eliminar la tarjeta por el siguiente motivo:\",\n\t\t\t\t\t\t\t\t\tdetails: \"No se pudo encontrar la tarjeta.\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t}\n\t\t\t\t\t// If 400 BadRequest model state\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (error.response.data.Message != null) {\n\t\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\t\tsetAlert({\n\t\t\t\t\t\t\t\t\talert: {\n\t\t\t\t\t\t\t\t\t\ttitle: \"¡Lo sentimos!\",\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t\"No se ha podido eliminar la tarjeta por el siguiente motivo:\",\n\t\t\t\t\t\t\t\t\t\tdetails: error.response.data.Message,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatch(toggleShowAlert({ isOpen: false }));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch((err) => {});\n};\n\nexport default accountCardEdit.reducer;\n","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport { stringNumberFormat } from \"features/functions\";\nimport { OPENPAY_CARD_LIMIT } from \"features/constants\";\nimport { setSelectedCard, toggleShowAccountCards } from \"features/account/accountCardsSlice\";\nimport { toggleShowEditCard, toggleShowDeleteCard } from \"features/account/accountCardEditSlice\";\nimport Loader from \"../Loader\";\n\nexport default function AccountCards() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, list, isOpen } = useSelector(\n\t\t(state) => state.accountCards\n\t);\n\t// Handlers\n\tfunction handleClose() {\n\t\tdispatch(toggleShowAccountCards({ isOpen }));\n\t}\n\tfunction handleCardEdit(selectedCard) {\n\t\tdispatch(setSelectedCard({selectedCard}));\n\t\tdispatch(toggleShowEditCard({isOpen: false}));\n\t}\n\tfunction handleCardDelete(selectedCard) {\n\t\tdispatch(setSelectedCard({selectedCard}));\n\t\tdispatch(toggleShowDeleteCard({isOpenDelete: false}));\n\t}\n\t// Render functions\n\tfunction renderCardList() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\tconst now = new Date();\n\t\tconst year = now.getFullYear() % 100;\n\t\tif (list != null && list.length > 0) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{list.map((el, index) => {\n\t\t\t\t\t\t\tconst expired =\n\t\t\t\t\t\t\t\tel.Anio < year ||\n\t\t\t\t\t\t\t\t(el.Anio === year && el.Mes <= now.getMonth() + 1)\n\t\t\t\t\t\t\t\t\t? { className: \"expired\" }\n\t\t\t\t\t\t\t\t\t: {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    {\"*** \" + el.Numero}
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t{stringNumberFormat(el.Mes, 2) +\n\t\t\t\t\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\t\t\t\t\tstringNumberFormat(el.Anio, 2)}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    {el.Marca.replace(\"_\", \" \").toUpperCase()}
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t handleCardEdit(el)}>\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t handleCardDelete(el)}>\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn
    No hay tarjetas que mostrar.
    ;\n\t}\n\tfunction renderAddCard() {\n\t\tif (list != null && list.length < OPENPAY_CARD_LIMIT)\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t);\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Tarjetas Guardadas

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{renderAddCard()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    Num
    \n\t\t\t\t\t\t\t\t
    Vence
    \n\t\t\t\t\t\t\t\t
    Tipo
    \n\t\t\t\t\t\t\t\t
     
    \n\t\t\t\t\t\t\t\t
     
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderCardList()}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport {\n\tvalidateCardMonth,\n\tvalidateCardYear,\n\tstringNumberFormat,\n\tisServer,\n} from \"features/functions\";\nimport {\n\ttoggleShowEditCard,\n\tsetCardEditErrorMsg,\n} from \"features/account/accountCardEditSlice\";\nimport { setCardAddId } from \"features/account/accountCardAddSlice\";\nimport { cartLoadOpenPay } from \"features/cart/cartSlice\";\nimport Loader from \"../Loader\";\nimport { setSelectedCard } from \"features/account/accountCardsSlice\";\nimport { fetchCardEdit } from \"features/account/accountCardEditSlice\";\n\nexport default function AccountCardEdit() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, isOpen, errorMsg } = useSelector(\n\t\t(state) => state.accountCardEdit\n\t);\n\tconst { sessId } = useSelector((state) => state.accountCardAdd);\n\tconst { selectedCard } = useSelector((state) => state.accountCards);\n\tconst { openPayLoaded } = useSelector((state) => state.cart);\n\t// State\n\tconst [cardValidators, setCardValidators] = useState(null);\n\tconst [month, setMonth] = useState(\"\");\n\tconst [year, setYear] = useState(\"\");\n\t// Effect\n\tuseEffect(() => {\n\t\tif (!isServer) {\n\t\t\t// OpenPay not loaded\n\t\t\tif (!openPayLoaded) {\n\t\t\t\tdispatch(cartLoadOpenPay());\n\t\t\t\t// Antifraud not loaded\n\t\t\t} else if (sessId == null) {\n\t\t\t\tdispatch(setCardAddId({ sessId: window.OpenPay.deviceData.setup() }));\n\t\t\t\t// Antifraud Loaded\n\t\t\t} else {\n\t\t\t\tlet newCardValidators = window.OpenPay.card;\n\t\t\t\tsetCardValidators({\n\t\t\t\t\tvalidateExpiry: newCardValidators.validateExpiry,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, [openPayLoaded, sessId, isLoading]);\n\t// Handlers\n\tfunction handleReset() {\n\t\tsetMonth(\"\");\n\t\tsetYear(\"\");\n\t\tdispatch(setCardEditErrorMsg({ errorMsg: null }));\n\t\tdispatch(setSelectedCard({ selectedCard: null }));\n\t}\n\tfunction handleClose() {\n\t\thandleReset();\n\t\tdispatch(toggleShowEditCard({ isOpen }));\n\t}\n\tfunction handleMonthChange(e) {\n\t\tconst value = e.target.value.replace(/[^0-9]/g, \"\");\n\t\tif (\n\t\t\terrorMsg != null &&\n\t\t\t(errorMsg.month != null || errorMsg.expiry != null)\n\t\t) {\n\t\t\tdispatch(\n\t\t\t\tsetCardEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, month: null, expiry: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetMonth(value);\n\t}\n\tfunction validateMonth(cardMonth) {\n\t\tif (cardMonth.trim().length === 0) {\n\t\t\treturn { isValid: false, error: \"Debes escribir el mes de vencimiento.\" };\n\t\t}\n\t\tif (!validateCardMonth(cardMonth)) {\n\t\t\treturn { isValid: false, error: \"El mes de vencimiento no es válido.\" };\n\t\t}\n\t\treturn { isValid: true, error: null };\n\t}\n\tfunction handleMonthdBlur(e) {\n\t\tconst validatedMonth = validateMonth(e.target.value);\n\t\tif (!validatedMonth.isValid) {\n\t\t\tdispatch(\n\t\t\t\tsetCardEditErrorMsg({\n\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\tmonth: validatedMonth.error,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\tfunction handleYearChange(e) {\n\t\tif (\n\t\t\terrorMsg != null &&\n\t\t\t(errorMsg.year != null || errorMsg.expiry != null)\n\t\t) {\n\t\t\tdispatch(\n\t\t\t\tsetCardEditErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, year: null, expiry: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetYear(e.target.value);\n\t}\n\tfunction validateYear(cardYear) {\n\t\tif (cardYear.trim().length === 0) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"Debes escribir el año de vencimiento.\",\n\t\t\t\texpiry: false,\n\t\t\t};\n\t\t}\n\t\tif (!validateCardYear(cardYear)) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"El año de vencimiento no es válido.\",\n\t\t\t\texpiry: false,\n\t\t\t};\n\t\t}\n\t\tconst validExpiry = cardValidators.validateExpiry(month, cardYear);\n\t\tif (\n\t\t\t!validExpiry ||\n\t\t\tNumber(cardYear) < selectedCard.Anio ||\n\t\t\t(Number(cardYear) === selectedCard.Anio &&\n\t\t\t\tNumber(month) <= selectedCard.Mes)\n\t\t) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terror: \"La fecha de vencimiento no es válida.\",\n\t\t\t\texpiry: true,\n\t\t\t};\n\t\t}\n\t\treturn { isValid: true, error: null };\n\t}\n\tfunction handleYearBlur(e) {\n\t\tconst validatedYear = validateYear(e.target.value);\n\t\tif (!validatedYear.isValid) {\n\t\t\tif (!validatedYear.expiry) {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetCardEditErrorMsg({\n\t\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\t\tyear: validatedYear.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdispatch(\n\t\t\t\t\tsetCardEditErrorMsg({\n\t\t\t\t\t\terrorMsg: {\n\t\t\t\t\t\t\t...errorMsg,\n\t\t\t\t\t\t\texpiry: validatedYear.error,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tconst validMonth = validateMonth(month);\n\t\tif (!validMonth.isValid) {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tmonth: validMonth.error,\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tconst validYear = validateYear(year);\n\t\tif (!validYear.isValid) {\n\t\t\terrorMessages = !validYear.expiry\n\t\t\t\t? {\n\t\t\t\t\t\t...errorMessages,\n\t\t\t\t\t\tyear: validYear.error,\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\t...errorMessages,\n\t\t\t\t\t\texpiry: validYear.error,\n\t\t\t\t };\n\t\t\tvalid = false;\n\t\t}\n\t\tif (!valid) {\n\t\t\tdispatch(setCardEditErrorMsg({ errorMsg: errorMessages }));\n\t\t} else {\n\t\t\tconst data = {\n\t\t\t\tcardId: selectedCard.Id,\n\t\t\t\tyear,\n\t\t\t\tmonth,\n\t\t\t};\n\t\t\tdispatch(fetchCardEdit(data));\n\t\t}\n\t}\n\t// Render functions\n\tfunction getFieldProps(property) {\n\t\tif (errorMsg == null) {\n\t\t\tif (property === \"month\" || property === \"year\") {\n\t\t\t\treturn { className: \"half\" };\n\t\t\t}\n\t\t\treturn {};\n\t\t}\n\t\tif (\n\t\t\t(property === \"month\" || property === \"year\") &&\n\t\t\t\"expiry\" in errorMsg &&\n\t\t\terrorMsg[\"expiry\"] != null\n\t\t) {\n\t\t\treturn { className: \"half error\" };\n\t\t}\n\t\tif (property in errorMsg && errorMsg[property] != null) {\n\t\t\tif (property === \"month\" || property === \"year\") {\n\t\t\t\treturn { className: \"half error\" };\n\t\t\t}\n\t\t\treturn { className: \"error\" };\n\t\t}\n\t\tif (property === \"month\" || property === \"year\") {\n\t\t\treturn { className: \"half\" };\n\t\t}\n\t\treturn {};\n\t}\n\tfunction renderError(error) {\n\t\tif (error != null) {\n\t\t\treturn
  • {error}
  • ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderErrors() {\n\t\tif (errorMsg != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
      \n\t\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t\t{renderError(errorMsg.month)}\n\t\t\t\t\t\t{renderError(errorMsg.year)}\n\t\t\t\t\t\t{renderError(errorMsg.expiry)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderLoader() {\n\t\tif (isLoading || !openPayLoaded) {\n\t\t\treturn ;\n\t\t}\n\t}\n\tfunction renderForm() {\n\t\tif (!isLoading && openPayLoaded && selectedCard != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    Tarjetas de Crédito
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    Tarjetas de Débito
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t{selectedCard.Marca.toUpperCase() +\n\t\t\t\t\t\t\t\t\t\t\" ***\" +\n\t\t\t\t\t\t\t\t\t\tselectedCard.Numero +\n\t\t\t\t\t\t\t\t\t\t\" - \" +\n\t\t\t\t\t\t\t\t\t\tstringNumberFormat(selectedCard.Mes, 2) +\n\t\t\t\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\t\t\t\tstringNumberFormat(selectedCard.Anio, 2)}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{renderErrors()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    Transacciones realizadas vía:
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\"Openpay\"\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\tTus pagos se realizan de forma segura con encriptación de\n\t\t\t\t\t\t\t\t\t\t\t256 bits\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\tCancelar\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\tGuardar\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Actualizar Tarjeta

    \n\t\t\t\t\t

    Si la fecha de vencimiento de tu tarjeta ha cambiado puedes actualizarla.

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderForm()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Modal from \"react-modal\";\nimport {\n\tfetchCardDelete,\n\ttoggleShowDeleteCard,\n} from \"features/account/accountCardEditSlice\";\nimport { setSelectedCard } from \"features/account/accountCardsSlice\";\nimport { stringNumberFormat } from \"features/functions\";\nimport Loader from \"../Loader\";\n\nexport default function AccountCardDelete() {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, isOpenDelete } = useSelector(\n\t\t(state) => state.accountCardEdit\n\t);\n\tconst { selectedCard } = useSelector((state) => state.accountCards);\n\t// Handlers\n\tfunction handleYesClick() {\n\t\tdispatch(fetchCardDelete(selectedCard.Id));\n\t}\n\tfunction handleNoClick() {\n\t\tdispatch(setSelectedCard({ selectedCard: null }));\n\t\tdispatch(toggleShowDeleteCard({ isOpenDelete }));\n\t}\n\t// Render\n\tfunction renderLoader() {\n\t\tif (isLoading) {\n\t\t\treturn ;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction renderContent() {\n\t\tif (!isLoading && selectedCard != null) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t
    ¿Estás seguro de querer eliminar la siguiente tarjeta?
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t{selectedCard.Marca.toUpperCase() +\n\t\t\t\t\t\t\t\t\" ***\" +\n\t\t\t\t\t\t\t\tselectedCard.Numero +\n\t\t\t\t\t\t\t\t\" - \" +\n\t\t\t\t\t\t\t\tstringNumberFormat(selectedCard.Mes, 2) +\n\t\t\t\t\t\t\t\t\"/\" +\n\t\t\t\t\t\t\t\tstringNumberFormat(selectedCard.Anio, 2)}\n\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tCancelar\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tEliminar\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t

    Eliminar Tarjeta

    \n\t\t\t\t\t{renderLoader()}\n\t\t\t\t\t{renderContent()}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport Helmet from \"react-helmet\";\nimport {\n\tSITE_TITLE,\n\tSITE_DESCRIPTION,\n\tSITE_HOST,\n} from \"features/constants\";\nimport MainMenu from \"./MainMenu\";\nimport HomeContent from \"./HomeContent\";\nimport CartModal from \"../cart/CartModal\";\nimport OrderConfirmationModal from \"../order/OrderConfirmationModal\";\nimport LoginModal from \"../account/LoginModal\";\nimport RegisterModal from \"../account/RegisterModal\";\nimport PasswordModal from \"components/account/ResetPasswordModal\";\nimport ConfirmationModal from \"../account/ConfirmationModal\";\nimport ShipAddressModal from \"../account/ShipAddressModal\";\nimport ShipAddressAddModal from \"components/account/ShipAddressAddModal\";\nimport InvoiceAddressModal from \"components/account/InvoiceAddressModal\";\nimport InvoiceAddressAddModal from \"components/account/InvoiceAddressAddModal\";\nimport InvoiceAddressEditModal from \"components/account/InvoiceAddressEditModal\";\nimport AccountOrders from \"../account/AccountOrders\";\nimport OrderModal from \"../account/OrderModal\";\nimport AccountDetailsModal from \"../account/AccountDetailsModal\";\nimport AccountEditModal from \"../account/AccountEditModal\";\nimport ActivationModal from \"components/account/ActivationModal\";\nimport AlertModal from \"components/alert/AlertModal\";\nimport ShipAddressEditModal from \"components/account/ShipAddressEditModal\";\nimport OpenPayPointsModal from \"components/cart/OpenPayPointsModal\";\nimport AccountCards from \"components/account/AccountCards\";\nimport AccountCardEdit from \"components/account/AccountCardEdit\";\nimport AccountCardDelete from \"components/account/AccountCardDelete\";\n\nexport default function Home() {\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t{SITE_TITLE}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\t);\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"../constants\";\nimport { isServer } from \"features/functions\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n};\n\nconst banners = createSlice({\n\tname: \"banners\",\n\tinitialState,\n\treducers: {\n\t\trequestBanners(state) {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveBanners(state, action) {\n\t\t\tstate.isLoading = false;\n\t\t\tstate.list = action.payload.list;\n\t\t},\n\t},\n});\n\nexport const { requestBanners, receiveBanners } = banners.actions;\n\nconst shouldFetchBannersList = (state) => {\n\tif (state.banners.list == null) {\n\t\treturn true;\n\t}\n\treturn false;\n};\nexport const fetchBannersListIfNeeded = () => async (dispatch, getState) => {\n\tif (shouldFetchBannersList(getState())) {\n\t\treturn dispatch(fetchBannersList());\n\t}\n};\nexport const fetchBannersList = () => async (dispatch) => {\n\tconst headers = isServer\n\t\t? {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tOrigin: [process.env.RAZZLE_SRV_HOST],\n\t\t }\n\t\t: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t };\n\tconst options = {\n\t\t//method: \"GET\",\n\t\theaders: headers,\n\t};\n\tdispatch(requestBanners());\n\tconst url = BASE_API_URL + \"/api/Banners\";\n\tawait axios\n\t\t.get(url, options)\n\t\t.then((response) => {\n\t\t\tdispatch(receiveBanners({ list: response.data }));\n\t\t})\n\t\t.catch((error) => {});\n};\n\nexport default banners.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { CFDI_TYPE } from \"features/constants\";\nimport { BASE_API_URL } from \"features/constants\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n};\n\nconst cfdiRegime = createSlice({\n\tname: \"cfdiRegime\",\n\tinitialState,\n\treducers: {\n\t\trequestCfdiRegimeList: (state) => {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCfdiRegimeList: (state, action) => {\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.isLoading = false;\n\t\t},\n\t},\n});\n\nexport const {\n\trequestCfdiRegimeList,\n\treceiveCfdiRegimeList,\n} = cfdiRegime.actions;\n\nexport const fetchCfdiRegimeList = () => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\theaders: headers,\n\t};\n\tdispatch(requestCfdiRegimeList());\n\tconst url = BASE_API_URL + \"/api/Cfdi/RegimenesFiscales\";\n\tawait axios\n\t\t.get(url, options)\n\t\t.then((response) => {\n\t\t\tdispatch(receiveCfdiRegimeList({ list: response.data }));\n\t\t})\n\t\t.catch((error) => {\n\t\t\tdispatch(receiveCfdiRegimeList({ list: [] }));\n\t\t});\n};\n\nexport default cfdiRegime.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport axios from \"axios\";\nimport { BASE_API_URL } from \"features/constants\";\n\nconst initialState = {\n\tisLoading: false,\n\tlist: null,\n};\n\nexport const cfdiUso = createSlice({\n\tname: \"cfdiUso\",\n\tinitialState,\n\treducers: {\n\t\trequestCfdiUsoList: (state) => {\n\t\t\tstate.isLoading = true;\n\t\t},\n\t\treceiveCfdiUsoList: (state, action) => {\n\t\t\tstate.list = action.payload.list;\n\t\t\tstate.isLoading = false;\n\t\t},\n\t},\n});\n\nexport const { requestCfdiUsoList, receiveCfdiUsoList } =\n\tcfdiUso.actions;\n\nexport const fetchCfdiUsoList = () => async (dispatch) => {\n\tconst headers = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tconst options = {\n\t\theaders: headers,\n\t};\n\tdispatch(requestCfdiUsoList());\n\tconst url = BASE_API_URL + \"/api/Cfdi/Usos\";\n\tawait axios\n\t\t.get(url, options)\n\t\t.then((response) => {\n\t\t\tdispatch(receiveCfdiUsoList({ list: response.data }));\n\t\t})\n\t\t.catch((error) => {\n\t\t\tdispatch(receiveCfdiUsoList({ list: [] }));\n\t\t});\n};\n\nexport default cfdiUso.reducer;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Redirect } from \"react-router-dom\";\nimport ReactGA from \"react-ga4\";\nimport {\n\tfetchSendConfirmation,\n\tsetConfirmationErrorMsg,\n\tclearConfirmationData,\n} from \"features/account/confirmationSlice\";\nimport Loader from \"components/Loader\";\nimport AlertModal from \"../alert/AlertModal\";\nimport bgImage from \"images/login-bg-2.jpg\";\n\nconst renderError = (error) => {\n\tif (error != null) {\n\t\treturn
  • {error}
  • ;\n\t}\n\treturn null;\n};\n\nexport default function Confirmation(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { isLoading, errorMsg } = useSelector((state) => state.sendConfirmation);\n\tconst { checked, authenticated } = useSelector((state) => state.session);\n\t// State\n\tconst [usrname, setUsrname] = useState(\"\");\n\t// Refs\n\tconst usernameRef = useRef();\n\tuseEffect(() => usernameRef.current && usernameRef.current.focus(), []);\n\t// Redirect\n\tif (checked && authenticated) {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\t// Handlers\n\tfunction handleUsrnameChange(e) {\n\t\tif (errorMsg != null && errorMsg.usrname != null) {\n\t\t\tdispatch(\n\t\t\t\tsetConfirmationErrorMsg({\n\t\t\t\t\terrorMsg: { ...errorMsg, usrname: null, error: null },\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tsetUsrname(e.target.value);\n\t}\n\tfunction handleCancelClick() {\n\t\tdispatch(clearConfirmationData());\n\t\tReactGA.send({ hitType: \"pageview\", page: \"/login\"});\n\t\tprops.history.push(\"/login\");\n\t}\n\tfunction handleSubmit(e) {\n\t\te.preventDefault();\n\t\tlet valid = true;\n\t\tlet errorMessages = { ...errorMsg };\n\t\tif (usrname.trim() === \"\") {\n\t\t\terrorMessages = {\n\t\t\t\t...errorMessages,\n\t\t\t\tusrname: \"Debes escribir tu correo electrónico\",\n\t\t\t};\n\t\t\tvalid = false;\n\t\t}\n\t\tif (valid) {\n\t\t\tdispatch(fetchSendConfirmation(usrname));\n\t\t} else {\n\t\t\tdispatch(setConfirmationErrorMsg({ errorMsg: errorMessages }));\n\t\t}\n\t}\n\tlet errors = null;\n\tif (errorMsg != null) {\n\t\terrors = (\n\t\t\t
    \n\t\t\t\t
      \n\t\t\t\t\t{renderError(errorMsg.error)}\n\t\t\t\t\t{renderError(errorMsg.usrname)}\n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\tlet content;\n\tif (isLoading) {\n\t\tcontent = (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\tContiShop
    \n\t\t\t\t\t\t\tFamily & Friends\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\tLa tienda en línea para amigos y familiares de los empleados de\n\t\t\t\t\t\t\tContinental Tire\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t} else {\n\t\tcontent = (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\tContiShop
    \n\t\t\t\t\t\t\tFamily & Friends\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\tSi no recibiste el correo de confirmación de registro puedes\n\t\t\t\t\t\t\tsolicitarlo de nuevo.\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{errors}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCancelar\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{content}\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import React from \"react\";\nimport Scroll from \"react-scroll\";\n\nvar ScrollLink = Scroll.Link;\nvar Element = Scroll.Element;\n\nexport default function TermsDisclaimer() {\n\tconst offset = -140;\n\tconst offsetTop = -300;\n\treturn (\n\t\t
    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tTérminos y Condiciones de Uso\n\t\t\t\t\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe la Licencia\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe la Información contenida en www.contishop.com.mx\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe las Políticas de Privacidad Sobre el Uso de Información\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe los horarios de Operación\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tPolíticas de entrega y costos de envío\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe las Cancelaciones\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe las Garantías y Devoluciones\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe las Formas de Pago\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe los Precios\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDisponibilidad de mercancía y existencias\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe los Derechos de Autor y Propiedad Industrial\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDel Material Publicitario\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tNegación de Garantías\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tLímite de Responsabilidades\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tEn el caso de uso de tarjetas robadas\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tUso de productos\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tControl Parental\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tRecomendaciones y Precauciones\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe las Modificaciones a www.contishop.com.mx\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe la Cesión de Derechos\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe las Indemnizaciones\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe la Terminación del presente contrato\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\t\n\t\t\t\t\t\tDe la Vigencia\n\t\t\t\t\t\n\t\t\t\t
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\tCONTINENTAL Tire México S.A. de C.V. Y SUS FILIALES (en adelante\n\t\t\t\t\"CONTINENTAL\"), le dan la más cordial bienvenida. Agradecemos su\n\t\t\t\tpreferencia y nos permitimos informarle sobre algunos puntos importantes\n\t\t\t\ta considerar durante su visita a www.contishop.com.mx.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCon el objetivo de ofrecerle un ambiente seguro y agradable para\n\t\t\t\tnuestros clientes y visitantes, hemos establecido reglas y términos bajo\n\t\t\t\tlos cuales se delimitan las áreas de responsabilidad y derechos, tanto\n\t\t\t\tde CONTINENTAL como de nuestros visitantes.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tAL INGRESAR Y UTILIZAR ESTE SITIO DE INTERNET, CUYO NOMBRE DE DOMINIO\n\t\t\t\tES: www.contishop.com.mx, PROPIEDAD DE CONTINENTAL TIRE\n\t\t\t\tDE MÉXICO, S.A. DE C.V. Y SUS FILIALES, EN LO SUCESIVO “CONTINENTAL”\n\t\t\t\tUSTED (EL USUARIO) ESTÁ ACEPTANDO LOS TÉRMINOS Y LAS CONDICIONES\n\t\t\t\tCONTENIDOS EN ESTE CONVENIO Y DECLARA EXPRESAMENTE SU ACEPTACIÓN,\n\t\t\t\tMANIFESTANDO SU VOLUNTAD EN TÉRMINOS DE LO ESTABLECIDO POR LOS ARTÍCULOS\n\t\t\t\t1803 Y 1834 BIS DEL CÓDIGO CIVIL FEDERAL, ASI COMO LOS ARTÍCULOS 80, 81,\n\t\t\t\t89 DEL CÓDIGO DE COMERCIO Y DEMÁS RELATIVOS Y APLICABLES DE LA\n\t\t\t\tLEGISLACIÓN APLICABLE.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tSI EL USUARIO NO ACEPTA EN FORMA ABSOLUTA LOS TÉRMINOS Y CONDICIONES DE\n\t\t\t\tESTE CONVENIO, DEBERÁ ABSTENERSE DE USAR Y VER{\" \"}\n\t\t\t\t www.contishop.com.mx PARA EL CASO QUE EL USUARIO\n\t\t\t\tCONTINÚE EN EL USO DE www.contishop.com.mx, DICHA\n\t\t\t\tACCIÓN SE CONSIDERARÁ COMO SU ABSOLUTA ACEPTACIÓN A LOS TÉRMINOS Y\n\t\t\t\tCONDICIONES AQUÍ ESTABLECIDOS. LA SOLA UTILIZACIÓN DEL SITIO LE OTORGA\n\t\t\t\tAL PÚBLICO EN GENERAL O A QUIEN LO USE, LA CONDICIÓN DE USUARIO (EN\n\t\t\t\tADELANTE REFERIDO COMO EL \"USUARIO\" O LOS \"USUARIOS\") E IMPLICA LA\n\t\t\t\tACEPTACIÓN, PLENA E INCONDICIONAL, DE TODAS Y CADA UNA DE LAS\n\t\t\t\tCONDICIONES GENERALES Y PARTICULARES INCLUIDAS EN ESTOS TÉRMINOS DE USO\n\t\t\t\tEN LA VERSIÓN PUBLICADA POR CONTINENTAL EN EL MOMENTO MISMO EN QUE EL\n\t\t\t\tUSUARIO ACCEDA AL SITIO. CUALQUIER MODIFICACIÓN A LOS PRESENTES TÉRMINOS\n\t\t\t\tDE USO SERÁ REALIZADA CUANDO CONTINENTAL LO CONSIDERE APROPIADO, SIENDO\n\t\t\t\tEXCLUSIVA RESPONSABILIDAD DEL USUARIO ASEGURARSE DE TOMAR CONOCIMIENTO\n\t\t\t\tDE TALES MODIFICACIONES.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tCONTRATO DE ADHESIÓN PARA USO DE SITIO DE INTERNET, QUE CELEBRAN POR\n\t\t\t\t\tUNA PARTE CONTINENTAL TIRE DE MÉXICO S.A. DE C.V. Y/O SUS FILIALES (EN\n\t\t\t\t\tLO SUCESIVO CONTINENTAL) Y, POR LA OTRA, EL USUARIO, SUJETÁNDOSE,\n\t\t\t\t\tAMBAS PARTES, A LO ESTABLECIDO EN EL TEXTO DEL PRESENTE CONTRATO.\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe la Licencia\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tPor virtud de la celebración de este convenio, CONTINENTAL otorga y\n\t\t\t\tconcede al Usuario el derecho no exclusivo, revocable y no transferible\n\t\t\t\tde ver y usar www.contishop.com.mx de conformidad con\n\t\t\t\tlos términos y condiciones que se estipulan en este Convenio. Para los\n\t\t\t\tefectos del presente convenio, las Partes acuerdan que por Usuario se\n\t\t\t\tentenderá a cualquier persona de cualquier naturaleza que ingrese a{\" \"}\n\t\t\t\twww.contishop.com.mx y/o a cualquiera de las subpáginas\n\t\t\t\tque despliegan su contenido.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario sólo podrá imprimir y/o copiar cualquier información\n\t\t\t\tcontenida o publicada en www.contishop.com.mx{\" \"}\n\t\t\t\texclusivamente para su uso personal, no comercial. En caso de ser\n\t\t\t\tpersona moral se estará a lo dispuesto por el artículo 148, fracción IV\n\t\t\t\tde la Ley Federal del Derecho de Autor.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLa reimpresión, re publicación, distribución, asignación, sub licencia,\n\t\t\t\tventa, reproducción electrónica o por cualquier otro medio de cualquier\n\t\t\t\tinformación, documento o gráfico de o que aparezca en{\" \"}\n\t\t\t\twww.contishop.com.mx, en todo o en parte, para\n\t\t\t\tcualquier uso distinto al personal no comercial le está expresamente\n\t\t\t\tprohibido al Usuario, a menos que CONTINENTAL le haya otorgado su\n\t\t\t\tautorización previamente y por escrito.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCuando la conducta del Usuario sea contraria a los intereses de\n\t\t\t\tCONTINENTAL, éste se reserva el derecho de negar el servicio, cancelar\n\t\t\t\tenvíos y finiquitar cuentas o membrecías a su consideración, dejando a\n\t\t\t\tsalvo cualquier otra acción legal que pudiere corresponder.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe la información contenida en www.contishop.com.mx\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario reconoce y acepta que la información publicada o contenida en{\" \"}\n\t\t\t\twww.contishop.com.mx generada por CONTINENTAL o por los\n\t\t\t\tProveedores (según dicho término se define más adelante), será\n\t\t\t\tclaramente identificada de forma tal que se reconozca que la misma\n\t\t\t\tproviene de CONTINENTAL o de los Proveedores.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLas informaciones, conceptos y opiniones publicadas en{\" \"}\n\t\t\t\twww.contishop.com.mx no necesariamente reflejan la\n\t\t\t\tposición de CONTINENTAL ni de sus empleados, oficiales, directores,\n\t\t\t\taccionistas, licenciatarios y concesionarios (en lo sucesivo los\n\t\t\t\t\"Afiliados\"). Por esta razón, CONTINENTAL no se hace responsable por\n\t\t\t\tninguna de las informaciones, opiniones y conceptos que se emitan en{\" \"}\n\t\t\t\twww.contishop.com.mx o a través de los foros públicos o\n\t\t\t\tde cualquier otro espacio o servicio que se preste a través del sitio.\n\t\t\t\tAsimismo, CONTINENTAL, no se hace responsable de las consecuencias que\n\t\t\t\tse puedan derivar del uso de consejos, procedimientos, etc., incluidas\n\t\t\t\ten la página de Internet, en el entendido de que es bajo el propio\n\t\t\t\triesgo y responsabilidad del Usuario el uso y seguimiento a dichos\n\t\t\t\tconsejos, comentarios, procedimientos, tips, etc., que se den en los\n\t\t\t\tespacios referidos. CONTINENTAL se reserva el derecho de bloquear el\n\t\t\t\tacceso o remover en forma parcial o total, toda información,\n\t\t\t\tcomunicación o material que a su exclusivo juicio pueda resultar: (i)\n\t\t\t\tabusivo, difamatorio u obsceno, sexual, racial (ii) fraudulento,\n\t\t\t\tartificioso o engañoso, (iii) violatorio de derechos de autor, marcas o\n\t\t\t\tcualquier derecho de propiedad intelectual de un tercero, (iv) ofensivo\n\t\t\t\to (v) de cualquier forma contravenga lo establecido en este Convenio.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario reconoce que CONTINENTAL no trata de controlar o censurar\n\t\t\t\tpreviamente el contenido disponible en el sitio. Por tal motivo,\n\t\t\t\tCONTINENTAL no asume ninguna responsabilidad por el contenido provisto\n\t\t\t\tal sitio por proveedores independientes ajenos a CONTINENTAL.\n\t\t\t\tCONTINENTAL no tiene el control editorial sobre el contenido y quedará\n\t\t\t\texento de cualquier responsabilidad por información y/o material\n\t\t\t\tgenerado y/o provisto por terceros.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tTodas las opiniones, consejos, declaraciones, servicios, ofertas, u\n\t\t\t\totras informaciones o contenidos expresados o puestos a disposición del\n\t\t\t\tpúblico por terceros, pertenecen a su respectivo autor y CONTINENTAL no\n\t\t\t\tasume responsabilidad alguna frente a ello. CONTINENTAL no garantiza la\n\t\t\t\texactitud, veracidad, amplitud y/o utilidad de cualquier contenido\n\t\t\t\tprovisto por tales terceros. Adicionalmente, CONTINENTAL no es\n\t\t\t\tresponsable ni garantiza la exactitud, exhaustividad, veracidad y/o\n\t\t\t\tconfiabilidad de cualquier opinión, información, consejo o declaración\n\t\t\t\tprovistos por CONTINENTAL a través de su sitio. Bajo ninguna\n\t\t\t\tcircunstancia CONTINENTAL será responsable de cualquier daño y/o\n\t\t\t\tperjuicio, directo o indirecto, causado en virtud de la confianza del\n\t\t\t\tUsuario en información obtenida a través de este sitio.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL se reserva el derecho de suprimir o modificar el contenido\n\t\t\t\tdel sitio que, a exclusivo juicio de CONTINENTAL, no cumpla con los\n\t\t\t\testándares de CONTINENTAL o que pudiera resultar contrario al\n\t\t\t\tordenamiento jurídico vigente. Pero CONTINENTAL no será responsable por\n\t\t\t\tcualquier falla o tardanza que se genere al eliminar tal material.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn caso de duda, el cliente y/o Usuario podrá verificar la autenticidad\n\t\t\t\tde la liga, dirección electrónica o correo electrónico en la que le\n\t\t\t\tsoliciten información personal llamando a nuestro Centro de Atención\n\t\t\t\tTelefónica (CAT) al D.F. y del interior al 01 (55) 1500 0935 ó enviando\n\t\t\t\tun correo electrónico a la dirección ventas@contishop.com.mx o entrando\n\t\t\t\ta la página www.continentaltire.com.mx.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe las Políticas de Privacidad Sobre el Uso de Información\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tToda la Información Agregada e Información Personal que se obtenga del\n\t\t\t\tUsuario por el uso de www.contishop.com.mx,\n\t\t\t\tconstituirán una base de datos (en lo sucesivo \"Base de Datos\")\n\t\t\t\tpropiedad de CONTINENTAL, información que se almacena para protegerla y\n\t\t\t\tevitar su pérdida, uso indebido, o alteración. No obstante lo anterior,\n\t\t\t\tCONTINENTAL en ninguna forma garantiza su seguridad, ni que la misma\n\t\t\t\tpuede ser interceptada, reproducida o robada por terceros.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario reconoce y acepta que CONTINENTAL no obtiene la Información\n\t\t\t\tPersonal automáticamente, sino que requiere que el Usuario se la\n\t\t\t\tproporcione en forma directa a través de{\" \"}\n\t\t\t\twww.contishop.com.mx.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tQueda a la libre discreción del Usuario, sin responsabilidad para\n\t\t\t\tCONTINENTAL, proporcionar su Información Personal. En caso de que el\n\t\t\t\tUsuario decida enviar Información Personal a través de los medios\n\t\t\t\tdispuestos para tal efecto, el Usuario, para efectos de lo dispuesto en\n\t\t\t\tel artículo 76bis de la Ley Federal de Protección al Consumidor, otorga\n\t\t\t\tsu consentimiento expreso de manera electrónica, para que CONTINENTAL\n\t\t\t\tutilice, difunda y/o transmita su información a terceras personas, sin\n\t\t\t\tsu previo consentimiento. Asimismo, para efectos de lo dispuesto en los\n\t\t\t\tartículo 16, 18 y 18bis de la Ley Federal de Protección al Consumidor,\n\t\t\t\tel Usuario otorga su consentimiento expreso y aceptación para recibir\n\t\t\t\tinformación con carácter o fines mercadotécnicos o publicitarios.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn cualquier caso, el Usuario faculta a CONTINENTAL, de la forma más\n\t\t\t\tamplia que legalmente proceda para utilizar la Información Personal y\n\t\t\t\tAgregada del Usuario:\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    1. \n\t\t\t\t\t-a fin de resolver controversias o disputas relacionadas con{\" \"}\n\t\t\t\t\twww.contishop.com.mx y violaciones al presente\n\t\t\t\t\tConvenio:\n\t\t\t\t
    2. \n\t\t\t\t
    3. -para posibilitar a CONTINENTAL que opere correctamente; y
    4. \n\t\t\t\t
    5. \n\t\t\t\t\t-en los casos que la ley así lo requiera. El Usuario faculta a\n\t\t\t\t\tCONTINENTAL, de la forma más amplia que legalmente proceda, así como a\n\t\t\t\t\tProveedores y Asesores (según se definen más adelante) y demás\n\t\t\t\t\tterceros con quien contrate, a utilizar la Información Personal e\n\t\t\t\t\tInformación Agregada del Usuario, (incluyendo, sin limitación alguna,\n\t\t\t\t\tinformación sobre el número de ocasiones que ha visto y/o ingresado a\n\t\t\t\t\tlas ligas de otros sitios o páginas electrónicas a través de los\n\t\t\t\t\tanuncios y demás información que se publique en{\" \"}\n\t\t\t\t\twww.contishop.com.mx).\n\t\t\t\t
    6. \n\t\t\t
    \n\t\t\t

    \n\t\t\t\tDebido a que a través de www.contishop.com.mx se\n\t\t\t\trecopilan ciertos tipos de información acerca de los usuarios de este\n\t\t\t\tsitio y de los servicios que a través de él se ofrecen, es\n\t\t\t\timportantísimo para CONTINENTAL que el Usuario entienda plenamente\n\t\t\t\tnuestra política con respeto al uso de la información que reunimos. A\n\t\t\t\tcontinuación exponemos la política de privacidad, la cual, le explica\n\t\t\t\tqué información recopilamos, cómo la usamos y cómo puede corregirse o\n\t\t\t\tcambiarse.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL puede compartir información estadística agregada sobre el\n\t\t\t\tuso de www.contishop.com.mx con los usuarios del sitio\n\t\t\t\tde la Web, para adaptar mejor el contenido de la página a las\n\t\t\t\tnecesidades de los Usuarios, con el objeto de prevenirlos sobre los\n\t\t\t\tactos ilícitos que se cometen en los medios electrónicos.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCualquier cambio en las políticas sobre privacidad para{\" \"}\n\t\t\t\twww.contishop.com.mx, serán anunciadas aquí, de manera\n\t\t\t\tque usted siempre pueda saber qué información recogemos, cómo podríamos\n\t\t\t\tusar dicha información y si la revelaremos a alguien.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tPara realizar sus compras en línea o acceder a determinados servicios,\n\t\t\t\tdeberá registrar sus datos personales, proporcionar su dirección de\n\t\t\t\tcorreo electrónico y elegir una contraseña que le permitirá acceder a\n\t\t\t\ttodas aquellas zonas que requieran una identificación previa. El Usuario\n\t\t\t\treconoce que al proporcionar la información de carácter personal\n\t\t\t\trequerida en alguno de los servicios que se prestan en este sitio web,\n\t\t\t\totorga a CONTINENTAL, la autorización señalada en el artículo 109 de la\n\t\t\t\tLey Federal del Derecho de Autor. En todos los casos, el Usuario\n\t\t\t\tresponderá de la veracidad de la información proporcionada a\n\t\t\t\tCONTINENTAL.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn www.contishop.com.mx estamos especialmente\n\t\t\t\tpreocupados por la seguridad y por asegurar la confidencialidad de los\n\t\t\t\tdatos aportados por nuestros clientes. Por ello{\" \"}\n\t\t\t\twww.contishop.com.mx se compromete a acatar las\n\t\t\t\tdisposiciones de los artículos 16, 17, 18 bis, 76 bis de la Ley Federal\n\t\t\t\tde Protección al Consumidor. En el momento en que el Usuario se registre\n\t\t\t\ten nuestro servidor seguro o realice un pedido, sus datos personales,\n\t\t\t\tdomiciliarios, y los relativos a su forma de pago, serán incorporados a\n\t\t\t\tnuestra base de datos, utilizándose únicamente para tramitar el pedido,\n\t\t\t\tasí como para enviar información sobre ofertas y servicios que puedan\n\t\t\t\tresultar de su interés; si es que el Usuario así lo solicita. Por lo\n\t\t\t\tque, el envío por correo electrónico de promociones será mediante previa\n\t\t\t\tautorización del Usuario y se podrá dar de baja de este servicio, en el\n\t\t\t\tmomento que el Usuario así lo solicite dando clic en la liga\n\t\t\t\tcorrespondiente.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tConforme a nuestra garantía de seguridad y confidencialidad, en{\" \"}\n\t\t\t\twww.contishop.com.mx estamos especialmente interesados\n\t\t\t\ten ofrecer a nuestros clientes el más alto nivel de seguridad y proteger\n\t\t\t\tla confidencialidad de los datos que nos aportan. Por ello, las\n\t\t\t\ttransacciones comerciales son realizadas en un entorno de servidor\n\t\t\t\tseguro bajo protocolo SSL (Secure Socket Layer) y todas las\n\t\t\t\tcomunicaciones se transmiten encriptados,\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tPara efectos de validación y seguridad de la operación, CONTINENTAL\n\t\t\t\tpodrá solicitar en cualquier momento los documentos que avalen la\n\t\t\t\tautenticidad de la identidad del Usuario (identificación oficial,\n\t\t\t\tcomprobante de domicilio, entre otros documentos)\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe los horarios de Operación\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tRecepción de Pedidos.\n\t\t\t\t
    En el sitio www.contishop.com.mx las 24\n\t\t\t\t(veinticuatro) horas del día, los 365 (trescientos sesenta y cinco) días\n\t\t\t\tdel año.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tCobro en Línea. (A través del portal Bancomer en línea)\n\t\t\t\t\n\t\t\t\t
    En el sitio www.contishop.com.mx las 24\n\t\t\t\t(veinticuatro) horas del día, los 365 (trescientos sesenta y cinco) días\n\t\t\t\tdel año.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCobro en ventanilla.\n\t\t\t\t
    En los horarios establecidos por las sucursales Bancomer.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tVerificación de Pago en Ventanilla.\n\t\t\t\t
    De Lunes a Viernes de 9:00 a 12:00 hrs.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tProcesamiento de Pedidos.\n\t\t\t\t
    De Lunes a Viernes de 8:00 a 17:00 hrs.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tFacturación.\n\t\t\t\t
    De Lunes a Viernes de 8:00 a 17:00 hrs.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEnvío.\n\t\t\t\t
    De Lunes a Viernes de 9:00 a 18:00 hrs.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEntregas.\n\t\t\t\t
    Por Mensajería: De Lunes a Sábado de 9:00 a 18:00 hrs.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tPolíticas de entrega y costos de envío\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEntrega por mensajería:\n\t\t\t\t
    \n\t\t\t\tLos clientes que lo deseen, podrán recibir sus productos en el domicilio\n\t\t\t\tque definan para la entrega.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEs importante mencionarle que para poder cumplir con la entrega, es\n\t\t\t\tnecesario que la dirección de facturación y del destinatario contenga\n\t\t\t\tdatos completos.\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • No hacemos entregas en apartados postales.
    • \n\t\t\t\t
    • \n\t\t\t\t\tNo está disponible la entrega de órdenes en direcciones\n\t\t\t\t\tinternacionales.\n\t\t\t\t
    • \n\t\t\t\t
    • La factura se entrega junto con la mercancía.
    • \n\t\t\t
    \n\t\t\t

    Todas las entregas por mensajería son gratis.

    \n\t\t\t

    \n\t\t\t\tUna vez autorizado el cargo por el banco, se realizara una validación\n\t\t\t\tque puede tomar hasta 72 horas, si es rechazado se cancelara la\n\t\t\t\ttransacción y se reembolsara el pago en 5 días hábiles. Si el cargo es\n\t\t\t\tautorizado se comienza el proceso de envío de mercancía para entregar al\n\t\t\t\tcliente.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLos pedidos recibidos después de las 18:00 hrs y en días no hábiles,\n\t\t\t\tserán procesados al siguiente día hábil.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLa entrega de la mercancía se realizará en un período de 5 (cinco) días\n\t\t\t\thábiles una vez procesada la orden de compra, misma que estará sujeta a\n\t\t\t\tdisponibilidad de la mercancía.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLa entrega se realizará solamente al Usuario registrado, o a las\n\t\t\t\tpersonas autorizadas por él, previa presentación de identificación\n\t\t\t\toficial (Credencial de Elector, Licencia de Manejo, Pasaporte, Cartilla\n\t\t\t\tdel Servicio Militar Nacional), al domicilio registrado por el Usuario.\n\t\t\t\tEn el caso de que la entrega se haga a un tercero designado por el\n\t\t\t\tUsuario registrado, el mismo deberá presentar copia de identificación\n\t\t\t\toficial vigente del Usuario registrado, así como de la persona que\n\t\t\t\trecibirá la mercancía.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl personal de envíos de Continental Tire de México no esta autorizado\n\t\t\t\tpara realizar el montaje de las llantas.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn caso de que la orden de compra no se complete dentro del tiempo antes\n\t\t\t\tmencionado por diversas circunstancias de inventario, en las que se\n\t\t\t\tseñalan de manera enunciativa más no limitativa, la falta de inventario\n\t\t\t\ty/o el artículo se encuentre descontinuado, en ese caso CONTINENTAL\n\t\t\t\tpodrá regresar la cantidad pagada por el cliente en los términos y forma\n\t\t\t\tque convengan ambas Partes.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe las Cancelaciones\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tUna vez recibido el pago, el Usuario no podrá bajo ninguna circunstancia\n\t\t\t\tcancelar una orden; sin embargo, CONTINENTAL podrá cancelar una orden\n\t\t\t\tpor diversas circunstancias de inventario, en las que se señalan de\n\t\t\t\tmanera enunciativa más no limitativa, la falta de inventario y/o el\n\t\t\t\tartículo se encuentre descontinuado, en ese caso CONTINENTAL podrá\n\t\t\t\tregresar la cantidad pagada por el Usuario en los términos y forma que\n\t\t\t\tconvengan ambas partes.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tSi el Usuario así lo desea, podrá realizar la devolución del artículo\n\t\t\t\tbajo los términos que se enlistan en el apartado siguiente.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe las Garantías y Devoluciones\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tSi el Usuario desea hacer válida una garantía y/o realizar la devolución\n\t\t\t\tde un producto adquirido, ya sea porque este no fue de su entera\n\t\t\t\tsatisfacción o porque presenta alguna falla, el Usuario deberá contactar\n\t\t\t\ta CONTINENTAL a través del Centro de Atención Telefónica 01 (55) 1500\n\t\t\t\t0935 o al correo electrónico{\" \"}\n\t\t\t\t\n\t\t\t\t\tcontishop.mexico@conti.com.mx\n\t\t\t\t{\" \"}\n\t\t\t\to a través de{\" \"}\n\t\t\t\t\n\t\t\t\t\twww.continentaltire.mx\n\t\t\t\t\n\t\t\t\t, tomando en cuenta las siguientes consideraciones:\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn caso de devoluciones por un error atribuible a CONTINENTAL, no se\n\t\t\t\tcobrará cargo alguno al Usuario .\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tSi el Usuario manifiesta No-Conformidad de materiales o mano de obra,\n\t\t\t\tdeberá someterse al dictamen de un ajustador asignado por CONTINENTAL.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tSi la devolución obedece a un error del Usuario en la selección del\n\t\t\t\tproducto, el mismo deberá absorber los gastos que se generen por\n\t\t\t\tconcepto de envío y/o dictamen.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn caso de que proceda la devolución, CONTINENTAL podrá regresar la\n\t\t\t\tcantidad (Total o proporcional) pagada por el Usuario en los términos y\n\t\t\t\tforma que convengan ambas partes.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tPara más detalles de las políticas de garantía consultar…Documento\n\t\t\t\tadjunto. De garantías y Devoluciones.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe las Formas de Pago\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    1. \n\t\t\t\t\tAceptamos las siguientes tarjetas de crédito a través de Openpay:\n\t\t\t\t\t
        \n\t\t\t\t\t\t
      • VISA
      • \n\t\t\t\t\t\t
      • Mastercard
      • \n\t\t\t\t\t\t
      • American Express
      • \n\t\t\t\t\t
      \n\t\t\t\t\t

      \n\t\t\t\t\t\tAceptamos todas las tarjetas VISA, Mastercard o American Express emitidas en México.\n\t\t\t\t\t

      \n\t\t\t\t
    2. \n\t\t\t\t
    3. \n\t\t\t\t\tPaynet de Openpay (pago en cualquier establecimiento de la red de\n\t\t\t\t\tPaynet. Consultar establecimientos en el siguiente enlace.{\" \"}\n\t\t\t\t\t\n\t\t\t\t\t\twww.paynet.com.mx\n\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t
    4. \n\t\t\t
    \n\t\t\t

    \n\t\t\t\tContinental Tire de México, S.A. de C.V. se reserva el derecho de\n\t\t\t\tsolicitar documentos oficiales a sus clientes, como medio de validación\n\t\t\t\tal proceso de adquisición de productos a través de su sitio en Internet.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl número de orden que se asigna al realizar la transacción en el sitio\n\t\t\t\tde Internet de Continental Tire de México, S.A. de C.V. no implica la\n\t\t\t\taceptación de la transacción. En caso de tener algún problema con su\n\t\t\t\torden le será comunicado por correo electrónico o vía telefónica.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe los precios.\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLos precios publicados en www.contishop.com.mx son\n\t\t\t\texclusivos para este canal y no aplican con nuestros distribuidores y\n\t\t\t\tpueden cambiar sin previo aviso. Si por alguna razón el precio se\n\t\t\t\tencuentra en $ 0.00 ó $ 0.01, suplicamos nos realice una llamada a los\n\t\t\t\tteléfonos 01 (55) 1500 0935 donde uno de nuestros ejecutivos le atenderá\n\t\t\t\ty proporcionará el precio correcto del artículo.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tPor ninguna razón, se entenderá que aquellos productos que presentan\n\t\t\t\tprecio en $0.00 ó $0.01 no tengan precio o se regalen y los pedidos que\n\t\t\t\tse realicen bajo esta situación, serán cancelados sin previo aviso, sin\n\t\t\t\tninguna responsabilidad para Continental Tire de México, S.A. de C.V..\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDisponibilidad de mercancía y existencias.\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tTodos los productos que se ofrecen en el sitio de Internet de\n\t\t\t\tContinental Tire de México, S.A de C.V., se encuentran sujetos a\n\t\t\t\tdisponibilidad.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe los Derechos de Autor y Propiedad Industrial\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLos signos distintivos que de manera enunciativa más no limitativa son\n\t\t\t\tCONTINENTAL, EUZKADI, BARUM, GENERAL TIRE, y{\" \"}\n\t\t\t\twww.contishop.com.mx y sus logotipos, son marcas,\n\t\t\t\tnombres de dominio y/o nombres comerciales propiedad de sus respectivos\n\t\t\t\ttitulares protegidas por los tratados internacionales y leyes aplicables\n\t\t\t\ten materia de propiedad intelectual y derechos de autor.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLos derechos de autor sobre el contenido, organización, recopilación,\n\t\t\t\tcompilación, información, transferencias magnéticas o electrónicas,\n\t\t\t\tconversión digital, logotipos, fotografías, imágenes, programas,\n\t\t\t\taplicaciones, o en general cualquier información contenida o publicada\n\t\t\t\ten www.contishop.com.mx, se encuentran debidamente\n\t\t\t\tprotegidos a favor de CONTINENTAL, sus Afiliados, Proveedores y/o de sus\n\t\t\t\trespectivos propietarios, de conformidad con la legislación aplicable en\n\t\t\t\tmateria de propiedad intelectual e industrial.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tSe prohíbe expresamente al Usuario modificar, alterar o suprimir, ya sea\n\t\t\t\ten forma total o parcial, los avisos, marcas, nombres comerciales,\n\t\t\t\tseñas, anuncios, logotipos o en general cualquier indicación que se\n\t\t\t\trefiera a la propiedad de información contenida en{\" \"}\n\t\t\t\twww.contishop.com.mx\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn caso de que el Usuario transmita a CONTINENTAL cualquier información,\n\t\t\t\tprogramas, aplicaciones, software o en general cualesquier material que\n\t\t\t\trequiera ser licenciado a través de{\" \"}\n\t\t\t\twww.contishop.com.mx, el Usuario le otorga a\n\t\t\t\tCONTINENTAL en este acto, una licencia perpetua, universal, gratuita, no\n\t\t\t\texclusiva, mundial y libre de regalías, incluyendo entre los derechos\n\t\t\t\totorgados, el derecho de sublicenciar, vender, reproducir, distribuir,\n\t\t\t\ttransmitir, crear trabajos derivados, exhibirlos y ejecutarlos\n\t\t\t\tpúblicamente. Lo establecido en el inciso anterior se aplicará\n\t\t\t\tigualmente a cualquier otra información que el Usuario envíe o transmita\n\t\t\t\ta CONTINENTAL (incluyendo, sin limitación alguna, ideas para renovar o\n\t\t\t\tmejorar el sitio www.contishop.com.mx), sea que éstas\n\t\t\t\thayan sido incluidas en cualquier área de{\" \"}\n\t\t\t\twww.contishop.com.mx en virtud de otros medios o modos\n\t\t\t\tde transmisión ya conocidos o en el futuro desarrollados.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tPor lo anterior, el Usuario renuncia expresamente en este acto a\n\t\t\t\tintentar cualquier acción, demanda o reclamación en contra de\n\t\t\t\tCONTINENTAL, sus Afiliados o Proveedores por cualquier actual o eventual\n\t\t\t\tviolación de cualquier derecho de autor o propiedad intelectual derivado\n\t\t\t\tde la información, programas, aplicaciones, software, ideas y demás\n\t\t\t\tmaterial que el propio Usuario envíe a{\" \"}\n\t\t\t\twww.contishop.com.mx\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEs nuestra política actuar contra las violaciones que en materia de\n\t\t\t\tPropiedad Intelectual se pudieran generar u originar según lo estipulado\n\t\t\t\ten la legislación aplicable y en otras leyes de propiedad intelectual\n\t\t\t\taplicables, incluyendo la eliminación o el bloqueo del acceso a material\n\t\t\t\tque se encuentra sujeto a actividades que infrinjan el derecho de\n\t\t\t\tpropiedad intelectual, de terceros.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tPara reportar cualquier infracción sobre los contenidos de la página\n\t\t\t\tweb, por favor contacte a:\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tAt´n. Guillermo Alagón:\n\t\t\t\t
    e-mail: guillermo.alagon@conti.com.mx\n\t\t\t\t
    DIRECCION COMPLETA Av. Santa Fe No. 170 7 piso Col. Lomas de\n\t\t\t\tSanta Fe C.P. 01210 México D.F.\n\t\t\t\t
    Teléfono y Fax: 52 (55) 1500 0917 Fax 52 (55) 1500 6725\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn el caso de que algún Usuario o un tercero consideren que cualquiera\n\t\t\t\tde los Contenidos que se encuentren o sean introducidos en{\" \"}\n\t\t\t\twww.contishop.com.mx y/o cualquiera de sus Servicios,\n\t\t\t\tviolen sus derechos de propiedad intelectual, deberán enviar una\n\t\t\t\tnotificación a www.contishop.com.mx, a la dirección que\n\t\t\t\tarriba aparece, en la que indiquen, cuando menos:\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • \n\t\t\t\t\tLos datos personales verídicos (nombre, dirección, número de teléfono\n\t\t\t\t\ty dirección de correo electrónico del reclamante)\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tLa firma autógrafa con los datos personales del titular de los\n\t\t\t\t\tderechos de propiedad intelectual\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tLa indicación precisa y completa del (los)Contenido(s) protegido(s)\n\t\t\t\t\tmediante los derechos de propiedad intelectual supuestamente\n\t\t\t\t\tinfringidos, así como de su localización en{\" \"}\n\t\t\t\t\twww.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tUna declaración expresa y clara de que la introducción del (los)\n\t\t\t\t\tContenido(s) indicado(s) se ha realizado sin el consentimiento del\n\t\t\t\t\ttitular de los derechos de propiedad intelectual supuestamente\n\t\t\t\t\tinfringidos\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tUna declaración expresa, clara y bajo la responsabilidad del\n\t\t\t\t\treclamante de que la información proporcionada en la notificación es\n\t\t\t\t\texacta y de que la introducción del (los) Contenido(s) constituye una\n\t\t\t\t\tviolación de sus derechos de propiedad intelectual\n\t\t\t\t
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDel Material Publicitario\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario reconoce y acepta que CONTINENTAL es una organización\n\t\t\t\tindependiente de terceros patrocinadores y anunciantes cuya información,\n\t\t\t\timágenes, anuncios y demás material publicitario o promocional (el\n\t\t\t\t\"Material Publicitario\") pudiera estar publicado en{\" \"}\n\t\t\t\twww.contishop.com.mx\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario reconoce y acepta que el Material Publicitario no forma parte\n\t\t\t\tdel contenido principal que, se publica en{\" \"}\n\t\t\t\twww.contishop.com.mx. Asimismo, el Usuario reconoce y\n\t\t\t\tacepta en este acto, que el Material Publicitario se encuentra protegido\n\t\t\t\tpor las leyes que en materia de propiedad intelectual e industrial\n\t\t\t\tresulten aplicables.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tNegación de Garantías.\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario está de acuerdo que el uso de{\" \"}\n\t\t\t\twww.contishop.com.mx se realiza bajo su propio riesgo,\n\t\t\t\tque los servicios y productos que se prestan y ofrecen en{\" \"}\n\t\t\t\twww.contishop.com.mx se prevén sobre una base \"tal\n\t\t\t\tcual\" y \"según sean disponibles\".\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL no garantiza que www.contishop.com.mx{\" \"}\n\t\t\t\tsatisfaga los requerimientos del Usuario, o que los servicios de{\" \"}\n\t\t\t\twww.contishop.com.mx se mantengan siempre\n\t\t\t\tininterrumpidos, en tiempo, seguros o libres de errores.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tLa información contenida y/o publicada a través de{\" \"}\n\t\t\t\twww.contishop.com.mx sirve para fines exclusivamente de\n\t\t\t\tinformación general sobre productos o servicios comercializados por\n\t\t\t\tCONTINENTAL. Las opiniones, comentarios, referencias, indicaciones o\n\t\t\t\tconsejos contenidos en www.contishop.com.mx, aún y\n\t\t\t\tcuando son emitidas por profesionales de diversas materias, no se\n\t\t\t\tencaminan a sustituir el consejo o asesoría personalizada y\n\t\t\t\tespecializada por profesionales, de conformidad con las necesidades\n\t\t\t\tespecificas del Usuario. Queda bajo la absoluta responsabilidad del\n\t\t\t\tUsuario la aplicación, uso o interpretación de cualquier opinión,\n\t\t\t\tprocedimiento, tips, etc., publicada en o a través de{\" \"}\n\t\t\t\twww.contishop.com.mx.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL no asume responsabilidad alguna por la forma en que el\n\t\t\t\tUsuario emplee la información contenida o publicada en o a través de{\" \"}\n\t\t\t\twww.contishop.com.mx\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL no garantiza o avala en ninguna forma la veracidad,\n\t\t\t\tprecisión, legalidad, moralidad o ninguna otra característica del\n\t\t\t\tcontenido del material que se publique en{\" \"}\n\t\t\t\twww.contishop.com.mx CONTINENTAL se libera de cualquier\n\t\t\t\tresponsabilidad y condiciones, tanto expresas como implícitas, en\n\t\t\t\trelación con los servicios e información contenida o disponible en o a\n\t\t\t\ttravés de www.contishop.com.mx, incluyendo, sin\n\t\t\t\tlimitación alguna:\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • \n\t\t\t\t\tLa disponibilidad de uso de www.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tLa ausencia de virus, errores, desactivadores o cualesquier otro\n\t\t\t\t\tmaterial contaminante o con funciones destructivas en la información o\n\t\t\t\t\tprogramas disponibles en o a través de{\" \"}\n\t\t\t\t\twww.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tEn general cualquier falla en www.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\tNo obstante lo anterior, CONTINENTAL o sus proveedores podrán actualizar\n\t\t\t\tel contenido de www.contishop.com.mx constantemente,\n\t\t\t\tpor lo que se pide al Usuario tomar en cuenta que, alguna información\n\t\t\t\tpublicitada o contenida en o a través de{\" \"}\n\t\t\t\twww.contishop.com.mx puede haber quedado obsoleta y/o\n\t\t\t\tcontener imprecisiones o errores tipográficos u ortográficos.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tLimite de Responsabilidades.\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tHasta el máximo permitido por las leyes aplicables, CONTINENTAL no será\n\t\t\t\tresponsable, en ningún caso, por cualquier daño directo, especial,\n\t\t\t\tincidental, indirecto, o consecuencia que en cualquier forma se deriven\n\t\t\t\to se relacionen con:\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • \n\t\t\t\t\tEl uso o ejecución de www.contishop.com.mx con el\n\t\t\t\t\tretraso o falta de disponibilidad de uso de{\" \"}\n\t\t\t\t\twww.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tLa proveeduría de o falta de proveeduría de servicios de cualesquier\n\t\t\t\t\tinformación o gráficos contenidos o publicados en o a través de{\" \"}\n\t\t\t\t\twww.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • De la actualización o falta de actualización de la información
    • \n\t\t\t\t
    • \n\t\t\t\t\tQue la información haya sido alterada o modificada, en todo o en\n\t\t\t\t\tparte, luego de haber sido incluída en{\" \"}\n\t\t\t\t\twww.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tCualquier otro aspecto o característica de la información contenida o\n\t\t\t\t\tpublicada en www.contishop.com.mx o a través de las\n\t\t\t\t\tligas que eventualmente se incluyan en el mismo\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tLa proveeduría o falta de proveeduría que los demás servicios\n\t\t\t\t\testablecidos en el presente contrato.{\" \"}\n\t\t\t\t
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\tTodos los supuestos anteriores serán vigentes, aún en los casos en que\n\t\t\t\tse le hubiere notificado o avisado a CONTINENTAL acerca de la\n\t\t\t\tposibilidad de que se ocasionaran dichos daños.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tEn el caso de uso de tarjetas robadas\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL no se hace responsable por la utilización de tarjetas de\n\t\t\t\tcrédito reportadas como robadas, una vez que la transacción ha sido\n\t\t\t\t autorizada por el banco emisor. CONTINENTAL y sus empresas\n\t\t\t\tfiliales y subsidiarias, no tiene posibilidad de negar la venta cuando\n\t\t\t\tlos datos del Usuario coinciden con nuestros registros. La clave de\n\t\t\t\tacceso, contraseña y número de tarjeta de crédito quedan completamente\n\t\t\t\tbajo responsabilidad del Usuario o propietario. No se hará ninguna\n\t\t\t\tbonificación por compra fraudulenta.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tUso de productos\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCualquier uso de los productos adquiridos en nuestro sitio es\n\t\t\t\tresponsabilidad completa del Usuario. CONTINENTAL no acepta ninguna\n\t\t\t\trelación y/o responsabilidad por cualquier evento que se derive del uso\n\t\t\t\tde los productos adquiridos en www.contishop.com.mx.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tUna vez entregados los productos al Usuario, este será el único\n\t\t\t\tresponsable del buen uso de los mismos.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tControl Parental\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tPara hacer uso del sitio y de los Servicios, los menores de edad deben\n\t\t\t\tobtener previamente permiso de sus padres, tutores o representantes\n\t\t\t\tlegales, quienes serán considerados responsables de todos los actos\n\t\t\t\trealizados por los menores a su cargo. La plena responsabilidad en la\n\t\t\t\tdeterminación de los contenidos y Servicios a los que acceden los\n\t\t\t\tmenores de edad corresponde a los mayores a cuyo cargo se encuentran.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tRecomendaciones y Precauciones\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • \n\t\t\t\t\tNo escriba su Usuario y/0 Contraseña en lugares de fácil acceso.\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tDesconectar siempre la sesión del navegador después de haber accedido\n\t\t\t\t\ta una zona de seguridad o de haber introducido al sistema el Usuario o\n\t\t\t\t\tcontraseña.\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tNunca solicitamos información personal a través del correo\n\t\t\t\t\telectrónico, por lo que se recomienda al Usuario no proporcionar\n\t\t\t\t\tningún tipo de información que le sea solicitada por este medio.\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tPara realizar cualquier compra u operación se requiere firmarse a la\n\t\t\t\t\tpágina con el Usuario y contraseña que el Usuario registró.{\" \"}\n\t\t\t\t
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\tSi en algún momento tiene problemas para acceder a alguna parte de\n\t\t\t\tnuestro sitio, puede deberse al modelo o versión de su navegador y/o\n\t\t\t\tsistema operativo o a la configuración de las opciones de los mismos.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEn caso de duda, el cliente y/o Usuario podrá verificar la autenticidad\n\t\t\t\tde la liga, dirección electrónica o correo electrónico en la que le\n\t\t\t\tsoliciten información personal llamando a nuestro Centro de Atención\n\t\t\t\tTelefónica (CAT)   D.F. y del interior al 01 (55) 1500 0935 ó\n\t\t\t\tenviando un correo electrónico a la dirección{\" \"}\n\t\t\t\t\n\t\t\t\t\tcontishop.mexico@contishop.com.mx\n\t\t\t\t{\" \"}\n\t\t\t\to accediendo a la página{\" \"}\n\t\t\t\t\n\t\t\t\t\twww.continentaltire.mx\n\t\t\t\t\n\t\t\t\t.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario es el único responsable de mantener confidencial la\n\t\t\t\tcontraseña, números de cuenta, información personal de identificación y\n\t\t\t\totros datos que se soliciten u obtengan a través del sitio y es\n\t\t\t\tresponsable del uso que se le dé a su computadora y a la navegación de\n\t\t\t\tsitios ajenos a www.contishop.com.mx que puedan\n\t\t\t\tcomprometer la seguridad e integridad de la información contenida en su\n\t\t\t\tequipo de cómputo.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL no se hace responsable de errores del cliente o Usuario o\n\t\t\t\tnegligencia al usar los Servicios que se ofrecen a través del sitio y no\n\t\t\t\tcubre pérdidas ocasionadas por:\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • Errores de captura o el uso indebido del servicio.
    • \n\t\t\t\t
    • \n\t\t\t\t\tNegligencia en el manejo o compartir la contraseña que ocasione\n\t\t\t\t\taccesos no autorizados a cuentas.\n\t\t\t\t
    • \n\t\t\t\t
    • Dejar la computadora sin atención durante una sesión en línea.
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe las Modificaciones a www.contishop.com.mx\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL podrá en cualquier momento y cuando lo considere\n\t\t\t\tconveniente, sin necesidad de aviso al Usuario, realizar correcciones,\n\t\t\t\tadiciones, mejoras o modificaciones al contenido, presentación,\n\t\t\t\tinformación, servicios, áreas, bases de datos y demás elementos de{\" \"}\n\t\t\t\twww.contishop.com.mx sin que ello de lugar ni derecho a\n\t\t\t\tninguna reclamación o indemnización, ni que lo mismo implique\n\t\t\t\treconocimiento de responsabilidad alguna a favor del Usuario.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL se reserva el derecho de modificar los términos y\n\t\t\t\tcondiciones de éste Convenio en cualquier tiempo, siendo efectivas\n\t\t\t\tdichas modificaciones de forma inmediata:\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • \n\t\t\t\t\tPor la publicación en www.contishop.com.mx del\n\t\t\t\t\tConvenio modificado ó\n\t\t\t\t
    • \n\t\t\t\t
    • Por la notificación al Usuario sobre dichas modificaciones.
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\tEl Usuario está de acuerdo en revisar este Convenio periódicamente a fin\n\t\t\t\tde estar al tanto de dichas modificaciones. No obstante lo anterior,\n\t\t\t\tcada ocasión que el Usuario accede a{\" \"}\n\t\t\t\twww.contishop.com.mx se considerará como aceptación\n\t\t\t\tabsoluta a las modificaciones del Convenio.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tOcasionalmente, CONTINENTAL podrá adicionar los términos y condiciones\n\t\t\t\tdel presente Convenio con provisiones adicionales relativas a áreas\n\t\t\t\tespecíficas o nuevos servicios que se proporcionen en o a través de{\" \"}\n\t\t\t\twww.contishop.com.mx (\"Términos Adicionales\"), los\n\t\t\t\tcuales serán publicados en las áreas específicas o nuevos servicios de{\" \"}\n\t\t\t\twww.contishop.com.mx para su lectura y aceptación. El\n\t\t\t\tUsuario reconoce y acepta que dichos Términos Adicionales forman parte\n\t\t\t\tintegrante del presente Convenio para todos los efectos legales a que\n\t\t\t\thaya lugar.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe la Cesión de Derechos\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL podrá, en cualquier tiempo y cuando así lo estime\n\t\t\t\tconveniente, ceder total o parcialmente sus derechos y obligaciones\n\t\t\t\tderivados del presente Convenio. En virtud de dicha cesión, CONTINENTAL\n\t\t\t\tquedará liberado de cualquier obligación a favor del Usuario establecida\n\t\t\t\ten el presente convenio.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe las Indemnizaciones\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl Usuario está de acuerdo en indemnizar a CONTINENTAL, sus Afiliados,\n\t\t\t\tProveedores, Vendedores y Asesores de cualquier acción, demanda o\n\t\t\t\treclamación (incluso de honorarios de abogados y de costas judiciales)\n\t\t\t\tderivadas de cualesquier incumplimiento por parte del Usuario al\n\t\t\t\tpresente Convenio, incluyendo, sin limitación de alguna de las\n\t\t\t\tderivadas:\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • \n\t\t\t\t\tDe cualquier aspecto relativo al uso de{\" \"}\n\t\t\t\t\twww.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tDe la información contenida o disponible en o a través de{\" \"}\n\t\t\t\t\twww.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tDe injurias, difamación o cualesquier otra conducta violatoria del\n\t\t\t\t\tpresente convenio por parte del Usuario en el uso de{\" \"}\n\t\t\t\t\twww.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t\t
    • \n\t\t\t\t\tDe violación a las leyes aplicables o tratados internacionales\n\t\t\t\t\trelativos a los derechos de autor o propiedad intelectual, contenidos\n\t\t\t\t\to disponibles en, o a través de www.contishop.com.mx\n\t\t\t\t
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe la Terminación del presente contrato\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tCONTINENTAL se reserva el derecho, a su exclusiva discreción, y sin\n\t\t\t\tnecesidad de aviso o notificación al Usuario, para:\n\t\t\t

    \n\t\t\t
      \n\t\t\t\t
    • Terminar definitivamente el presente Convenio
    • \n\t\t\t\t
    • \n\t\t\t\t\tDescontinuar o dejar de publicar definitivamente{\" \"}\n\t\t\t\t\twww.contishop.com.mx sin responsabilidad alguna para\n\t\t\t\t\tCONTINENTAL, sus Afiliados o Proveedores\n\t\t\t\t
    • \n\t\t\t
    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tDe la Vigencia\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\t\n\t\t\t\t\tArriba\n\t\t\t\t\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEstos términos y condiciones, así como los Términos Adicionales\n\t\t\t\tconstituyen el acuerdo íntegro entre las partes, y sustituye cualquier\n\t\t\t\totro acuerdo o convenio celebrado con anterioridad. Cualesquier cláusula\n\t\t\t\to provisión del presente Convenio así como de los Términos Adicionales,\n\t\t\t\tlegalmente declarada inválida, será eliminada o modificada, a elección\n\t\t\t\tde CONTINENTAL, a fin de corregir su vicio o defecto. Sin embargo, el\n\t\t\t\tresto de las cláusulas o provisiones mantendrán su fuerza,\n\t\t\t\tobligatoriedad y validez.\n\t\t\t

    \n\t\t\t

    \n\t\t\t\tEl presente convenio tendrá un vigencia indefinida y obligatoria para\n\t\t\t\tambas Partes; no obstante lo anterior, CONTINENTAL se reserva el derecho\n\t\t\t\tde modificar en cualquier momento su contenido, así como de terminar la\n\t\t\t\tvigencia del mismo sin necesidad de previo aviso o declaración judicial\n\t\t\t\talguna.\n\t\t\t

    \n\t\t
    \n\t);\n}\n","import App from \"components/App\";\nimport Confirmation from \"components/account/Confirmation\";\nimport Terms from \"components/account/Terms\";\nimport { fetchCodeTiresList } from \"./tireResults/codeTiresSlice\";\nimport { fetchBannersList } from \"./banners/bannersSlice\";\nimport { fetchActivation } from \"./account/activationSlice\";\nimport { fetchSizeStringTireList } from \"./tireResults/sizeTiresSlice\";\nimport { fetchSizeSaeStringTireList } from \"./tireResults/sizeSaeTiresSlice\";\n\nconst routes = [\n\t{\n\t\tpath: \"/confirmacion\",\n\t\tcomponent: Confirmation,\n\t\texact: true,\n\t},\n\t{\n\t\tpath: \"/terminos\",\n\t\tcomponent: Terms,\n\t\texact: true,\n\t},\n\t{\n\t\tpath: [\n\t\t\t\"/eventos/:eventKey\",\n\t\t\t\"/product/:productid\",\n\t\t\t\"/llanta/:productcode/:brand/:vehicletype/:product/:s1/:s2\",\n\t\t\t\"/llanta/:productcode/:brand/:vehicletype/:product/:s1\",\n\t\t\t\"/llantas/:searchtype/:vehicletype/:s1/:s2\",\n\t\t\t\"/llantas/:searchtype/:vehicletype/:s1\",\n\t\t\t\"/order/:orderId\",\n\t\t\t\"/activacion\",\n\t\t\t\"/\",\n\t\t],\n\t\tcomponent: App,\n\t\tloadData: (store, match, query) => {\n\t\t\tconst promises = [];\n\t\t\tconst { productcode, searchtype, vehicletype, s1, s2, orderId } =\n\t\t\t\tmatch.params;\n\t\t\tif (productcode != null) {\n\t\t\t\tpromises.push(store.dispatch(fetchCodeTiresList(productcode)));\n\t\t\t}\n\t\t\tif (query != null && query.key != null) {\n\t\t\t\tpromises.push(store.dispatch(fetchActivation(query.key)));\n\t\t\t}\n\t\t\tif (orderId != null) {\n\t\t\t\tpromises.push(\n\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\tsetTimeout(resolve, 3000);\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (searchtype != null && searchtype === \"medida\") {\n\t\t\t\tif (s2 != null) {\n\t\t\t\t\tpromises.push(\n\t\t\t\t\t\tstore.dispatch(fetchSizeStringTireList(vehicletype, s1 + \"/\" + s2))\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tpromises.push(\n\t\t\t\t\t\tstore.dispatch(fetchSizeSaeStringTireList(vehicletype, s1))\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpromises.push(store.dispatch(fetchBannersList()));\n\t\t\treturn Promise.all(promises);\n\t\t},\n\t},\n];\n\nexport default routes;\n","import React from \"react\";\nimport { useHistory, useLocation } from \"react-router\";\nimport TermsDisclaimer from \"./TermsDisclaimer\";\n\nexport default function Terms() {\n\t// History\n\tconst history = useHistory();\n\tconst location = useLocation();\n\t// Handlers\n\tfunction handleClick() {\n\t\tif (location != \"/\"){\n\t\t\thistory.push(\"/\");\n\t\t}\n\t}\n\t// Render\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t {\"<\"}\tRegresar\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{\"<\"}\tRegresar\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React, { useEffect } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Home from \"components/home/Home\";\nimport { runAuthenticatedActions } from \"features/account/loginSlice\";\nimport { fetchSearch } from \"features/tireFinder/searchSlice\";\nimport { hideHighlightsTiresList } from \"features/tireResults/highlightsTiresSlice\";\nimport {\n\tsetOrderConfirmationId,\n\tfetchOrderConfirmation,\n} from \"features/orders/orderConfirmationSlice\";\nimport { fetchVehicleBrandsIfNeeded } from \"features/tireFinder/vehicleBrandsSlice\";\nimport { fetchWidthDiametersIfNeeded } from \"features/tireFinder/sizeWidthDiametersSlice\";\nimport { fetchHighlightsTiresListIfNeeded } from \"features/tireResults/highlightsTiresSlice\";\nimport { fetchStatesIfNeeded } from \"features/account/statesSlice\";\nimport { fetchSearchIfNeeded } from \"features/tireFinder/searchSlice\";\nimport { fetchBannersListIfNeeded } from \"features/banners/bannersSlice\";\nimport { fetchCodeTiresListIfNeeded } from \"features/tireResults/codeTiresSlice\";\nimport { fetchCartObjectIfNeeded } from \"features/cart/cartSlice\";\nimport { fetchCfdiRegimeList } from \"features/cfdi/cfdiRegimeSlice\";\nimport { fetchCfdiUsoList } from \"features/cfdi/cfdiUsoSlice\";\n\nfunction App(props) {\n\tconst dispatch = useDispatch();\n\t// Selectors\n\tconst { authenticated, checked } = useSelector((state) => state.session);\n\t// On load\n\tuseEffect(() => {\n\t\tif (checked) {\n\t\t\tdispatch(fetchVehicleBrandsIfNeeded());\n\t\t\tdispatch(fetchWidthDiametersIfNeeded());\n\t\t\tdispatch(fetchHighlightsTiresListIfNeeded());\n\t\t\tdispatch(fetchStatesIfNeeded());\n\t\t\tdispatch(fetchSearchIfNeeded());\n\t\t\tdispatch(fetchBannersListIfNeeded());\n\t\t\tdispatch(fetchCartObjectIfNeeded());\n\t\t\tdispatch(fetchCfdiRegimeList());\n\t\t\tdispatch(fetchCfdiUsoList());\n\t\t\tif (authenticated) {\n\t\t\t\tdispatch(runAuthenticatedActions());\n\t\t\t}\n\t\t}\n\t\tconst { params } = props.match;\n\t\tif (params != null) {\n\t\t\tif (params.productId != null) {\n\t\t\t\tdispatch(fetchSearch(params.productId));\n\t\t\t\tdispatch(hideHighlightsTiresList({ hide: true }));\n\t\t\t}\n\t\t\tif (params.productcode != null) {\n\t\t\t\tdispatch(fetchCodeTiresListIfNeeded(params.productcode));\n\t\t\t\tdispatch(hideHighlightsTiresList({ hide: true }));\n\t\t\t}\n\t\t\tif (params.orderId != null) {\n\t\t\t\tdispatch(setOrderConfirmationId({ orderId: params.orderId }));\n\t\t\t\tdispatch(fetchOrderConfirmation());\n\t\t\t}\n\t\t}\n\t}, [dispatch, props.match, checked, authenticated]);\n\treturn ;\n}\n\nexport default App;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nconst initialState = {\n\tisOpenTerms: false,\n};\n\nconst footer = createSlice({\n\tname: \"footer\",\n\tinitialState,\n\treducers: {\n\t\ttoggleShowTerms(state, action) {\n\t\t\tstate.isOpenTerms = !action.payload.isOpenTerms;\n\t\t},\n\t},\n});\n\nexport const { toggleShowTerms } = footer.actions;\n\nexport default footer.reducer;\n","import { combineReducers } from \"redux\";\nimport { sessionReducer } from \"redux-react-session\";\nimport { connectRouter } from \"connected-react-router\";\n\nimport accountReducer from \"./account/accountSlice\";\nimport accountCardAddReducer from \"./account/accountCardAddSlice\";\nimport accountCardEditReducer from \"./account/accountCardEditSlice\";\nimport accountCardsReducer from \"./account/accountCardsSlice\";\nimport accountEditReducer from \"./account/accountEditSlice\";\nimport activationReducer from \"./account/activationSlice\";\nimport alertReducer from \"./alerts/alertsSlice\";\nimport bannersReducer from \"./banners/bannersSlice\";\nimport cartReducer from \"./cart/cartSlice\";\nimport cfdiRegimeReducer from \"./cfdi/cfdiRegimeSlice\";\nimport cfdiUsoReducer from \"./cfdi/cfdiUsoSlice\";\nimport citiesReducer from \"./account/citiesSlice\";\nimport codeTiresReducer from \"./tireResults/codeTiresSlice\";\nimport contactReducer from \"./contact/contactSlice\";\nimport countiesReducer from \"./account/countiesSlice\";\nimport dealerShipAddressReducer from \"./cart/dealerShipAddressSlice\";\nimport footerReducer from \"./account/footerSlice\";\nimport highlightsTiresReducer from \"./tireResults/highlightsTiresSlice\";\nimport invoiceAddressReducer from \"./account/invoiceAddressSlice\";\nimport invoiceAddressEditReducer from \"./account/invoiceAddressEditSlice\";\nimport loginReducer from \"./account/loginSlice\";\nimport neighborhoodsReducer from \"./account/neighborhoodsSlice\";\nimport ordersReducer from \"./orders/ordersSlice\";\nimport orderConfirmationReducer from \"./orders/orderConfirmationSlice\";\nimport paymentCardReducer from \"./cart/paymentCardSlice\";\nimport registerReducer from \"./account/registerSlice\";\nimport resetPasswordReducer from \"./account/resetPasswordSlice\";\nimport searchReducer from \"./tireFinder/searchSlice\";\nimport searchTiresReducer from \"./tireResults/searchTiresSlice\";\nimport sendConfirmationReducer from \"./account/confirmationSlice\";\nimport shipAddressReducer from \"./account/shipAddressSlice\";\nimport shipAddressEditReducer from \"./account/shipAddressEditSlice\";\nimport sizeCanvasReducer from \"./tireFinder/sizeCanvasSlice\";\nimport sizeWidthDiametersReducer from \"./tireFinder/sizeWidthDiametersSlice\";\nimport sizeRatiosReducer from \"./tireFinder/sizeRatiosSlice\";\nimport sizeRimsReducer from \"./tireFinder/sizeRimsSlice\";\nimport sizeTiresReducer from \"./tireResults/sizeTiresSlice\";\nimport sizeSaeWidthsReducer from \"./tireFinder/sizeSaeWidthsSlice\";\nimport sizeSaeRimsReducer from \"./tireFinder/sizeSaeRimsSlice\";\nimport sizeSaeTiresReducer from \"./tireResults/sizeSaeTiresSlice\";\nimport statesReducer from \"./account/statesSlice\";\nimport vehicleTypeReducer from \"./tireFinder/vehicleTypeSlice\";\nimport vehicleTiresReducer from \"./tireResults/vehicleTiresSlice\";\nimport vehicleBrandsReducer from \"./tireFinder/vehicleBrandsSlice\";\nimport vehicleModelsReducer from \"./tireFinder/vehicleModelsSlice\";\nimport vehicleYearsReducer from \"./tireFinder/vehicleYearsSlice\";\nimport vehicleVersionsReducer from \"./tireFinder/vehicleVersionsSlice\";\nimport zipCodesReducer from \"./account/zipCodesSlice\";\n\nconst createRootReducer = (history) =>\n\tcombineReducers({\n\t\taccount: accountReducer,\n\t\taccountCardAdd: accountCardAddReducer,\n\t\taccountCardEdit: accountCardEditReducer,\n\t\taccountCards: accountCardsReducer,\n\t\taccountEdit: accountEditReducer,\n\t\tactivation: activationReducer,\n\t\talert: alertReducer,\n\t\tbanners: bannersReducer,\n\t\tcart: cartReducer,\n\t\tcfdiRegime: cfdiRegimeReducer,\n\t\tcfdiUso: cfdiUsoReducer,\n\t\tcities: citiesReducer,\n\t\tcodeTires: codeTiresReducer,\n\t\tcontact: contactReducer,\n\t\tcounties: countiesReducer,\n\t\tdealerShipAddress: dealerShipAddressReducer,\n\t\tfooter: footerReducer,\n\t\thighlightsTires: highlightsTiresReducer,\n\t\tinvoiceAddress: invoiceAddressReducer,\n\t\tinvoiceAddressEdit: invoiceAddressEditReducer,\n\t\tlogin: loginReducer,\n\t\tneighborhoods: neighborhoodsReducer,\n\t\torders: ordersReducer,\n\t\torderConfirmation: orderConfirmationReducer,\n\t\tpaymentCard: paymentCardReducer,\n\t\tregister: registerReducer,\n\t\tresetPassword: resetPasswordReducer,\n\t\trouter: connectRouter(history),\n\t\tsearch: searchReducer,\n\t\tsearchTires: searchTiresReducer,\n\t\tsendConfirmation: sendConfirmationReducer,\n\t\tsession: sessionReducer,\n\t\tshipAddress: shipAddressReducer,\n\t\tshipAddressEdit: shipAddressEditReducer,\n\t\tsizeCanvas: sizeCanvasReducer,\n\t\tsizeWidthDiameters: sizeWidthDiametersReducer,\n\t\tsizeRatios: sizeRatiosReducer,\n\t\tsizeRims: sizeRimsReducer,\n\t\tsizeTires: sizeTiresReducer,\n\t\tsizeSaeWidths: sizeSaeWidthsReducer,\n\t\tsizeSaeRims: sizeSaeRimsReducer,\n\t\tsizeSaeTires: sizeSaeTiresReducer,\n\t\tstates: statesReducer,\n\t\tvehicleType: vehicleTypeReducer,\n\t\tvehicleTires: vehicleTiresReducer,\n\t\tvehicleBrands: vehicleBrandsReducer,\n\t\tvehicleModels: vehicleModelsReducer,\n\t\tvehicleYears: vehicleYearsReducer,\n\t\tvehicleVersions: vehicleVersionsReducer,\n\t\tzipCodes: zipCodesReducer,\n\t});\nexport default createRootReducer;\n","import { useState, useEffect } from \"react\";\nimport packageJson from \"../../package.json\";\nglobal.appVersion = packageJson.version;\n\n// version from 'meta.json' - first param\n// version in bundle file - second param\nconst semverGreaterThan = (versionA, versionB) => {\n\tconst versionsA = versionA.split(/\\./g);\n\n\tconst versionsB = versionB.split(/\\./g);\n\twhile (versionsA.length || versionsB.length) {\n\t\tconst a = Number(versionsA.shift());\n\n\t\tconst b = Number(versionsB.shift());\n\t\t// eslint-disable-next-line no-continue\n\t\tif (a === b) continue;\n\t\t// eslint-disable-next-line no-restricted-globals\n\t\treturn a > b || isNaN(b);\n\t}\n\treturn false;\n};\n\nexport default function CacheBuster(props) {\n\t// State\n\tconst [loading, setLoading] = useState(true);\n\tconst [isLatestVersion, setIsLatestVersion] = useState(true);\n\t// Effect\n\tuseEffect(() => {\n\t\tconst BASE_API_URL = process.env.RAZZLE_API_URL;\n\t\tconst url = BASE_API_URL + \"/api/SoftwareVersions\";\n\t\tfetch(url)\n\t\t\t.then((response) => response.json())\n\t\t\t.then((meta) => {\n\t\t\t\tconst latestVersion = meta.version;\n\t\t\t\tconst currentVersion = global.appVersion;\n\n\t\t\t\tconst shouldForceRefresh = semverGreaterThan(\n\t\t\t\t\tlatestVersion,\n\t\t\t\t\tcurrentVersion\n\t\t\t\t);\n\t\t\t\tif (shouldForceRefresh) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`We have a new version - ${latestVersion}. Should force refresh`\n\t\t\t\t\t);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tsetIsLatestVersion(false);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`You already have the latest version - ${latestVersion}. No cache refresh needed.`\n\t\t\t\t\t);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tsetIsLatestVersion(true);\n\t\t\t\t}\n\t\t\t});\n\t}, []);\n\tfunction refreshCacheAndReload() {\n\t\tconsole.log(\"Clearing cache and hard reloading...\");\n\t\tif (caches != null) {\n\t\t\t// Service worker cache should be cleared with caches.delete()\n\t\t\tcaches.keys().then(async function (names) {\n\t\t\t\tawait Promise.all(names.map((name) => caches.delete(name)));\n\t\t\t});\n\t\t}\n\n\t\t// delete browser cache and hard reload\n\t\twindow.location.reload(true);\n\t}\n\treturn props.children({\n\t\tloading,\n\t\tisLatestVersion,\n\t\trefreshCacheAndReload,\n\t});\n}\n","import React from \"react\";\nimport { hydrate } from \"react-dom\";\nimport { sessionService } from \"redux-react-session\";\nimport { Provider } from \"react-redux\";\nimport { setDefaultLocale } from \"react-datepicker\";\nimport { ConnectedRouter } from \"connected-react-router\";\nimport { Switch, Route } from \"react-router-dom\";\nimport ReactGA from \"react-ga4\";\nimport Modal from \"react-modal\";\nimport es from \"date-fns/locale/es\";\nimport \"./fonts.css\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport history from \"features/history\";\nimport routes from \"features/routes\";\nimport initStore from \"app/store\";\nimport { GOOGLE_ANALYTICS, SITE_DOMAIN } from \"features/constants\";\nimport { isServer } from \"features/functions\";\nimport packageJson from \"../package.json\";\n\nimport \"./fonts.css\";\nimport \"./style.css\";\nimport CacheBuster from \"components/CacheBuster\";\n\nif (!isServer) {\n\tReactGA.initialize(GOOGLE_ANALYTICS, {\n\t});\n\tReactGA.event({\n\t\tcategory: \"Software\",\n\t\taction: \"Version\",\n\t\tlabel: packageJson.version,\n\t});\n}\nModal.setAppElement(\"#root\");\nsetDefaultLocale(es);\n\nconst store = initStore(history, window.__PRELOADED_STATE__);\n\nsessionService.initSessionService(store);\n\nhydrate(\n\t\n\t\t{({ loading, isLatestVersion, refreshCacheAndReload }) => {\n\t\t\tif (loading) return null;\n\t\t\tif (!loading && !isLatestVersion) {\n\t\t\t\t// You can decide how and when you want to force reload\n\t\t\t\trefreshCacheAndReload();\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{routes.map((route, index) => (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t}}\n\t,\n\tdocument.getElementById(\"root\")\n);\n\nif (module.hot) {\n\tmodule.hot.accept(\"components/App\", () => {\n\t\thydrate(\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{routes.map((route, index) => (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t,\n\t\t\tdocument.getElementById(\"root\")\n\t\t);\n\t});\n}\n","import { configureStore } from \"@reduxjs/toolkit\";\nimport { routerMiddleware } from \"connected-react-router\";\nimport createRootReducer from \"features/reducers\";\nimport { gtmMiddleware } from \"features/tagmanager\";\n\nconst debug = process.env.RAZZLE_REDUX_DEBUG === \"true\";\n\nconst initStore = (history, initialState = {}) => {\n\tconst store = configureStore({\n\t\treducer: createRootReducer(history),\n\t\tmiddleware: (getDefaultMiddleware) =>\n\t\t\tgetDefaultMiddleware().concat(routerMiddleware(history),gtmMiddleware),\n\t\tdevTools: debug,\n\t\tpreloadedState: initialState,\n\t});\n\tif (process.env.NODE_ENV === 'development' && module.hot) {\n module.hot.accept('../features/reducers', (history) => {\n const nextRootReducer = require('../features/reducers').default(history);\n store.replaceReducer(nextRootReducer);\n });\n }\n\n return store;\n}\nexport default initStore;","module.exports = __webpack_public_path__ + \"static/media/login-bg-2.e858783c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/tire-finder-art.b5797ac4.png\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n// It's empty as some runtime module handles the default behavior\n__webpack_require__.x = x => {};\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// Promise = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t47: 0\n};\n\nvar deferredModules = [\n\t[5491,583]\n];\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\nvar checkDeferredModules = x => {};\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime, executeModules] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0, resolves = [];\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tresolves.push(installedChunks[chunkId][0]);\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\twhile(resolves.length) {\n\t\tresolves.shift()();\n\t}\n\n\t// add entry modules from loaded chunk to deferred list\n\tif(executeModules) deferredModules.push.apply(deferredModules, executeModules);\n\n\t// run deferred modules when all chunks ready\n\treturn checkDeferredModules();\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkclient\"] = self[\"webpackChunkclient\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));\n\nfunction checkDeferredModulesImpl() {\n\tvar result;\n\tfor(var i = 0; i < deferredModules.length; i++) {\n\t\tvar deferredModule = deferredModules[i];\n\t\tvar fulfilled = true;\n\t\tfor(var j = 1; j < deferredModule.length; j++) {\n\t\t\tvar depId = deferredModule[j];\n\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferredModules.splice(i--, 1);\n\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n\t\t}\n\t}\n\tif(deferredModules.length === 0) {\n\t\t__webpack_require__.x();\n\t\t__webpack_require__.x = x => {};\n\t}\n\treturn result;\n}\nvar startup = __webpack_require__.x;\n__webpack_require__.x = () => {\n\t// reset startup function so it can be called again when more startup code is added\n\t__webpack_require__.x = startup || (x => {});\n\treturn (checkDeferredModules = checkDeferredModulesImpl)();\n};","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"sourceRoot":""}